<?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>87185</bug_id>
          
          <creation_ts>2012-05-22 17:04:13 -0700</creation_ts>
          <short_desc>[V8] Refactor generation code for non-standard functions</short_desc>
          <delta_ts>2012-05-22 20:56:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87086</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>630941</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-22 17:04:13 -0700</bug_when>
    <thetext>[V8] Refactor generation code for non-standard functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630951</commentid>
    <comment_count>1</comment_count>
      <attachid>143403</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-22 17:11:13 -0700</bug_when>
    <thetext>Created attachment 143403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630966</commentid>
    <comment_count>2</comment_count>
      <attachid>143403</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-22 17:22:59 -0700</bug_when>
    <thetext>Comment on attachment 143403
Patch

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

IsStandardFunction() looks good, but I am neutral to the refactoring of GenerateNonStandrdFunction(). It seems that GenerateNonStandrdFunction() &quot;just&quot; factors out a code, which would not be so beneficial.

&gt; Source/WebCore/ChangeLog:11
&gt; +        (IsStandardFunction): Introduce a new functio to check if a

Nit: function

&gt; Source/WebCore/ChangeLog:15
&gt; +        (GenerateImplementation): Use IsStandardFunction and GenerateNonStandrdFunction.

Nit: GenerateNonStandardFunction.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2127
&gt; +sub GenerateNonStandrdFunction

GenerateStandardFunction

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2206
&gt; +        die &quot;This shouldn&apos;t happen: &quot; . IsStandardFunction($function) . &quot;\n&quot;;

How does this message help? IsStandardFunction($function) would just output 0 or 1?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:-2721
&gt; -            $num_callbacks++;

This line seems to be lost in your patch.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2762
&gt; +        next if IsStandardFunction($dataNode, $function);

Why is this check needed? It seems to be already checked above.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2763
&gt; +        GenerateNonStandrdFunction($dataNode, $function);

GenerateNonStandardFunction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630990</commentid>
    <comment_count>3</comment_count>
      <attachid>143403</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-22 17:44:46 -0700</bug_when>
    <thetext>Comment on attachment 143403
Patch

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

&gt; IsStandardFunction() looks good, but I am neutral to the refactoring of GenerateNonStandrdFunction(). It seems that GenerateNonStandrdFunction() &quot;just&quot; factors out a code, which would not be so beneficial.

I need to add callsite to GenerateNonStandardFunction() in Bug 87086.

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        (IsStandardFunction): Introduce a new functio to check if a
&gt; 
&gt; Nit: function

Done.

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        (GenerateImplementation): Use IsStandardFunction and GenerateNonStandrdFunction.
&gt; 
&gt; Nit: GenerateNonStandardFunction.

Oops, correct all of instances.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2206
&gt;&gt; +        die &quot;This shouldn&apos;t happen: &quot; . IsStandardFunction($function) . &quot;\n&quot;;
&gt; 
&gt; How does this message help? IsStandardFunction($function) would just output 0 or 1?

I&apos;ll change it so that it prints $commentInfo.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:-2721
&gt;&gt; -            $num_callbacks++;
&gt; 
&gt; This line seems to be lost in your patch.

In my new code, $num_callbacks++ is always called except for standard functions.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2762
&gt;&gt; +        next if IsStandardFunction($dataNode, $function);
&gt; 
&gt; Why is this check needed? It seems to be already checked above.

Because we need to skip standard functions.  The old code skipped standrad functions after some tasks for non-standard functions.

       if ($template eq &quot;proto&quot; &amp;&amp; $conditional eq &quot;&quot; &amp;&amp; $signature eq &quot;defaultSignature&quot; &amp;&amp; $property_attributes eq &quot;&quot;) {
            # Standard type of callback, already created in the batch, so skip it here.
            next;
       }
    # This is equivalent to IsStandardFunction().

Skipping the standard function in such deep place is not good for code readability.
The foreach loop for @{$dataNode-&gt;functions} above in this function is for standard functions, and
This foreach loop for @{$dataNode-&gt;functions} in this function is for non-standard functions.
The role of each foreach loops becomes clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630996</commentid>
    <comment_count>4</comment_count>
      <attachid>143415</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-22 17:47:53 -0700</bug_when>
    <thetext>Created attachment 143415
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631004</commentid>
    <comment_count>5</comment_count>
      <attachid>143415</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-22 17:53:36 -0700</bug_when>
    <thetext>Comment on attachment 143415
Patch 2

Looks OK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631007</commentid>
    <comment_count>6</comment_count>
      <attachid>143415</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-22 17:56:51 -0700</bug_when>
    <thetext>Comment on attachment 143415
Patch 2

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631139</commentid>
    <comment_count>7</comment_count>
      <attachid>143415</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 20:55:59 -0700</bug_when>
    <thetext>Comment on attachment 143415
Patch 2

Clearing flags on attachment: 143415

Committed r118113: &lt;http://trac.webkit.org/changeset/118113&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631140</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 20:56:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143403</attachid>
            <date>2012-05-22 17:11:13 -0700</date>
            <delta_ts>2012-05-22 17:47:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87185-20120523091111.patch</filename>
            <type>text/plain</type>
            <size>11432</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc4N2ZiNTNhODkxYTYy
