<?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>131033</bug_id>
          
          <creation_ts>2014-04-01 06:26:20 -0700</creation_ts>
          <short_desc>Security Policy error when using MathML in canvas</short_desc>
          <delta_ts>2025-07-07 03:19:26 -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>MathML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc>http://fred-wang.github.io/TeXZilla/examples/toImageWebGL.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>156176</dependson>
    
    <dependson>85733</dependson>
    
    <dependson>119492</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>dtrebbien</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>krit</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pdr</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>996243</commentid>
    <comment_count>0</comment_count>
      <attachid>228278</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-04-01 06:26:20 -0700</bug_when>
    <thetext>Created attachment 228278
Screenshot of the testcase (Gecko)

The page

http://www.maths-informatique-jeux.com/international/mathml-in-webgl/threejs/

uses THREE.js to draw three squares with the following textures:

- A red PNG square: http://www.maths-informatique-jeux.com/international/mathml-in-webgl/threejs/32x32.png
- A green SVG square: http://www.maths-informatique-jeux.com/international/mathml-in-webgl/threejs/32x32.svg
- A blue SVG square with MathML foreign object: http://www.maths-informatique-jeux.com/international/mathml-in-webgl/threejs/32x32-mathml.svg

In attachment, I give a screenshot of the rendering in Gecko.

In WebKit, the two first squares render correctly, but the last one fails with &quot;SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent.&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996244</commentid>
    <comment_count>1</comment_count>
      <attachid>228279</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-04-01 06:30:57 -0700</bug_when>
    <thetext>Created attachment 228279
Screenshot of the testcase (WebKitGTK+)

Here is a screenshot of the testcase in WebKit: the blue square is missing. I opened the MathML-in-SVG texture in a separate window to show that it renders correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996250</commentid>
    <comment_count>2</comment_count>
      <attachid>228283</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-04-01 07:01:56 -0700</bug_when>
    <thetext>Created attachment 228283
Patch

So I just read the code and the problem is that SVGImage::hasSingleSecurityOrigin() returns false whenever the SVG image contains a foreign object:

// Don&apos;t allow foreignObject elements since they can leak information with arbitrary HTML (like spellcheck or control theme).
if (descendantsOfType&lt;SVGForeignObjectElement&gt;(*rootElement).first())
  return false;

If I remove these lines, the following example renders correctly (modulo bug 126516... on which I&apos;m working on in bug 119038):
http://www.maths-informatique-jeux.com/international/mathml-in-webgl/

What about relaxing the condition and allowing foreignObject with MathML content?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998135</commentid>
    <comment_count>3</comment_count>
      <attachid>228731</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-04-07 06:45:48 -0700</bug_when>
    <thetext>Created attachment 228731
Patch V2

This one keeps forbidding XHTML but allow some MathML.

Example: https://www.youtube.com/watch?v=sN4E090yKOw

Below is an overview of the MathML supported in WebKit.

Most MathML elements are just allowing some specific math layout:

- math: the MathML root
- msubsup, mover, munder, munderover, msub, msup, mmultiscripts, mprescripts, none: draw scripted expressions
- mtable, mtr, mtd: same as HTML tables.
- mfrac: draw a fraction.
- msqrt, mroot: draw radicals
- merror: draw an error message (specific style)
- mphantom: make the invisible content
- mrow: container to group expressions
- menclose: strikeout some content, or add a frame etc
- mfenced: draw fenced expressions ; equivalent to mrow+mo
- mspace: adjust formula spacing

Some elements are a bit more special:

- maction: add some basic interactivity (useless for SVGImage, though).
- mstyle: allow to apply style attribute to content e.g. mathcolors, mathbackground etc (this is not the same as HTML &lt;style&gt;)
- mi, mn, mo, mtext: containers for text. they can also contain &quot;phrasing content&quot; (http://www.w3.org/TR/html5/dom.html#phrasing-content-1)
- semantics, annotation, annotation-xml: attach some annotations to a MathML formula (e.g. LaTeX source). Note that annotation-xml can contain flow content (http://www.w3.org/TR/html5/dom.html#flow-content-1).

Most of the MathML attributes are specific to the elements above. Here are the generic presentation attributes:

- background, color, mathbackground, mathcolor: change the colors
- dir: change the directionality
- fontfamily, fontsize, fontstyle, fontweight, mathsize: change font properties
- mathvariant: change the style of math characters
- href: not supported (https://bugs.webkit.org/show_bug.cgi?id=85733), but we can just forbid it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998165</commentid>
    <comment_count>4</comment_count>
      <attachid>228731</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-07 09:42:34 -0700</bug_when>
    <thetext>Comment on attachment 228731
Patch V2

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

&gt; Source/WebCore/svg/SVGForeignObjectElement.cpp:174
&gt; +    // We don&apos;t allow arbitrary HTML content since this could leak information (e.g. spellcheck or control theme).

Can&apos;t MathML elements that are allowed in this patch leak information like installed fonts or font preferences? How did you come up with the list of what to allow?

&gt; Source/WebCore/svg/SVGForeignObjectElement.cpp:178
&gt; +    // Most MathML elements are safe since they just do some math layout without advanced user interfaces or external resources. However, we are precautious and forbid some special elements.

This blacklist based security check concerns me. Generally, it&apos;s much better to have whitelisting than blacklisting.

Additional full traversal seems like it would be bad for performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998168</commentid>
    <comment_count>5</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-04-07 10:02:50 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebCore/svg/SVGForeignObjectElement.cpp:174
&gt; &gt; +    // We don&apos;t allow arbitrary HTML content since this could leak information (e.g. spellcheck or control theme).
&gt; 
&gt; Can&apos;t MathML elements that are allowed in this patch leak information like installed fonts or font preferences? How did you come up with the list of what to allow?

Yes, but I don&apos;t know whether it is a concern or not. Fonts were not mentioned on bug 119492. I think this applies to SVG &lt;text&gt; too and actually one can already use Javascript to measure box and get some information on user fonts...

&gt; 
&gt; &gt; Source/WebCore/svg/SVGForeignObjectElement.cpp:178
&gt; &gt; +    // Most MathML elements are safe since they just do some math layout without advanced user interfaces or external resources. However, we are precautious and forbid some special elements.
&gt; 
&gt; This blacklist based security check concerns me. Generally, it&apos;s much better to have whitelisting than blacklisting.
&gt; 
&gt; Additional full traversal seems like it would be bad for performance.

So what would you suggest instead?

I&apos;m not a security expert, but per bug 119492 only @href is a potential problem to me (but it is not supported yet anyway).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013883</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-06 16:45:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; So what would you suggest instead?
Does Gecko do a full traversal?  How do they let it through?  Returning false if there is any element that is not a MathMLElement with only a list of allowed attributes and tags would be safer, but it would hurt performance if there were many &quot;safe&quot; MathMLElements.  The result of a traversal could be stored somewhere in case it needed to be done again, but I think doing at least one full traversal is the only way to make sure this foreign object is safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179819</commentid>
    <comment_count>7</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-04-01 05:25:03 -0700</bug_when>
    <thetext>SVGImage has changed in bug 119639. There is a new comment suggesting that foreignObject could be allowed in SVG image in the future, but I can&apos;t find the corresponding bug (and bug 119639 is not public).

&gt; // FIXME: Once foreignObject elements within SVG images are updated to not leak cross-origin data
&gt; // (e.g., visited links, spellcheck) we can remove the SVGForeignObjectElement check here and
&gt; // research if we can remove the Image::hasSingleSecurityOrigin mechanism entirely.

I&apos;ll probably go back to this once the patch for MathML href lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179820</commentid>
    <comment_count>8</comment_count>
      <attachid>228731</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-04-01 05:25:49 -0700</bug_when>
    <thetext>Comment on attachment 228731
Patch V2

Clearing review flag for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179822</commentid>
    <comment_count>9</comment_count>
      <attachid>275396</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-04-01 06:00:19 -0700</bug_when>
    <thetext>Created attachment 275396
Patch V3

Just updating the patch so that it applies on top of bug 119492 and bug 85733.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2128091</commentid>
    <comment_count>10</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2025-07-07 03:19:26 -0700</bug_when>
    <thetext>Unassigning myself since I&apos;m not working on this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>228278</attachid>
            <date>2014-04-01 06:26:20 -0700</date>
            <delta_ts>2014-04-01 06:26:20 -0700</delta_ts>
            <desc>Screenshot of the testcase (Gecko)</desc>
            <filename>gecko-webgl.png</filename>
            <type>image/png</type>
            <size>3791</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">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
8gqAvAIcDf8HIxmZ8Tc10OQAAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>228279</attachid>
            <date>2014-04-01 06:30:57 -0700</date>
            <delta_ts>2014-04-01 06:30:57 -0700</delta_ts>
            <desc>Screenshot of the testcase (WebKitGTK+)</desc>
            <filename>webkit-webgl.png</filename>
            <type>image/png</type>
            <size>19447</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">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
ye/3hx51aDQaZTKZZDabZbFYQsHFarV2eBoLAAAAcMmGBHwqLCxMYWFhstvtFAMAAACXNR6ke5GI
jIxUbV0thQAAAAAhAW3S09K178AB1dTWUAwAAABcUFxudJEYMrjtFxx37tkt58nnIQMAAAAXQrdP
NwIAAABw5eFyIwAAAACEBAAAAACEBAAAAACEBAAAAACEBAAAAABnzRAMBnm6EQAAAIAQziQAAAAA
ICQAAAAAICQAAAAAICQAAAAAICQAAAAAICQAAAAAICQAAAAAOIfMkmQwGKgEAAAAAEmcSQAAAABA
SAAAAABASAAAAABASAAAAABASAAAAABASAAAAABASAAAAABASAAAAABASAAAAABASAAAAABASAAA
AABASAAAAABASAAAAABASAAAAABASAAAAABASAAAAABASAAAAABASAAAAABASAAAAABASAAAAAAA
QgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIA
AAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAAQgIAAAAA
QgIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIA
AAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAAEBIAAAAA
EBIAAAAAEBIAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAA
AAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAA
gJAAAAAAgJAAAAAAgJAAAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQE
AAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEAAAAAJcgMyUAgCtXmCQPZQCAARUu
qfUSXwfOJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAA
AAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAgJAAAAAAg
JAAAAAAgJAAAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEAAAAAIQEA
AADA+WO+Ulc8LCxM11xzjebPn6/k5GRFRkYyGoBLnNPpVEVFhTZu3Kj169fL5/NRFAAA+sEQDAaD
BoPhilrpQYMG6amnntKSJUs0atQo2Ww2RgJwGQWFgwcPavXq1frZz36m2tpaitKNMEkeygAAAypc
Uuslvg5X3JkEq9Wqp59+Wo8//riioqIkScFgkNEMXCZsNpsmTZqkESNGyGg06rvf/a48Hg6DAQAg
JHRjyZIlWrRokaKioggHwGUsMjJSixYt0qZNm/Tuu+9SEAAA+uCKu3F55syZGj16NAEBuALk5ORo
xowZFAIAgD664s4kpKWlyWazye/30/vAZS4yMlJDhgyhEAAA9NEVdybBarVyFgG4goSHh1MEAAD6
6Ip8BGowGCQoAAAAAF24In9MjYAAAAAAdI0zCQAAAAA64EwCAAAAgA6u2DMJAAAAADrHmQQAAAAA
hAQAAAAAXeNyIwAAAAAdcLkReuXr33tOdzz+pHbnFXSY/t9//pvuePxJfeW7/9FhurulRfc+8ZTu
/tI/q7G5udt5Hyo8rjsef1Lf+8X/dPmeB//5Gd3x+JNqdjhD07bu3K07Hn9Sjz39bVXX1nU6H5/P
L6/Xq0Ag0G0bOpv/hdabulwuWls9am319Ho6AAA4t3gEKnpl5pSJKior1968Ak0YPVKS5PX59Mne
/ZKk8qpqVdfWaVB8nCRp+5598nq9mj5xvGKiorqtt0GGtv8aDL3ql2AwqCPHi/Rff/6bwsxmfesr
X1RiQrwamprPmM+v//qiNuXu0NOPP6ppE8ZdUiGyr3W5ZAOCx6Mn/+0H8vsD+upjD2pMznBJ0oFD
R/SLPzwvk8moXz77LVktFjZEAADOE84koFemTxwvSdqTfzA0bX/BIbnc7k///8HDof/98Se7JEnX
zJ7Rod4DUfvqujr9+De/l9fr1Vcfe0hZGUMUDAaVkzVUb/35t/reU09+eqBtbBviRqPxkhg7/Z3/
pT6mA4GAWjwe/eS3f9SBQ0d04NAR/eS3f1SLx9PjWSAAADDwOJOAXskYnKrEhHgVlZaptr5B8bEx
2rZ7ryTp5mWL9cbqtdpXcEhXz5wmh9Ol3QfyZY+0aeKY0QoGg2poatafX16hPXkFskfaNGfqJN1x
3XKZzSYF1dYXR08U6Svf/Q/VNzYpKyNdd924XKOHZ3doh9Pt1o9/8wc1NDXr3ptv0IxJ4+X3+yVJ
BUeO6ds/+YXGjszRd578ov7lhz/RiZIySdKPfv17SVJWRrr+3zNf69PYCAQC+tn//lmHC4/L4XQp
MSFec6dP0a3XLtGevAL96Dd/0Owpk/Tkow9Ikn74q99pT16Bnv36EzIZTfr2T36hBTOnq6yqSsVl
5UqIi9MNi6/RglnTJUmNzQ79/Y23tTf/oBxOl5ITB2n2lIkaf9UoSVJJeYWeee5nKi2vVPKgBN20
bLHmTpssSd3W9XDhCX37J7/Q7KmTVFxaruq6ek0dP0ZPPPzZi2psWcLC9PTjj+kH//1b+QMBPffr
38ugoIIyyGQ06unHH5MlLIxtFgAAQsK5DwlXuo+279Qbq97v9LVr5szUdQuvPqNmMyZN0Dtr12tf
wSHNnTZZubv3KSI8XHdcf61WfbhJ+woOKhgMKnfPPvkDAc2fMU1Gg0Eer1fP/uevVF5VrXGjclTf
2KQ3Vn8gl7tFj959e2gZPp9fyYmDNCg+XgcOHdb3f/kbfe/rT2j40MzQe375x+dVXFauOdOm6Nbl
S0IBQZIMxrbLc4wn/zttwji5W1pVVVOrMSNHKDE+TkkJCX0fL5KOHD+hnOwshVssyjt8RK++u1rh
VqvSU1NOLvPTMxVGw8l2GIyhNm3ZuVsZaYM1NH2ICo4c02//9g+NzB6m+NgY/fvP/1tllVXKHJKm
UcOzVHTygL5dXUOjjEajhmUM0cGjhfrVX/6mEcMyFRcT3W1dQ8vesVsJcbFKTIhTZU3dRTkec7KG
6ltPPK7v/fLXam1tlcFgkNVi0beeeFw5WUM5mwAAACGBoHA+uNxuFZdXdPpaU7Oj0/pMnzhe76xd
r735BxUXEy2H06n5M6fJbDJp/OiRyt29V8VlFdqyo+1So/kzpykYDGrz9p0qq6zSjEkT9NnbbpLf
H9A3n/uZ1n60RfffeqN0clmjhmfp37/2hAwGg9Zs3KxfP/+i3l23QV855Zvv0SOG68jxIhWVlqmx
uVmRERGndmqH/r3nputVXVuvqppa3bhkoaZNGKdgMCiv19vtuDh93Q2S/vKfP1JtfYNKKyqVNChe
r723RvsKDmnIyZDQ2ZgKBoMd1u3Zr39FkvSbF/5Pqz/cpLzDRyRJZZVVmjl5or7xpc+1Lc9gkN/v
V8GRo5Kk8aNH6vtPf1XBYDD0twcOHpbBYOhVXcePHqnvPfVkqH0tLS0X3Xj0+/3y+nwy6NN7MIJq
u+/l1CAIAAAICQSEc2j5NfN107LFnb7m9Xo7PZDOyRqqKHuk9uYfVLi17SbSWZMnKhgMauKY0crd
vVebP9mpfQWHlJaSrGFD0hQMBlVaUSlJ2rZrj7bt2tNhnlU1tR36pbW1VZI0YmiGJKmkvLLD+29b
vlTNDoc+3JKrX/zheT3zpc/JZDJ1uR7tfe3z+eXx9O8pOS2tHv34N3/QrgP5Haa39mF+wWAwdHAe
GxV18mDdo4amprbwMzwrtO6dcZ+896P9b90trapvbOx1Xd2n3DtyMco7fEQ//d2fFZRktVjUvoX+
+Dd/0FNfeFhXjRjO3hoAAELCuQ8JV3pQ6CoI9FA4TZ8wXh9s3qK1H21RuNWqsSNHKBgMavzJJx69
sXqtpLZLltovEUkc1HaJz7wZUzVv+tQOs0yIiwuFiFMD3JHjRZKk1KRBHfrK6/Xqi5+9RxXVtdpX
cEh/+Mer+tw9d5z89vnMINh+yU2rp7XXT046/X2rN2zSrgP5mj9jmm6+dokam5r07H/+SpJCYam+
sanT+XfWpqA+nTg4JVlS203fS+bNluHkpUq9+dv+1PVi1Orx6Jd/fEH+QEAmo1Hf+soXpWAwdI/C
L//4gn757L/ydCMAAAgJ5z4koH+mT2oLCZI0dcJYmU9+i58YH6eUpERVVFXLYDCEbqyVpLlTJ+uV
t1fqkz37ZTaalBAfq8Zmh4wGg8aPygm97+DRQv30d3+SJO3JL5DBYNAt1y49ow2BQEDf/PLn9fQP
fqz1H29TSuIg3bhkYaftHZLSdjnQH//xmtZu+lhen0/PnrykqTNfffaHMhg+vb8gLiYqdABeXlWl
HXv36eiJotDr2ZkZCrdadeDQYX33Z/8ls8mk4ydvlu6NudMm6601H2j7nn365nM/1+DkJJVUVGr4
0AwtmjOr+7/tZV0viR2R2aQIg0VPP/5Y6CzSt554XD/57R+6PFMEAAAICQMeEggK/TMmZ7isFota
PR7NmDQhVEe/36/JY6/Se+s2aPzoUYqx20OvRYRb9ezXv6L//ssLWr9lW2he0yaM63BDavrgFB0v
KZW7pUUjs7N0/y03alh6Wodr0tv7zhJm1re/8kV944c/1f+9+a6SBiUoMT7+jCB47YK5Kimv0M79
B1RWVa3hQzPU0tqqcKu10/VzujpelmO1hGn5NVcr7/BR7T6Qr8OFJzQsY0jo701Go575py/or6++
ruKycg1OTtbMyRO0/uNtHb717xBOQ/8Jymgw6Aff+Jqef2WFdu7PU0lFpVKTEpWYEN/j3/a2rhd7
MLaEhenXP/z39obK5/NJkoYPzdDvfvT9tvHl87HNAgBwHhmCwWCwq29VL0d///vftWzZMlm4dKHf
7Ha7pLYbYNsP6CTJarUqLCxMfr//jGvgjUajwsPD5W5pUX1jk+JiomW1WNTS0iKTyaSIiAgFAoHQ
N/yBQEAejycUECIjI2UwGOR0OkMHi0ajURERETIYDGppaVEwGFRERESH5RsMBlmt1tC30X6/X62t
Z1561D7/zgKly+VSeHi4nG63DDIo0ta2zEAgILfbLZPJJKvVGrrhNhAIyGw2h9pwepssFossFota
W1vl9XpDbTQajaF5+E7esNvT3/amrp31x0W3IzpZ+zNuGu9iel+8/fbbuvfee9lwuxAmid+0BoCB
FS6p9RJfBy43Qp85HI5Op7e2tnZ5820gEJDL5ZLBYFB8THSHG3n9fn+X82zndDo7nefp00+fz6nL
6ev8T+V2u2U6ecDqcrk6vOb3+8+Y1l2bPB5Ph5uou2tjT397tnW92LdJtlUAAAgJ5/WAhIMPAtrl
1HbGMwAAGEhGSgAAAADgVJxJAAAAANDBFXkmgYAAAAAAdI0zCQAAAAA64EwCAAAAgA44kwAAAACg
A84kAAAAAOjgijyTEBERQVAAAAAAusDvJAAAAADo4Iq9JwEAAABA5ziTAAAAAICQAAAAAICQAAAA
AICQAAAAAICQAAAAAICQAAAAAICQAAAAAICQAAAAAICQAAAAAICQAAAAAICQAAAAAOAiY6YE/eNy
u3Ss8Ihq62qUmJCo7OwcWS3WC9IWj8ejY4WHVVFZrsRByRo6NEuRtsjztvzGpgbV1deq1dMiT2ur
vD6vrBaroqNjFRcTL7s9Sk6nQwcP58toMilraLZiomMZRAAAAISEyygguJz6ZGeurrl6kcLCLDp4
KE+HDxdo7JgJF6Q9R44eUkZ6hmbNnKuGhnqtWvOeZs+apyh71DldbrOjSSWlJxQbHatROaNltYbL
bG4bUl6vV42NDTpRVKiCgwfk8Xm08Oolqq2r1YH8/ZoxdRYDCQAA4CLF5UZ95HQ5lbtjmxYvXCq7
PUp+v1dZw7JVXFpywdpUXlmmtLR0tbS4FR0do+s/c6M2bFyn5uamc7bM4tITKq8s1dTJM3XVVeNl
NpvV0uJWQ0OdGhrq5PG0KiYmRpMmTtU1C5Yo3BqhyEi7oux21dRUM5AAAAAICZdRQNi+RUsXLVNE
hE0OR5OMRpPKysqUkpR8wdoVFxOnkpIiBYNBORxNstkidfONt2ntujVqamoc8OVVVJbLaDBqxtTZ
koJqaKiXx9Mqg8Egi8UqqzVckuR2u9XU1KBgMKDZM+eF/t7n8zKYAAAACAmXQUBwOrQt92MtXbw8
FBDM5jBVVFYod8c2jRg+8oK1LSdntDZ+tEHlFWUym8PkcDQpMjJSt992l1atWaXGxoYBW1ZjU4Nq
66o1dsx4ud0utbS0yGq1qtnRrD37dmvzlo1au26NDuTtU2NToywWq1paWuTxtMjv97eFBK+PAQUA
AEBIuPQDwtbczVq2ZLlsto4BYdPmDbp63kLZz/H1/92xR9o1f+4Cbdj4ocrLPw0K9ki77rnrHr23
6h01NJx9UAgGg8o/mKcZ02bL4/HI6/XIbDZp+45t2rl7h+Ji4zRq5BhlDRuuwhOFWrN2lbZs26Jg
MCBJampqa4PXR0gAAAAgJFzCHE6HPt72kZYtvU42W+SnAaGiXBs2rdeCeQsVHRV9wdsZFRWthQsW
64P1H6i0rFQmk1mNjfWy2+269+779dY7b6i+of6sltHY1KD42HiZzWa53U6FhVm0Z99uSQbNnjFP
yUmpirTZdfjIIS1b8hk9+tDnteiaxYqKignNIxAIyEdIAAAAICRc0gFh60YtX3adIk8LCB9uWq+F
Vy+WyWRW7idb9drrL2vL1s1yOBySpGZHszZu+lB/eeFPWr/hAzWdxU3ELS1u5eXv07oP39e+/Xvk
crsktT2GdceuT/TWu69r+45tMplMWrp4md5fu1rFxUUymUyqqalWVFSUPnvfg1rx+quqq6/rdzuq
qio1bFiW/H6fjEaTamprVF1dozGjx3V4X2tri5wOh+rra1VXV6OGhjr5/D55vV75fF75vNyTgC6C
aGOTXnv9Dbnc7k5fd7ndeu31N9TY2ESxAAA4h3gEahecLqc2f7xR1y2/QZE2eygglFeUa/2GdVq8
cKmio2O0NXeLRgwfoaWLr9WRo4e1a89OzZszXzt3fqJRo0brxhtuVsHBfOXmbtXiRUv71ZYjxw4r
M2OoZs+ap6LiEzp4KF+TJkxRfv5+ZWcN16JrFuvYsSPau3+PZs2Yo+XLrtfb77yhhQsXafDgNFVU
lik5KVUPP/iIfv/H/9Wdt9+tuLi4PrejsqpCUyZPlcfjkclkUnFJkTLSM2U0dsyaUyZP05oPVqux
sUHBYFDBQLDtv8GgAsGAgsEgAwyd+mD9ev3qt7/T2nXr9dPnfqjIyE9/78PpdOqpZ/5VBYcOyWAw
6Nabb6JgAAAQEs6v7Tu2KTt7uGy2SDU1NchsDpPRaNLq91dq7qz5ioluu4SmqOi4rl26XG63S0mJ
SXp35duaN2e+jh47optuvEVut0upKala8fqr/Q4JFeVlmjt7vtxul+Lj4rWhtFiTJkxRUUmxFi1c
KrfbpcTEJK1Zu1qzZsxRbGys5syZp9ffXKGvPfmU/D6fSkqLlJo6RGOuukpvvPW6Hn7wkT63o7Gp
LSi5XE5ZLFYVFRdp7uz5Z7wvPi5BN11/C4MIfbZsyWK9/8E6FRw6pKee+ddQUDg1IIzKydGyJYsp
Fi5qlYvGaePa71AIXPTmLf0Ppby/l0LgDFxu1IWpk6YrLz9PR48dkclkktvtUliYWffd/YC2bP1I
DSefGDR4cJp27tqhxsYGbdi4XhlDMiVJmRlDtS13q+rr67Vm7WoNG5bd77YMSkxUXv5+NTc3KXf7
VqUkpUiSUlNStWfvLjU1NWrT5o1KSxsiSaqvr9P6D9fpy48/oTCLRU3NjYoIt2nP3l3auWunbrrh
5v4NFqNRPp9PBoNRwWBQYWazAoEAgwUDJjIyUj997ocalZMTCgpVVVUdAsLpZxgAAAAh4byx2+1a
MH+hNv7/9u79ycr6sOP4Z3fPspdz9oYiFxGtGKKkGgXFcNFm0iZgorE0F9uNKKKZdjrN2Gl/6B/Q
HzLpNDP9rdNJ0yY10AiI0bjABgUvIEkvickkYJDrsgJauqwsu+wuZ9n+AKGUCZESwmX39frteXj2
8H2+59kf3vt9znk2vpLOfZ0pFAp55539KRbr89DnW/PC6ufT3X0oH77tjnTs3ZNlTy/LsXI5M2fe
lSS5685Z2b17V77+z1/LscFjmfOROec9lmk33ZJ9+/dldXtbykNDmX7LbydJbv3Qbens7MzKVStS
PlbO7bfNyKFDXVm5akUeW7wkpVIpu3fvSF1dMbv27ErbC21p/cNFGTt27HmNo2bMmAwMDqSq6kQk
lIqldJ/Dh6EHBgfy2qZX8tTSb2TN2rZTgQXnEgqti5cIBAC4yCqGh4eHKyoqRs0JL1u2LPPnzz/n
4987/F7Wtq/OvLnzMmHChPT2HsmkiZPTc+RIvvkv/5QHH1iYlpaxl8W5dR3qyjPPLM/jS76YUqmU
nbss8xpEAAALR0lEQVS2p7GhMR17O7JmzZosevjRXH31uPN+/dc3b8zMmXemsaEx5fKxHO45kpfW
r8un7z/7ysTQ0FCe++6zmTt7bm6+eXo69u7Jiy+uy8Lf/4zfPn6lM28xOt9AaG9vT2trqwk9i+ok
g6bhgnO7EVcKtxv9ZtQmGbjCz8FKwvtoamzK/E/clw2vbEjn252pqanL7o5dKRaLeWTR4qxctTxd
XV2XfJxdh7qyYuXTWfLYEymWTnwNaalYyp49e9K2ZvWvHQhJct11U7Jp86ZUVRXS3380464el2vG
j8+rr7186kFp/9dwXn51faZ9YFqmTbs5u/bsSG1tbd5594CvQeV9FYvFfPUrX85f/vmT+epXvmwF
AQBEwuWluak599/3QDZsWJ/Ot/emvq4+O3a+lVKxlCWLn8i3ly/NoUOXLhS6u7uzfMW/5vElX0yx
VMq2t7akoaGUPR170ramLY88vPjXDoQkuW7ylPQcPpwDB/alunpMjvQezoKPL8i4a67Jqu+szNY3
t+Rwz+F0dx/Kjp3bs/Tb30p9bV3mzrknHXt3JUn279+X5qaWFAo+M8/7q6+vz/33LUh9fb3JAACR
cBmGQnNLHnxgYV5avz6dnZ0pFUv5+batKZVKefDBhXn51Zcv2dj+7T9+kEUPP5pSsZitb/40DaXG
dHR0pG3N6jz6yJKMuwCB8Auz7rw731u3NpWVlekfGMj+A/vykVmz87nPPJSKyso8/8Jz2bh5Y947
3J2H/2hRFiz4ZN7e35n+/v4cHzqe557/TmbPnuOCAgAQCSNDS8vYfHbhZ/PiS+tOhEJDQ37+1pbU
1dZm547tl2xcb765JddOmpydu3ekqbEpHR1707a6LY898vgFDYQkmThxUiZNmpynVzydipx4gvKO
XdsydLycGbffkS/96ZfS+tAXMm/OvSmXj+UnP30jR/t6U1tbl1Wrnsnds2bn+ik3uJgAAC5j7vk4
R+VyOd3d3enp6cmM2+9K25rV+Z1778mNN07Nj3/yRiZMmJiDBw+mubn5ot1K84sxjR8/Ma++9kqu
vXZStu/Ykfbvted3P/p7OXLkSCoqKi74mObMnpcfvfHDPPXUN/PJT92fq8ZenZ7D7+Xddw9k8Nhg
KioqUllZmUJVIWNbrkpHR0fWb3gpN3/wlsy6624XEwCASBgZent709fXl56enpTL5Uy9YWo2v/79
rF3bnmvGjc+MO2akr68v1dXVaWpquqhjuvGGqdm8eXMOvLM/9fXFTP/gh3L8+HB6enpSVVV1wcc0
MDCQG67/rQwfH86zz65KU3NzPnDTTblu8pS0NI/NQH9/evt6c/Dgf+f7P3guR3uPZsaMmZly3fXZ
t29f6urqUl9fn5qaGhcWAIBIuHI1NTWlsbEx48ePT39/fwYGBlIul1MoFFJTU5Pa2tqMGTMmF/Pr
ZE8f07Rp0y7KmIaGhjI4OJjBwcG0tIzNxz768ezfvy/btm3Pxo2b0tvXm6rKqhSqCqmrq8uE8RNz
6/QPp7a2NkePHk2SVFVVpVAopFAopKqqysUFACASrlwVFRWpqam5rP4CfrHHVFVVlYaGhtTW1qZY
LKa/vz/Nzc2ZOvWmlMvlDA0NnXoKc2Vl5akgGDNmzKlwqampSXV1tQsKAEAkMJJUV1enuro6pVLJ
ZAAAjDC+3QgAABAJAACASAAAAEQCAAAgEgAAAJEAAACIBAAAQCQAAAAiAQAAuCRG5ROXr7pq7CX9
/4eHXXgAAFy+rCQAAAAiAQAAEAkAAMA5KpiCc3EwydL/x/FPmjIAAK5YVhLOyfwk/aYBAIBRwUrC
+9qQpJTkr0wFAAAigST5syT/aRoAABg13G6UryXpOMu//UOS6UlqT24fTbIoSWuSF5L8QZLFSb5h
GgEAGDFG6UpCOcmsJMNJfpakOknvLznu75JsPW37H5N8IcmfnHyN5Sf333syFgAA4Mo3SlcSCkl+
mORHSdYm6UvyrTOO+Ysknzpj3/gktybZn+TrJ19na5JGVxIAACJh5PhYkvokT5yxf22Svz1j3+dz
4vMJ85I0nNy3Lslc0wgAgEgYWdYnGUjy9ye3P5ezP+vg9SSfOG17XU7cbvTXphEAAJEwctydE7cM
PZkTz0PYkuSPz3LspiSzT9v+WZL/OvkzAAAgEkaQf09yLMlt+d8VhV+mL8mM07bvSbIyyd+YQgAA
RgTPSThlWpLmJEdy4vahsznzmQlLTR0AACJh5PqxKQAAQCSYgtNNMQUAAIx6PpMAAACIBAAAQCQA
AAAiAQAAEAkAAIBIAAAARAIAACASAAAAkQAAAIgEAABAJAAAACIBAAAQCQAAgEgAAACuTIXReNLD
w954AAA4GysJAACASAAAAEQCAAAgEgAAAJEAAACIBAAAQCQAAAAiAQAAEAkAAIBIAAAARAIAACAS
AAAAkQAAAIgEAABAJAAAACIBAAAQCQAAgEgAAABEAgAAIBIAAABEAgAAIBIAAACRAAAAiAQAAOD8
FEbjSXd1dXnnAQDgLKwkAAAAIgEAABAJAACASAAAAEQCAAAgEgAAAJEAAACIBAAAQCQAAAAiAQAA
EAkAAIBIAAAARAIAACASAAAAkQAAAIgEAABAJAAAACIBAAAQCQAAgEgAAABICqPxpNvb273zAAAg
Ek5obW31rgMAwK/gdiMAAEAkAAAAIgEAABAJAACASAAAAEQCAAAgEgAAAJEAAACIBAAAQCQAAAAi
AQAAEAkAAIBIAAAARAIAACASAAAAkQAAAIgEAABAJAAAACIBAAAQCQAAACIBAAAQCQAAgEgAAABE
AgAAIBIAAACRAAAAiAQAAEAkAAAAIgEAABAJAACASAAAAEQCAAAgEgAAAJEAAACIBAAAQCQAAAAi
AQAAEAkAAIBIAAAARAIAAIBIAAAARAIAACASAAAAkQAAAIgEAABAJAAAACIBAAAQCQAAgEgAAABE
AgAAIBIAAACRAAAAiAQAAEAkAAAAIgEAABAJAACASAAAAEQCAAAgEgAAAJEAAAAgEgAAAJEAAACI
BAAAQCQAAAAiAQAAEAkAAIBIAAAARAIAACASAAAAkQAAAIgEAABAJAAAACIBAAAQCQAAwJWsYnh4
eLiiosJMAIxC1UkGTQPABVWbZOAKPwcrCQAAgEgAAABEAgAAIBIAAACRAAAAiAQAAEAkAAAAIgEA
ABAJAACASAAAAEQCAAAgEgAAAJEAAACIBAAAQCQAAAAiAQAAEAkAAIBIAAAARAIAACASAAAARAIA
ACASAAAAkQAAAIgEAABAJAAAACIBAAAQCQAAgEgAAABEAgAAIBIAAACRAAAAiAQAAEAkAAAAIgEA
ABAJAACASAAAAEQCAAAgEgAAAJEAAACIBAAAAJEAAACIBAAAQCQAAAAiAQAAEAkAAIBIAAAARAIA
ACASAAAAkQAAAIgEAABAJAAAACIBAAAQCQAAgEgAAABEAgAAIBIAAACRAAAAiAQAAEAkAAAAIgEA
AEAkAAAAIgEAABAJAACASAAAAEQCAAAgEgAAAJEAAACIBAAAQCQAAAAiAQAAEAkAAIBIAAAARAIA
ACASAAAAkQAAAIgEAABAJAAAACIBAAAQCQAAgEgAAAAQCQAAgEgAAABEAgAAIBIAAACRAAAAiAQA
AOA3o2AKAEavY0kqTAMAZ7CSAAAAiAQAAEAkAAAAIgEAABAJAACASAAAAEQCAAAgEgAAAJEAAACI
BAAAQCQAAAAiAQAAEAkAAIBIAAAARAIAACASAAAAkQAAAIgEAABAJAAAACIBAABAJAAAACIBAAAQ
CQAAgEgAAABEAgAAIBIAAACRAAAAiAQAAEAkAAAAIgEAABAJAACASAAAAC5v/wODXtiiZijfHQAA
AABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228283</attachid>
            <date>2014-04-01 07:01:56 -0700</date>
            <delta_ts>2014-04-07 06:45:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>SVGImage.patch</filename>
            <type>text/plain</type>
            <size>798</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDc4MGFlNGEuLjRm
YmUxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNzMs
OCArNzMsOCBAQCBib29sIFNWR0ltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgZm9yZWlnbk9iamVj
dCBlbGVtZW50cyBzaW5jZSB0aGV5IGNhbiBsZWFrIGluZm9ybWF0aW9uIHdpdGggYXJiaXRyYXJ5
IEhUTUwgKGxpa2Ugc3BlbGxjaGVjayBvciBjb250cm9sIHRoZW1lKS4KLSAgICBpZiAoZGVzY2Vu
ZGFudHNPZlR5cGU8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+KCpyb290RWxlbWVudCkuZmlyc3Qo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIGlmIChkZXNjZW5kYW50c09mVHlwZTxT
VkdGb3JlaWduT2JqZWN0RWxlbWVudD4oKnJvb3RFbGVtZW50KS5maXJzdCgpKQorICAgIC8vICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBCZWNhdXNlIFNWRyBpbWFnZSByZW5kZXJpbmcgZGlz
YWxsb3dzIGV4dGVybmFsIHJlc291cmNlcyBhbmQgbGlua3MsCiAgICAgLy8gdGhlc2UgaW1hZ2Vz
IGVmZmVjdGl2ZWx5IGFyZSByZXN0cmljdGVkIHRvIGEgc2luZ2xlIHNlY3VyaXR5IG9yaWdpbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228731</attachid>
            <date>2014-04-07 06:45:48 -0700</date>
            <delta_ts>2016-04-01 06:00:19 -0700</delta_ts>
            <desc>Patch V2</desc>
            <filename>mathml-in-canvas.patch</filename>
            <type>text/plain</type>
            <size>19717</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZjEyY2ZjLi45Y2U3NmY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTQtMDQt
MDcgIEZyw6lkw6lyaWMgV2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZyPgorCisgICAgICAgIFNlY3Vy
aXR5IFBvbGljeSBlcnJvciB3aGVuIHVzaW5nIE1hdGhNTCBpbiBjYW52YXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTAzMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0cyB0byB2ZXJpZnkg
dGhhdCBNYXRoTUwgaXMgYWNjZXB0ZWQgaW4gY2FudmFzLCBtb2R1bG8gc29tZSByZXN0cmljdGlv
bnMuCisKKyAgICAgICAgKiBzdmcvYXMtaW1hZ2UvcmVzb3VyY2VzLzEwMHB4LWdyZWVuLXJlY3Qt
bWF0aG1sLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2FzLWltYWdlL3Jlc291cmNlcy9saW5r
LW1hdGhtbC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9yZXNvdXJjZXMvbWF0
aG1sLWFubm90YXRpb24teG1sLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2FzLWltYWdlL3Jl
c291cmNlcy9tYXRobWwtbWFjdGlvbi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1pbWFn
ZS9yZXNvdXJjZXMvbWF0aG1sLXRva2VuLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2FzLWlt
YWdlL3N2Zy1hcy1pbWFnZS1tYXRobWwtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtYW5ub3RhdGlvbi14bWwtdGFpbnRlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGht
bC1hbm5vdGF0aW9uLXhtbC10YWludGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1p
bWFnZS9zdmctY2FudmFzLW1hdGhtbC1ocmVmLXRhaW50ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtaHJlZi10YWludGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1tYWN0
aW9uLXRhaW50ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYXMtaW1hZ2Uv
c3ZnLWNhbnZhcy1tYXRobWwtbWFjdGlvbi10YWludGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHN2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1ub3QtdGFpbnRlZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1ub3QtdGFp
bnRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRo
bWwtdG9rZW4tdGFpbnRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1p
bWFnZS9zdmctY2FudmFzLW1hdGhtbC10b2tlbi10YWludGVkLmh0bWw6IEFkZGVkLgorCiAyMDE0
LTA0LTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKHIxNjYxNDQpOiBmYXN0L3ByZWxvYWRlci9kb2N1bWVudC13cml0ZS5odG1sIGlz
IHZlcnkgZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9yZXNvdXJj
ZXMvMTAwcHgtZ3JlZW4tcmVjdC1tYXRobWwuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdl
L3Jlc291cmNlcy8xMDBweC1ncmVlbi1yZWN0LW1hdGhtbC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzQxZjMwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N2Zy9hcy1pbWFnZS9yZXNvdXJjZXMvMTAwcHgtZ3JlZW4tcmVjdC1tYXRobWwuc3ZnCkBAIC0w
LDAgKzEsNyBAQAorPHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayI+CisgIDxmb3JlaWduT2JqZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj4KKyAgICA8
bWF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIgc3R5bGU9InBh
ZGRpbmc6IDBweDsgbWFyZ2luOiAwcHg7IGJvcmRlcjogMHB4OyI+CisgICAgICA8bXNwYWNlIHdp
ZHRoPSIxMDBweCIgaGVpZ2h0PSIxMDBweCIgbWF0aGJhY2tncm91bmQ9ImdyZWVuIi8+CisgICAg
PC9tYXRoPgorICA8L2ZvcmVpZ25PYmplY3Q+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N2Zy9hcy1pbWFnZS9yZXNvdXJjZXMvbGluay1tYXRobWwuc3ZnIGIvTGF5b3V0VGVzdHMv
c3ZnL2FzLWltYWdlL3Jlc291cmNlcy9saW5rLW1hdGhtbC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMDJlNTMzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N2Zy9hcy1pbWFnZS9yZXNvdXJjZXMvbGluay1tYXRobWwuc3ZnCkBAIC0wLDAgKzEsNyBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQg
U1ZHIDEuMC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQv
RFREL3N2ZzEwLmR0ZCI+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
dmlld0JveD0iMCAwIDEwMCAxMDAiPgorICAgIDxmb3JlaWduT2JqZWN0IHdpZHRoPSIxMDAiIGhl
aWdodD0iMTAwIj4KKyAgICAgIDxtYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01h
dGgvTWF0aE1MIj48bXNxcnQgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPjxtbj4xPC9t
bj48bW8+KzwvbW8+PG1pPng8L21pPjwvbXNxcnQ+PC9tYXRoPgorICAgIDwvZm9yZWlnbk9iamVj
dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3Jlc291cmNl
cy9tYXRobWwtYW5ub3RhdGlvbi14bWwuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3Jl
c291cmNlcy9tYXRobWwtYW5ub3RhdGlvbi14bWwuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjA5ZGFlNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcv
YXMtaW1hZ2UvcmVzb3VyY2VzL21hdGhtbC1hbm5vdGF0aW9uLXhtbC5zdmcKQEAgLTAsMCArMSwx
MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzND
Ly9EVEQgU1ZHIDEuMC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAw
MTA5MDQvRFREL3N2ZzEwLmR0ZCI+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHhtbG5zOm09Imh0dHA6Ly93d3cudzMub3JnLzE5
OTgvTWF0aC9NYXRoTUwiPgorICAgIDxmb3JlaWduT2JqZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0i
MTAwIj4KKyAgICAgIDxtOm1hdGg+CisgICAgICAgIDxtOnNlbWFudGljcz4KKyAgICAgICAgICA8
bTpjc3ltYm9sPmNvbnRlbnQgTWF0aE1MPC9tOmNzeW1ib2w+CisgICAgICAgICAgPG06YW5ub3Rh
dGlvbi14bWwgZW5jb2Rpbmc9ImFwcGxpY2F0aW9uL21hdGhtbC1wcmVzZW50YXRpb24reG1sIj48
bTptYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIj48bTptdGV4
dD5hbm5vdGF0aW9uLXhtbDwvbTptdGV4dD48L206bWF0aD48L206YW5ub3RhdGlvbi14bWw+Cisg
ICAgICAgIDwvbTpzZW1hbnRpY3M+CisgICAgICA8L206bWF0aD4KKyAgICA8L2ZvcmVpZ25PYmpl
Y3Q+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9yZXNvdXJj
ZXMvbWF0aG1sLW1hY3Rpb24uc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3Jlc291cmNl
cy9tYXRobWwtbWFjdGlvbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ODBhOTE2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9yZXNv
dXJjZXMvbWF0aG1sLW1hY3Rpb24uc3ZnCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0i
MS4wIj8+Cis8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4iICJo
dHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEw
MCAxMDAiPgorICAgIDxmb3JlaWduT2JqZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj4KKyAg
ICAgIDxtYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIj4KKyAg
ICAgICAgPG1hY3Rpb24gYWN0aW9udHlwZT0iaW5wdXQiPjxtbj4xPC9tbj48L21hY3Rpb24+Cisg
ICAgICA8L21hdGg+CisgICAgPC9mb3JlaWduT2JqZWN0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2UvcmVzb3VyY2VzL21hdGhtbC10b2tlbi5zdmcgYi9MYXlv
dXRUZXN0cy9zdmcvYXMtaW1hZ2UvcmVzb3VyY2VzL21hdGhtbC10b2tlbi5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk3N2QzMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9yZXNvdXJjZXMvbWF0aG1sLXRva2VuLnN2ZwpAQCAtMCww
ICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0v
L1czQy8vRFREIFNWRyAxLjAvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMtU1ZH
LTIwMDEwOTA0L0RURC9zdmcxMC5kdGQiPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KKyAgICA8Zm9yZWlnbk9iamVjdCB3aWR0
aD0iMTAwIiBoZWlnaHQ9IjEwMCI+CisgICAgICA8bWF0aCB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OC9NYXRoL01hdGhNTCI+CisgICAgICAgIDxtdGV4dD48c3BhbiB4aHRtbD0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCI+WEhUTUw8L3NwYW4+PC9tdGV4dD4KKyAgICAgIDwvbWF0
aD4KKyAgICA8L2ZvcmVpZ25PYmplY3Q+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9hcy1pbWFnZS9zdmctYXMtaW1hZ2UtbWF0aG1sLWV4cGVjdGVkLnBuZyBiL0xheW91dFRl
c3RzL3N2Zy9hcy1pbWFnZS9zdmctYXMtaW1hZ2UtbWF0aG1sLWV4cGVjdGVkLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ODkwYTA5MDUxMDdjYTRmZjJiZDE2NjM0NjU3NDg0MjcyMjZlY2I1CkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAyODcxCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAq
Wik9aF5obEElQFdzJGxIYG9rPG19P29UbjJNPAp6M2t3NnxscikxeDNuUD0lNnBKKllXYj40P0w8
OTM9USFAKT1xdHVNfmQpRUxwdV9ieEN5RDxDKiEzQkdsUGlBMT8KeitWMUolNyphOWs/VHYkKzRH
c2I8al5+ZTxlbH0mNT1XUCFYSiFtc0tAXzZsc09FSF9QbkhXQVdLN1lyXnopLUtlCnpmcUB+M2lK
TCh8WkltJmowJTJRUCtJS2RGaFdMKk9qMHtJdSMyNmZXTWo0fWxGcSNyWmJIUWpYN3xqS3Z4bk1M
RwpkNDVlSGs3cD1eLUB8dFkmWEpEaDIhUEN7eFd0fiQoNjk2Y1hKfT58UAoKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52
YXMtbWF0aG1sLWFubm90YXRpb24teG1sLXRhaW50ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1sLWFubm90YXRpb24teG1sLXRhaW50ZWQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNWNjZDgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1t
YXRobWwtYW5ub3RhdGlvbi14bWwtdGFpbnRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CitDT05TT0xFIE1FU1NBR0U6IFVuYWJsZSB0byBnZXQgaW1hZ2UgZGF0YSBmcm9tIGNhbnZhcyBi
ZWNhdXNlIHRoZSBjYW52YXMgaGFzIGJlZW4gdGFpbnRlZCBieSBjcm9zcy1vcmlnaW4gZGF0YS4K
K1BBU1Mgd2luZG93LmN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTZWN1cml0eUVycm9yOiBET00gRXhjZXB0aW9uIDE4LgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtYW5ub3RhdGlvbi14bWwt
dGFpbnRlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1s
LWFubm90YXRpb24teG1sLXRhaW50ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi45MTA3MjYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWlt
YWdlL3N2Zy1jYW52YXMtbWF0aG1sLWFubm90YXRpb24teG1sLXRhaW50ZWQuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgc3ZnID0gbmV3IElt
YWdlKCk7CisgICAgICAgIHN2Zy5zcmMgPSAicmVzb3VyY2VzL21hdGhtbC1hbm5vdGF0aW9uLXht
bC5zdmciOworCisgICAgICAgIHN2Zy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICAgICAg
ICAgIHdpbmRvdy5jdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKworICAgICAgICAgICAg
Y3R4LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKTsKKworICAgICAgICAgICAgY3R4LmRyYXdJbWFn
ZShzdmcsIDAsIDApOworCisgICAgICAgICAgICBzaG91bGRUaHJvdygid2luZG93LmN0eC5nZXRJ
bWFnZURhdGEoMCwgMCwgMSwgMSkiKTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9
OworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1sLWhyZWYtdGFpbnRlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtaHJlZi10YWlu
dGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDVj
Y2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52
YXMtbWF0aG1sLWhyZWYtdGFpbnRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitDT05T
T0xFIE1FU1NBR0U6IFVuYWJsZSB0byBnZXQgaW1hZ2UgZGF0YSBmcm9tIGNhbnZhcyBiZWNhdXNl
IHRoZSBjYW52YXMgaGFzIGJlZW4gdGFpbnRlZCBieSBjcm9zcy1vcmlnaW4gZGF0YS4KK1BBU1Mg
d2luZG93LmN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBTZWN1cml0eUVycm9yOiBET00gRXhjZXB0aW9uIDE4LgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtaHJlZi10YWludGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtaHJlZi10YWludGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNhOGFmZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1ocmVm
LXRhaW50ZWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgc3ZnID0gbmV3IEltYWdlKCk7CisgICAgICAgIHN2Zy5zcmMgPSAicmVzb3VyY2Vz
L2xpbmstbWF0aG1sLnN2ZyI7CisKKyAgICAgICAgc3ZnLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIp
OworICAgICAgICAgICAgd2luZG93LmN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworCisg
ICAgICAgICAgICBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpOworCisgICAgICAgICAgICBj
dHguZHJhd0ltYWdlKHN2ZywgMCwgMCk7CisKKyAgICAgICAgICAgIHNob3VsZFRocm93KCJ3aW5k
b3cuY3R4LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKSIpOworCisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgIH07CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtbWFjdGlvbi10YWlu
dGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1h
dGhtbC1tYWN0aW9uLXRhaW50ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjAwNWNjZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcv
YXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtbWFjdGlvbi10YWludGVkLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRh
IGZyb20gY2FudmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3Nz
LW9yaWdpbiBkYXRhLgorUEFTUyB3aW5kb3cuY3R4LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFNlY3VyaXR5RXJyb3I6IERPTSBFeGNlcHRpb24gMTguCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1t
YWN0aW9uLXRhaW50ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFz
LW1hdGhtbC1tYWN0aW9uLXRhaW50ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4zMzQwMzUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWlt
YWdlL3N2Zy1jYW52YXMtbWF0aG1sLW1hY3Rpb24tdGFpbnRlZC5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBzdmcgPSBuZXcgSW1hZ2UoKTsK
KyAgICAgICAgc3ZnLnNyYyA9ICJyZXNvdXJjZXMvbWF0aG1sLW1hY3Rpb24uc3ZnIjsKKworICAg
ICAgICBzdmcub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgICAgICB3aW5kb3cuY3R4
ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisKKyAgICAgICAgICAgIGN0eC5nZXRJbWFnZURh
dGEoMCwgMCwgMSwgMSk7CisKKyAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2Uoc3ZnLCAwLCAwKTsK
KworICAgICAgICAgICAgc2hvdWxkVGhyb3coIndpbmRvdy5jdHguZ2V0SW1hZ2VEYXRhKDAsIDAs
IDEsIDEpIik7CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfTsKKyAgICA8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFn
ZS9zdmctY2FudmFzLW1hdGhtbC1ub3QtdGFpbnRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtbm90LXRhaW50ZWQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMjJjNzEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtbm90LXRh
aW50ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0IHBhc3NlcyBpZiB0
aGVyZSBpcyBhIGdyZWVuIGJveCBhbmQgbm8gc2VjdXJpdHkgZXJyb3JzLgorCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1ub3QtdGFpbnRl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1sLW5vdC10
YWludGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVmMmQzYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1h
dGhtbC1ub3QtdGFpbnRlZC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKyAgICBUaGlzIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGlzIGEgZ3JlZW4g
Ym94IGFuZCBubyBzZWN1cml0eSBlcnJvcnMuPGJyPjxicj4KKyAgICA8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48L2NhbnZhcz4KKyAgICA8c2NyaXB0PgorICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgIH0KKworICAgICAgICB2YXIgc3ZnID0gbmV3IEltYWdlKCk7CisgICAgICAgIHN2Zy5zcmMg
PSAicmVzb3VyY2VzLzEwMHB4LWdyZWVuLXJlY3QtbWF0aG1sLnN2ZyI7CisKKyAgICAgICAgc3Zn
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKyAgICAgICAgICAgIHZhciBjdHggPSBjYW52YXMu
Z2V0Q29udGV4dCgiMmQiKTsKKworICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShzdmcsIDAsIDAp
OworICAgICAgICAgICAgY3R4LmdldEltYWdlRGF0YSgwLCAwLCAxMDAsIDEwMCk7CisKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgfTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGht
bC10b2tlbi10YWludGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9z
dmctY2FudmFzLW1hdGhtbC10b2tlbi10YWludGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDVjY2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1sLXRva2VuLXRhaW50ZWQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBVbmFibGUgdG8gZ2V0IGlt
YWdlIGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUgY2FudmFzIGhhcyBiZWVuIHRhaW50ZWQg
YnkgY3Jvc3Mtb3JpZ2luIGRhdGEuCitQQVNTIHdpbmRvdy5jdHguZ2V0SW1hZ2VEYXRhKDAsIDAs
IDEsIDEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU2VjdXJpdHlFcnJvcjogRE9NIEV4Y2VwdGlv
biAxOC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMt
bWF0aG1sLXRva2VuLXRhaW50ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmct
Y2FudmFzLW1hdGhtbC10b2tlbi10YWludGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYzBiOTUxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9h
cy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC10b2tlbi10YWludGVkLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHN2ZyA9IG5ldyBJbWFnZSgp
OworICAgICAgICBzdmcuc3JjID0gInJlc291cmNlcy9tYXRobWwtdG9rZW4uc3ZnIjsKKworICAg
ICAgICBzdmcub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgICAgICB3aW5kb3cuY3R4
ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisKKyAgICAgICAgICAgIGN0eC5nZXRJbWFnZURh
dGEoMCwgMCwgMSwgMSk7CisKKyAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2Uoc3ZnLCAwLCAwKTsK
KworICAgICAgICAgICAgc2hvdWxkVGhyb3coIndpbmRvdy5jdHguZ2V0SW1hZ2VEYXRhKDAsIDAs
IDEsIDEpIik7CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfTsKKyAgICA8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlOTRjZjNhLi5iZjVjMzZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTQtMDQtMDcgIEZyw6lkw6lyaWMgV2FuZyAgPGZy
ZWQud2FuZ0BmcmVlLmZyPgorCisgICAgICAgIFNlY3VyaXR5IFBvbGljeSBlcnJvciB3aGVuIHVz
aW5nIE1hdGhNTCBpbiBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlIGZvbGxvdyBHZWNrbyBhbmQgYWxsb3cgTWF0aE1MIGluIGNhbnZhcyB0
byBvcGVuIHRoZSBwb3NzaWJpbGl0eSBvZgorICAgICAgICAyRC8zRCBzY2llbnRpZmljIHNjaGVt
YXMuIE1vc3QgTWF0aE1MIGVsZW1lbnRzIGFyZSBqdXN0IGRvaW5nIHNvbWUgbWF0aAorICAgICAg
ICBsYXlvdXQuIEhvd2V2ZXIsIHdlIGFyZSBwcmVjYXV0aW91cyBhbmQgZm9yYmlkIGFubm90YXRp
b24teG1sLCB0b2tlbgorICAgICAgICBlbGVtZW50cyB3aXRoIGZvcmVpZ24gY29udGVudCBhbmQg
bWFjdGlvbi4gVGhlIGhyZWYgYXR0cmlidXRlIGlzIGFsc28KKyAgICAgICAgcHJvaGliaXRlZCwg
ZXZlbiBpZiBpdCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LgorCisgICAgICAgIFRlc3RzOiBzdmcv
YXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtYW5ub3RhdGlvbi14bWwtdGFpbnRlZC5odG1sCisg
ICAgICAgICAgICAgICBzdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtaHJlZi10YWludGVk
Lmh0bWwKKyAgICAgICAgICAgICAgIHN2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1tYWN0
aW9uLXRhaW50ZWQuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMt
bWF0aG1sLW5vdC10YWludGVkLmh0bWwKKyAgICAgICAgICAgICAgIHN2Zy9hcy1pbWFnZS9zdmct
Y2FudmFzLW1hdGhtbC10b2tlbi10YWludGVkLmh0bWwKKworICAgICAgICAqIG1hdGhtbC9NYXRo
TUxFbGVtZW50Lmg6IGRlY2xhcmUgaXNFbGVtZW50T2ZUeXBlIGZvciB1c2UgYnkgRWxlbWVudEl0
ZXJhdG9yCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50Pik6CisgICAgICAgICogbWF0
aG1sL21hdGhhdHRycy5pbjogZGVjbGFyZSBocmVmIGF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcv
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OmlzU2FmZUZvclNWR0ltYWdlKTogbmV3IGZ1bmN0aW9uIHRvIHZlcmlm
eSBpZiB0aGUgZm9yZWlnbkNvbnRlbnQgaXMgc2FmZS4gSFRNTCBpcyBwcm9oaWJpdGVkIGZvciBu
b3cgYW5kIE1hdGhNTCBpcyBhbGxvd2VkIHdpdGggc29tZSByZXN0cmljdGlvbnMuCisgICAgICAg
ICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6IGRlY2xhcmUgaXNTYWZlRm9yU1ZHSW1h
Z2UoKS4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKTogYWxsb3cgc2FmZSBmb3Jl
aWduT2JqZWN0J3MKKwogMjAxNC0wNC0wMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICBTYW5kYm94IHZpb2xhdGlvbiBpbiBOZXR3b3JrUHJvY2VzcyB3aGVu
IHVwbG9hZGluZyBhIGJ1bmRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5k
ZXggNjhjODFiZC4uZWUyZTJiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQu
aApAQCAtNzUsNiArNzUsNyBAQCBwcml2YXRlOgogCiB2b2lkIGlzTWF0aE1MRWxlbWVudChjb25z
dCBNYXRoTUxFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2Yg
dHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCiBpbmxpbmUgYm9vbCBpc01hdGhNTEVsZW1lbnQo
Y29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc01hdGhNTEVsZW1lbnQoKTsgfQordGVt
cGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IE1hdGhNTEVsZW1lbnQ+
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNNYXRoTUxFbGVtZW50
KCk7IH0KIE5PREVfVFlQRV9DQVNUUyhNYXRoTUxFbGVtZW50KQogCiBpbmxpbmUgYm9vbCBOb2Rl
OjpoYXNUYWdOYW1lKGNvbnN0IE1hdGhNTFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aGF0dHJzLmluIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL21hdGhhdHRycy5pbgppbmRleCAwNzdlNzljLi41ZWQ1Nzk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aGF0dHJzLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9tYXRoYXR0cnMuaW4KQEAgLTIyLDYgKzIyLDcgQEAgZm9udHN0eWxlCiBmb250d2Vp
Z2h0CiBmb3JtCiBoZWlnaHQKK2hyZWYKIGxhcmdlb3AKIGxpbmV0aGlja25lc3MKIGxzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKaW5kZXgg
ZjFhMWM2OC4uYTVjMjVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMywxMCBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRl
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiTWF0aE1MRWxlbWVu
dC5oIgorI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZH
RWxlbWVudEluc3RhbmNlLmgiCkBAIC0xNjUsNCArMTY5LDI4IEBAIGJvb2wgU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogICAgICAgICB8fCBo
ZWlnaHQoKS5pc1JlbGF0aXZlKCk7CiB9CiAKK2Jvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OmlzU2FmZUZvclNWR0ltYWdlKCkgY29uc3QKK3sKKyAgICAvLyBXZSBkb24ndCBhbGxvdyBhcmJp
dHJhcnkgSFRNTCBjb250ZW50IHNpbmNlIHRoaXMgY291bGQgbGVhayBpbmZvcm1hdGlvbiAoZS5n
LiBzcGVsbGNoZWNrIG9yIGNvbnRyb2wgdGhlbWUpLgorICAgIGlmIChkZXNjZW5kYW50c09mVHlw
ZTxIVE1MRWxlbWVudD4oKnRoaXMpLmZpcnN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIE1vc3QgTWF0aE1MIGVsZW1lbnRzIGFyZSBzYWZlIHNpbmNlIHRoZXkganVzdCBkbyBz
b21lIG1hdGggbGF5b3V0IHdpdGhvdXQgYWR2YW5jZWQgdXNlciBpbnRlcmZhY2VzIG9yIGV4dGVy
bmFsIHJlc291cmNlcy4gSG93ZXZlciwgd2UgYXJlIHByZWNhdXRpb3VzIGFuZCBmb3JiaWQgc29t
ZSBzcGVjaWFsIGVsZW1lbnRzLgorICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRz
T2ZUeXBlPE1hdGhNTEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICAvLyBXZSBmb3JiaWQgdGhl
IGhyZWYgYXR0cmlidXRlLgorICAgICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoTWF0aE1M
TmFtZXM6OmhyZWZBdHRyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAv
LyBXZSBmb3JiaWQgdGhlIDxtYWN0aW9uPiBlbGVtZW50LCB3aGljaCBpcyB1c2VsZXNzIGZvciBT
VkcgaW1hZ2VzIGFueXdheS4KKyAgICAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShNYXRoTUxO
YW1lczo6bWFjdGlvblRhZykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
Ly8gV2UgZm9yYmlkIGZvcmVpZ24gY29udGVudCBpbiA8YW5ub3RhdGlvbi14bWw+IGFuZCB0b2tl
biBlbGVtZW50cy4KKyAgICAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6
YW5ub3RhdGlvbl94bWxUYWcpIHx8IChlbGVtZW50LmlzTWF0aE1MVG9rZW4oKSAmJiBkZXNjZW5k
YW50c09mVHlwZTxFbGVtZW50PihlbGVtZW50KS5maXJzdCgpKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAppbmRleCA2YmQ2ZDg4Li5jN2I1MjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaApAQCAt
MzMsNiArMzMsNyBAQCBjbGFzcyBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCBmaW5hbCA6IHB1Ymxp
YyBTVkdHcmFwaGljc0VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIGJvb2wgaXNTYWZlRm9yU1ZHSW1hZ2UoKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBTVkdGb3JlaWduT2JqZWN0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCmluZGV4IDE1ZmNjOTQuLmY0MzcwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcApAQCAtNzIsOSArNzIsMTEgQEAgYm9vbCBTVkdJbWFnZTo6aGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgLy8gRG9uJ3QgYWxsb3cgZm9yZWlnbk9iamVjdCBlbGVtZW50
cyBzaW5jZSB0aGV5IGNhbiBsZWFrIGluZm9ybWF0aW9uIHdpdGggYXJiaXRyYXJ5IEhUTUwgKGxp
a2Ugc3BlbGxjaGVjayBvciBjb250cm9sIHRoZW1lKS4KLSAgICBpZiAoZGVzY2VuZGFudHNPZlR5
cGU8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+KCpyb290RWxlbWVudCkuZmlyc3QoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFRoZSA8Zm9yZWlnbk9iamVjdD4gZWxlbWVudCBhbGxv
d3MgdG8gZW1iZWQgbm9uLVNWRyBtYXJrdXAuIFdlIHZlcmlmeSB0aGF0IHRoZSBjb250ZW50IGlz
IHNhZmUuCisgICAgZm9yIChhdXRvJiBmb3JlaWduT2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+KCpyb290RWxlbWVudCkpIHsKKyAgICAgICAgaWYgKCFm
b3JlaWduT2JqZWN0LmlzU2FmZUZvclNWR0ltYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogCiAgICAgLy8gQmVjYXVzZSBTVkcgaW1hZ2UgcmVuZGVyaW5nIGRpc2FsbG93
cyBleHRlcm5hbCByZXNvdXJjZXMgYW5kIGxpbmtzLAogICAgIC8vIHRoZXNlIGltYWdlcyBlZmZl
Y3RpdmVseSBhcmUgcmVzdHJpY3RlZCB0byBhIHNpbmdsZSBzZWN1cml0eSBvcmlnaW4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275396</attachid>
            <date>2016-04-01 06:00:19 -0700</date>
            <delta_ts>2016-04-01 06:00:19 -0700</delta_ts>
            <desc>Patch V3</desc>
            <filename>mathml-in-canvas.patch</filename>
            <type>text/plain</type>
            <size>14593</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9yZXNvdXJjZXMvMTAwcHgtZ3Jl
ZW4tcmVjdC1tYXRobWwuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3Jlc291cmNlcy8x
MDBweC1ncmVlbi1yZWN0LW1hdGhtbC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNzQxZjMwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFn
ZS9yZXNvdXJjZXMvMTAwcHgtZ3JlZW4tcmVjdC1tYXRobWwuc3ZnCkBAIC0wLDAgKzEsNyBAQAor
PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxm
b3JlaWduT2JqZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj4KKyAgICA8bWF0aCB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIgc3R5bGU9InBhZGRpbmc6IDBweDsg
bWFyZ2luOiAwcHg7IGJvcmRlcjogMHB4OyI+CisgICAgICA8bXNwYWNlIHdpZHRoPSIxMDBweCIg
aGVpZ2h0PSIxMDBweCIgbWF0aGJhY2tncm91bmQ9ImdyZWVuIi8+CisgICAgPC9tYXRoPgorICA8
L2ZvcmVpZ25PYmplY3Q+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1p
bWFnZS9yZXNvdXJjZXMvbGluay1tYXRobWwuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdl
L3Jlc291cmNlcy9saW5rLW1hdGhtbC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMDJlNTMzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFn
ZS9yZXNvdXJjZXMvbGluay1tYXRobWwuc3ZnCkBAIC0wLDAgKzEsNyBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIj8+Cis8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4i
ICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0
ZCI+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAw
IDEwMCAxMDAiPgorICAgIDxmb3JlaWduT2JqZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj4K
KyAgICAgIDxtYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIj48
bXNxcnQgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPjxtbj4xPC9tbj48bW8+KzwvbW8+
PG1pPng8L21pPjwvbXNxcnQ+PC9tYXRoPgorICAgIDwvZm9yZWlnbk9iamVjdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3Jlc291cmNlcy9tYXRobWwtYW5u
b3RhdGlvbi14bWwuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3Jlc291cmNlcy9tYXRo
bWwtYW5ub3RhdGlvbi14bWwuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjA5ZGFlNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2UvcmVz
b3VyY2VzL21hdGhtbC1hbm5vdGF0aW9uLXhtbC5zdmcKQEAgLTAsMCArMSwxMiBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEu
MC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2
ZzEwLmR0ZCI+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0Jv
eD0iMCAwIDEwMCAxMDAiIHhtbG5zOm09Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRo
TUwiPgorICAgIDxmb3JlaWduT2JqZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj4KKyAgICAg
IDxtOm1hdGg+CisgICAgICAgIDxtOnNlbWFudGljcz4KKyAgICAgICAgICA8bTpjc3ltYm9sPmNv
bnRlbnQgTWF0aE1MPC9tOmNzeW1ib2w+CisgICAgICAgICAgPG06YW5ub3RhdGlvbi14bWwgZW5j
b2Rpbmc9ImFwcGxpY2F0aW9uL21hdGhtbC1wcmVzZW50YXRpb24reG1sIj48bTptYXRoIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIj48bTptdGV4dD5hbm5vdGF0aW9u
LXhtbDwvbTptdGV4dD48L206bWF0aD48L206YW5ub3RhdGlvbi14bWw+CisgICAgICAgIDwvbTpz
ZW1hbnRpY3M+CisgICAgICA8L206bWF0aD4KKyAgICA8L2ZvcmVpZ25PYmplY3Q+Cis8L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9yZXNvdXJjZXMvbWF0aG1sLW1h
Y3Rpb24uc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3Jlc291cmNlcy9tYXRobWwtbWFj
dGlvbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBhOTE2MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9yZXNvdXJjZXMvbWF0aG1s
LW1hY3Rpb24uc3ZnCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURP
Q1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4iICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+Cis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgorICAg
IDxmb3JlaWduT2JqZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj4KKyAgICAgIDxtYXRoIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIj4KKyAgICAgICAgPG1hY3Rp
b24gYWN0aW9udHlwZT0iaW5wdXQiPjxtbj4xPC9tbj48L21hY3Rpb24+CisgICAgICA8L21hdGg+
CisgICAgPC9mb3JlaWduT2JqZWN0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dmcvYXMtaW1hZ2UvcmVzb3VyY2VzL21hdGhtbC10b2tlbi5zdmcgYi9MYXlvdXRUZXN0cy9zdmcv
YXMtaW1hZ2UvcmVzb3VyY2VzL21hdGhtbC10b2tlbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMTk3N2QzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2
Zy9hcy1pbWFnZS9yZXNvdXJjZXMvbWF0aG1sLXRva2VuLnN2ZwpAQCAtMCwwICsxLDkgQEAKKzw/
eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNW
RyAxLjAvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMtU1ZHLTIwMDEwOTA0L0RU
RC9zdmcxMC5kdGQiPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZp
ZXdCb3g9IjAgMCAxMDAgMTAwIj4KKyAgICA8Zm9yZWlnbk9iamVjdCB3aWR0aD0iMTAwIiBoZWln
aHQ9IjEwMCI+CisgICAgICA8bWF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRo
L01hdGhNTCI+CisgICAgICAgIDxtdGV4dD48c3BhbiB4aHRtbD0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCI+WEhUTUw8L3NwYW4+PC9tdGV4dD4KKyAgICAgIDwvbWF0aD4KKyAgICA8L2Zv
cmVpZ25PYmplY3Q+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFn
ZS9zdmctY2FudmFzLW1hdGhtbC1hbm5vdGF0aW9uLXhtbC10YWludGVkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1hbm5vdGF0aW9uLXht
bC10YWludGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hNDA2NGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2
Zy1jYW52YXMtbWF0aG1sLWFubm90YXRpb24teG1sLXRhaW50ZWQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuYWJsZSB0byBnZXQgaW1hZ2Ug
ZGF0YSBmcm9tIGNhbnZhcyBiZWNhdXNlIHRoZSBjYW52YXMgaGFzIGJlZW4gdGFpbnRlZCBieSBj
cm9zcy1vcmlnaW4gZGF0YS4KK1BBU1Mgd2luZG93LmN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwg
MSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTZWN1cml0eUVycm9yOiBET00gRXhjZXB0aW9uIDE4
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRo
bWwtYW5ub3RhdGlvbi14bWwtdGFpbnRlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdl
L3N2Zy1jYW52YXMtbWF0aG1sLWFubm90YXRpb24teG1sLXRhaW50ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTA3MjYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1sLWFubm90YXRpb24teG1sLXRh
aW50ZWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgc3ZnID0gbmV3IEltYWdlKCk7CisgICAgICAgIHN2Zy5zcmMgPSAicmVzb3VyY2VzL21h
dGhtbC1hbm5vdGF0aW9uLXhtbC5zdmciOworCisgICAgICAgIHN2Zy5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJj
YW52YXMiKTsKKyAgICAgICAgICAgIHdpbmRvdy5jdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQi
KTsKKworICAgICAgICAgICAgY3R4LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKTsKKworICAgICAg
ICAgICAgY3R4LmRyYXdJbWFnZShzdmcsIDAsIDApOworCisgICAgICAgICAgICBzaG91bGRUaHJv
dygid2luZG93LmN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSkiKTsKKworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICB9OworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1sLWhyZWYt
dGFpbnRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZh
cy1tYXRobWwtaHJlZi10YWludGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5hNDA2NGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Zn
L2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1sLWhyZWYtdGFpbnRlZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5hYmxlIHRvIGdldCBpbWFn
ZSBkYXRhIGZyb20gY2FudmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5
IGNyb3NzLW9yaWdpbiBkYXRhLgorUEFTUyB3aW5kb3cuY3R4LmdldEltYWdlRGF0YSgwLCAwLCAx
LCAxKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNlY3VyaXR5RXJyb3I6IERPTSBFeGNlcHRpb24g
MTguCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1h
dGhtbC1ocmVmLXRhaW50ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2Fu
dmFzLW1hdGhtbC1ocmVmLXRhaW50ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40Y2E4YWZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWlt
YWdlL3N2Zy1jYW52YXMtbWF0aG1sLWhyZWYtdGFpbnRlZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAg
IDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBzdmcgPSBuZXcgSW1hZ2UoKTsKKyAg
ICAgICAgc3ZnLnNyYyA9ICJyZXNvdXJjZXMvbGluay1tYXRobWwuc3ZnIjsKKworICAgICAgICBz
dmcub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgICAgICB3aW5kb3cuY3R4ID0gY2Fu
dmFzLmdldENvbnRleHQoIjJkIik7CisKKyAgICAgICAgICAgIGN0eC5nZXRJbWFnZURhdGEoMCwg
MCwgMSwgMSk7CisKKyAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2Uoc3ZnLCAwLCAwKTsKKworICAg
ICAgICAgICAgc2hvdWxkVGhyb3coIndpbmRvdy5jdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEp
Iik7CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfTsKKyAgICA8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmct
Y2FudmFzLW1hdGhtbC1tYWN0aW9uLXRhaW50ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1sLW1hY3Rpb24tdGFpbnRlZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQwNjRkNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1tYWN0
aW9uLXRhaW50ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE6IFVuYWJsZSB0byBnZXQgaW1hZ2UgZGF0YSBmcm9tIGNhbnZhcyBiZWNhdXNlIHRo
ZSBjYW52YXMgaGFzIGJlZW4gdGFpbnRlZCBieSBjcm9zcy1vcmlnaW4gZGF0YS4KK1BBU1Mgd2lu
ZG93LmN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBT
ZWN1cml0eUVycm9yOiBET00gRXhjZXB0aW9uIDE4LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtbWFjdGlvbi10YWludGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtbWFjdGlvbi10YWludGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM0MDM1MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1t
YWN0aW9uLXRhaW50ZWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c2NyaXB0PgorICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICB2YXIgc3ZnID0gbmV3IEltYWdlKCk7CisgICAgICAgIHN2Zy5zcmMgPSAicmVz
b3VyY2VzL21hdGhtbC1tYWN0aW9uLnN2ZyI7CisKKyAgICAgICAgc3ZnLm9ubG9hZCA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpOworICAgICAgICAgICAgd2luZG93LmN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIy
ZCIpOworCisgICAgICAgICAgICBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpOworCisgICAg
ICAgICAgICBjdHguZHJhd0ltYWdlKHN2ZywgMCwgMCk7CisKKyAgICAgICAgICAgIHNob3VsZFRo
cm93KCJ3aW5kb3cuY3R4LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKSIpOworCisgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIH07CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtbm90
LXRhaW50ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52
YXMtbWF0aG1sLW5vdC10YWludGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43MzIyYzcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Zn
L2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1sLW5vdC10YWludGVkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKK1RoaXMgdGVzdCBwYXNzZXMgaWYgdGhlcmUgaXMgYSBncmVlbiBib3ggYW5k
IG5vIHNlY3VyaXR5IGVycm9ycy4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYXMt
aW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtbm90LXRhaW50ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N2
Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC1ub3QtdGFpbnRlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZjJkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtbm90LXRhaW50ZWQuaHRtbApA
QCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisgICAgVGhp
cyB0ZXN0IHBhc3NlcyBpZiB0aGVyZSBpcyBhIGdyZWVuIGJveCBhbmQgbm8gc2VjdXJpdHkgZXJy
b3JzLjxicj48YnI+CisgICAgPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjEwMCI+PC9jYW52YXM+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHN2
ZyA9IG5ldyBJbWFnZSgpOworICAgICAgICBzdmcuc3JjID0gInJlc291cmNlcy8xMDBweC1ncmVl
bi1yZWN0LW1hdGhtbC5zdmciOworCisgICAgICAgIHN2Zy5vbmxvYWQgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7CisgICAgICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisKKyAg
ICAgICAgICAgIGN0eC5kcmF3SW1hZ2Uoc3ZnLCAwLCAwKTsKKyAgICAgICAgICAgIGN0eC5nZXRJ
bWFnZURhdGEoMCwgMCwgMTAwLCAxMDApOworCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
IH07CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtdG9rZW4tdGFpbnRlZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWNhbnZhcy1tYXRobWwtdG9rZW4t
dGFpbnRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YTQwNjRkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmct
Y2FudmFzLW1hdGhtbC10b2tlbi10YWludGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBj
YW52YXMgYmVjYXVzZSB0aGUgY2FudmFzIGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2lu
IGRhdGEuCitQQVNTIHdpbmRvdy5jdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogU2VjdXJpdHlFcnJvcjogRE9NIEV4Y2VwdGlvbiAxOC4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1jYW52YXMtbWF0aG1sLXRva2VuLXRh
aW50ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2FudmFzLW1hdGhtbC10
b2tlbi10YWludGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBi
OTUxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctY2Fu
dmFzLW1hdGhtbC10b2tlbi10YWludGVkLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNjcmlwdD4K
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIHN2ZyA9IG5ldyBJbWFnZSgpOworICAgICAgICBzdmcu
c3JjID0gInJlc291cmNlcy9tYXRobWwtdG9rZW4uc3ZnIjsKKworICAgICAgICBzdmcub25sb2Fk
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7CisgICAgICAgICAgICB3aW5kb3cuY3R4ID0gY2FudmFzLmdldENv
bnRleHQoIjJkIik7CisKKyAgICAgICAgICAgIGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7
CisKKyAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2Uoc3ZnLCAwLCAwKTsKKworICAgICAgICAgICAg
c2hvdWxkVGhyb3coIndpbmRvdy5jdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpIik7CisKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3Bw
CmluZGV4IDNiZGRiZDguLmFlNzRlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LmNwcApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJYTGlu
a05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJNYXRo
TUxOYW1lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE1NSw0ICsxNTksMjggQEAg
Ym9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIFNWR0dyYXBoaWNzRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7CiB9CiAKK2Jvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmlzU2Fm
ZUZvclNWR0ltYWdlKCkgY29uc3QKK3sKKyAgICAvLyBXZSBkb24ndCBhbGxvdyBhcmJpdHJhcnkg
SFRNTCBjb250ZW50IHNpbmNlIHRoaXMgY291bGQgbGVhayBpbmZvcm1hdGlvbiAoZS5nLiBzcGVs
bGNoZWNrIG9yIGNvbnRyb2wgdGhlbWUpLgorICAgIGlmIChkZXNjZW5kYW50c09mVHlwZTxIVE1M
RWxlbWVudD4oKnRoaXMpLmZpcnN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IE1vc3QgTWF0aE1MIGVsZW1lbnRzIGFyZSBzYWZlIHNpbmNlIHRoZXkganVzdCBkbyBzb21lIG1h
dGggbGF5b3V0IHdpdGhvdXQgYWR2YW5jZWQgdXNlciBpbnRlcmZhY2VzIG9yIGV4dGVybmFsIHJl
c291cmNlcy4gSG93ZXZlciwgd2UgYXJlIHByZWNhdXRpb3VzIGFuZCBmb3JiaWQgc29tZSBzcGVj
aWFsIGVsZW1lbnRzLgorICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBl
PE1hdGhNTEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICAvLyBXZSBmb3JiaWQgdGhlIGhyZWYg
YXR0cmlidXRlLgorICAgICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6
OmhyZWZBdHRyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBXZSBm
b3JiaWQgdGhlIDxtYWN0aW9uPiBlbGVtZW50LCB3aGljaCBpcyB1c2VsZXNzIGZvciBTVkcgaW1h
Z2VzIGFueXdheS4KKyAgICAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6
bWFjdGlvblRhZykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gV2Ug
Zm9yYmlkIGZvcmVpZ24gY29udGVudCBpbiA8YW5ub3RhdGlvbi14bWw+IGFuZCB0b2tlbiBlbGVt
ZW50cy4KKyAgICAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6YW5ub3Rh
dGlvbl94bWxUYWcpIHx8IChlbGVtZW50LmlzTWF0aE1MVG9rZW4oKSAmJiBkZXNjZW5kYW50c09m
VHlwZTxFbGVtZW50PihlbGVtZW50KS5maXJzdCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAppbmRleCA4ZDA1OWMxLi5kNjVlZGM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaApAQCAtMzMsNiAr
MzMsNyBAQCBjbGFzcyBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdH
cmFwaGljc0VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CisgICAgYm9vbCBpc1NhZmVGb3JTVkdJbWFnZSgpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXgg
YzE1ZmFmYi4uMzU2ZGYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCkBAIC04Niw4ICs4NiwxMCBAQCBib29sIFNWR0ltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbigpIGNvbnN0CiAgICAgLy8gKGUuZy4sIHZpc2l0ZWQgbGlua3MsIHNwZWxsY2hlY2spIHdl
IGNhbiByZW1vdmUgdGhlIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50IGNoZWNrIGhlcmUgYW5kCiAg
ICAgLy8gcmVzZWFyY2ggaWYgd2UgY2FuIHJlbW92ZSB0aGUgSW1hZ2U6Omhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luIG1lY2hhbmlzbSBlbnRpcmVseS4KICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBk
ZXNjZW5kYW50c09mVHlwZTxTVkdFbGVtZW50Pigqcm9vdEVsZW1lbnQpKSB7Ci0gICAgICAgIGlm
IChpczxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmIChpczxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4oZWxlbWVu
dCkpIHsKKyAgICAgICAgICAgIGlmICghZG93bmNhc3Q8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+
KGVsZW1lbnQpLmlzU2FmZUZvclNWR0ltYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CiAgICAgICAgIGlmIChpczxTVkdJbWFnZUVsZW1lbnQ+KGVsZW1lbnQp
KSB7CiAgICAgICAgICAgICBpZiAoIWRvd25jYXN0PFNWR0ltYWdlRWxlbWVudD4oZWxlbWVudCku
aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>