NmJhZWE3ZmRiMzVlYmY4NDc1NTE5MDBkMS4uNTI3NmVlYTYwMzYxZjM3MmU3ZjU1ZDliN2MyZGFl
OGQwZmQ1MjU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA1LTIyICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlZmFjdG9yIGdl
bmVyYXRpb24gY29kZSBmb3Igbm9uLXN0YW5kYXJkIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcxODUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuIEp1c3Qg
YSByZWZhY3RvcmluZy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOgorICAgICAgICAoSXNTdGFuZGFyZEZ1bmN0aW9uKTogSW50cm9kdWNlIGEgbmV3IGZ1
bmN0aW8gdG8gY2hlY2sgaWYgYQorICAgICAgICBmdW5jdGlvbiBjYW4gYmUgaW4gYSBiYXRjaCBy
ZWdpc3RyYXRpb24uCisgICAgICAgIChHZW5lcmF0ZU5vblN0YW5kcmRGdW5jdGlvbik6IEZhY3Rv
ciBvdXQgYSBjb2RlIHRvIGdlbmVyYXRlCisgICAgICAgIG5vbi1zdGFuZGFyZCBmdW5jdGlvbnMu
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogVXNlIElzU3RhbmRhcmRGdW5jdGlv
biBhbmQgR2VuZXJhdGVOb25TdGFuZHJkRnVuY3Rpb24uCisKIDIwMTItMDUtMjIgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlcHJlc2VudHMgbWFyZ2lucyBh
cyBib3ggYW5kIHNpbXBsaWZ5IHdyaXRpbmcgbW9kZSBsb2dpYwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA5NDBlYTVmYjA5
ZjhlYmZmMmYyNjIxYjMyMmFkNDQwZDJjYmFmZjkyLi5lZTY3MjIxM2Y2MmRjZmQ0NjEyMjI4ZTA4
ZDlkMWU4ZGY0OTA4NWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjEwNiw2ICsyMTA2LDExNCBAQCBzdWIgR2VuZXJh
dGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQg
LiAiICAgIHtcIiRhdHRyTmFtZVwiLCAkZ2V0dGVyLCAkc2V0dGVyLCAkZGF0YSwgJGFjY2Vzc0Nv
bnRyb2wsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BBdHRyKSwgJG9u
X3Byb3RvfSIgLiAkZGVsaW1pdGVyIC4gIlxuIik7CiB9CiAKK3N1YiBJc1N0YW5kYXJkRnVuY3Rp
b24KK3sKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlm
dDsKKworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAgIG15ICRh
dHRyRXh0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKKyAgICBy
ZXR1cm4gMCBpZiAkYXR0ckV4dC0+eyJWOFVuZm9yZ2VhYmxlIn07CisgICAgcmV0dXJuIDAgaWYg
JGZ1bmN0aW9uLT5pc1N0YXRpYzsKKyAgICByZXR1cm4gMCBpZiAkYXR0ckV4dC0+eyJWOEVuYWJs
ZWRBdFJ1bnRpbWUifTsKKyAgICByZXR1cm4gMCBpZiBSZXF1aXJlc0N1c3RvbVNpZ25hdHVyZSgk
ZnVuY3Rpb24pOworICAgIHJldHVybiAwIGlmICRhdHRyRXh0LT57IlY4RG9Ob3RDaGVja1NpZ25h
dHVyZSJ9OworICAgIHJldHVybiAwIGlmICgkYXR0ckV4dC0+eyJEb05vdENoZWNrU2VjdXJpdHki
fSAmJiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9IHx8
ICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSk7CisgICAgcmV0dXJuIDAgaWYgJGF0dHJF
eHQtPnsiTm90RW51bWVyYWJsZSJ9OworICAgIHJldHVybiAwIGlmICRhdHRyRXh0LT57IlY4UmVh
ZE9ubHkifTsKKyAgICByZXR1cm4gMTsKK30KKworc3ViIEdlbmVyYXRlTm9uU3RhbmRyZEZ1bmN0
aW9uCit7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hp
ZnQ7CisKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKKyAgICBteSAk
YXR0ckV4dCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXM7CisgICAg
bXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKworICAgIG15ICRwcm9wZXJ0
eV9hdHRyaWJ1dGVzID0gInY4OjpEb250RGVsZXRlIjsKKyAgICBpZiAoJGF0dHJFeHQtPnsiTm90
RW51bWVyYWJsZSJ9KSB7CisgICAgICAgICRwcm9wZXJ0eV9hdHRyaWJ1dGVzIC49ICIgfCB2ODo6
RG9udEVudW0iOworICAgIH0KKyAgICBpZiAoJGF0dHJFeHQtPnsiVjhSZWFkT25seSJ9KSB7Cisg
ICAgICAgICRwcm9wZXJ0eV9hdHRyaWJ1dGVzIC49ICIgfCB2ODo6UmVhZE9ubHkiOworICAgIH0K
KworICAgIG15ICRjb21tZW50SW5mbyA9ICJGdW5jdGlvbiAnJG5hbWUnIChFeHRBdHRyOiAnIiAu
IGpvaW4oJyAnLCBrZXlzKCV7JGF0dHJFeHR9KSkgLiAiJykiOworCisgICAgbXkgJHRlbXBsYXRl
ID0gInByb3RvIjsKKyAgICBpZiAoJGF0dHJFeHQtPnsiVjhVbmZvcmdlYWJsZSJ9KSB7CisgICAg
ICAgICR0ZW1wbGF0ZSA9ICJpbnN0YW5jZSI7CisgICAgfQorICAgIGlmICgkZnVuY3Rpb24tPmlz
U3RhdGljKSB7CisgICAgICAgICR0ZW1wbGF0ZSA9ICJkZXNjIjsKKyAgICB9CisKKyAgICBteSAk
Y29uZGl0aW9uYWwgPSAiIjsKKyAgICBpZiAoJGF0dHJFeHQtPnsiVjhFbmFibGVkQXRSdW50aW1l
In0pIHsKKyAgICAgICAgIyBPbmx5IGNhbGwgU2V0KCkvU2V0QWNjZXNzb3IoKSBpZiB0aGlzIG1l
dGhvZCBzaG91bGQgYmUgZW5hYmxlZAorICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0
UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CisgICAgICAg
ICRjb25kaXRpb25hbCA9ICJpZiAoJHtlbmFibGVfZnVuY3Rpb259KCkpXG4gICAgICAgICI7Cisg
ICAgfQorCisgICAgaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9ICYmCisgICAg
ICAgICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gfHwg
JGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpKSB7CisgICAgICAgICMgTWFyayB0aGUgYWNj
ZXNzb3IgYXMgUmVhZE9ubHkgYW5kIHNldCBpdCBvbiB0aGUgcHJvdG8gb2JqZWN0IHNvCisgICAg
ICAgICMgaXQgY2FuIGJlIHNoYWRvd2VkLiBUaGlzIGlzIHJlYWxseSBhIGhhY2sgdG8gbWFrZSBp
dCB3b3JrLgorICAgICAgICAjIFRoZXJlIGFyZSBzZXZlcmFsIHNjZW5lcmlhIHRvIGNhbGwgaW50
byB0aGUgYWNjZXNzb3I6CisgICAgICAgICMgICAxKSBmcm9tIHRoZSBzYW1lIGRvbWFpbjogIndp
bmRvdy5vcGVuIjoKKyAgICAgICAgIyAgICAgIHRoZSBhY2Nlc3NvciBmaW5kcyB0aGUgRE9NIHdy
YXBwZXIgaW4gdGhlIHByb3RvIGNoYWluOworICAgICAgICAjICAgMikgZnJvbSB0aGUgc2FtZSBk
b21haW46ICJ3aW5kb3cuX19wcm90b19fLm9wZW4iOgorICAgICAgICAjICAgICAgdGhlIGFjY2Vz
c29yIHdpbGwgTk9UIGZpbmQgYSBET00gd3JhcHBlciBpbiB0aGUgcHJvdG90eXBlIGNoYWluCisg
ICAgICAgICMgICAzKSBmcm9tIGFub3RoZXIgZG9tYWluOiAid2luZG93Lm9wZW4iOgorICAgICAg
ICAjICAgICAgdGhlIGFjY2VzcyBmaW5kIHRoZSBET00gd3JhcHBlciBpbiB0aGUgcHJvdG90eXBl
IGNoYWluCisgICAgICAgICMgICAid2luZG93Ll9fcHJvdG9fXy5vcGVuIiBmcm9tIGFub3RoZXIg
ZG9tYWluIHdpbGwgZmFpbCB3aGVuCisgICAgICAgICMgICBhY2Nlc3NpbmcgJ19fcHJvdG9fXycK
KyAgICAgICAgIworICAgICAgICAjIFRoZSBzb2x1dGlvbiBpcyB2ZXJ5IGhhY2t5IGFuZCBmcmFn
aWxlLCBpdCByZWFsbHkgbmVlZHMgdG8gYmUgcmVwbGFjZWQKKyAgICAgICAgIyBieSBhIGJldHRl
ciBzb2x1dGlvbi4KKyAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMgLj0gIiB8IHY4OjpSZWFk
T25seSI7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisKKyAgICAvLyAkY29t
bWVudEluZm8KKyAgICAke2NvbmRpdGlvbmFsfSR0ZW1wbGF0ZS0+U2V0QWNjZXNzb3Iodjg6OlN0
cmluZzo6TmV3KCIkbmFtZSIpLCAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtuYW1lfUF0
dHJHZXR0ZXIsIDAsIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6QUxMX0NBTl9SRUFELCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9wZXJ0eV9hdHRyaWJ1dGVzKSk7
CitFTkQKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG15ICRzaWduYXR1cmUgPSAiZGVm
YXVsdFNpZ25hdHVyZSI7CisgICAgaWYgKCRhdHRyRXh0LT57IlY4RG9Ob3RDaGVja1NpZ25hdHVy
ZSJ9IHx8ICRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKKyAgICAgICAkc2lnbmF0dXJlID0gInY4OjpM
b2NhbDx2ODo6U2lnbmF0dXJlPigpIjsKKyAgICB9CisKKyAgICBpZiAoUmVxdWlyZXNDdXN0b21T
aWduYXR1cmUoJGZ1bmN0aW9uKSkgeworICAgICAgICAkc2lnbmF0dXJlID0gIiR7bmFtZX1TaWdu
YXR1cmUiOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuICAgIC8vIEN1c3RvbSBTaWdu
YXR1cmUgJyRuYW1lJ1xuIiwgQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlKCRmdW5jdGlvbikpOworICAg
IH0KKworICAgICMgTm9ybWFsIGZ1bmN0aW9uIGNhbGwgaXMgYSB0ZW1wbGF0ZQorICAgIG15ICRj
YWxsYmFjayA9IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJGZ1bmN0aW9uLCAkaW50
ZXJmYWNlTmFtZSk7CisKKyAgICBpZiAoJHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEgInY4OjpEb250
RGVsZXRlIikgeworICAgICAgICAkcHJvcGVydHlfYXR0cmlidXRlcyA9ICIiOworICAgIH0gZWxz
ZSB7CisgICAgICAgICRwcm9wZXJ0eV9hdHRyaWJ1dGVzID0gIiwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPigkcHJvcGVydHlfYXR0cmlidXRlcykiOworICAgIH0KKworICAgIGlm
ICgkdGVtcGxhdGUgZXEgInByb3RvIiAmJiAkY29uZGl0aW9uYWwgZXEgIiIgJiYgJHNpZ25hdHVy
ZSBlcSAiZGVmYXVsdFNpZ25hdHVyZSIgJiYgJHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEgIiIpIHsK
KyAgICAgICAgZGllICJUaGlzIHNob3VsZG4ndCBoYXBwZW46ICIgLiBJc1N0YW5kYXJkRnVuY3Rp
b24oJGZ1bmN0aW9uKSAuICJcbiI7CisgICAgfQorCisgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5n
ID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5z
aWduYXR1cmUpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJp
bmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisKKyAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAke2NvbmRpdGlvbmFsfSR0ZW1wbGF0ZS0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhcIiRuYW1l
XCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCRjYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCksICR7c2lnbmF0dXJlfSkkcHJvcGVydHlfYXR0cmlidXRlcyk7XG4iKTsKKworICAg
IHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7Cit9CisKIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uSW5k
ZXhlcgogewogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwpAQCAtMjQ1NiwyNSArMjU2NCw4IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7
JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICMgT25seSBvbmUgdGFibGUgZW50cnkg
aXMgbmVlZGVkIGZvciBvdmVybG9hZGVkIG1ldGhvZHM6CiAgICAgICAgIG5leHQgaWYgJGZ1bmN0
aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwotCi0gICAgICAgIG15ICRhdHRyRXh0ID0gJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKICAgICAgICAgIyBEb24ndCBwdXQg
YW55IG5vbnN0YW5kYXJkIGZ1bmN0aW9ucyBpbnRvIHRoaXMgdGFibGU6Ci0gICAgICAgIGlmICgk
YXR0ckV4dC0+eyJWOFVuZm9yZ2VhYmxlIn0pIHsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKLSAgICAgICAgICAgIG5leHQ7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5hYmxlZEF0UnVudGltZSJ9
IHx8IFJlcXVpcmVzQ3VzdG9tU2lnbmF0dXJlKCRmdW5jdGlvbikgfHwgJGF0dHJFeHQtPnsiVjhE
b05vdENoZWNrU2lnbmF0dXJlIn0pIHsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9ICYmCi0gICAgICAgICAg
ICAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9IHx8ICRp
bnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgewotICAgICAgICAgICAgbmV4dDsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiTm90RW51bWVyYWJsZSJ9IHx8ICRhdHRyRXh0
LT57IlY4UmVhZE9ubHkifSkgewotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQorICAgICAg
ICBuZXh0IGlmICFJc1N0YW5kYXJkRnVuY3Rpb24oJGRhdGFOb2RlLCAkZnVuY3Rpb24pOwogICAg
ICAgICBpZiAoISRoYXNfY2FsbGJhY2tzKSB7CiAgICAgICAgICAgICAkaGFzX2NhbGxiYWNrcyA9
IDE7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVk
Q2FsbGJhY2sgJHtpbnRlcmZhY2VOYW1lfUNhbGxiYWNrc1tdID0ge1xuIik7CkBAIC0yNjY4LDky
ICsyNzU5LDggQEAgRU5ECiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRl
eH0gPiAxOwogCiAgICAgICAgICR0b3RhbF9mdW5jdGlvbnMrKzsKLSAgICAgICAgbXkgJGF0dHJF
eHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwotICAgICAgICBt
eSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwotCi0gICAgICAgIG15ICRwcm9w
ZXJ0eV9hdHRyaWJ1dGVzID0gInY4OjpEb250RGVsZXRlIjsKLSAgICAgICAgaWYgKCRhdHRyRXh0
LT57Ik5vdEVudW1lcmFibGUifSkgewotICAgICAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMg
Lj0gIiB8IHY4OjpEb250RW51bSI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57
IlY4UmVhZE9ubHkifSkgewotICAgICAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMgLj0gIiB8
IHY4OjpSZWFkT25seSI7Ci0gICAgICAgIH0KLQotICAgICAgICBteSAkY29tbWVudEluZm8gPSAi
RnVuY3Rpb24gJyRuYW1lJyAoRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0
fSkpIC4gIicpIjsKLQotICAgICAgICBteSAkdGVtcGxhdGUgPSAicHJvdG8iOwotICAgICAgICBp
ZiAoJGF0dHJFeHQtPnsiVjhVbmZvcmdlYWJsZSJ9KSB7Ci0gICAgICAgICAgICAkdGVtcGxhdGUg
PSAiaW5zdGFuY2UiOwotICAgICAgICB9Ci0gICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGlj
KSB7Ci0gICAgICAgICAgICAkdGVtcGxhdGUgPSAiZGVzYyI7Ci0gICAgICAgIH0KLQotICAgICAg
ICBteSAkY29uZGl0aW9uYWwgPSAiIjsKLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5hYmxl
ZEF0UnVudGltZSJ9KSB7Ci0gICAgICAgICAgICAjIE9ubHkgY2FsbCBTZXQoKS9TZXRBY2Nlc3Nv
cigpIGlmIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBlbmFibGVkCi0gICAgICAgICAgICBteSAkZW5h
YmxlX2Z1bmN0aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkZnVuY3Rpb24tPnNp
Z25hdHVyZSk7Ci0gICAgICAgICAgICAkY29uZGl0aW9uYWwgPSAiaWYgKCR7ZW5hYmxlX2Z1bmN0
aW9ufSgpKVxuICAgICAgICAiOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57
IkRvTm90Q2hlY2tTZWN1cml0eSJ9ICYmCi0gICAgICAgICAgICAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJET01X
aW5kb3ciKSkgewotICAgICAgICAgICAgIyBNYXJrIHRoZSBhY2Nlc3NvciBhcyBSZWFkT25seSBh
bmQgc2V0IGl0IG9uIHRoZSBwcm90byBvYmplY3Qgc28KLSAgICAgICAgICAgICMgaXQgY2FuIGJl
IHNoYWRvd2VkLiBUaGlzIGlzIHJlYWxseSBhIGhhY2sgdG8gbWFrZSBpdCB3b3JrLgotICAgICAg
ICAgICAgIyBUaGVyZSBhcmUgc2V2ZXJhbCBzY2VuZXJpYSB0byBjYWxsIGludG8gdGhlIGFjY2Vz
c29yOgotICAgICAgICAgICAgIyAgIDEpIGZyb20gdGhlIHNhbWUgZG9tYWluOiAid2luZG93Lm9w
ZW4iOgotICAgICAgICAgICAgIyAgICAgIHRoZSBhY2Nlc3NvciBmaW5kcyB0aGUgRE9NIHdyYXBw
ZXIgaW4gdGhlIHByb3RvIGNoYWluOwotICAgICAgICAgICAgIyAgIDIpIGZyb20gdGhlIHNhbWUg
ZG9tYWluOiAid2luZG93Ll9fcHJvdG9fXy5vcGVuIjoKLSAgICAgICAgICAgICMgICAgICB0aGUg
YWNjZXNzb3Igd2lsbCBOT1QgZmluZCBhIERPTSB3cmFwcGVyIGluIHRoZSBwcm90b3R5cGUgY2hh
aW4KLSAgICAgICAgICAgICMgICAzKSBmcm9tIGFub3RoZXIgZG9tYWluOiAid2luZG93Lm9wZW4i
OgotICAgICAgICAgICAgIyAgICAgIHRoZSBhY2Nlc3MgZmluZCB0aGUgRE9NIHdyYXBwZXIgaW4g
dGhlIHByb3RvdHlwZSBjaGFpbgotICAgICAgICAgICAgIyAgICJ3aW5kb3cuX19wcm90b19fLm9w
ZW4iIGZyb20gYW5vdGhlciBkb21haW4gd2lsbCBmYWlsIHdoZW4KLSAgICAgICAgICAgICMgICBh
Y2Nlc3NpbmcgJ19fcHJvdG9fXycKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVGhlIHNv
bHV0aW9uIGlzIHZlcnkgaGFja3kgYW5kIGZyYWdpbGUsIGl0IHJlYWxseSBuZWVkcyB0byBiZSBy
ZXBsYWNlZAotICAgICAgICAgICAgIyBieSBhIGJldHRlciBzb2x1dGlvbi4KLSAgICAgICAgICAg
ICRwcm9wZXJ0eV9hdHRyaWJ1dGVzIC49ICIgfCB2ODo6UmVhZE9ubHkiOwotICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLQotICAgIC8vICRjb21tZW50SW5mbwotICAgICR7
Y29uZGl0aW9uYWx9JHRlbXBsYXRlLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoIiRuYW1l
IiksICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9QXR0ckdldHRlciwgMCwgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BlcnR5X2F0dHJpYnV0ZXMpKTsKLUVORAotICAgICAgICAg
ICAgJG51bV9jYWxsYmFja3MrKzsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICBteSAkc2lnbmF0dXJlID0gImRlZmF1bHRTaWduYXR1cmUiOwotICAgICAgICBpZiAoJGF0
dHJFeHQtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0gfHwgJGZ1bmN0aW9uLT5pc1N0YXRpYykg
ewotICAgICAgICAgICAgJHNpZ25hdHVyZSA9ICJ2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSI7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoUmVxdWlyZXNDdXN0b21TaWduYXR1cmUoJGZ1bmN0
aW9uKSkgewotICAgICAgICAgICAgJHNpZ25hdHVyZSA9ICIke25hbWV9U2lnbmF0dXJlIjsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4gICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAn
JG5hbWUnXG4iLCBDcmVhdGVDdXN0b21TaWduYXR1cmUoJGZ1bmN0aW9uKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICAjIE5vcm1hbCBmdW5jdGlvbiBjYWxsIGlzIGEgdGVtcGxhdGUKLSAgICAgICAg
bXkgJGNhbGxiYWNrID0gR2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxiYWNrTmFtZSgkZnVuY3Rpb24s
ICRpbnRlcmZhY2VOYW1lKTsKLQotICAgICAgICBpZiAoJHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEg
InY4OjpEb250RGVsZXRlIikgewotICAgICAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMgPSAi
IjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRwcm9wZXJ0eV9hdHRyaWJ1dGVzID0g
Iiwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigkcHJvcGVydHlfYXR0cmlidXRl
cykiOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCR0ZW1wbGF0ZSBlcSAicHJvdG8iICYmICRj
b25kaXRpb25hbCBlcSAiIiAmJiAkc2lnbmF0dXJlIGVxICJkZWZhdWx0U2lnbmF0dXJlIiAmJiAk
cHJvcGVydHlfYXR0cmlidXRlcyBlcSAiIikgewotICAgICAgICAgICAgIyBTdGFuZGFyZCB0eXBl
IG9mIGNhbGxiYWNrLCBhbHJlYWR5IGNyZWF0ZWQgaW4gdGhlIGJhdGNoLCBzbyBza2lwIGl0IGhl
cmUuCi0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgbXkgJGNvbmRpdGlv
bmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1
bmN0aW9uLT5zaWduYXR1cmUpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotCi0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgJHtjb25kaXRpb25hbH0kdGVtcGxhdGUtPlNl
dCh2ODo6U3RyaW5nOjpOZXcoIiRuYW1lIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoJGNh
bGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgJHtzaWduYXR1cmV9KSRwcm9wZXJ0eV9h
dHRyaWJ1dGVzKTsKLUVORAotCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmIC8v
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAg
IG5leHQgaWYgSXNTdGFuZGFyZEZ1bmN0aW9uKCRkYXRhTm9kZSwgJGZ1bmN0aW9uKTsKKyAgICAg
ICAgR2VuZXJhdGVOb25TdGFuZHJkRnVuY3Rpb24oJGRhdGFOb2RlLCAkZnVuY3Rpb24pOwogICAg
ICAgICAkbnVtX2NhbGxiYWNrcysrOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143415</attachid>
            <date>2012-05-22 17:47:53 -0700</date>
            <delta_ts>2012-05-22 20:55:59 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-87185-20120523094752.patch</filename>
            <type>text/plain</type>
            <size>11448</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc4N2ZiNTNhODkxYTYy
NmJhZWE3ZmRiMzVlYmY4NDc1NTE5MDBkMS4uNjE2ZDAyYmEzYzA2NTExYTRhNThhMDk3MmZhNmVl
M2UxODQzMzIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA1LTIyICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlZmFjdG9yIGdl
bmVyYXRpb24gY29kZSBmb3Igbm9uLXN0YW5kYXJkIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcxODUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuIEp1c3Qg
YSByZWZhY3RvcmluZy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOgorICAgICAgICAoSXNTdGFuZGFyZEZ1bmN0aW9uKTogSW50cm9kdWNlIGEgbmV3IGZ1
bmN0aW9uIHRvIGNoZWNrIGlmIGEKKyAgICAgICAgZnVuY3Rpb24gY2FuIGJlIGluIGEgYmF0Y2gg
cmVnaXN0cmF0aW9uLgorICAgICAgICAoR2VuZXJhdGVOb25TdGFuZGFyZEZ1bmN0aW9uKTogRmFj
dG9yIG91dCBhIGNvZGUgdG8gZ2VuZXJhdGUKKyAgICAgICAgbm9uLXN0YW5kYXJkIGZ1bmN0aW9u
cy4KKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICBVc2UgSXNTdGFu
ZGFyZEZ1bmN0aW9uIGFuZCBHZW5lcmF0ZU5vblN0YW5kYXJkRnVuY3Rpb24uCisKIDIwMTItMDUt
MjIgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlcHJlc2Vu
dHMgbWFyZ2lucyBhcyBib3ggYW5kIHNpbXBsaWZ5IHdyaXRpbmcgbW9kZSBsb2dpYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRl
eCA5NDBlYTVmYjA5ZjhlYmZmMmYyNjIxYjMyMmFkNDQwZDJjYmFmZjkyLi45ZmYzNzgxODExODVl
YThkZDZhZDg1NGRlMTFlMjZlZjJlZWJhNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjEwNiw2ICsyMTA2LDExNCBA
QCBzdWIgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlCiAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRpbmRlbnQgLiAiICAgIHtcIiRhdHRyTmFtZVwiLCAkZ2V0dGVyLCAkc2V0dGVyLCAkZGF0
YSwgJGFjY2Vzc0NvbnRyb2wsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHBy
b3BBdHRyKSwgJG9uX3Byb3RvfSIgLiAkZGVsaW1pdGVyIC4gIlxuIik7CiB9CiAKK3N1YiBJc1N0
YW5kYXJkRnVuY3Rpb24KK3sKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkZnVu
Y3Rpb24gPSBzaGlmdDsKKworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1l
OworICAgIG15ICRhdHRyRXh0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlczsKKyAgICByZXR1cm4gMCBpZiAkYXR0ckV4dC0+eyJWOFVuZm9yZ2VhYmxlIn07CisgICAg
cmV0dXJuIDAgaWYgJGZ1bmN0aW9uLT5pc1N0YXRpYzsKKyAgICByZXR1cm4gMCBpZiAkYXR0ckV4
dC0+eyJWOEVuYWJsZWRBdFJ1bnRpbWUifTsKKyAgICByZXR1cm4gMCBpZiBSZXF1aXJlc0N1c3Rv
bVNpZ25hdHVyZSgkZnVuY3Rpb24pOworICAgIHJldHVybiAwIGlmICRhdHRyRXh0LT57IlY4RG9O
b3RDaGVja1NpZ25hdHVyZSJ9OworICAgIHJldHVybiAwIGlmICgkYXR0ckV4dC0+eyJEb05vdENo
ZWNrU2VjdXJpdHkifSAmJiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tT
ZWN1cml0eSJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSk7CisgICAgcmV0dXJu
IDAgaWYgJGF0dHJFeHQtPnsiTm90RW51bWVyYWJsZSJ9OworICAgIHJldHVybiAwIGlmICRhdHRy
RXh0LT57IlY4UmVhZE9ubHkifTsKKyAgICByZXR1cm4gMTsKK30KKworc3ViIEdlbmVyYXRlTm9u
U3RhbmRhcmRGdW5jdGlvbgoreworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRm
dW5jdGlvbiA9IHNoaWZ0OworCisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5h
bWU7CisgICAgbXkgJGF0dHJFeHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzOworICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisKKyAg
ICBteSAkcHJvcGVydHlfYXR0cmlidXRlcyA9ICJ2ODo6RG9udERlbGV0ZSI7CisgICAgaWYgKCRh
dHRyRXh0LT57Ik5vdEVudW1lcmFibGUifSkgeworICAgICAgICAkcHJvcGVydHlfYXR0cmlidXRl
cyAuPSAiIHwgdjg6OkRvbnRFbnVtIjsKKyAgICB9CisgICAgaWYgKCRhdHRyRXh0LT57IlY4UmVh
ZE9ubHkifSkgeworICAgICAgICAkcHJvcGVydHlfYXR0cmlidXRlcyAuPSAiIHwgdjg6OlJlYWRP
bmx5IjsKKyAgICB9CisKKyAgICBteSAkY29tbWVudEluZm8gPSAiRnVuY3Rpb24gJyRuYW1lJyAo
RXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsKKworICAg
IG15ICR0ZW1wbGF0ZSA9ICJwcm90byI7CisgICAgaWYgKCRhdHRyRXh0LT57IlY4VW5mb3JnZWFi
bGUifSkgeworICAgICAgICAkdGVtcGxhdGUgPSAiaW5zdGFuY2UiOworICAgIH0KKyAgICBpZiAo
JGZ1bmN0aW9uLT5pc1N0YXRpYykgeworICAgICAgICAkdGVtcGxhdGUgPSAiZGVzYyI7CisgICAg
fQorCisgICAgbXkgJGNvbmRpdGlvbmFsID0gIiI7CisgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5h
YmxlZEF0UnVudGltZSJ9KSB7CisgICAgICAgICMgT25seSBjYWxsIFNldCgpL1NldEFjY2Vzc29y
KCkgaWYgdGhpcyBtZXRob2Qgc2hvdWxkIGJlIGVuYWJsZWQKKyAgICAgICAgbXkgJGVuYWJsZV9m
dW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGZ1bmN0aW9uLT5zaWduYXR1
cmUpOworICAgICAgICAkY29uZGl0aW9uYWwgPSAiaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxu
ICAgICAgICAiOworICAgIH0KKworICAgIGlmICgkYXR0ckV4dC0+eyJEb05vdENoZWNrU2VjdXJp
dHkifSAmJgorICAgICAgICAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tT
ZWN1cml0eSJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgeworICAgICAgICAj
IE1hcmsgdGhlIGFjY2Vzc29yIGFzIFJlYWRPbmx5IGFuZCBzZXQgaXQgb24gdGhlIHByb3RvIG9i
amVjdCBzbworICAgICAgICAjIGl0IGNhbiBiZSBzaGFkb3dlZC4gVGhpcyBpcyByZWFsbHkgYSBo
YWNrIHRvIG1ha2UgaXQgd29yay4KKyAgICAgICAgIyBUaGVyZSBhcmUgc2V2ZXJhbCBzY2VuZXJp
YSB0byBjYWxsIGludG8gdGhlIGFjY2Vzc29yOgorICAgICAgICAjICAgMSkgZnJvbSB0aGUgc2Ft
ZSBkb21haW46ICJ3aW5kb3cub3BlbiI6CisgICAgICAgICMgICAgICB0aGUgYWNjZXNzb3IgZmlu
ZHMgdGhlIERPTSB3cmFwcGVyIGluIHRoZSBwcm90byBjaGFpbjsKKyAgICAgICAgIyAgIDIpIGZy
b20gdGhlIHNhbWUgZG9tYWluOiAid2luZG93Ll9fcHJvdG9fXy5vcGVuIjoKKyAgICAgICAgIyAg
ICAgIHRoZSBhY2Nlc3NvciB3aWxsIE5PVCBmaW5kIGEgRE9NIHdyYXBwZXIgaW4gdGhlIHByb3Rv
dHlwZSBjaGFpbgorICAgICAgICAjICAgMykgZnJvbSBhbm90aGVyIGRvbWFpbjogIndpbmRvdy5v
cGVuIjoKKyAgICAgICAgIyAgICAgIHRoZSBhY2Nlc3MgZmluZCB0aGUgRE9NIHdyYXBwZXIgaW4g
dGhlIHByb3RvdHlwZSBjaGFpbgorICAgICAgICAjICAgIndpbmRvdy5fX3Byb3RvX18ub3BlbiIg
ZnJvbSBhbm90aGVyIGRvbWFpbiB3aWxsIGZhaWwgd2hlbgorICAgICAgICAjICAgYWNjZXNzaW5n
ICdfX3Byb3RvX18nCisgICAgICAgICMKKyAgICAgICAgIyBUaGUgc29sdXRpb24gaXMgdmVyeSBo
YWNreSBhbmQgZnJhZ2lsZSwgaXQgcmVhbGx5IG5lZWRzIHRvIGJlIHJlcGxhY2VkCisgICAgICAg
ICMgYnkgYSBiZXR0ZXIgc29sdXRpb24uCisgICAgICAgICRwcm9wZXJ0eV9hdHRyaWJ1dGVzIC49
ICIgfCB2ODo6UmVhZE9ubHkiOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwor
CisgICAgLy8gJGNvbW1lbnRJbmZvCisgICAgJHtjb25kaXRpb25hbH0kdGVtcGxhdGUtPlNldEFj
Y2Vzc29yKHY4OjpTdHJpbmc6Ok5ldygiJG5hbWUiKSwgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJu
YWw6OiR7bmFtZX1BdHRyR2V0dGVyLCAwLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OkFM
TF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigkcHJvcGVydHlf
YXR0cmlidXRlcykpOworRU5ECisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBteSAkc2ln
bmF0dXJlID0gImRlZmF1bHRTaWduYXR1cmUiOworICAgIGlmICgkYXR0ckV4dC0+eyJWOERvTm90
Q2hlY2tTaWduYXR1cmUifSB8fCAkZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAgICAgJHNpZ25h
dHVyZSA9ICJ2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSI7CisgICAgfQorCisgICAgaWYgKFJl
cXVpcmVzQ3VzdG9tU2lnbmF0dXJlKCRmdW5jdGlvbikpIHsKKyAgICAgICAgJHNpZ25hdHVyZSA9
ICIke25hbWV9U2lnbmF0dXJlIjsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICckbmFtZSdcbiIsIENyZWF0ZUN1c3RvbVNpZ25hdHVyZSgkZnVu
Y3Rpb24pKTsKKyAgICB9CisKKyAgICAjIE5vcm1hbCBmdW5jdGlvbiBjYWxsIGlzIGEgdGVtcGxh
dGUKKyAgICBteSAkY2FsbGJhY2sgPSBHZXRGdW5jdGlvblRlbXBsYXRlQ2FsbGJhY2tOYW1lKCRm
dW5jdGlvbiwgJGludGVyZmFjZU5hbWUpOworCisgICAgaWYgKCRwcm9wZXJ0eV9hdHRyaWJ1dGVz
IGVxICJ2ODo6RG9udERlbGV0ZSIpIHsKKyAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMgPSAi
IjsKKyAgICB9IGVsc2UgeworICAgICAgICAkcHJvcGVydHlfYXR0cmlidXRlcyA9ICIsIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BlcnR5X2F0dHJpYnV0ZXMpIjsKKyAg
ICB9CisKKyAgICBpZiAoJHRlbXBsYXRlIGVxICJwcm90byIgJiYgJGNvbmRpdGlvbmFsIGVxICIi
ICYmICRzaWduYXR1cmUgZXEgImRlZmF1bHRTaWduYXR1cmUiICYmICRwcm9wZXJ0eV9hdHRyaWJ1
dGVzIGVxICIiKSB7CisgICAgICAgIGRpZSAiVGhpcyBzaG91bGRuJ3QgaGFwcGVuOiBJbnRyYWZh
Y2UgJyRpbnRlcmZhY2VOYW1lJyAkY29tbWVudEluZm9cbiI7CisgICAgfQorCisgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJp
bmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAke2NvbmRpdGlvbmFsfSR0ZW1wbGF0ZS0+U2V0KHY4OjpTdHJp
bmc6Ok5ldyhcIiRuYW1lXCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCRjYWxsYmFjaywg
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCksICR7c2lnbmF0dXJlfSkkcHJvcGVydHlfYXR0cmlidXRl
cyk7XG4iKTsKKworICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Cit9CisKIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uSW5kZXhlcgogewogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwpAQCAtMjQ1
NiwyNSArMjU2NCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICMgT25seSBv
bmUgdGFibGUgZW50cnkgaXMgbmVlZGVkIGZvciBvdmVybG9hZGVkIG1ldGhvZHM6CiAgICAgICAg
IG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwotCi0gICAgICAgIG15ICRh
dHRyRXh0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKICAgICAg
ICAgIyBEb24ndCBwdXQgYW55IG5vbnN0YW5kYXJkIGZ1bmN0aW9ucyBpbnRvIHRoaXMgdGFibGU6
Ci0gICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOFVuZm9yZ2VhYmxlIn0pIHsKLSAgICAgICAgICAg
IG5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKLSAg
ICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5h
YmxlZEF0UnVudGltZSJ9IHx8IFJlcXVpcmVzQ3VzdG9tU2lnbmF0dXJlKCRmdW5jdGlvbikgfHwg
JGF0dHJFeHQtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0pIHsKLSAgICAgICAgICAgIG5leHQ7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9
ICYmCi0gICAgICAgICAgICAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tT
ZWN1cml0eSJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgewotICAgICAgICAg
ICAgbmV4dDsKLSAgICAgICAgfQotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiTm90RW51bWVyYWJs
ZSJ9IHx8ICRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgewotICAgICAgICAgICAgbmV4dDsKLSAg
ICAgICAgfQorICAgICAgICBuZXh0IGlmICFJc1N0YW5kYXJkRnVuY3Rpb24oJGRhdGFOb2RlLCAk
ZnVuY3Rpb24pOwogICAgICAgICBpZiAoISRoYXNfY2FsbGJhY2tzKSB7CiAgICAgICAgICAgICAk
aGFzX2NhbGxiYWNrcyA9IDE7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRp
YyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgJHtpbnRlcmZhY2VOYW1lfUNhbGxiYWNrc1tdID0ge1xu
Iik7CkBAIC0yNjY4LDkyICsyNzU5LDggQEAgRU5ECiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9u
LT57b3ZlcmxvYWRJbmRleH0gPiAxOwogCiAgICAgICAgICR0b3RhbF9mdW5jdGlvbnMrKzsKLSAg
ICAgICAgbXkgJGF0dHJFeHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzOwotICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwotCi0g
ICAgICAgIG15ICRwcm9wZXJ0eV9hdHRyaWJ1dGVzID0gInY4OjpEb250RGVsZXRlIjsKLSAgICAg
ICAgaWYgKCRhdHRyRXh0LT57Ik5vdEVudW1lcmFibGUifSkgewotICAgICAgICAgICAgJHByb3Bl
cnR5X2F0dHJpYnV0ZXMgLj0gIiB8IHY4OjpEb250RW51bSI7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgewotICAgICAgICAgICAgJHByb3BlcnR5X2F0
dHJpYnV0ZXMgLj0gIiB8IHY4OjpSZWFkT25seSI7Ci0gICAgICAgIH0KLQotICAgICAgICBteSAk
Y29tbWVudEluZm8gPSAiRnVuY3Rpb24gJyRuYW1lJyAoRXh0QXR0cjogJyIgLiBqb2luKCcgJywg
a2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsKLQotICAgICAgICBteSAkdGVtcGxhdGUgPSAicHJv
dG8iOwotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhVbmZvcmdlYWJsZSJ9KSB7Ci0gICAgICAg
ICAgICAkdGVtcGxhdGUgPSAiaW5zdGFuY2UiOwotICAgICAgICB9Ci0gICAgICAgIGlmICgkZnVu
Y3Rpb24tPmlzU3RhdGljKSB7Ci0gICAgICAgICAgICAkdGVtcGxhdGUgPSAiZGVzYyI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAiIjsKLSAgICAgICAgaWYgKCRhdHRy
RXh0LT57IlY4RW5hYmxlZEF0UnVudGltZSJ9KSB7Ci0gICAgICAgICAgICAjIE9ubHkgY2FsbCBT
ZXQoKS9TZXRBY2Nlc3NvcigpIGlmIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBlbmFibGVkCi0gICAg
ICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFt
ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAkY29uZGl0aW9uYWwgPSAiaWYg
KCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuICAgICAgICAiOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9ICYmCi0gICAgICAgICAgICAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9IHx8ICRpbnRlcmZh
Y2VOYW1lIGVxICJET01XaW5kb3ciKSkgewotICAgICAgICAgICAgIyBNYXJrIHRoZSBhY2Nlc3Nv
ciBhcyBSZWFkT25seSBhbmQgc2V0IGl0IG9uIHRoZSBwcm90byBvYmplY3Qgc28KLSAgICAgICAg
ICAgICMgaXQgY2FuIGJlIHNoYWRvd2VkLiBUaGlzIGlzIHJlYWxseSBhIGhhY2sgdG8gbWFrZSBp
dCB3b3JrLgotICAgICAgICAgICAgIyBUaGVyZSBhcmUgc2V2ZXJhbCBzY2VuZXJpYSB0byBjYWxs
IGludG8gdGhlIGFjY2Vzc29yOgotICAgICAgICAgICAgIyAgIDEpIGZyb20gdGhlIHNhbWUgZG9t
YWluOiAid2luZG93Lm9wZW4iOgotICAgICAgICAgICAgIyAgICAgIHRoZSBhY2Nlc3NvciBmaW5k
cyB0aGUgRE9NIHdyYXBwZXIgaW4gdGhlIHByb3RvIGNoYWluOwotICAgICAgICAgICAgIyAgIDIp
IGZyb20gdGhlIHNhbWUgZG9tYWluOiAid2luZG93Ll9fcHJvdG9fXy5vcGVuIjoKLSAgICAgICAg
ICAgICMgICAgICB0aGUgYWNjZXNzb3Igd2lsbCBOT1QgZmluZCBhIERPTSB3cmFwcGVyIGluIHRo
ZSBwcm90b3R5cGUgY2hhaW4KLSAgICAgICAgICAgICMgICAzKSBmcm9tIGFub3RoZXIgZG9tYWlu
OiAid2luZG93Lm9wZW4iOgotICAgICAgICAgICAgIyAgICAgIHRoZSBhY2Nlc3MgZmluZCB0aGUg
RE9NIHdyYXBwZXIgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgotICAgICAgICAgICAgIyAgICJ3aW5k
b3cuX19wcm90b19fLm9wZW4iIGZyb20gYW5vdGhlciBkb21haW4gd2lsbCBmYWlsIHdoZW4KLSAg
ICAgICAgICAgICMgICBhY2Nlc3NpbmcgJ19fcHJvdG9fXycKLSAgICAgICAgICAgICMKLSAgICAg
ICAgICAgICMgVGhlIHNvbHV0aW9uIGlzIHZlcnkgaGFja3kgYW5kIGZyYWdpbGUsIGl0IHJlYWxs
eSBuZWVkcyB0byBiZSByZXBsYWNlZAotICAgICAgICAgICAgIyBieSBhIGJldHRlciBzb2x1dGlv
bi4KLSAgICAgICAgICAgICRwcm9wZXJ0eV9hdHRyaWJ1dGVzIC49ICIgfCB2ODo6UmVhZE9ubHki
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLQotICAgIC8vICRjb21t
ZW50SW5mbwotICAgICR7Y29uZGl0aW9uYWx9JHRlbXBsYXRlLT5TZXRBY2Nlc3Nvcih2ODo6U3Ry
aW5nOjpOZXcoIiRuYW1lIiksICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9QXR0
ckdldHRlciwgMCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BlcnR5X2F0dHJpYnV0ZXMpKTsK
LUVORAotICAgICAgICAgICAgJG51bV9jYWxsYmFja3MrKzsKLSAgICAgICAgICAgIG5leHQ7Ci0g
ICAgICAgIH0KLQotICAgICAgICBteSAkc2lnbmF0dXJlID0gImRlZmF1bHRTaWduYXR1cmUiOwot
ICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0gfHwgJGZ1bmN0
aW9uLT5pc1N0YXRpYykgewotICAgICAgICAgICAgJHNpZ25hdHVyZSA9ICJ2ODo6TG9jYWw8djg6
OlNpZ25hdHVyZT4oKSI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoUmVxdWlyZXNDdXN0b21T
aWduYXR1cmUoJGZ1bmN0aW9uKSkgewotICAgICAgICAgICAgJHNpZ25hdHVyZSA9ICIke25hbWV9
U2lnbmF0dXJlIjsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4gICAgLy8gQ3Vz
dG9tIFNpZ25hdHVyZSAnJG5hbWUnXG4iLCBDcmVhdGVDdXN0b21TaWduYXR1cmUoJGZ1bmN0aW9u
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICAjIE5vcm1hbCBmdW5jdGlvbiBjYWxsIGlzIGEgdGVt
cGxhdGUKLSAgICAgICAgbXkgJGNhbGxiYWNrID0gR2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxiYWNr
TmFtZSgkZnVuY3Rpb24sICRpbnRlcmZhY2VOYW1lKTsKLQotICAgICAgICBpZiAoJHByb3BlcnR5
X2F0dHJpYnV0ZXMgZXEgInY4OjpEb250RGVsZXRlIikgewotICAgICAgICAgICAgJHByb3BlcnR5
X2F0dHJpYnV0ZXMgPSAiIjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRwcm9wZXJ0
eV9hdHRyaWJ1dGVzID0gIiwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigkcHJv
cGVydHlfYXR0cmlidXRlcykiOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCR0ZW1wbGF0ZSBl
cSAicHJvdG8iICYmICRjb25kaXRpb25hbCBlcSAiIiAmJiAkc2lnbmF0dXJlIGVxICJkZWZhdWx0
U2lnbmF0dXJlIiAmJiAkcHJvcGVydHlfYXR0cmlidXRlcyBlcSAiIikgewotICAgICAgICAgICAg
IyBTdGFuZGFyZCB0eXBlIG9mIGNhbGxiYWNrLCBhbHJlYWR5IGNyZWF0ZWQgaW4gdGhlIGJhdGNo
LCBzbyBza2lwIGl0IGhlcmUuCi0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0KLSAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0
aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwotCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgJHtjb25kaXRpb25h
bH0kdGVtcGxhdGUtPlNldCh2ODo6U3RyaW5nOjpOZXcoIiRuYW1lIiksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoJGNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgJHtzaWduYXR1
cmV9KSRwcm9wZXJ0eV9hdHRyaWJ1dGVzKTsKLUVORAotCi0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CisgICAgICAgIG5leHQgaWYgSXNTdGFuZGFyZEZ1bmN0aW9uKCRkYXRhTm9kZSwgJGZ1
bmN0aW9uKTsKKyAgICAgICAgR2VuZXJhdGVOb25TdGFuZGFyZEZ1bmN0aW9uKCRkYXRhTm9kZSwg
JGZ1bmN0aW9uKTsKICAgICAgICAgJG51bV9jYWxsYmFja3MrKzsKICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>