<?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>66666</bug_id>
          
          <creation_ts>2011-08-22 06:16:20 -0700</creation_ts>
          <short_desc>CSS: Implement &apos;font&apos; property in CSSComputedStyle.</short_desc>
          <delta_ts>2011-09-22 06:24:13 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>454557</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-22 06:16:20 -0700</bug_when>
    <thetext>This property is implemented by Opera, but not Gecko (haven&apos;t checked IE.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454720</commentid>
    <comment_count>1</comment_count>
      <attachid>104698</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-22 11:15:21 -0700</bug_when>
    <thetext>Created attachment 104698
Proposed patch

Patch for comments. I&apos;m not a big fan of the verbosity, so if someone knows a better way to safely express &quot;RefPtr&lt;BaseClass&gt; = PassRefPtr&lt;SubClass&gt;&quot;, I&apos;m all ears.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454725</commentid>
    <comment_count>2</comment_count>
      <attachid>104698</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-08-22 11:17:11 -0700</bug_when>
    <thetext>Comment on attachment 104698
Proposed patch

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

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1110
&gt; +            CSSValue* fontStyle = getPropertyCSSValue(CSSPropertyFontStyle, DoNotUpdateLayout).leakRef();
&gt; +            ASSERT(fontStyle-&gt;isPrimitiveValue());
&gt; +            computedFont-&gt;style = adoptRef(static_cast&lt;CSSPrimitiveValue*&gt;(fontStyle));

The leakRef() / adoptRef() pattern is weird. Why not just use RefPtrs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454729</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-08-22 11:20:15 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=104698) [details]
&gt; Proposed patch
&gt; 
&gt; Patch for comments. I&apos;m not a big fan of the verbosity, so if someone knows a better way to safely express &quot;RefPtr&lt;BaseClass&gt; = PassRefPtr&lt;SubClass&gt;&quot;, I&apos;m all ears.

static_pointer_cast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454732</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-22 11:25:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #1)
&gt; &gt; Created an attachment (id=104698) [details] [details]
&gt; &gt; Proposed patch
&gt; &gt; 
&gt; &gt; Patch for comments. I&apos;m not a big fan of the verbosity, so if someone knows a better way to safely express &quot;RefPtr&lt;BaseClass&gt; = PassRefPtr&lt;SubClass&gt;&quot;, I&apos;m all ears.
&gt; 
&gt; static_pointer_cast?

Magical! Thanks, I&apos;ll upload something slightly less ugly in a jiffy :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454739</commentid>
    <comment_count>5</comment_count>
      <attachid>104702</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-22 11:32:04 -0700</bug_when>
    <thetext>Created attachment 104702
Proposed patch v2

Same patch using static_pointer_cast instead of making a mess.
I left out the assertions for isPrimitiveValue() and isValueList(), if you feel they did actually belong, let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454743</commentid>
    <comment_count>6</comment_count>
      <attachid>104702</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-22 11:36:57 -0700</bug_when>
    <thetext>Comment on attachment 104702
Proposed patch v2

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

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1112
&gt; +            computedFont-&gt;style = static_pointer_cast&lt;CSSPrimitiveValue&gt;(getPropertyCSSValue(CSSPropertyFontStyle, DoNotUpdateLayout));
&gt; +            computedFont-&gt;variant = static_pointer_cast&lt;CSSPrimitiveValue&gt;(getPropertyCSSValue(CSSPropertyFontVariant, DoNotUpdateLayout));
&gt; +            computedFont-&gt;weight = static_pointer_cast&lt;CSSPrimitiveValue&gt;(getPropertyCSSValue(CSSPropertyFontWeight, DoNotUpdateLayout));
&gt; +            computedFont-&gt;size = static_pointer_cast&lt;CSSPrimitiveValue&gt;(getPropertyCSSValue(CSSPropertyFontSize, DoNotUpdateLayout));
&gt; +            computedFont-&gt;lineHeight = static_pointer_cast&lt;CSSPrimitiveValue&gt;(getPropertyCSSValue(CSSPropertyLineHeight, DoNotUpdateLayout));
&gt; +            computedFont-&gt;family = static_pointer_cast&lt;CSSValueList&gt;(getPropertyCSSValue(CSSPropertyFontFamily, DoNotUpdateLayout));

You mentioned that you left out assertions, which seems OK. But what guarantees the pointers will be to objects of the right type? Is there some guarantee?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454794</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-22 12:18:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 104702 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104702&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1112
&gt; &gt; +            computedFont-&gt;style = static_pointer_cast&lt;CSSPrimitiveValue&gt;(getPropertyCSSValue(CSSPropertyFontStyle, DoNotUpdateLayout));
&gt; &gt; +            computedFont-&gt;variant = static_pointer_cast&lt;CSSPrimitiveValue&gt;(getPropertyCSSValue(CSSPropertyFontVariant, DoNotUpdateLayout));
&gt; &gt; +            computedFont-&gt;weight = static_pointer_cast&lt;CSSPrimitiveValue&gt;(getPropertyCSSValue(CSSPropertyFontWeight, DoNotUpdateLayout));
&gt; &gt; +            computedFont-&gt;size = static_pointer_cast&lt;CSSPrimitiveValue&gt;(getPropertyCSSValue(CSSPropertyFontSize, DoNotUpdateLayout));
&gt; &gt; +            computedFont-&gt;lineHeight = static_pointer_cast&lt;CSSPrimitiveValue&gt;(getPropertyCSSValue(CSSPropertyLineHeight, DoNotUpdateLayout));
&gt; &gt; +            computedFont-&gt;family = static_pointer_cast&lt;CSSValueList&gt;(getPropertyCSSValue(CSSPropertyFontFamily, DoNotUpdateLayout));
&gt; 
&gt; You mentioned that you left out assertions, which seems OK. But what guarantees the pointers will be to objects of the right type? Is there some guarantee?

The current implementation of the included properties in getPropertyCSSValue() cannot return any other types.

This is a valid guarantee right now, but I wouldn&apos;t exactly call it future-proof. I don&apos;t believe the types are checked anywhere else. I&apos;ll gladly put the asserts back in, or add them elsewhere (something like CSSValue::asPrimitiveValue() and CSSValue::asValueList() perhaps?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454829</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-22 13:06:04 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; add them elsewhere (something like CSSValue::asPrimitiveValue() and CSSValue::asValueList() perhaps?)

I think that’s one thing we are going to want in the future.

But an even better idea for this case here would be to factor out private functions in CSSComputedStyleDeclaration for each of these properties that return these computed pieces and then call them both from the big switch statement and from here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454869</commentid>
    <comment_count>9</comment_count>
      <attachid>104702</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-22 13:46:51 -0700</bug_when>
    <thetext>Comment on attachment 104702
Proposed patch v2

(In reply to comment #8)
&gt; But an even better idea for this case here would be to factor out private functions in CSSComputedStyleDeclaration for each of these properties that return these computed pieces and then call them both from the big switch statement and from here.

Yep, that&apos;s a great idea. It also exposes the case where CSSPropertyFontFamily would be requested with !style-&gt;fontDescription().family().next() yielding a CSSPrimitiveValue return value, rather than a CSSValueList.

Clearing r? until I prepare a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454926</commentid>
    <comment_count>10</comment_count>
      <attachid>104738</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-22 14:30:42 -0700</bug_when>
    <thetext>Created attachment 104738
Proposed patch v3

Factored the CSSPropertyFont* code out of getPropertyCSSValue() to guarantee consistent return types.
CSSPropertyFontFamily will now always yield a CSSValueList, where it would previously return a CSSPrimitiveValue when there was only a single family.
They serialize just the same, and the storage overhead for a Vector&lt;RefPtr&lt;CSSValue&gt;&gt; (and a bool) seems negligible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454935</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-22 14:35:44 -0700</bug_when>
    <thetext>Attachment 104738 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/css/CSSComputedStyleDeclaration.cpp:851:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454945</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-22 14:45:30 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; CSSPropertyFontFamily will now always yield a CSSValueList, where it would previously return a CSSPrimitiveValue when there was only a single family.
&gt; They serialize just the same, and the storage overhead for a Vector&lt;RefPtr&lt;CSSValue&gt;&gt; (and a bool) seems negligible.

This is an observable change from JavaScript, not just a performance-affecting one. Can we test and see what other browsers do? Unfortunately, the computed value in CSS simply says “as specified” and so does not make it clear what the CSS DOM object type should be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454962</commentid>
    <comment_count>13</comment_count>
      <attachid>104738</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-22 14:58:54 -0700</bug_when>
    <thetext>Comment on attachment 104738
Proposed patch v3

Attachment 104738 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9468869

New failing tests:
svg/css/getComputedStyle-basic.xhtml
fast/dom/setPrimitiveValue-exceptions.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455341</commentid>
    <comment_count>14</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-23 05:34:11 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; CSSPropertyFontFamily will now always yield a CSSValueList, where it would previously return a CSSPrimitiveValue when there was only a single family.
&gt; &gt; They serialize just the same, and the storage overhead for a Vector&lt;RefPtr&lt;CSSValue&gt;&gt; (and a bool) seems negligible.
&gt; 
&gt; This is an observable change from JavaScript, not just a performance-affecting one. Can we test and see what other browsers do? Unfortunately, the computed value in CSS simply says “as specified” and so does not make it clear what the CSS DOM object type should be.

Righto, I did some testing.

Gecko returns a CSSPrimitiveValue in both cases, e.g &quot;sans-serif&quot; for the single-family case, and &quot;sans-serif, sans-serif, etc&quot; for the multi-family case.

Opera (11.50, Linux) throws indecipherable exceptions when I call getPropertyCSSValue() with any arguments.

IE does not support getPropertyCSSValue() at all.

I personally feel that always returning CSSValueList makes the most sense, but it might be better to match Gecko. Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455494</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-23 10:38:40 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I personally feel that always returning CSSValueList makes the most sense, but it might be better to match Gecko.

Matching both Gecko and older versions of WebKit seems like the smart approach for compatibility. I don’t know the importance, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456758</commentid>
    <comment_count>16</comment_count>
      <attachid>104738</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-25 03:54:05 -0700</bug_when>
    <thetext>Comment on attachment 104738
Proposed patch v3

Clearing r? while I prepare something more backwards-compatible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470813</commentid>
    <comment_count>17</comment_count>
      <attachid>108164</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-09-21 08:15:32 -0700</bug_when>
    <thetext>Created attachment 108164
Proposed patch v4

Keep the old (WebKit) behavior of getPropertyCSSValue(&apos;font-family&apos;), i.e returning a CSSPrimitiveValue for single-family values and a CSSValueList for multiple families.
Added a comment about this in the CSSPropertyFontFamily block of getPropertyCSSValue().
Also extended the test to exercise getPropertyCSSValue() as well as getPropertyValue().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470815</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-21 08:18:36 -0700</bug_when>
    <thetext>Attachment 108164 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/css/CSSComputedStyleDeclaration.cpp:970:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470819</commentid>
    <comment_count>19</comment_count>
      <attachid>108164</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-21 08:24:21 -0700</bug_when>
    <thetext>Comment on attachment 108164
Proposed patch v4

r=me with the style fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471495</commentid>
    <comment_count>20</comment_count>
      <attachid>108315</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-09-22 04:56:00 -0700</bug_when>
    <thetext>Created attachment 108315
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471521</commentid>
    <comment_count>21</comment_count>
      <attachid>108315</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-22 06:24:05 -0700</bug_when>
    <thetext>Comment on attachment 108315
Patch for landing

Clearing flags on attachment: 108315

Committed r95714: &lt;http://trac.webkit.org/changeset/95714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471522</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-22 06:24:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104698</attachid>
            <date>2011-08-22 11:15:21 -0700</date>
            <delta_ts>2011-08-22 11:32:04 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-66666.diff</filename>
            <type>text/plain</type>
            <size>11674</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNWJiMGUyLi41OTljM2U3IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgt
MjIgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIENTUzogSW1w
bGVtZW50ICdmb250JyBwcm9wZXJ0eSBpbiBDU1NDb21wdXRlZFN0eWxlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3NjcmlwdC10ZXN0cy9jb21w
dXRlZC1zdHlsZS1mb250LmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbXB1dGVkRm9udCk6CisKIDIw
MTEtMDgtMTggIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogZXh0cmFjdCBicmVha3BvaW50IG1hbmFnZW1lbnQgY29kZSB0
byBhIHNlcGFyYXRlIGNsYXNzIGFuZCBhZGQgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWZvbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHls
ZS1mb250LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
Y2U4ZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0
ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM2IEBA
CitUaGlzIHRlc3QgZXhlcmNpc2VzIHRoZSAnZm9udCcgc2hvcnRoYW5kIHByb3BlcnR5IGluIENT
UyBjb21wdXRlZCBzdHlsZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFs
IDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNl
cmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQ
QVNTIGNvbXB1dGVkRm9udCgnMTBweCBTQU5TLVNFUklGJykgaXMgJ25vcm1hbCBub3JtYWwgbm9y
bWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCBzYW5z
LXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIHNhbnMtc2VyaWYn
CitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCAgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFs
IG5vcm1hbCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzEwcHgg
c2Fucy1zZXJpZiwgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25v
cm1hbCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzEwcHggc2Fu
cy1zZXJpZiwgc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fu
cy1zZXJpZiwgc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCBhaGVtJykgaXMgJ25vcm1h
bCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nCitQQVNTIGNvbXB1dGVkRm9udCgnMTJw
eCB1bmxpa2VseS1mb250LW5hbWUnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTJweC9ub3Jt
YWwgdW5saWtlbHktZm9udC1uYW1lJworUEFTUyBjb21wdXRlZEZvbnQoJzEwMCAxMHB4IHNhbnMt
c2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCAxMDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BB
U1MgY29tcHV0ZWRGb250KCcyMDAgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwg
MjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMzAwIDEwcHgg
c2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIDMwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlm
JworUEFTUyBjb21wdXRlZEZvbnQoJzQwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5v
cm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCdu
b3JtYWwgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9y
bWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnNTAwIDEwcHggc2Fucy1zZXJpZicp
IGlzICdub3JtYWwgbm9ybWFsIDUwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21w
dXRlZEZvbnQoJzYwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA2MDAgMTBw
eC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCc3MDAgMTBweCBzYW5zLXNl
cmlmJykgaXMgJ25vcm1hbCBub3JtYWwgYm9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFT
UyBjb21wdXRlZEZvbnQoJ2JvbGQgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwg
Ym9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzgwMCAxMHB4
IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA4MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJp
ZicKK1BBU1MgY29tcHV0ZWRGb250KCc5MDAgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBu
b3JtYWwgOTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnaXRh
bGljIDEwcHggc2Fucy1zZXJpZicpIGlzICdpdGFsaWMgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1h
bCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJ3NtYWxsLWNhcHMgMTBweCBzYW5zLXNl
cmlmJykgaXMgJ25vcm1hbCBzbWFsbC1jYXBzIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlm
JworUEFTUyBjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIDEwcHggc2Fucy1zZXJpZicp
IGlzICdpdGFsaWMgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BB
U1MgY29tcHV0ZWRGb250KCdpdGFsaWMgc21hbGwtY2FwcyBib2xkIDEwcHggc2Fucy1zZXJpZicp
IGlzICdpdGFsaWMgc21hbGwtY2FwcyBib2xkIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNT
IGNvbXB1dGVkRm9udCgnMTBweC8xMDAlIHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBu
b3JtYWwgMTBweC8xMHB4IHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBweC8xMDBw
eCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fucy1z
ZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCcxMHB4L25vcm1hbCBzYW5zLXNlcmlmJykgaXMgJ25v
cm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWZv
bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmIwOTkwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21w
dXRlZC1zdHlsZS1mb250Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jb21wdXRlZC1zdHlsZS1m
b250LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1dGVkLXN0
eWxlLWZvbnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3Njcmlw
dC10ZXN0cy9jb21wdXRlZC1zdHlsZS1mb250LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmY2ZDA2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9nZXRDb21wdXRlZFN0eWxlL3NjcmlwdC10ZXN0cy9jb21wdXRlZC1zdHlsZS1mb250LmpzCkBA
IC0wLDAgKzEsNDAgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZXhlcmNpc2VzIHRoZSAnZm9u
dCcgc2hvcnRoYW5kIHByb3BlcnR5IGluIENTUyBjb21wdXRlZCBzdHlsZXMuIik7CisKK3ZhciB0
ZXN0RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKHRlc3REaXYpOworCitmdW5jdGlvbiBjb21wdXRlZEZvbnQoZm9udFN0cmluZykg
eworICAgIHRlc3REaXYuc3R5bGUuZm9udCA9ICdib2xkIDYwMHB4IHNlcmlmJzsKKyAgICB0ZXN0
RGl2LnN0eWxlLmZvbnQgPSBmb250U3RyaW5nOworICAgIHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZSh0ZXN0RGl2KS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250Jyk7Cit9CisKK3Nob3VsZEJl
KCJjb21wdXRlZEZvbnQoJzEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1h
bCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTBw
eCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMt
c2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcxMHB4IFNBTlMtU0VSSUYnKSIsICIn
bm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJl
KCJjb21wdXRlZEZvbnQoJzEycHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1h
bCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTJw
eCAgc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMnB4L25vcm1hbCBzYW5z
LXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNlcmlmLCBzYW5z
LXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYs
IHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcxMHB4IHNhbnMtc2VyaWYs
IHNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYs
IHNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTJweCBhaGVtJykiLCAiJ25vcm1h
bCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250KCcxMnB4IHVubGlrZWx5LWZvbnQtbmFtZScpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAx
MnB4L25vcm1hbCB1bmxpa2VseS1mb250LW5hbWUnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250
KCcxMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMTAwIDEwcHgvbm9ybWFs
IHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcyMDAgMTBweCBzYW5zLXNl
cmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7Citz
aG91bGRCZSgiY29tcHV0ZWRGb250KCczMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgMzAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250KCc0MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdub3JtYWwgMTBw
eCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMt
c2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc1MDAgMTBweCBzYW5zLXNlcmlmJyki
LCAiJ25vcm1hbCBub3JtYWwgNTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRC
ZSgiY29tcHV0ZWRGb250KCc2MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwg
NjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc3
MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgYm9sZCAxMHB4L25vcm1hbCBz
YW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnYm9sZCAxMHB4IHNhbnMtc2Vy
aWYnKSIsICInbm9ybWFsIG5vcm1hbCBib2xkIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7Citz
aG91bGRCZSgiY29tcHV0ZWRGb250KCc4MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgODAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250KCc5MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgOTAwIDEwcHgvbm9y
bWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdpdGFsaWMgMTBweCBz
YW5zLXNlcmlmJykiLCAiJ2l0YWxpYyBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2Vy
aWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdzbWFsbC1jYXBzIDEwcHggc2Fucy1zZXJp
ZicpIiwgIidub3JtYWwgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZici
KTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIDEwcHggc2Fucy1z
ZXJpZicpIiwgIidpdGFsaWMgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJp
ZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIGJvbGQgMTBw
eCBzYW5zLXNlcmlmJykiLCAiJ2l0YWxpYyBzbWFsbC1jYXBzIGJvbGQgMTBweC9ub3JtYWwgc2Fu
cy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJzEwcHgvMTAwJSBzYW5zLXNlcmlm
JykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTBweCBzYW5zLXNlcmlmJyIpOworc2hv
dWxkQmUoImNvbXB1dGVkRm9udCgnMTBweC8xMDBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRl
ZEZvbnQoJzEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5vcm1hbCBub3JtYWwg
MTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZWE4MTVlZi4uMzRiNDEyMiAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDExLTA4LTIyICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBDU1M6IEltcGxlbWVudCAnZm9udCcgcHJvcGVydHkgaW4gQ1NTQ29tcHV0ZWRTdHls
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NjY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9jc3MvY29tcHV0ZWRTdHlsZS1mb250Lmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKTogRm9yIENTU1Byb3BlcnR5Rm9u
dCwKKyAgICAgICAgcmV0dXJuIGEgc2VyaWFsaXphdGlvbiBvZiB0aGUgY29tcHV0ZWQgdmFsdWVz
LCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgJ2VsZW1lbnQuc3R5bGUuZm9udCcKKwogMjAxMS0wOC0x
OCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBleHRyYWN0IGJyZWFrcG9pbnQgbWFuYWdlbWVudCBjb2RlIHRvIGEgc2Vw
YXJhdGUgY2xhc3MgYW5kIGFkZCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNGM3MGIxNy4uNjk1MDU2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiRm9udEZlYXR1cmVTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkZvbnRGZWF0dXJlVmFsdWUuaCIK
KyNpbmNsdWRlICJGb250VmFsdWUuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTExMDEsNiArMTEwMiwzNSBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZh
bHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHN0eWxlLT5lbXB0eUNlbGxzKCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5RmxvYXQ6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNo
ZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPmZsb2F0aW5nKCkpOworICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udDogeworICAgICAgICAgICAgUmVmUHRyPEZvbnRWYWx1ZT4gY29tcHV0ZWRGb250ID0g
Rm9udFZhbHVlOjpjcmVhdGUoKTsKKworICAgICAgICAgICAgQ1NTVmFsdWUqIGZvbnRTdHlsZSA9
IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U3R5bGUsIERvTm90VXBkYXRlTGF5
b3V0KS5sZWFrUmVmKCk7CisgICAgICAgICAgICBBU1NFUlQoZm9udFN0eWxlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpOworICAgICAgICAgICAgY29tcHV0ZWRGb250LT5zdHlsZSA9IGFkb3B0UmVmKHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZm9udFN0eWxlKSk7CisKKyAgICAgICAgICAg
IENTU1ZhbHVlKiBmb250VmFyaWFudCA9IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlG
b250VmFyaWFudCwgRG9Ob3RVcGRhdGVMYXlvdXQpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIEFT
U0VSVChmb250VmFyaWFudC0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKKyAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+dmFyaWFudCA9IGFkb3B0UmVmKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oZm9udFZhcmlhbnQpKTsKKworICAgICAgICAgICAgQ1NTVmFsdWUqIGZvbnRXZWlnaHQgPSBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgRG9Ob3RVcGRhdGVMYXlv
dXQpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIEFTU0VSVChmb250V2VpZ2h0LT5pc1ByaW1pdGl2
ZVZhbHVlKCkpOworICAgICAgICAgICAgY29tcHV0ZWRGb250LT53ZWlnaHQgPSBhZG9wdFJlZihz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGZvbnRXZWlnaHQpKTsKKworICAgICAgICAg
ICAgQ1NTVmFsdWUqIGZvbnRTaXplID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZv
bnRTaXplLCBEb05vdFVwZGF0ZUxheW91dCkubGVha1JlZigpOworICAgICAgICAgICAgQVNTRVJU
KGZvbnRTaXplLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOworICAgICAgICAgICAgY29tcHV0ZWRGb250
LT5zaXplID0gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmb250U2l6
ZSkpOworCisgICAgICAgICAgICBDU1NWYWx1ZSogbGluZUhlaWdodCA9IGdldFByb3BlcnR5Q1NT
VmFsdWUoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBEb05vdFVwZGF0ZUxheW91dCkubGVha1JlZigp
OworICAgICAgICAgICAgQVNTRVJUKGxpbmVIZWlnaHQtPmlzUHJpbWl0aXZlVmFsdWUoKSk7Cisg
ICAgICAgICAgICBjb21wdXRlZEZvbnQtPmxpbmVIZWlnaHQgPSBhZG9wdFJlZihzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KGxpbmVIZWlnaHQpKTsKKworICAgICAgICAgICAgQ1NTVmFs
dWUqIGZvbnRGYW1pbHkgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWls
eSwgRG9Ob3RVcGRhdGVMYXlvdXQpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIEFTU0VSVChmb250
RmFtaWx5LT5pc1ZhbHVlTGlzdCgpKTsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+ZmFtaWx5
ID0gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oZm9udEZhbWlseSkpOworCisg
ICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250LnJlbGVhc2UoKTsKKyAgICAgICAgfQogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseTogewogICAgICAgICAgICAgY29uc3QgRm9u
dEZhbWlseSYgZmlyc3RGYW1pbHkgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuZmFtaWx5KCk7
CiAgICAgICAgICAgICBpZiAoIWZpcnN0RmFtaWx5Lm5leHQoKSkKQEAgLTE3MDEsNyArMTczMSw2
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJTdHlsZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1hcmdpbjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104702</attachid>
            <date>2011-08-22 11:32:04 -0700</date>
            <delta_ts>2011-08-22 13:46:51 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-66666-v2.diff</filename>
            <type>text/plain</type>
            <size>11005</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNWJiMGUyLi41OTljM2U3IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgt
MjIgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIENTUzogSW1w
bGVtZW50ICdmb250JyBwcm9wZXJ0eSBpbiBDU1NDb21wdXRlZFN0eWxlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3NjcmlwdC10ZXN0cy9jb21w
dXRlZC1zdHlsZS1mb250LmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbXB1dGVkRm9udCk6CisKIDIw
MTEtMDgtMTggIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogZXh0cmFjdCBicmVha3BvaW50IG1hbmFnZW1lbnQgY29kZSB0
byBhIHNlcGFyYXRlIGNsYXNzIGFuZCBhZGQgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWZvbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHls
ZS1mb250LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
Y2U4ZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0
ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM2IEBA
CitUaGlzIHRlc3QgZXhlcmNpc2VzIHRoZSAnZm9udCcgc2hvcnRoYW5kIHByb3BlcnR5IGluIENT
UyBjb21wdXRlZCBzdHlsZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFs
IDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNl
cmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQ
QVNTIGNvbXB1dGVkRm9udCgnMTBweCBTQU5TLVNFUklGJykgaXMgJ25vcm1hbCBub3JtYWwgbm9y
bWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCBzYW5z
LXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIHNhbnMtc2VyaWYn
CitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCAgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFs
IG5vcm1hbCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzEwcHgg
c2Fucy1zZXJpZiwgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25v
cm1hbCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzEwcHggc2Fu
cy1zZXJpZiwgc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fu
cy1zZXJpZiwgc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCBhaGVtJykgaXMgJ25vcm1h
bCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nCitQQVNTIGNvbXB1dGVkRm9udCgnMTJw
eCB1bmxpa2VseS1mb250LW5hbWUnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTJweC9ub3Jt
YWwgdW5saWtlbHktZm9udC1uYW1lJworUEFTUyBjb21wdXRlZEZvbnQoJzEwMCAxMHB4IHNhbnMt
c2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCAxMDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BB
U1MgY29tcHV0ZWRGb250KCcyMDAgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwg
MjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMzAwIDEwcHgg
c2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIDMwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlm
JworUEFTUyBjb21wdXRlZEZvbnQoJzQwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5v
cm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCdu
b3JtYWwgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9y
bWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnNTAwIDEwcHggc2Fucy1zZXJpZicp
IGlzICdub3JtYWwgbm9ybWFsIDUwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21w
dXRlZEZvbnQoJzYwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA2MDAgMTBw
eC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCc3MDAgMTBweCBzYW5zLXNl
cmlmJykgaXMgJ25vcm1hbCBub3JtYWwgYm9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFT
UyBjb21wdXRlZEZvbnQoJ2JvbGQgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwg
Ym9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzgwMCAxMHB4
IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA4MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJp
ZicKK1BBU1MgY29tcHV0ZWRGb250KCc5MDAgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBu
b3JtYWwgOTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnaXRh
bGljIDEwcHggc2Fucy1zZXJpZicpIGlzICdpdGFsaWMgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1h
bCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJ3NtYWxsLWNhcHMgMTBweCBzYW5zLXNl
cmlmJykgaXMgJ25vcm1hbCBzbWFsbC1jYXBzIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlm
JworUEFTUyBjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIDEwcHggc2Fucy1zZXJpZicp
IGlzICdpdGFsaWMgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BB
U1MgY29tcHV0ZWRGb250KCdpdGFsaWMgc21hbGwtY2FwcyBib2xkIDEwcHggc2Fucy1zZXJpZicp
IGlzICdpdGFsaWMgc21hbGwtY2FwcyBib2xkIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNT
IGNvbXB1dGVkRm9udCgnMTBweC8xMDAlIHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBu
b3JtYWwgMTBweC8xMHB4IHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBweC8xMDBw
eCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fucy1z
ZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCcxMHB4L25vcm1hbCBzYW5zLXNlcmlmJykgaXMgJ25v
cm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWZv
bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmIwOTkwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21w
dXRlZC1zdHlsZS1mb250Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jb21wdXRlZC1zdHlsZS1m
b250LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1dGVkLXN0
eWxlLWZvbnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3Njcmlw
dC10ZXN0cy9jb21wdXRlZC1zdHlsZS1mb250LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmY2ZDA2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9nZXRDb21wdXRlZFN0eWxlL3NjcmlwdC10ZXN0cy9jb21wdXRlZC1zdHlsZS1mb250LmpzCkBA
IC0wLDAgKzEsNDAgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZXhlcmNpc2VzIHRoZSAnZm9u
dCcgc2hvcnRoYW5kIHByb3BlcnR5IGluIENTUyBjb21wdXRlZCBzdHlsZXMuIik7CisKK3ZhciB0
ZXN0RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKHRlc3REaXYpOworCitmdW5jdGlvbiBjb21wdXRlZEZvbnQoZm9udFN0cmluZykg
eworICAgIHRlc3REaXYuc3R5bGUuZm9udCA9ICdib2xkIDYwMHB4IHNlcmlmJzsKKyAgICB0ZXN0
RGl2LnN0eWxlLmZvbnQgPSBmb250U3RyaW5nOworICAgIHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZSh0ZXN0RGl2KS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250Jyk7Cit9CisKK3Nob3VsZEJl
KCJjb21wdXRlZEZvbnQoJzEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1h
bCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTBw
eCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMt
c2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcxMHB4IFNBTlMtU0VSSUYnKSIsICIn
bm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJl
KCJjb21wdXRlZEZvbnQoJzEycHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1h
bCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTJw
eCAgc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMnB4L25vcm1hbCBzYW5z
LXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNlcmlmLCBzYW5z
LXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYs
IHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcxMHB4IHNhbnMtc2VyaWYs
IHNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYs
IHNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTJweCBhaGVtJykiLCAiJ25vcm1h
bCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250KCcxMnB4IHVubGlrZWx5LWZvbnQtbmFtZScpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAx
MnB4L25vcm1hbCB1bmxpa2VseS1mb250LW5hbWUnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250
KCcxMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMTAwIDEwcHgvbm9ybWFs
IHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcyMDAgMTBweCBzYW5zLXNl
cmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7Citz
aG91bGRCZSgiY29tcHV0ZWRGb250KCczMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgMzAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250KCc0MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdub3JtYWwgMTBw
eCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMt
c2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc1MDAgMTBweCBzYW5zLXNlcmlmJyki
LCAiJ25vcm1hbCBub3JtYWwgNTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRC
ZSgiY29tcHV0ZWRGb250KCc2MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwg
NjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc3
MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgYm9sZCAxMHB4L25vcm1hbCBz
YW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnYm9sZCAxMHB4IHNhbnMtc2Vy
aWYnKSIsICInbm9ybWFsIG5vcm1hbCBib2xkIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7Citz
aG91bGRCZSgiY29tcHV0ZWRGb250KCc4MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgODAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250KCc5MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgOTAwIDEwcHgvbm9y
bWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdpdGFsaWMgMTBweCBz
YW5zLXNlcmlmJykiLCAiJ2l0YWxpYyBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2Vy
aWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdzbWFsbC1jYXBzIDEwcHggc2Fucy1zZXJp
ZicpIiwgIidub3JtYWwgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZici
KTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIDEwcHggc2Fucy1z
ZXJpZicpIiwgIidpdGFsaWMgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJp
ZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIGJvbGQgMTBw
eCBzYW5zLXNlcmlmJykiLCAiJ2l0YWxpYyBzbWFsbC1jYXBzIGJvbGQgMTBweC9ub3JtYWwgc2Fu
cy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJzEwcHgvMTAwJSBzYW5zLXNlcmlm
JykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTBweCBzYW5zLXNlcmlmJyIpOworc2hv
dWxkQmUoImNvbXB1dGVkRm9udCgnMTBweC8xMDBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRl
ZEZvbnQoJzEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5vcm1hbCBub3JtYWwg
MTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZWE4MTVlZi4uOWE1ZmZmYyAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDExLTA4LTIyICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBDU1M6IEltcGxlbWVudCAnZm9udCcgcHJvcGVydHkgaW4gQ1NTQ29tcHV0ZWRTdHls
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NjY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250Lmh0bWwKKworICAg
ICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKTog
Rm9yIENTU1Byb3BlcnR5Rm9udCwKKyAgICAgICAgcmV0dXJuIGEgc2VyaWFsaXphdGlvbiBvZiB0
aGUgY29tcHV0ZWQgdmFsdWVzLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgJ2VsZW1lbnQuc3R5bGUu
Zm9udCcKKwogMjAxMS0wOC0xOCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBleHRyYWN0IGJyZWFrcG9pbnQgbWFuYWdl
bWVudCBjb2RlIHRvIGEgc2VwYXJhdGUgY2xhc3MgYW5kIGFkZCB0ZXN0cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNGM3
MGIxNy4uYjQ4ODU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiRm9udEZlYXR1cmVTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkZv
bnRGZWF0dXJlVmFsdWUuaCIKKyNpbmNsdWRlICJGb250VmFsdWUuaCIKICNpbmNsdWRlICJSZWN0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAg
LTExMDEsNiArMTEwMiwxNiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICAgICAg
cmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHN0eWxlLT5lbXB0eUNlbGxz
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6CiAgICAgICAgICAgICByZXR1cm4g
cHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPmZsb2F0aW5nKCkpOworICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDogeworICAgICAgICAgICAgUmVmUHRyPEZvbnRWYWx1
ZT4gY29tcHV0ZWRGb250ID0gRm9udFZhbHVlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+c3R5bGUgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCBEb05vdFVwZGF0ZUxheW91
dCkpOworICAgICAgICAgICAgY29tcHV0ZWRGb250LT52YXJpYW50ID0gc3RhdGljX3BvaW50ZXJf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50LCBEb05vdFVwZGF0ZUxheW91dCkpOworICAgICAgICAgICAgY29tcHV0ZWRGb250
LT53ZWlnaHQgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgRG9Ob3RVcGRhdGVMYXlvdXQpKTsK
KyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+c2l6ZSA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U2l6ZSwg
RG9Ob3RVcGRhdGVMYXlvdXQpKTsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+bGluZUhlaWdo
dCA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGdldFByb3BlcnR5Q1NT
VmFsdWUoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBEb05vdFVwZGF0ZUxheW91dCkpOworICAgICAg
ICAgICAgY29tcHV0ZWRGb250LT5mYW1pbHkgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1ZhbHVl
TGlzdD4oZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIERvTm90VXBk
YXRlTGF5b3V0KSk7CisgICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250LnJlbGVhc2UoKTsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseTogewogICAgICAg
ICAgICAgY29uc3QgRm9udEZhbWlseSYgZmlyc3RGYW1pbHkgPSBzdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCkuZmFtaWx5KCk7CiAgICAgICAgICAgICBpZiAoIWZpcnN0RmFtaWx5Lm5leHQoKSkKQEAg
LTE3MDEsNyArMTcxMiw2IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJTdHlsZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRv
cDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgotICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxp
bmU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104738</attachid>
            <date>2011-08-22 14:30:42 -0700</date>
            <delta_ts>2011-09-21 08:15:32 -0700</delta_ts>
            <desc>Proposed patch v3</desc>
            <filename>bug-66666-v3.diff</filename>
            <type>text/plain</type>
            <size>19621</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNWJiMGUyLi41OTljM2U3IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgt
MjIgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIENTUzogSW1w
bGVtZW50ICdmb250JyBwcm9wZXJ0eSBpbiBDU1NDb21wdXRlZFN0eWxlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3NjcmlwdC10ZXN0cy9jb21w
dXRlZC1zdHlsZS1mb250LmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbXB1dGVkRm9udCk6CisKIDIw
MTEtMDgtMTggIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogZXh0cmFjdCBicmVha3BvaW50IG1hbmFnZW1lbnQgY29kZSB0
byBhIHNlcGFyYXRlIGNsYXNzIGFuZCBhZGQgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWZvbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHls
ZS1mb250LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
Y2U4ZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0
ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM2IEBA
CitUaGlzIHRlc3QgZXhlcmNpc2VzIHRoZSAnZm9udCcgc2hvcnRoYW5kIHByb3BlcnR5IGluIENT
UyBjb21wdXRlZCBzdHlsZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFs
IDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNl
cmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQ
QVNTIGNvbXB1dGVkRm9udCgnMTBweCBTQU5TLVNFUklGJykgaXMgJ25vcm1hbCBub3JtYWwgbm9y
bWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCBzYW5z
LXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIHNhbnMtc2VyaWYn
CitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCAgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFs
IG5vcm1hbCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzEwcHgg
c2Fucy1zZXJpZiwgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25v
cm1hbCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzEwcHggc2Fu
cy1zZXJpZiwgc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fu
cy1zZXJpZiwgc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCBhaGVtJykgaXMgJ25vcm1h
bCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nCitQQVNTIGNvbXB1dGVkRm9udCgnMTJw
eCB1bmxpa2VseS1mb250LW5hbWUnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTJweC9ub3Jt
YWwgdW5saWtlbHktZm9udC1uYW1lJworUEFTUyBjb21wdXRlZEZvbnQoJzEwMCAxMHB4IHNhbnMt
c2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCAxMDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BB
U1MgY29tcHV0ZWRGb250KCcyMDAgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwg
MjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMzAwIDEwcHgg
c2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIDMwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlm
JworUEFTUyBjb21wdXRlZEZvbnQoJzQwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5v
cm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCdu
b3JtYWwgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9y
bWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnNTAwIDEwcHggc2Fucy1zZXJpZicp
IGlzICdub3JtYWwgbm9ybWFsIDUwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21w
dXRlZEZvbnQoJzYwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA2MDAgMTBw
eC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCc3MDAgMTBweCBzYW5zLXNl
cmlmJykgaXMgJ25vcm1hbCBub3JtYWwgYm9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFT
UyBjb21wdXRlZEZvbnQoJ2JvbGQgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwg
Ym9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzgwMCAxMHB4
IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA4MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJp
ZicKK1BBU1MgY29tcHV0ZWRGb250KCc5MDAgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBu
b3JtYWwgOTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnaXRh
bGljIDEwcHggc2Fucy1zZXJpZicpIGlzICdpdGFsaWMgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1h
bCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJ3NtYWxsLWNhcHMgMTBweCBzYW5zLXNl
cmlmJykgaXMgJ25vcm1hbCBzbWFsbC1jYXBzIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlm
JworUEFTUyBjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIDEwcHggc2Fucy1zZXJpZicp
IGlzICdpdGFsaWMgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BB
U1MgY29tcHV0ZWRGb250KCdpdGFsaWMgc21hbGwtY2FwcyBib2xkIDEwcHggc2Fucy1zZXJpZicp
IGlzICdpdGFsaWMgc21hbGwtY2FwcyBib2xkIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNT
IGNvbXB1dGVkRm9udCgnMTBweC8xMDAlIHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBu
b3JtYWwgMTBweC8xMHB4IHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBweC8xMDBw
eCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fucy1z
ZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCcxMHB4L25vcm1hbCBzYW5zLXNlcmlmJykgaXMgJ25v
cm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWZv
bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmIwOTkwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21w
dXRlZC1zdHlsZS1mb250Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jb21wdXRlZC1zdHlsZS1m
b250LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvc2NyaXB0LXRlc3RzL2NvbXB1dGVkLXN0
eWxlLWZvbnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3Njcmlw
dC10ZXN0cy9jb21wdXRlZC1zdHlsZS1mb250LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmY2ZDA2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9nZXRDb21wdXRlZFN0eWxlL3NjcmlwdC10ZXN0cy9jb21wdXRlZC1zdHlsZS1mb250LmpzCkBA
IC0wLDAgKzEsNDAgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZXhlcmNpc2VzIHRoZSAnZm9u
dCcgc2hvcnRoYW5kIHByb3BlcnR5IGluIENTUyBjb21wdXRlZCBzdHlsZXMuIik7CisKK3ZhciB0
ZXN0RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKHRlc3REaXYpOworCitmdW5jdGlvbiBjb21wdXRlZEZvbnQoZm9udFN0cmluZykg
eworICAgIHRlc3REaXYuc3R5bGUuZm9udCA9ICdib2xkIDYwMHB4IHNlcmlmJzsKKyAgICB0ZXN0
RGl2LnN0eWxlLmZvbnQgPSBmb250U3RyaW5nOworICAgIHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZSh0ZXN0RGl2KS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250Jyk7Cit9CisKK3Nob3VsZEJl
KCJjb21wdXRlZEZvbnQoJzEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1h
bCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTBw
eCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMt
c2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcxMHB4IFNBTlMtU0VSSUYnKSIsICIn
bm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJl
KCJjb21wdXRlZEZvbnQoJzEycHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1h
bCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTJw
eCAgc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMnB4L25vcm1hbCBzYW5z
LXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNlcmlmLCBzYW5z
LXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYs
IHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcxMHB4IHNhbnMtc2VyaWYs
IHNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYs
IHNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTJweCBhaGVtJykiLCAiJ25vcm1h
bCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250KCcxMnB4IHVubGlrZWx5LWZvbnQtbmFtZScpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAx
MnB4L25vcm1hbCB1bmxpa2VseS1mb250LW5hbWUnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250
KCcxMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMTAwIDEwcHgvbm9ybWFs
IHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcyMDAgMTBweCBzYW5zLXNl
cmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7Citz
aG91bGRCZSgiY29tcHV0ZWRGb250KCczMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgMzAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250KCc0MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdub3JtYWwgMTBw
eCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMt
c2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc1MDAgMTBweCBzYW5zLXNlcmlmJyki
LCAiJ25vcm1hbCBub3JtYWwgNTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRC
ZSgiY29tcHV0ZWRGb250KCc2MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwg
NjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc3
MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgYm9sZCAxMHB4L25vcm1hbCBz
YW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnYm9sZCAxMHB4IHNhbnMtc2Vy
aWYnKSIsICInbm9ybWFsIG5vcm1hbCBib2xkIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7Citz
aG91bGRCZSgiY29tcHV0ZWRGb250KCc4MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgODAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250KCc5MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgOTAwIDEwcHgvbm9y
bWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdpdGFsaWMgMTBweCBz
YW5zLXNlcmlmJykiLCAiJ2l0YWxpYyBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2Vy
aWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdzbWFsbC1jYXBzIDEwcHggc2Fucy1zZXJp
ZicpIiwgIidub3JtYWwgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZici
KTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIDEwcHggc2Fucy1z
ZXJpZicpIiwgIidpdGFsaWMgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJp
ZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIGJvbGQgMTBw
eCBzYW5zLXNlcmlmJykiLCAiJ2l0YWxpYyBzbWFsbC1jYXBzIGJvbGQgMTBweC9ub3JtYWwgc2Fu
cy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJzEwcHgvMTAwJSBzYW5zLXNlcmlm
JykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTBweCBzYW5zLXNlcmlmJyIpOworc2hv
dWxkQmUoImNvbXB1dGVkRm9udCgnMTBweC8xMDBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRl
ZEZvbnQoJzEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5vcm1hbCBub3JtYWwg
MTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZWE4MTVlZi4uZDBmYTk0OCAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDExLTA4LTIyICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBDU1M6IEltcGxlbWVudCAnZm9udCcgcHJvcGVydHkgaW4gQ1NTQ29tcHV0ZWRTdHls
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NjY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250Lmh0bWwKKworICAg
ICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Zm9udEZhbWlseUZyb21TdHlsZSk6IEZhY3RvcmVkIG91dCBvZiBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKCkuCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIGEgQ1NT
VmFsdWVMaXN0LCBhcyBvcHBvc2VkIHRvIHRoZSBwcmV2aW91cworICAgICAgICBpbXBsZW1lbnRh
dGlvbiB3aGljaCB3b3VsZCByZXR1cm4gYSBDU1NQcmltaXRpdmVWYWx1ZSBpZiB0aGVyZSB3YXMg
b25seSBvbmUgZmFtaWx5LgorICAgICAgICAoV2ViQ29yZTo6bGluZUhlaWdodEZyb21TdHlsZSk6
IEZhY3RvcmVkIG91dCBvZiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKCkuCisgICAgICAgIChXZWJDb3Jl
Ojpmb250U2l6ZUZyb21TdHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Zm9udFN0eWxl
RnJvbVN0eWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpmb250VmFyaWFudEZyb21TdHls
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdlaWdodEZyb21TdHlsZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKTogQWRkZWQKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbXB1
dGVkICdmb250JyBwcm9wZXJ0eSAoQ1NTUHJvcGVydHlGb250LikKKwogMjAxMS0wOC0xOCAgUGF2
ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBleHRyYWN0IGJyZWFrcG9pbnQgbWFuYWdlbWVudCBjb2RlIHRvIGEgc2VwYXJhdGUg
Y2xhc3MgYW5kIGFkZCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNGM3MGIxNy4uNWQ1M2JmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAg
LTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRm9u
dEZlYXR1cmVTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkZvbnRGZWF0dXJlVmFsdWUuaCIKKyNpbmNs
dWRlICJGb250VmFsdWUuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTc5OSw2ICs4MDAsNzQgQEAgc3RhdGlj
IHZvaWQgbG9nVW5pbXBsZW1lbnRlZFByb3BlcnR5SUQoaW50IHByb3BlcnR5SUQpCiAgICAgTE9H
X0VSUk9SKCJXZWJLaXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZv
ciAnJXMnLiIsIGdldFByb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9w
ZXJ0eUlEKSkpOwogfSAKIAorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBmb250RmFt
aWx5RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZSog
cHJpbWl0aXZlVmFsdWVDYWNoZSkKK3sKKyAgICBjb25zdCBGb250RmFtaWx5JiBmaXJzdEZhbWls
eSA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5mYW1pbHkoKTsKKyAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAg
IGZvciAoY29uc3QgRm9udEZhbWlseSogZmFtaWx5ID0gJmZpcnN0RmFtaWx5OyBmYW1pbHk7IGZh
bWlseSA9IGZhbWlseS0+bmV4dCgpKQorICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JGYW1p
bHkoZmFtaWx5LT5mYW1pbHkoKSwgcHJpbWl0aXZlVmFsdWVDYWNoZSkpOworICAgIHJldHVybiBs
aXN0LnJlbGVhc2UoKTsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGxpbmVIZWlnaHRGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NQcmltaXRpdmVWYWx1
ZUNhY2hlKiBwcmltaXRpdmVWYWx1ZUNhY2hlKQoreworICAgIExlbmd0aCBsZW5ndGggPSBzdHls
ZS0+bGluZUhlaWdodCgpOworICAgIGlmIChsZW5ndGguaXNOZWdhdGl2ZSgpKQorICAgICAgICBy
ZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9ybWFsKTsKKyAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQorICAgICAgICAvLyBUaGlzIGlz
IGltcGVyZmVjdCwgYmVjYXVzZSBpdCBkb2Vzbid0IGluY2x1ZGUgdGhlIHpvb20gZmFjdG9yIGFu
ZCB0aGUgcmVhbCBjb21wdXRhdGlvbgorICAgICAgICAvLyBmb3IgaG93IGhpZ2ggdG8gYmUgaW4g
cGl4ZWxzIGRvZXMgaW5jbHVkZSB0aGluZ3MgbGlrZSBtaW5pbXVtIGZvbnQgc2l6ZSBhbmQgdGhl
IHpvb20gZmFjdG9yLgorICAgICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgc2luY2UgZm9udC1z
aXplIGRvZXNuJ3QgaW5jbHVkZSB0aGUgem9vbSBmYWN0b3IsIHdlIHJlYWxseSBjYW4ndCBkbwor
ICAgICAgICAvLyB0aGF0IGhlcmUgZWl0aGVyLgorICAgICAgICByZXR1cm4gem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aC5wZXJjZW50KCkgKiBzdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpKSAvIDEwMCwgc3R5bGUsIHByaW1pdGl2ZVZh
bHVlQ2FjaGUpOworICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGxlbmd0aC52YWx1
ZSgpLCBzdHlsZSwgcHJpbWl0aXZlVmFsdWVDYWNoZSk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U2l6ZUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUs
IENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIHByaW1pdGl2ZVZhbHVlQ2FjaGUpCit7CisgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1
dGVkUGl4ZWxTaXplKCksIHN0eWxlLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKK30KKworc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTdHlsZUZyb21TdHlsZShSZW5kZXJT
dHlsZSogc3R5bGUsIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIHByaW1pdGl2ZVZhbHVlQ2FjaGUp
Cit7CisgICAgaWYgKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5pdGFsaWMoKSkKKyAgICAgICAg
cmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUl0YWxpYyk7CisgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBmb250VmFyaWFudEZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIENTU1By
aW1pdGl2ZVZhbHVlQ2FjaGUqIHByaW1pdGl2ZVZhbHVlQ2FjaGUpCit7CisgICAgaWYgKHN0eWxl
LT5mb250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSkKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2Fwcyk7Cisg
ICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vcm1hbCk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBm
b250V2VpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTUHJpbWl0aXZlVmFsdWVD
YWNoZSogcHJpbWl0aXZlVmFsdWVDYWNoZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS53ZWlnaHQoKSkgeworICAgICAgICBjYXNlIEZvbnRXZWlnaHQxMDA6CisgICAg
ICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlMTAwKTsKKyAgICAgICAgY2FzZSBGb250V2VpZ2h0MjAwOgorICAgICAgICAgICAg
cmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZTIwMCk7CisgICAgICAgIGNhc2UgRm9udFdlaWdodDMwMDoKKyAgICAgICAgICAgIHJldHVybiBw
cmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWUzMDApOwor
ICAgICAgICBjYXNlIEZvbnRXZWlnaHROb3JtYWw6CisgICAgICAgICAgICByZXR1cm4gcHJpbWl0
aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKKyAg
ICAgICAgY2FzZSBGb250V2VpZ2h0NTAwOgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZh
bHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZTUwMCk7CisgICAgICAgIGNh
c2UgRm9udFdlaWdodDYwMDoKKyAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hl
LT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWU2MDApOworICAgICAgICBjYXNlIEZvbnRX
ZWlnaHRCb2xkOgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUJvbGQpOworICAgICAgICBjYXNlIEZvbnRXZWlnaHQ4
MDA6CisgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlODAwKTsKKyAgICAgICAgY2FzZSBGb250V2VpZ2h0OTAwOgorICAg
ICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZTkwMCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b3JtYWwpOworfQorCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQg
dXBkYXRlTGF5b3V0KSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSBtX25vZGUuZ2V0KCk7CkBA
IC0xMTAxLDQ4ICsxMTcwLDI2IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAg
ICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPmVtcHR5Q2Vs
bHMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKICAgICAgICAgICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVWYWx1ZShzdHlsZS0+ZmxvYXRpbmcoKSk7Ci0g
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OiB7Ci0gICAgICAgICAgICBjb25zdCBG
b250RmFtaWx5JiBmaXJzdEZhbWlseSA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5mYW1pbHko
KTsKLSAgICAgICAgICAgIGlmICghZmlyc3RGYW1pbHkubmV4dCgpKQotICAgICAgICAgICAgICAg
IHJldHVybiB2YWx1ZUZvckZhbWlseShmaXJzdEZhbWlseS5mYW1pbHkoKSwgcHJpbWl0aXZlVmFs
dWVDYWNoZSk7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBG
b250RmFtaWx5KiBmYW1pbHkgPSAmZmlyc3RGYW1pbHk7IGZhbWlseTsgZmFtaWx5ID0gZmFtaWx5
LT5uZXh0KCkpCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yRmFtaWx5KGZh
bWlseS0+ZmFtaWx5KCksIHByaW1pdGl2ZVZhbHVlQ2FjaGUpKTsKLSAgICAgICAgICAgIHJldHVy
biBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6IHsKKyAgICAg
ICAgICAgIFJlZlB0cjxGb250VmFsdWU+IGNvbXB1dGVkRm9udCA9IEZvbnRWYWx1ZTo6Y3JlYXRl
KCk7CisgICAgICAgICAgICBjb21wdXRlZEZvbnQtPnN0eWxlID0gZm9udFN0eWxlRnJvbVN0eWxl
KHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKKyAgICAgICAgICAgIGNvbXB1dGVk
Rm9udC0+dmFyaWFudCA9IGZvbnRWYXJpYW50RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRp
dmVWYWx1ZUNhY2hlKTsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+d2VpZ2h0ID0gZm9udFdl
aWdodEZyb21TdHlsZShzdHlsZS5nZXQoKSwgcHJpbWl0aXZlVmFsdWVDYWNoZSk7CisgICAgICAg
ICAgICBjb21wdXRlZEZvbnQtPnNpemUgPSBmb250U2l6ZUZyb21TdHlsZShzdHlsZS5nZXQoKSwg
cHJpbWl0aXZlVmFsdWVDYWNoZSk7CisgICAgICAgICAgICBjb21wdXRlZEZvbnQtPmxpbmVIZWln
aHQgPSBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hl
KTsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+ZmFtaWx5ID0gZm9udEZhbWlseUZyb21TdHls
ZShzdHlsZS5nZXQoKSwgcHJpbWl0aXZlVmFsdWVDYWNoZSk7CisgICAgICAgICAgICByZXR1cm4g
Y29tcHV0ZWRGb250LnJlbGVhc2UoKTsKICAgICAgICAgfQorICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udEZhbWlseToKKyAgICAgICAgICAgIHJldHVybiBmb250RmFtaWx5RnJvbVN0eWxlKHN0
eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUZvbnRTaXplOgotICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN0eWxlLmdldCgpLCBw
cmltaXRpdmVWYWx1ZUNhY2hlKTsKKyAgICAgICAgICAgIHJldHVybiBmb250U2l6ZUZyb21TdHls
ZShzdHlsZS5nZXQoKSwgcHJpbWl0aXZlVmFsdWVDYWNoZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlGb250U3R5bGU6Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
Lml0YWxpYygpKQotICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVJdGFsaWMpOwotICAgICAgICAgICAgcmV0dXJu
IHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1h
bCk7CisgICAgICAgICAgICByZXR1cm4gZm9udFN0eWxlRnJvbVN0eWxlKHN0eWxlLmdldCgpLCBw
cmltaXRpdmVWYWx1ZUNhY2hlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50
OgotICAgICAgICAgICAgaWYgKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlU21hbGxDYXBzKTsKLSAgICAgICAgICAgIHJldHVybiBwcmltaXRp
dmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOworICAg
ICAgICAgICAgcmV0dXJuIGZvbnRWYXJpYW50RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRp
dmVWYWx1ZUNhY2hlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6Ci0gICAg
ICAgICAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgRm9udFdlaWdodDEwMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZTEw
MCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBGb250V2VpZ2h0MjAwOgotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlMjAwKTsKLSAgICAgICAgICAgICAgICBjYXNlIEZvbnRXZWlnaHQzMDA6Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWUzMDApOwotICAgICAgICAgICAgICAgIGNhc2UgRm9udFdlaWdodE5vcm1h
bDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBG
b250V2VpZ2h0NTAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVD
YWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlNTAwKTsKLSAgICAgICAgICAgICAg
ICBjYXNlIEZvbnRXZWlnaHQ2MDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRp
dmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWU2MDApOwotICAgICAg
ICAgICAgICAgIGNhc2UgRm9udFdlaWdodEJvbGQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVCb2xk
KTsKLSAgICAgICAgICAgICAgICBjYXNlIEZvbnRXZWlnaHQ4MDA6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWU4MDApOwotICAgICAgICAgICAgICAgIGNhc2UgRm9udFdlaWdodDkwMDoKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZTkwMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICAgICAgcmV0dXJuIGZv
bnRXZWlnaHRGcm9tU3R5bGUoc3R5bGUuZ2V0KCksIHByaW1pdGl2ZVZhbHVlQ2FjaGUpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udEZlYXR1cmVTZXR0aW5nczogewogICAgICAg
ICAgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyogZmVhdHVyZVNldHRpbmdzID0gc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpLmZlYXR1cmVTZXR0aW5ncygpOwogICAgICAgICAgICAgaWYgKCFm
ZWF0dXJlU2V0dGluZ3MgfHwgIWZlYXR1cmVTZXR0aW5ncy0+c2l6ZSgpKQpAQCAtMTE5MywxOCAr
MTI0MCw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICBpZiAoc3R5bGUt
PmxpbmVDbGFtcCgpLmlzTm9uZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVW
YWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAg
ICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVWYWx1ZShzdHlsZS0+bGluZUNs
YW1wKCkudmFsdWUoKSwgc3R5bGUtPmxpbmVDbGFtcCgpLmlzUGVyY2VudGFnZSgpID8gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFIDogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhlaWdodDogewotICAgICAgICAgICAg
TGVuZ3RoIGxlbmd0aCA9IHN0eWxlLT5saW5lSGVpZ2h0KCk7Ci0gICAgICAgICAgICBpZiAobGVu
Z3RoLmlzTmVnYXRpdmUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVD
YWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKLSAgICAgICAgICAg
IGlmIChsZW5ndGguaXNQZXJjZW50KCkpCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBpbXBl
cmZlY3QsIGJlY2F1c2UgaXQgZG9lc24ndCBpbmNsdWRlIHRoZSB6b29tIGZhY3RvciBhbmQgdGhl
IHJlYWwgY29tcHV0YXRpb24KLSAgICAgICAgICAgICAgICAvLyBmb3IgaG93IGhpZ2ggdG8gYmUg
aW4gcGl4ZWxzIGRvZXMgaW5jbHVkZSB0aGluZ3MgbGlrZSBtaW5pbXVtIGZvbnQgc2l6ZSBhbmQg
dGhlIHpvb20gZmFjdG9yLgotICAgICAgICAgICAgICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBz
aW5jZSBmb250LXNpemUgZG9lc24ndCBpbmNsdWRlIHRoZSB6b29tIGZhY3Rvciwgd2UgcmVhbGx5
IGNhbid0IGRvCi0gICAgICAgICAgICAgICAgLy8gdGhhdCBoZXJlIGVpdGhlci4KLSAgICAgICAg
ICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGxl
bmd0aC5wZXJjZW50KCkgKiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgp
KSAvIDEwMCwgc3R5bGUuZ2V0KCksIHByaW1pdGl2ZVZhbHVlQ2FjaGUpOwotICAgICAgICAgICAg
cmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobGVuZ3RoLnZhbHVlKCksIHN0eWxlLmdldCgp
LCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKLSAgICAgICAgfQorICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5TGluZUhlaWdodDoKKyAgICAgICAgICAgIHJldHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0
eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUxpc3RTdHlsZUltYWdlOgogICAgICAgICAgICAgaWYgKHN0eWxlLT5saXN0U3R5bGVJbWFnZSgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBzdHlsZS0+bGlzdFN0eWxlSW1hZ2UoKS0+Y3NzVmFs
dWUoKTsKQEAgLTE3MDEsNyArMTczOCw2IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclRvcDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgotICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHls
ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU91dGxpbmU6Cg==
</data>
<flag name="commit-queue"
          id="100688"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108164</attachid>
            <date>2011-09-21 08:15:32 -0700</date>
            <delta_ts>2011-09-22 04:55:51 -0700</delta_ts>
            <desc>Proposed patch v4</desc>
            <filename>bug-66666-v4.diff</filename>
            <type>text/plain</type>
            <size>26380</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZWZlODMxLi4zNzUwNTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDkt
MjEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIENTUzogSW1w
bGVtZW50ICdmb250JyBwcm9wZXJ0eSBpbiBDU1NDb21wdXRlZFN0eWxlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3NjcmlwdC10ZXN0cy9jb21w
dXRlZC1zdHlsZS1mb250LmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbXB1dGVkRm9udCk6CisgICAg
ICAgIChjb21wdXRlZEZvbnRDU1NWYWx1ZSk6CisKIDIwMTEtMDktMjEgIEFsZXhpcyBNZW5hcmQg
IDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFVuc2tp
cCBzb21lIGNvb2tpZXMgcmVsYXRlZCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWZvbnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1z
dHlsZS1mb250LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42YWUzN2E2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29t
cHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDY1
IEBACitUaGlzIHRlc3QgZXhlcmNpc2VzIHRoZSAnZm9udCcgc2hvcnRoYW5kIHByb3BlcnR5IGlu
IENTUyBjb21wdXRlZCBzdHlsZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9y
bWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBweCBzYW5z
LXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYn
CitQQVNTIGNvbXB1dGVkRm9udCgnMTBweCBTQU5TLVNFUklGJykgaXMgJ25vcm1hbCBub3JtYWwg
bm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCBz
YW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIHNhbnMtc2Vy
aWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCAgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9y
bWFsIG5vcm1hbCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzEw
cHggc2Fucy1zZXJpZiwgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4
L25vcm1hbCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzEwcHgg
c2Fucy1zZXJpZiwgc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwg
c2Fucy1zZXJpZiwgc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCBhaGVtJykgaXMgJ25v
cm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nCitQQVNTIGNvbXB1dGVkRm9udCgn
MTJweCB1bmxpa2VseS1mb250LW5hbWUnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTJweC9u
b3JtYWwgdW5saWtlbHktZm9udC1uYW1lJworUEFTUyBjb21wdXRlZEZvbnQoJzEwMCAxMHB4IHNh
bnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCAxMDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicK
K1BBU1MgY29tcHV0ZWRGb250KCcyMDAgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3Jt
YWwgMjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMzAwIDEw
cHggc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIDMwMCAxMHB4L25vcm1hbCBzYW5zLXNl
cmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzQwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFs
IG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250
KCdub3JtYWwgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnNTAwIDEwcHggc2Fucy1zZXJp
ZicpIGlzICdub3JtYWwgbm9ybWFsIDUwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBj
b21wdXRlZEZvbnQoJzYwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA2MDAg
MTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCc3MDAgMTBweCBzYW5z
LXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgYm9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJwor
UEFTUyBjb21wdXRlZEZvbnQoJ2JvbGQgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3Jt
YWwgYm9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzgwMCAx
MHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA4MDAgMTBweC9ub3JtYWwgc2Fucy1z
ZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCc5MDAgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1h
bCBub3JtYWwgOTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgn
aXRhbGljIDEwcHggc2Fucy1zZXJpZicpIGlzICdpdGFsaWMgbm9ybWFsIG5vcm1hbCAxMHB4L25v
cm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJ3NtYWxsLWNhcHMgMTBweCBzYW5z
LXNlcmlmJykgaXMgJ25vcm1hbCBzbWFsbC1jYXBzIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNl
cmlmJworUEFTUyBjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIDEwcHggc2Fucy1zZXJp
ZicpIGlzICdpdGFsaWMgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicK
K1BBU1MgY29tcHV0ZWRGb250KCdpdGFsaWMgc21hbGwtY2FwcyBib2xkIDEwcHggc2Fucy1zZXJp
ZicpIGlzICdpdGFsaWMgc21hbGwtY2FwcyBib2xkIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQ
QVNTIGNvbXB1dGVkRm9udCgnMTBweC8xMDAlIHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1h
bCBub3JtYWwgMTBweC8xMHB4IHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBweC8x
MDBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fu
cy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCcxMHB4L25vcm1hbCBzYW5zLXNlcmlmJykgaXMg
J25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1
dGVkRm9udCgnMTBweC9ub3JtYWwgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1h
bCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBw
eCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMt
c2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udENTU1ZhbHVlKCcxMHB4IHNhbnMtc2VyaWYnKSBpcyAn
bm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0
ZWRGb250Q1NTVmFsdWUoJzEwcHggU0FOUy1TRVJJRicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1h
bCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTJw
eCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIHNhbnMt
c2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udENTU1ZhbHVlKCcxMnB4ICBzYW5zLXNlcmlmJykgaXMg
J25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1
dGVkRm9udENTU1ZhbHVlKCcxMHB4IHNhbnMtc2VyaWYsIHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFs
IG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiwgc2Fucy1zZXJpZicKK1BBU1Mg
Y29tcHV0ZWRGb250Q1NTVmFsdWUoJzEwcHggc2Fucy1zZXJpZiwgc2VyaWYnKSBpcyAnbm9ybWFs
IG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiwgc2VyaWYnCitQQVNTIGNvbXB1
dGVkRm9udENTU1ZhbHVlKCcxMnB4IGFoZW0nKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTJw
eC9ub3JtYWwgYWhlbScKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzEycHggdW5saWtlbHkt
Zm9udC1uYW1lJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIHVubGlrZWx5
LWZvbnQtbmFtZScKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzEwMCAxMHB4IHNhbnMtc2Vy
aWYnKSBpcyAnbm9ybWFsIG5vcm1hbCAxMDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1Mg
Y29tcHV0ZWRGb250Q1NTVmFsdWUoJzIwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5v
cm1hbCAyMDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFs
dWUoJzMwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCAzMDAgMTBweC9ub3Jt
YWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzQwMCAxMHB4IHNhbnMt
c2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicK
K1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJ25vcm1hbCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAn
bm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0
ZWRGb250Q1NTVmFsdWUoJzUwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA1
MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzYw
MCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA2MDAgMTBweC9ub3JtYWwgc2Fu
cy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzcwMCAxMHB4IHNhbnMtc2VyaWYn
KSBpcyAnbm9ybWFsIG5vcm1hbCBib2xkIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNv
bXB1dGVkRm9udENTU1ZhbHVlKCdib2xkIDEwcHggc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9y
bWFsIGJvbGQgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFs
dWUoJzgwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA4MDAgMTBweC9ub3Jt
YWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzkwMCAxMHB4IHNhbnMt
c2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA5MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BB
U1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJ2l0YWxpYyAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnaXRh
bGljIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRG
b250Q1NTVmFsdWUoJ3NtYWxsLWNhcHMgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBzbWFs
bC1jYXBzIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnRD
U1NWYWx1ZSgnaXRhbGljIHNtYWxsLWNhcHMgMTBweCBzYW5zLXNlcmlmJykgaXMgJ2l0YWxpYyBz
bWFsbC1jYXBzIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZv
bnRDU1NWYWx1ZSgnaXRhbGljIHNtYWxsLWNhcHMgYm9sZCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAn
aXRhbGljIHNtYWxsLWNhcHMgYm9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21w
dXRlZEZvbnRDU1NWYWx1ZSgnMTBweC8xMDAlIHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1h
bCBub3JtYWwgMTBweC8xMHB4IHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udENTU1ZhbHVl
KCcxMHB4LzEwMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC8x
MDBweCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweC9ub3JtYWwg
c2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNl
cmlmJworUEFTUyBjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweC9ub3JtYWwgc2Fucy1zZXJpZicp
IGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9u
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1z
dHlsZS1mb250Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJiMDk5
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvY29tcHV0ZWQtc3R5bGUtZm9udC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY29tcHV0ZWQt
c3R5bGUtZm9udC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3NjcmlwdC10ZXN0cy9jb21w
dXRlZC1zdHlsZS1mb250LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHls
ZS9zY3JpcHQtdGVzdHMvY29tcHV0ZWQtc3R5bGUtZm9udC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jNzA3NjgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9zY3JpcHQtdGVzdHMvY29tcHV0ZWQtc3R5bGUtZm9u
dC5qcwpAQCAtMCwwICsxLDc5IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGV4ZXJjaXNlcyB0
aGUgJ2ZvbnQnIHNob3J0aGFuZCBwcm9wZXJ0eSBpbiBDU1MgY29tcHV0ZWQgc3R5bGVzLiIpOwor
Cit2YXIgdGVzdERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZCh0ZXN0RGl2KTsKKworZnVuY3Rpb24gY29tcHV0ZWRGb250KGZvbnRT
dHJpbmcpIHsKKyAgICB0ZXN0RGl2LnN0eWxlLmZvbnQgPSAnYm9sZCA2MDBweCBzZXJpZic7Cisg
ICAgdGVzdERpdi5zdHlsZS5mb250ID0gZm9udFN0cmluZzsKKyAgICByZXR1cm4gd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUodGVzdERpdikuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udCcpOworfQorCitm
dW5jdGlvbiBjb21wdXRlZEZvbnRDU1NWYWx1ZShmb250U3RyaW5nKSB7CisgICAgdGVzdERpdi5z
dHlsZS5mb250ID0gJ2JvbGQgNjAwcHggc2VyaWYnOworICAgIHRlc3REaXYuc3R5bGUuZm9udCA9
IGZvbnRTdHJpbmc7CisgICAgdmFyIGNzc1ZhbHVlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUo
dGVzdERpdikuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZm9udCcpOworICAgIGlmIChjc3NWYWx1ZSA9
PT0gbnVsbCkKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgcmV0dXJuIGNzc1ZhbHVlLmNzc1Rl
eHQ7Cit9CisKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJzEwcHggc2Fucy1zZXJpZicpIiwgIidu
b3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUo
ImNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFs
IDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcxMHB4
IFNBTlMtU0VSSUYnKSIsICInbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1z
ZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJzEycHggc2Fucy1zZXJpZicpIiwgIidu
b3JtYWwgbm9ybWFsIG5vcm1hbCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUo
ImNvbXB1dGVkRm9udCgnMTJweCAgc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1h
bCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTBw
eCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250
KCcxMHB4IHNhbnMtc2VyaWYsIHNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYsIHNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTJw
eCBhaGVtJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nIik7Citz
aG91bGRCZSgiY29tcHV0ZWRGb250KCcxMnB4IHVubGlrZWx5LWZvbnQtbmFtZScpIiwgIidub3Jt
YWwgbm9ybWFsIG5vcm1hbCAxMnB4L25vcm1hbCB1bmxpa2VseS1mb250LW5hbWUnIik7CitzaG91
bGRCZSgiY29tcHV0ZWRGb250KCcxMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3Jt
YWwgMTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250
KCcyMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMjAwIDEwcHgvbm9ybWFs
IHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCczMDAgMTBweCBzYW5zLXNl
cmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMzAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7Citz
aG91bGRCZSgiY29tcHV0ZWRGb250KCc0MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0
ZWRGb250KCdub3JtYWwgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFs
IDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc1MDAg
MTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgNTAwIDEwcHgvbm9ybWFsIHNhbnMt
c2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc2MDAgMTBweCBzYW5zLXNlcmlmJyki
LCAiJ25vcm1hbCBub3JtYWwgNjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRC
ZSgiY29tcHV0ZWRGb250KCc3MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwg
Ym9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgn
Ym9sZCAxMHB4IHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5vcm1hbCBib2xkIDEwcHgvbm9ybWFs
IHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc4MDAgMTBweCBzYW5zLXNl
cmlmJykiLCAiJ25vcm1hbCBub3JtYWwgODAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7Citz
aG91bGRCZSgiY29tcHV0ZWRGb250KCc5MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgOTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250KCdpdGFsaWMgMTBweCBzYW5zLXNlcmlmJykiLCAiJ2l0YWxpYyBub3JtYWwgbm9ybWFsIDEw
cHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdzbWFsbC1j
YXBzIDEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgc21hbGwtY2FwcyBub3JtYWwgMTBweC9u
b3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFs
bC1jYXBzIDEwcHggc2Fucy1zZXJpZicpIiwgIidpdGFsaWMgc21hbGwtY2FwcyBub3JtYWwgMTBw
eC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJ2l0YWxpYyBz
bWFsbC1jYXBzIGJvbGQgMTBweCBzYW5zLXNlcmlmJykiLCAiJ2l0YWxpYyBzbWFsbC1jYXBzIGJv
bGQgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJzEw
cHgvMTAwJSBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTBweCBz
YW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTBweC8xMDBweCBzYW5zLXNl
cmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fucy1zZXJpZiciKTsK
K3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJzEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnKSIsICInbm9y
bWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJj
b21wdXRlZEZvbnQoJzEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5vcm1hbCBu
b3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKKworc2hvdWxkQmUoImNvbXB1dGVkRm9u
dENTU1ZhbHVlKCcxMHB4IHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBw
eC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgn
MTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNh
bnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250Q1NTVmFsdWUoJzEwcHggU0FOUy1T
RVJJRicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIp
Oworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVlKCcxMnB4IHNhbnMtc2VyaWYnKSIsICIn
bm9ybWFsIG5vcm1hbCBub3JtYWwgMTJweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJl
KCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTJweCAgc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9y
bWFsIG5vcm1hbCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVk
Rm9udENTU1ZhbHVlKCcxMHB4IHNhbnMtc2VyaWYsIHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5v
cm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiwgc2Fucy1zZXJpZiciKTsKK3Nob3Vs
ZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweCBzYW5zLXNlcmlmLCBzZXJpZicpIiwgIidu
b3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmLCBzZXJpZiciKTsKK3No
b3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTJweCBhaGVtJykiLCAiJ25vcm1hbCBub3Jt
YWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250Q1NT
VmFsdWUoJzEycHggdW5saWtlbHktZm9udC1uYW1lJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFs
IDEycHgvbm9ybWFsIHVubGlrZWx5LWZvbnQtbmFtZSciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZv
bnRDU1NWYWx1ZSgnMTAwIDEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIDEwMCAx
MHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVl
KCcyMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMjAwIDEwcHgvbm9ybWFs
IHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250Q1NTVmFsdWUoJzMwMCAxMHB4
IHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5vcm1hbCAzMDAgMTBweC9ub3JtYWwgc2Fucy1zZXJp
ZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnNDAwIDEwcHggc2Fucy1zZXJp
ZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOwor
c2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVlKCdub3JtYWwgMTBweCBzYW5zLXNlcmlmJyki
LCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91
bGRCZSgiY29tcHV0ZWRGb250Q1NTVmFsdWUoJzUwMCAxMHB4IHNhbnMtc2VyaWYnKSIsICInbm9y
bWFsIG5vcm1hbCA1MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21w
dXRlZEZvbnRDU1NWYWx1ZSgnNjAwIDEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFs
IDYwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENT
U1ZhbHVlKCc3MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgYm9sZCAxMHB4
L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVlKCdi
b2xkIDEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIGJvbGQgMTBweC9ub3JtYWwg
c2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnODAwIDEwcHgg
c2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIDgwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlm
JyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVlKCc5MDAgMTBweCBzYW5zLXNlcmlm
JykiLCAiJ25vcm1hbCBub3JtYWwgOTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91
bGRCZSgiY29tcHV0ZWRGb250Q1NTVmFsdWUoJ2l0YWxpYyAxMHB4IHNhbnMtc2VyaWYnKSIsICIn
aXRhbGljIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJl
KCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnc21hbGwtY2FwcyAxMHB4IHNhbnMtc2VyaWYnKSIsICIn
bm9ybWFsIHNtYWxsLWNhcHMgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91
bGRCZSgiY29tcHV0ZWRGb250Q1NTVmFsdWUoJ2l0YWxpYyBzbWFsbC1jYXBzIDEwcHggc2Fucy1z
ZXJpZicpIiwgIidpdGFsaWMgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJp
ZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnaXRhbGljIHNtYWxsLWNhcHMg
Ym9sZCAxMHB4IHNhbnMtc2VyaWYnKSIsICInaXRhbGljIHNtYWxsLWNhcHMgYm9sZCAxMHB4L25v
cm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVlKCcxMHB4
LzEwMCUgc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4LzEwcHggc2Fu
cy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweC8xMDBweCBz
YW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fucy1zZXJp
ZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweC9ub3JtYWwgc2Fucy1z
ZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIp
Oworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVlKCcxMHB4L25vcm1hbCBzYW5zLXNlcmlm
JykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlmODIyMzYuLjM0
ODUzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0wOS0yMSAgQW5kcmVhcyBL
bGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1NTOiBJbXBsZW1lbnQgJ2ZvbnQn
IHByb3BlcnR5IGluIENTU0NvbXB1dGVkU3R5bGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29t
cHV0ZWQtc3R5bGUtZm9udC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRGYW1pbHlGcm9tU3R5bGUpOiBG
YWN0b3JlZCBvdXQgb2YgZ2V0UHJvcGVydHlDU1NWYWx1ZSgpLgorICAgICAgICBUaGlzIGZ1bmN0
aW9uIHdpbGwgYWx3YXlzIHJldHVybiBhIENTU1ZhbHVlTGlzdCwgYXMgb3Bwb3NlZCB0byB0aGUg
cHJldmlvdXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gd2hpY2ggd291bGQgcmV0dXJuIGEgQ1NT
UHJpbWl0aXZlVmFsdWUgaWYgdGhlcmUgd2FzIG9ubHkgb25lIGZhbWlseS4KKyAgICAgICAgZ2V0
Q1NTUHJvcGVydHlWYWx1ZSgpIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBs
aXN0IGZvciAxLWVsZW1lbnQgbGlzdHMKKyAgICAgICAgdG8gcHJlc2VydmUgdGhlIGN1cnJlbnQg
YmVoYXZpb3Igb2YgZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZm9udC1mYW1pbHknKS4KKworICAgICAg
ICAoV2ViQ29yZTo6bGluZUhlaWdodEZyb21TdHlsZSk6IEZhY3RvcmVkIG91dCBvZiBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKCkuCisgICAgICAgIChXZWJDb3JlOjpmb250U2l6ZUZyb21TdHlsZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Zm9udFN0eWxlRnJvbVN0eWxlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpmb250VmFyaWFudEZyb21TdHlsZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Zm9udFdlaWdodEZyb21TdHlsZSk6IERpdHRvLgorCisgICAgICAgIChXZWJDb3JlOjpD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOiBBZGRlZAor
ICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcHV0ZWQgJ2ZvbnQnIHByb3BlcnR5IChD
U1NQcm9wZXJ0eUZvbnQuKQorCiAyMDExLTA5LTIxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
Z29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtaW5vciBmaXhlcyBpbiB0aGUg
RE9NIGRvbWFpbiBvZiB0aGUgcHJvdG9jb2wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDNhOGIzZDcuLmJmYzg1NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIkZvbnRGZWF0dXJlU2V0dGluZ3MuaCIKICNpbmNsdWRlICJGb250RmVhdHVyZVZhbHVlLmgi
CisjaW5jbHVkZSAiRm9udFZhbHVlLmgiCiAjaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlJl
Y3QuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTkyMSw2ICs5MjIsNzQgQEAgc3RhdGlj
IHZvaWQgbG9nVW5pbXBsZW1lbnRlZFByb3BlcnR5SUQoaW50IHByb3BlcnR5SUQpCiAgICAgTE9H
X0VSUk9SKCJXZWJLaXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZv
ciAnJXMnLiIsIGdldFByb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9w
ZXJ0eUlEKSkpOwogfSAKIAorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBmb250RmFt
aWx5RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZSog
cHJpbWl0aXZlVmFsdWVDYWNoZSkKK3sKKyAgICBjb25zdCBGb250RmFtaWx5JiBmaXJzdEZhbWls
eSA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5mYW1pbHkoKTsKKyAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAg
IGZvciAoY29uc3QgRm9udEZhbWlseSogZmFtaWx5ID0gJmZpcnN0RmFtaWx5OyBmYW1pbHk7IGZh
bWlseSA9IGZhbWlseS0+bmV4dCgpKQorICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JGYW1p
bHkoZmFtaWx5LT5mYW1pbHkoKSwgcHJpbWl0aXZlVmFsdWVDYWNoZSkpOworICAgIHJldHVybiBs
aXN0LnJlbGVhc2UoKTsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGxpbmVIZWlnaHRGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NQcmltaXRpdmVWYWx1
ZUNhY2hlKiBwcmltaXRpdmVWYWx1ZUNhY2hlKQoreworICAgIExlbmd0aCBsZW5ndGggPSBzdHls
ZS0+bGluZUhlaWdodCgpOworICAgIGlmIChsZW5ndGguaXNOZWdhdGl2ZSgpKQorICAgICAgICBy
ZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9ybWFsKTsKKyAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQorICAgICAgICAvLyBUaGlzIGlz
IGltcGVyZmVjdCwgYmVjYXVzZSBpdCBkb2Vzbid0IGluY2x1ZGUgdGhlIHpvb20gZmFjdG9yIGFu
ZCB0aGUgcmVhbCBjb21wdXRhdGlvbgorICAgICAgICAvLyBmb3IgaG93IGhpZ2ggdG8gYmUgaW4g
cGl4ZWxzIGRvZXMgaW5jbHVkZSB0aGluZ3MgbGlrZSBtaW5pbXVtIGZvbnQgc2l6ZSBhbmQgdGhl
IHpvb20gZmFjdG9yLgorICAgICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgc2luY2UgZm9udC1z
aXplIGRvZXNuJ3QgaW5jbHVkZSB0aGUgem9vbSBmYWN0b3IsIHdlIHJlYWxseSBjYW4ndCBkbwor
ICAgICAgICAvLyB0aGF0IGhlcmUgZWl0aGVyLgorICAgICAgICByZXR1cm4gem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aC5wZXJjZW50KCkgKiBzdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpKSAvIDEwMCwgc3R5bGUsIHByaW1pdGl2ZVZh
bHVlQ2FjaGUpOworICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGxlbmd0aC52YWx1
ZSgpLCBzdHlsZSwgcHJpbWl0aXZlVmFsdWVDYWNoZSk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U2l6ZUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUs
IENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIHByaW1pdGl2ZVZhbHVlQ2FjaGUpCit7CisgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1
dGVkUGl4ZWxTaXplKCksIHN0eWxlLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKK30KKworc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTdHlsZUZyb21TdHlsZShSZW5kZXJT
dHlsZSogc3R5bGUsIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIHByaW1pdGl2ZVZhbHVlQ2FjaGUp
Cit7CisgICAgaWYgKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5pdGFsaWMoKSkKKyAgICAgICAg
cmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUl0YWxpYyk7CisgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBmb250VmFyaWFudEZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIENTU1By
aW1pdGl2ZVZhbHVlQ2FjaGUqIHByaW1pdGl2ZVZhbHVlQ2FjaGUpCit7CisgICAgaWYgKHN0eWxl
LT5mb250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSkKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2Fwcyk7Cisg
ICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vcm1hbCk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBm
b250V2VpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTUHJpbWl0aXZlVmFsdWVD
YWNoZSogcHJpbWl0aXZlVmFsdWVDYWNoZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS53ZWlnaHQoKSkgeworICAgICAgICBjYXNlIEZvbnRXZWlnaHQxMDA6CisgICAg
ICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlMTAwKTsKKyAgICAgICAgY2FzZSBGb250V2VpZ2h0MjAwOgorICAgICAgICAgICAg
cmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZTIwMCk7CisgICAgICAgIGNhc2UgRm9udFdlaWdodDMwMDoKKyAgICAgICAgICAgIHJldHVybiBw
cmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWUzMDApOwor
ICAgICAgICBjYXNlIEZvbnRXZWlnaHROb3JtYWw6CisgICAgICAgICAgICByZXR1cm4gcHJpbWl0
aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKKyAg
ICAgICAgY2FzZSBGb250V2VpZ2h0NTAwOgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZh
bHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZTUwMCk7CisgICAgICAgIGNh
c2UgRm9udFdlaWdodDYwMDoKKyAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hl
LT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWU2MDApOworICAgICAgICBjYXNlIEZvbnRX
ZWlnaHRCb2xkOgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUJvbGQpOworICAgICAgICBjYXNlIEZvbnRXZWlnaHQ4
MDA6CisgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlODAwKTsKKyAgICAgICAgY2FzZSBGb250V2VpZ2h0OTAwOgorICAg
ICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZTkwMCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b3JtYWwpOworfQorCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQg
dXBkYXRlTGF5b3V0KSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSBtX25vZGUuZ2V0KCk7CkBA
IC0xMjM3LDQ4ICsxMzA2LDMyIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAjZW5kaWYKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHN0eWxlLT5mbG9hdGluZygpKTsKKyAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnQ6IHsKKyAgICAgICAgICAgIFJlZlB0cjxGb250VmFsdWU+IGNvbXB1
dGVkRm9udCA9IEZvbnRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBjb21wdXRlZEZvbnQt
PnN0eWxlID0gZm9udFN0eWxlRnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNh
Y2hlKTsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+dmFyaWFudCA9IGZvbnRWYXJpYW50RnJv
bVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKKyAgICAgICAgICAgIGNv
bXB1dGVkRm9udC0+d2VpZ2h0ID0gZm9udFdlaWdodEZyb21TdHlsZShzdHlsZS5nZXQoKSwgcHJp
bWl0aXZlVmFsdWVDYWNoZSk7CisgICAgICAgICAgICBjb21wdXRlZEZvbnQtPnNpemUgPSBmb250
U2l6ZUZyb21TdHlsZShzdHlsZS5nZXQoKSwgcHJpbWl0aXZlVmFsdWVDYWNoZSk7CisgICAgICAg
ICAgICBjb21wdXRlZEZvbnQtPmxpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxl
LmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+
ZmFtaWx5ID0gZm9udEZhbWlseUZyb21TdHlsZShzdHlsZS5nZXQoKSwgcHJpbWl0aXZlVmFsdWVD
YWNoZSk7CisgICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250LnJlbGVhc2UoKTsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseTogewotICAgICAgICAgICAg
Y29uc3QgRm9udEZhbWlseSYgZmlyc3RGYW1pbHkgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCku
ZmFtaWx5KCk7Ci0gICAgICAgICAgICBpZiAoIWZpcnN0RmFtaWx5Lm5leHQoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdmFsdWVGb3JGYW1pbHkoZmlyc3RGYW1pbHkuZmFtaWx5KCksIHByaW1p
dGl2ZVZhbHVlQ2FjaGUpOwotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAo
Y29uc3QgRm9udEZhbWlseSogZmFtaWx5ID0gJmZpcnN0RmFtaWx5OyBmYW1pbHk7IGZhbWlseSA9
IGZhbWlseS0+bmV4dCgpKQotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckZh
bWlseShmYW1pbHktPmZhbWlseSgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBmb250RmFtaWx5TGlzdCA9IGZvbnRGYW1pbHlGcm9tU3R5bGUoc3R5bGUuZ2V0KCksIHByaW1p
dGl2ZVZhbHVlQ2FjaGUpOworICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xl
IGZhbWlseSwgcmV0dXJuIHRoYXQgYXMgYSBDU1NQcmltaXRpdmVWYWx1ZS4KKyAgICAgICAgICAg
IC8vIE5PVEU6IEdlY2tvIGFsd2F5cyByZXR1cm5zIHRoaXMgYXMgYSBjb21tYS1zZXBhcmF0ZWQg
Q1NTUHJpbWl0aXZlVmFsdWUgc3RyaW5nLgorICAgICAgICAgICAgaWYgKGZvbnRGYW1pbHlMaXN0
LT5sZW5ndGgoKSA9PSAxKQorICAgICAgICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdC0+
aXRlbSgwKTsKKyAgICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdC5yZWxlYXNlKCk7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplOgotICAgICAgICAgICAg
cmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNv
bXB1dGVkUGl4ZWxTaXplKCksIHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKKyAg
ICAgICAgICAgIHJldHVybiBmb250U2l6ZUZyb21TdHlsZShzdHlsZS5nZXQoKSwgcHJpbWl0aXZl
VmFsdWVDYWNoZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6Ci0gICAgICAg
ICAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVJdGFsaWMpOwotICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CisgICAgICAgICAgICByZXR1cm4g
Zm9udFN0eWxlRnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgotICAgICAgICAgICAgaWYgKHN0eWxl
LT5mb250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
cHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU21hbGxD
YXBzKTsKLSAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRWYXJp
YW50RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5m
b250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgRm9udFdl
aWdodDEwMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUt
PmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZTEwMCk7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBGb250V2VpZ2h0MjAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFs
dWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlMjAwKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIEZvbnRXZWlnaHQzMDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmlt
aXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWUzMDApOwotICAg
ICAgICAgICAgICAgIGNhc2UgRm9udFdlaWdodE5vcm1hbDoKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vcm1hbCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBGb250V2VpZ2h0NTAwOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlNTAwKTsKLSAgICAgICAgICAgICAgICBjYXNlIEZvbnRXZWlnaHQ2MDA6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWU2MDApOwotICAgICAgICAgICAgICAgIGNhc2UgRm9udFdlaWdo
dEJvbGQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVCb2xkKTsKLSAgICAgICAgICAgICAgICBjYXNl
IEZvbnRXZWlnaHQ4MDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1
ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWU4MDApOwotICAgICAgICAgICAg
ICAgIGNhc2UgRm9udFdlaWdodDkwMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1p
dGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZTkwMCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb3JtYWwpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoc3R5bGUu
Z2V0KCksIHByaW1pdGl2ZVZhbHVlQ2FjaGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Rm9udEZlYXR1cmVTZXR0aW5nczogewogICAgICAgICAgICAgY29uc3QgRm9udEZlYXR1cmVT
ZXR0aW5ncyogZmVhdHVyZVNldHRpbmdzID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZlYXR1
cmVTZXR0aW5ncygpOwogICAgICAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3MgfHwgIWZlYXR1
cmVTZXR0aW5ncy0+c2l6ZSgpKQpAQCAtMTMzMywxOCArMTM4Niw4IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShp
bnQgcHJvcGVyCiAgICAgICAgICAgICBpZiAoc3R5bGUtPmxpbmVDbGFtcCgpLmlzTm9uZSgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1
ZUNhY2hlLT5jcmVhdGVWYWx1ZShzdHlsZS0+bGluZUNsYW1wKCkudmFsdWUoKSwgc3R5bGUtPmxp
bmVDbGFtcCgpLmlzUGVyY2VudGFnZSgpID8gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFIDogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotICAgICAgICBjYXNlIENTU1By
b3BlcnR5TGluZUhlaWdodDogewotICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aCA9IHN0eWxlLT5s
aW5lSGVpZ2h0KCk7Ci0gICAgICAgICAgICBpZiAobGVuZ3RoLmlzTmVnYXRpdmUoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlTm9ybWFsKTsKLSAgICAgICAgICAgIGlmIChsZW5ndGguaXNQZXJjZW50KCkp
Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBpbXBlcmZlY3QsIGJlY2F1c2UgaXQgZG9lc24n
dCBpbmNsdWRlIHRoZSB6b29tIGZhY3RvciBhbmQgdGhlIHJlYWwgY29tcHV0YXRpb24KLSAgICAg
ICAgICAgICAgICAvLyBmb3IgaG93IGhpZ2ggdG8gYmUgaW4gcGl4ZWxzIGRvZXMgaW5jbHVkZSB0
aGluZ3MgbGlrZSBtaW5pbXVtIGZvbnQgc2l6ZSBhbmQgdGhlIHpvb20gZmFjdG9yLgotICAgICAg
ICAgICAgICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBzaW5jZSBmb250LXNpemUgZG9lc24ndCBp
bmNsdWRlIHRoZSB6b29tIGZhY3Rvciwgd2UgcmVhbGx5IGNhbid0IGRvCi0gICAgICAgICAgICAg
ICAgLy8gdGhhdCBoZXJlIGVpdGhlci4KLSAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aC5wZXJjZW50KCkgKiBzdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpKSAvIDEwMCwgc3R5bGUuZ2V0KCksIHBy
aW1pdGl2ZVZhbHVlQ2FjaGUpOwotICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVs
VmFsdWUobGVuZ3RoLnZhbHVlKCksIHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsK
LSAgICAgICAgfQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhlaWdodDoKKyAgICAgICAg
ICAgIHJldHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1
ZUNhY2hlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOgogICAgICAg
ICAgICAgaWYgKHN0eWxlLT5saXN0U3R5bGVJbWFnZSgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBzdHlsZS0+bGlzdFN0eWxlSW1hZ2UoKS0+Y3NzVmFsdWUoKTsKQEAgLTE4NjIsNyArMTkwNSw2
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJTdHlsZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1hcmdpbjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108315</attachid>
            <date>2011-09-22 04:56:00 -0700</date>
            <delta_ts>2011-09-22 06:24:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66666-20110922135558.patch</filename>
            <type>text/plain</type>
            <size>26731</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2MTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZWZlODMxYmVlMzJlOTUxNmRjOTY5
MjI4ZmIxNTk0YTQwM2ZkMDM0Li5kZmViOWUyNWFjMDdiYWIyZWExZjk5NTcyZWIwMzZhM2Y5ZTVl
M2RiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDktMjEgIEFuZHJlYXMgS2xpbmcgIDxr
bGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIENTUzogSW1wbGVtZW50ICdmb250JyBwcm9wZXJ0
eSBpbiBDU1NDb21wdXRlZFN0eWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjY2NjYKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KKworICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUt
Zm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy9nZXRDb21wdXRlZFN0eWxlL3NjcmlwdC10ZXN0cy9jb21wdXRlZC1zdHlsZS1mb250LmpzOiBB
ZGRlZC4KKyAgICAgICAgKGNvbXB1dGVkRm9udCk6CisgICAgICAgIChjb21wdXRlZEZvbnRDU1NW
YWx1ZSk6CisKIDIwMTEtMDktMjEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5i
b3NzYS5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFVuc2tpcCBzb21lIGNvb2tpZXMgcmVsYXRl
ZCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21w
dXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWZvbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YWUzN2E2ZWRiYzM3ZDE5ODJmM2ZjNDY3YmQ4MmJmYWY1N2VjZWQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9j
b21wdXRlZC1zdHlsZS1mb250LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDY1IEBACitUaGlzIHRl
c3QgZXhlcmNpc2VzIHRoZSAnZm9udCcgc2hvcnRoYW5kIHByb3BlcnR5IGluIENTUyBjb21wdXRl
ZCBzdHlsZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbXB1dGVk
Rm9udCgnMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9y
bWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNlcmlmJykgaXMg
J25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1
dGVkRm9udCgnMTBweCBTQU5TLVNFUklGJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCBzYW5zLXNlcmlmJykg
aXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNv
bXB1dGVkRm9udCgnMTJweCAgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAx
MnB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzEwcHggc2Fucy1zZXJp
Ziwgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5z
LXNlcmlmLCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzEwcHggc2Fucy1zZXJpZiwg
c2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiwg
c2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCBhaGVtJykgaXMgJ25vcm1hbCBub3JtYWwg
bm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nCitQQVNTIGNvbXB1dGVkRm9udCgnMTJweCB1bmxpa2Vs
eS1mb250LW5hbWUnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTJweC9ub3JtYWwgdW5saWtl
bHktZm9udC1uYW1lJworUEFTUyBjb21wdXRlZEZvbnQoJzEwMCAxMHB4IHNhbnMtc2VyaWYnKSBp
cyAnbm9ybWFsIG5vcm1hbCAxMDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0
ZWRGb250KCcyMDAgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgMjAwIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMzAwIDEwcHggc2Fucy1zZXJp
ZicpIGlzICdub3JtYWwgbm9ybWFsIDMwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBj
b21wdXRlZEZvbnQoJzQwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3Jt
YWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCdub3JtYWwgMTBw
eCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMt
c2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnNTAwIDEwcHggc2Fucy1zZXJpZicpIGlzICdub3Jt
YWwgbm9ybWFsIDUwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQo
JzYwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA2MDAgMTBweC9ub3JtYWwg
c2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250KCc3MDAgMTBweCBzYW5zLXNlcmlmJykgaXMg
J25vcm1hbCBub3JtYWwgYm9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRl
ZEZvbnQoJ2JvbGQgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgYm9sZCAxMHB4
L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnQoJzgwMCAxMHB4IHNhbnMtc2Vy
aWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA4MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1Mg
Y29tcHV0ZWRGb250KCc5MDAgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3JtYWwgOTAw
IDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnaXRhbGljIDEwcHgg
c2Fucy1zZXJpZicpIGlzICdpdGFsaWMgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNl
cmlmJworUEFTUyBjb21wdXRlZEZvbnQoJ3NtYWxsLWNhcHMgMTBweCBzYW5zLXNlcmlmJykgaXMg
J25vcm1hbCBzbWFsbC1jYXBzIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBj
b21wdXRlZEZvbnQoJ2l0YWxpYyBzbWFsbC1jYXBzIDEwcHggc2Fucy1zZXJpZicpIGlzICdpdGFs
aWMgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0
ZWRGb250KCdpdGFsaWMgc21hbGwtY2FwcyBib2xkIDEwcHggc2Fucy1zZXJpZicpIGlzICdpdGFs
aWMgc21hbGwtY2FwcyBib2xkIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVk
Rm9udCgnMTBweC8xMDAlIHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBw
eC8xMHB4IHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBweC8xMDBweCBzYW5zLXNl
cmlmJykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fucy1zZXJpZicKK1BB
U1MgY29tcHV0ZWRGb250KCcxMHB4L25vcm1hbCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3Jt
YWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udCgnMTBw
eC9ub3JtYWwgc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1h
bCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweCBzYW5zLXNlcmlm
JykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNT
IGNvbXB1dGVkRm9udENTU1ZhbHVlKCcxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1h
bCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFs
dWUoJzEwcHggU0FOUy1TRVJJRicpIGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1h
bCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTJweCBzYW5zLXNlcmlm
JykgaXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNT
IGNvbXB1dGVkRm9udENTU1ZhbHVlKCcxMnB4ICBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBub3Jt
YWwgbm9ybWFsIDEycHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udENTU1Zh
bHVlKCcxMHB4IHNhbnMtc2VyaWYsIHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3Jt
YWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250
Q1NTVmFsdWUoJzEwcHggc2Fucy1zZXJpZiwgc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3Jt
YWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiwgc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udENTU1Zh
bHVlKCcxMnB4IGFoZW0nKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTJweC9ub3JtYWwgYWhl
bScKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzEycHggdW5saWtlbHktZm9udC1uYW1lJykg
aXMgJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIHVubGlrZWx5LWZvbnQtbmFtZScK
K1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzEwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9y
bWFsIG5vcm1hbCAxMDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250
Q1NTVmFsdWUoJzIwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCAyMDAgMTBw
eC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzMwMCAxMHB4
IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCAzMDAgMTBweC9ub3JtYWwgc2Fucy1zZXJp
ZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzQwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAn
bm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0
ZWRGb250Q1NTVmFsdWUoJ25vcm1hbCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1h
bCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFs
dWUoJzUwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA1MDAgMTBweC9ub3Jt
YWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzYwMCAxMHB4IHNhbnMt
c2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA2MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BB
U1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzcwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFs
IG5vcm1hbCBib2xkIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udENT
U1ZhbHVlKCdib2xkIDEwcHggc2Fucy1zZXJpZicpIGlzICdub3JtYWwgbm9ybWFsIGJvbGQgMTBw
eC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzgwMCAxMHB4
IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCA4MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJp
ZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUoJzkwMCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAn
bm9ybWFsIG5vcm1hbCA5MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRG
b250Q1NTVmFsdWUoJ2l0YWxpYyAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnaXRhbGljIG5vcm1hbCBu
b3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZicKK1BBU1MgY29tcHV0ZWRGb250Q1NTVmFsdWUo
J3NtYWxsLWNhcHMgMTBweCBzYW5zLXNlcmlmJykgaXMgJ25vcm1hbCBzbWFsbC1jYXBzIG5vcm1h
bCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnRDU1NWYWx1ZSgnaXRh
bGljIHNtYWxsLWNhcHMgMTBweCBzYW5zLXNlcmlmJykgaXMgJ2l0YWxpYyBzbWFsbC1jYXBzIG5v
cm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnRDU1NWYWx1ZSgn
aXRhbGljIHNtYWxsLWNhcHMgYm9sZCAxMHB4IHNhbnMtc2VyaWYnKSBpcyAnaXRhbGljIHNtYWxs
LWNhcHMgYm9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBjb21wdXRlZEZvbnRDU1NW
YWx1ZSgnMTBweC8xMDAlIHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBw
eC8xMHB4IHNhbnMtc2VyaWYnCitQQVNTIGNvbXB1dGVkRm9udENTU1ZhbHVlKCcxMHB4LzEwMHB4
IHNhbnMtc2VyaWYnKSBpcyAnbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC8xMDBweCBzYW5zLXNl
cmlmJworUEFTUyBjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweC9ub3JtYWwgc2Fucy1zZXJpZicp
IGlzICdub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBj
b21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweC9ub3JtYWwgc2Fucy1zZXJpZicpIGlzICdub3JtYWwg
bm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1mb250Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTJiMDk5MDA3N2NjNjU0NWIxOTBjOTM1MTQxYmM5ZmJkM2YzMDM0ZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUv
Y29tcHV0ZWQtc3R5bGUtZm9udC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY29tcHV0ZWQtc3R5
bGUtZm9udC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3NjcmlwdC10ZXN0cy9jb21wdXRl
ZC1zdHlsZS1mb250LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9z
Y3JpcHQtdGVzdHMvY29tcHV0ZWQtc3R5bGUtZm9udC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzA3NjgzZDY3
OWNjNjc5YzUzMTM5NWQ4NGU0OWZhOWM1ZDQ3Y2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9zY3JpcHQtdGVzdHMvY29tcHV0ZWQtc3R5
bGUtZm9udC5qcwpAQCAtMCwwICsxLDc5IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGV4ZXJj
aXNlcyB0aGUgJ2ZvbnQnIHNob3J0aGFuZCBwcm9wZXJ0eSBpbiBDU1MgY29tcHV0ZWQgc3R5bGVz
LiIpOworCit2YXIgdGVzdERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXN0RGl2KTsKKworZnVuY3Rpb24gY29tcHV0ZWRGb250
KGZvbnRTdHJpbmcpIHsKKyAgICB0ZXN0RGl2LnN0eWxlLmZvbnQgPSAnYm9sZCA2MDBweCBzZXJp
Zic7CisgICAgdGVzdERpdi5zdHlsZS5mb250ID0gZm9udFN0cmluZzsKKyAgICByZXR1cm4gd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUodGVzdERpdikuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udCcpOwor
fQorCitmdW5jdGlvbiBjb21wdXRlZEZvbnRDU1NWYWx1ZShmb250U3RyaW5nKSB7CisgICAgdGVz
dERpdi5zdHlsZS5mb250ID0gJ2JvbGQgNjAwcHggc2VyaWYnOworICAgIHRlc3REaXYuc3R5bGUu
Zm9udCA9IGZvbnRTdHJpbmc7CisgICAgdmFyIGNzc1ZhbHVlID0gd2luZG93LmdldENvbXB1dGVk
U3R5bGUodGVzdERpdikuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZm9udCcpOworICAgIGlmIChjc3NW
YWx1ZSA9PT0gbnVsbCkKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgcmV0dXJuIGNzc1ZhbHVl
LmNzc1RleHQ7Cit9CisKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJzEwcHggc2Fucy1zZXJpZicp
IiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hv
dWxkQmUoImNvbXB1dGVkRm9udCgnMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwg
bm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250
KCcxMHB4IFNBTlMtU0VSSUYnKSIsICInbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwg
c2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJzEycHggc2Fucy1zZXJpZicp
IiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hv
dWxkQmUoImNvbXB1dGVkRm9udCgnMTJweCAgc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFs
IG5vcm1hbCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9u
dCgnMTBweCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFs
IDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0
ZWRGb250KCcxMHB4IHNhbnMtc2VyaWYsIHNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFs
IDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYsIHNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9u
dCgnMTJweCBhaGVtJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0n
Iik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcxMnB4IHVubGlrZWx5LWZvbnQtbmFtZScpIiwg
Iidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMnB4L25vcm1hbCB1bmxpa2VseS1mb250LW5hbWUnIik7
CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCcxMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1h
bCBub3JtYWwgMTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0
ZWRGb250KCcyMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMjAwIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCczMDAgMTBweCBz
YW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMzAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYn
Iik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc0MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25v
cm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgi
Y29tcHV0ZWRGb250KCdub3JtYWwgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwg
bm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250
KCc1MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgNTAwIDEwcHgvbm9ybWFs
IHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc2MDAgMTBweCBzYW5zLXNl
cmlmJykiLCAiJ25vcm1hbCBub3JtYWwgNjAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7Citz
aG91bGRCZSgiY29tcHV0ZWRGb250KCc3MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBu
b3JtYWwgYm9sZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVk
Rm9udCgnYm9sZCAxMHB4IHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5vcm1hbCBib2xkIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc4MDAgMTBweCBz
YW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgODAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYn
Iik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCc5MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25v
cm1hbCBub3JtYWwgOTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29t
cHV0ZWRGb250KCdpdGFsaWMgMTBweCBzYW5zLXNlcmlmJykiLCAiJ2l0YWxpYyBub3JtYWwgbm9y
bWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250KCdz
bWFsbC1jYXBzIDEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgc21hbGwtY2FwcyBub3JtYWwg
MTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJ2l0YWxp
YyBzbWFsbC1jYXBzIDEwcHggc2Fucy1zZXJpZicpIiwgIidpdGFsaWMgc21hbGwtY2FwcyBub3Jt
YWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJ2l0
YWxpYyBzbWFsbC1jYXBzIGJvbGQgMTBweCBzYW5zLXNlcmlmJykiLCAiJ2l0YWxpYyBzbWFsbC1j
YXBzIGJvbGQgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZv
bnQoJzEwcHgvMTAwJSBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgv
MTBweCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udCgnMTBweC8xMDBweCBz
YW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fucy1zZXJp
ZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnQoJzEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnKSIs
ICInbm9ybWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3Vs
ZEJlKCJjb21wdXRlZEZvbnQoJzEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5v
cm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKKworc2hvdWxkQmUoImNvbXB1
dGVkRm9udENTU1ZhbHVlKCcxMHB4IHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5vcm1hbCBub3Jt
YWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NW
YWx1ZSgnMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9y
bWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250Q1NTVmFsdWUoJzEwcHgg
U0FOUy1TRVJJRicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNl
cmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVlKCcxMnB4IHNhbnMtc2VyaWYn
KSIsICInbm9ybWFsIG5vcm1hbCBub3JtYWwgMTJweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3No
b3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTJweCAgc2Fucy1zZXJpZicpIiwgIidub3Jt
YWwgbm9ybWFsIG5vcm1hbCAxMnB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNv
bXB1dGVkRm9udENTU1ZhbHVlKCcxMHB4IHNhbnMtc2VyaWYsIHNhbnMtc2VyaWYnKSIsICInbm9y
bWFsIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiwgc2Fucy1zZXJpZiciKTsK
K3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweCBzYW5zLXNlcmlmLCBzZXJpZicp
IiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmLCBzZXJpZici
KTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTJweCBhaGVtJykiLCAiJ25vcm1h
bCBub3JtYWwgbm9ybWFsIDEycHgvbm9ybWFsIGFoZW0nIik7CitzaG91bGRCZSgiY29tcHV0ZWRG
b250Q1NTVmFsdWUoJzEycHggdW5saWtlbHktZm9udC1uYW1lJykiLCAiJ25vcm1hbCBub3JtYWwg
bm9ybWFsIDEycHgvbm9ybWFsIHVubGlrZWx5LWZvbnQtbmFtZSciKTsKK3Nob3VsZEJlKCJjb21w
dXRlZEZvbnRDU1NWYWx1ZSgnMTAwIDEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFs
IDEwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENT
U1ZhbHVlKCcyMDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgMjAwIDEwcHgv
bm9ybWFsIHNhbnMtc2VyaWYnIik7CitzaG91bGRCZSgiY29tcHV0ZWRGb250Q1NTVmFsdWUoJzMw
MCAxMHB4IHNhbnMtc2VyaWYnKSIsICInbm9ybWFsIG5vcm1hbCAzMDAgMTBweC9ub3JtYWwgc2Fu
cy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnNDAwIDEwcHggc2Fu
cy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNlcmlm
JyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVlKCdub3JtYWwgMTBweCBzYW5zLXNl
cmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7
CitzaG91bGRCZSgiY29tcHV0ZWRGb250Q1NTVmFsdWUoJzUwMCAxMHB4IHNhbnMtc2VyaWYnKSIs
ICInbm9ybWFsIG5vcm1hbCA1MDAgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJl
KCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnNjAwIDEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwg
bm9ybWFsIDYwMCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVk
Rm9udENTU1ZhbHVlKCc3MDAgMTBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgYm9s
ZCAxMHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1Zh
bHVlKCdib2xkIDEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIGJvbGQgMTBweC9u
b3JtYWwgc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnODAw
IDEwcHggc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIDgwMCAxMHB4L25vcm1hbCBzYW5z
LXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVlKCc5MDAgMTBweCBzYW5z
LXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgOTAwIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7
CitzaG91bGRCZSgiY29tcHV0ZWRGb250Q1NTVmFsdWUoJ2l0YWxpYyAxMHB4IHNhbnMtc2VyaWYn
KSIsICInaXRhbGljIG5vcm1hbCBub3JtYWwgMTBweC9ub3JtYWwgc2Fucy1zZXJpZiciKTsKK3No
b3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnc21hbGwtY2FwcyAxMHB4IHNhbnMtc2VyaWYn
KSIsICInbm9ybWFsIHNtYWxsLWNhcHMgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYnIik7
CitzaG91bGRCZSgiY29tcHV0ZWRGb250Q1NTVmFsdWUoJ2l0YWxpYyBzbWFsbC1jYXBzIDEwcHgg
c2Fucy1zZXJpZicpIiwgIidpdGFsaWMgc21hbGwtY2FwcyBub3JtYWwgMTBweC9ub3JtYWwgc2Fu
cy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnaXRhbGljIHNtYWxs
LWNhcHMgYm9sZCAxMHB4IHNhbnMtc2VyaWYnKSIsICInaXRhbGljIHNtYWxsLWNhcHMgYm9sZCAx
MHB4L25vcm1hbCBzYW5zLXNlcmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVl
KCcxMHB4LzEwMCUgc2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4LzEw
cHggc2Fucy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweC8x
MDBweCBzYW5zLXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvMTAwcHggc2Fu
cy1zZXJpZiciKTsKK3Nob3VsZEJlKCJjb21wdXRlZEZvbnRDU1NWYWx1ZSgnMTBweC9ub3JtYWwg
c2Fucy1zZXJpZicpIiwgIidub3JtYWwgbm9ybWFsIG5vcm1hbCAxMHB4L25vcm1hbCBzYW5zLXNl
cmlmJyIpOworc2hvdWxkQmUoImNvbXB1dGVkRm9udENTU1ZhbHVlKCcxMHB4L25vcm1hbCBzYW5z
LXNlcmlmJykiLCAiJ25vcm1hbCBub3JtYWwgbm9ybWFsIDEwcHgvbm9ybWFsIHNhbnMtc2VyaWYn
Iik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlmODIy
MzY2MGU5NWZiN2JjYjI0OTM5ZjgxNWMxMmZmNTE2NDU4NjAuLjA5MWE5N2E0MzA5YWU3ZGMwNzlh
YzllYmNmNGFmZTkwOWY1ZTc4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0w
OS0yMSAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1NTOiBJ
bXBsZW1lbnQgJ2ZvbnQnIHByb3BlcnR5IGluIENTU0NvbXB1dGVkU3R5bGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjY2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2dldENv
bXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtZm9udC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRGYW1p
bHlGcm9tU3R5bGUpOiBGYWN0b3JlZCBvdXQgb2YgZ2V0UHJvcGVydHlDU1NWYWx1ZSgpLgorICAg
ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBhIENTU1ZhbHVlTGlzdCwgYXMg
b3Bwb3NlZCB0byB0aGUgcHJldmlvdXMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gd2hpY2ggd291
bGQgcmV0dXJuIGEgQ1NTUHJpbWl0aXZlVmFsdWUgaWYgdGhlcmUgd2FzIG9ubHkgb25lIGZhbWls
eS4KKyAgICAgICAgZ2V0Q1NTUHJvcGVydHlWYWx1ZSgpIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBl
bGVtZW50IG9mIHRoZSBsaXN0IGZvciAxLWVsZW1lbnQgbGlzdHMKKyAgICAgICAgdG8gcHJlc2Vy
dmUgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2YgZ2V0UHJvcGVydHlDU1NWYWx1ZSgnZm9udC1mYW1p
bHknKS4KKworICAgICAgICAoV2ViQ29yZTo6bGluZUhlaWdodEZyb21TdHlsZSk6IEZhY3RvcmVk
IG91dCBvZiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKCkuCisgICAgICAgIChXZWJDb3JlOjpmb250U2l6
ZUZyb21TdHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Zm9udFN0eWxlRnJvbVN0eWxl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpmb250VmFyaWFudEZyb21TdHlsZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdlaWdodEZyb21TdHlsZSk6IERpdHRvLgorCisgICAg
ICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NT
VmFsdWUpOiBBZGRlZAorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcHV0ZWQgJ2Zv
bnQnIHByb3BlcnR5IChDU1NQcm9wZXJ0eUZvbnQuKQorCiAyMDExLTA5LTIxICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtaW5v
ciBmaXhlcyBpbiB0aGUgRE9NIGRvbWFpbiBvZiB0aGUgcHJvdG9jb2wuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDNhOGIz
ZDcxZWFmNGNkNGY5NTU2NGE0NzViNzViNDgzNDE4MWFlYWQuLjg2NDRhNTc3ZmZiOGY5Y2M1MjI2
Mzg3NzUxNmVhNTUzZDFkMGI4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZvbnRGZWF0dXJlU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJGb250RmVhdHVyZVZhbHVlLmgiCisjaW5jbHVkZSAiRm9udFZhbHVlLmgiCiAjaW5jbHVk
ZSAiUGFpci5oIgogI2luY2x1ZGUgIlJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAg
LTkyMSw2ICs5MjIsNzQgQEAgc3RhdGljIHZvaWQgbG9nVW5pbXBsZW1lbnRlZFByb3BlcnR5SUQo
aW50IHByb3BlcnR5SUQpCiAgICAgTE9HX0VSUk9SKCJXZWJLaXQgZG9lcyBub3QgeWV0IGltcGxl
bWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMnLiIsIGdldFByb3BlcnR5TmFtZShzdGF0aWNf
Y2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSkpOwogfSAKIAorc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBmb250RmFtaWx5RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwg
Q1NTUHJpbWl0aXZlVmFsdWVDYWNoZSogcHJpbWl0aXZlVmFsdWVDYWNoZSkKK3sKKyAgICBjb25z
dCBGb250RmFtaWx5JiBmaXJzdEZhbWlseSA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5mYW1p
bHkoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVDb21tYVNlcGFyYXRlZCgpOworICAgIGZvciAoY29uc3QgRm9udEZhbWlseSogZmFtaWx5ID0g
JmZpcnN0RmFtaWx5OyBmYW1pbHk7IGZhbWlseSA9IGZhbWlseS0+bmV4dCgpKQorICAgICAgICBs
aXN0LT5hcHBlbmQodmFsdWVGb3JGYW1pbHkoZmFtaWx5LT5mYW1pbHkoKSwgcHJpbWl0aXZlVmFs
dWVDYWNoZSkpOworICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKK30KKworc3RhdGljIFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpbmVIZWlnaHRGcm9tU3R5bGUoUmVuZGVyU3R5bGUq
IHN0eWxlLCBDU1NQcmltaXRpdmVWYWx1ZUNhY2hlKiBwcmltaXRpdmVWYWx1ZUNhY2hlKQorewor
ICAgIExlbmd0aCBsZW5ndGggPSBzdHlsZS0+bGluZUhlaWdodCgpOworICAgIGlmIChsZW5ndGgu
aXNOZWdhdGl2ZSgpKQorICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKKyAgICBpZiAobGVuZ3RoLmlzUGVyY2Vu
dCgpKQorICAgICAgICAvLyBUaGlzIGlzIGltcGVyZmVjdCwgYmVjYXVzZSBpdCBkb2Vzbid0IGlu
Y2x1ZGUgdGhlIHpvb20gZmFjdG9yIGFuZCB0aGUgcmVhbCBjb21wdXRhdGlvbgorICAgICAgICAv
LyBmb3IgaG93IGhpZ2ggdG8gYmUgaW4gcGl4ZWxzIGRvZXMgaW5jbHVkZSB0aGluZ3MgbGlrZSBt
aW5pbXVtIGZvbnQgc2l6ZSBhbmQgdGhlIHpvb20gZmFjdG9yLgorICAgICAgICAvLyBPbiB0aGUg
b3RoZXIgaGFuZCwgc2luY2UgZm9udC1zaXplIGRvZXNuJ3QgaW5jbHVkZSB0aGUgem9vbSBmYWN0
b3IsIHdlIHJlYWxseSBjYW4ndCBkbworICAgICAgICAvLyB0aGF0IGhlcmUgZWl0aGVyLgorICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0
aC5wZXJjZW50KCkgKiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpKSAv
IDEwMCwgc3R5bGUsIHByaW1pdGl2ZVZhbHVlQ2FjaGUpOworICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKGxlbmd0aC52YWx1ZSgpLCBzdHlsZSwgcHJpbWl0aXZlVmFsdWVDYWNoZSk7
Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U2l6ZUZyb21T
dHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIHByaW1pdGl2
ZVZhbHVlQ2FjaGUpCit7CisgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN0eWxlLCBwcmltaXRpdmVW
YWx1ZUNhY2hlKTsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGZv
bnRTdHlsZUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIENTU1ByaW1pdGl2ZVZhbHVlQ2Fj
aGUqIHByaW1pdGl2ZVZhbHVlQ2FjaGUpCit7CisgICAgaWYgKHN0eWxlLT5mb250RGVzY3JpcHRp
b24oKS5pdGFsaWMoKSkKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUl0YWxpYyk7CisgICAgcmV0dXJuIHByaW1pdGl2ZVZh
bHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7Cit9CisKK3N0
YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250VmFyaWFudEZyb21TdHlsZShS
ZW5kZXJTdHlsZSogc3R5bGUsIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIHByaW1pdGl2ZVZhbHVl
Q2FjaGUpCit7CisgICAgaWYgKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSkK
KyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVNtYWxsQ2Fwcyk7CisgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7Cit9CisKK3N0YXRpYyBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250V2VpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBz
dHlsZSwgQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZSogcHJpbWl0aXZlVmFsdWVDYWNoZSkKK3sKKyAg
ICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSkgeworICAgIGNhc2Ug
Rm9udFdlaWdodDEwMDoKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZTEwMCk7CisgICAgY2FzZSBGb250V2VpZ2h0MjAwOgor
ICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlMjAwKTsKKyAgICBjYXNlIEZvbnRXZWlnaHQzMDA6CisgICAgICAgIHJldHVybiBw
cmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWUzMDApOwor
ICAgIGNhc2UgRm9udFdlaWdodE5vcm1hbDoKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVl
Q2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CisgICAgY2FzZSBG
b250V2VpZ2h0NTAwOgorICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlNTAwKTsKKyAgICBjYXNlIEZvbnRXZWlnaHQ2MDA6Cisg
ICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWU2MDApOworICAgIGNhc2UgRm9udFdlaWdodEJvbGQ6CisgICAgICAgIHJldHVybiBw
cmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVCb2xkKTsK
KyAgICBjYXNlIEZvbnRXZWlnaHQ4MDA6CisgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNh
Y2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWU4MDApOworICAgIGNhc2UgRm9udFdl
aWdodDkwMDoKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZTkwMCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVOb3JtYWwpOworfQorCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQsIEVVcGRh
dGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSBtX25vZGUu
Z2V0KCk7CkBAIC0xMjM3LDQ4ICsxMzA2LDMyIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAj
ZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgogICAgICAgICAgICAgcmV0dXJu
IHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHN0eWxlLT5mbG9hdGluZygpKTsKKyAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6IHsKKyAgICAgICAgICAgIFJlZlB0cjxGb250VmFs
dWU+IGNvbXB1dGVkRm9udCA9IEZvbnRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBjb21w
dXRlZEZvbnQtPnN0eWxlID0gZm9udFN0eWxlRnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRp
dmVWYWx1ZUNhY2hlKTsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+dmFyaWFudCA9IGZvbnRW
YXJpYW50RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKKyAgICAg
ICAgICAgIGNvbXB1dGVkRm9udC0+d2VpZ2h0ID0gZm9udFdlaWdodEZyb21TdHlsZShzdHlsZS5n
ZXQoKSwgcHJpbWl0aXZlVmFsdWVDYWNoZSk7CisgICAgICAgICAgICBjb21wdXRlZEZvbnQtPnNp
emUgPSBmb250U2l6ZUZyb21TdHlsZShzdHlsZS5nZXQoKSwgcHJpbWl0aXZlVmFsdWVDYWNoZSk7
CisgICAgICAgICAgICBjb21wdXRlZEZvbnQtPmxpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0RnJvbVN0
eWxlKHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKKyAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+ZmFtaWx5ID0gZm9udEZhbWlseUZyb21TdHlsZShzdHlsZS5nZXQoKSwgcHJpbWl0
aXZlVmFsdWVDYWNoZSk7CisgICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250LnJlbGVhc2Uo
KTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseTogewotICAg
ICAgICAgICAgY29uc3QgRm9udEZhbWlseSYgZmlyc3RGYW1pbHkgPSBzdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkuZmFtaWx5KCk7Ci0gICAgICAgICAgICBpZiAoIWZpcnN0RmFtaWx5Lm5leHQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JGYW1pbHkoZmlyc3RGYW1pbHkuZmFtaWx5
KCksIHByaW1pdGl2ZVZhbHVlQ2FjaGUpOwotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAg
ICAgIGZvciAoY29uc3QgRm9udEZhbWlseSogZmFtaWx5ID0gJmZpcnN0RmFtaWx5OyBmYW1pbHk7
IGZhbWlseSA9IGZhbWlseS0+bmV4dCgpKQotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh2
YWx1ZUZvckZhbWlseShmYW1pbHktPmZhbWlseSgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBmb250RmFtaWx5TGlzdCA9IGZvbnRGYW1pbHlGcm9tU3R5bGUoc3R5bGUuZ2V0
KCksIHByaW1pdGl2ZVZhbHVlQ2FjaGUpOworICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBvbmx5
IGEgc2luZ2xlIGZhbWlseSwgcmV0dXJuIHRoYXQgYXMgYSBDU1NQcmltaXRpdmVWYWx1ZS4KKyAg
ICAgICAgICAgIC8vIE5PVEU6IEdlY2tvIGFsd2F5cyByZXR1cm5zIHRoaXMgYXMgYSBjb21tYS1z
ZXBhcmF0ZWQgQ1NTUHJpbWl0aXZlVmFsdWUgc3RyaW5nLgorICAgICAgICAgICAgaWYgKGZvbnRG
YW1pbHlMaXN0LT5sZW5ndGgoKSA9PSAxKQorICAgICAgICAgICAgICAgIHJldHVybiBmb250RmFt
aWx5TGlzdC0+aXRlbSgwKTsKKyAgICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdC5yZWxl
YXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplOgotICAg
ICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlw
dGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNh
Y2hlKTsKKyAgICAgICAgICAgIHJldHVybiBmb250U2l6ZUZyb21TdHlsZShzdHlsZS5nZXQoKSwg
cHJpbWl0aXZlVmFsdWVDYWNoZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6
Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVJdGFsaWMpOwotICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVl
Q2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CisgICAgICAgICAg
ICByZXR1cm4gZm9udFN0eWxlRnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNh
Y2hlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgotICAgICAgICAgICAg
aWYgKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlU21hbGxDYXBzKTsKLSAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICAgICAgcmV0dXJu
IGZvbnRWYXJpYW50RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6Ci0gICAgICAgICAgICBzd2l0Y2gg
KHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSkgewotICAgICAgICAgICAgICAgIGNh
c2UgRm9udFdlaWdodDEwMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZh
bHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZTEwMCk7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBGb250V2VpZ2h0MjAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJp
bWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlMjAwKTsKLSAg
ICAgICAgICAgICAgICBjYXNlIEZvbnRXZWlnaHQzMDA6Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWUz
MDApOwotICAgICAgICAgICAgICAgIGNhc2UgRm9udFdlaWdodE5vcm1hbDoKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBGb250V2VpZ2h0NTAwOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlNTAwKTsKLSAgICAgICAgICAgICAgICBjYXNlIEZvbnRXZWln
aHQ2MDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWU2MDApOwotICAgICAgICAgICAgICAgIGNhc2Ug
Rm9udFdlaWdodEJvbGQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1
ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVCb2xkKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIEZvbnRXZWlnaHQ4MDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmlt
aXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWU4MDApOwotICAg
ICAgICAgICAgICAgIGNhc2UgRm9udFdlaWdodDkwMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZTkw
MCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5
bGUoc3R5bGUuZ2V0KCksIHByaW1pdGl2ZVZhbHVlQ2FjaGUpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Rm9udEZlYXR1cmVTZXR0aW5nczogewogICAgICAgICAgICAgY29uc3QgRm9u
dEZlYXR1cmVTZXR0aW5ncyogZmVhdHVyZVNldHRpbmdzID0gc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLmZlYXR1cmVTZXR0aW5ncygpOwogICAgICAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3Mg
fHwgIWZlYXR1cmVTZXR0aW5ncy0+c2l6ZSgpKQpAQCAtMTMzMywxOCArMTM4Niw4IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICBpZiAoc3R5bGUtPmxpbmVDbGFtcCgpLmlz
Tm9uZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAgICAgIHJldHVybiBwcmlt
aXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVWYWx1ZShzdHlsZS0+bGluZUNsYW1wKCkudmFsdWUoKSwg
c3R5bGUtPmxpbmVDbGFtcCgpLmlzUGVyY2VudGFnZSgpID8gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFIDogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotICAgICAgICBj
YXNlIENTU1Byb3BlcnR5TGluZUhlaWdodDogewotICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aCA9
IHN0eWxlLT5saW5lSGVpZ2h0KCk7Ci0gICAgICAgICAgICBpZiAobGVuZ3RoLmlzTmVnYXRpdmUo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKLSAgICAgICAgICAgIGlmIChsZW5ndGguaXNQ
ZXJjZW50KCkpCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBpbXBlcmZlY3QsIGJlY2F1c2Ug
aXQgZG9lc24ndCBpbmNsdWRlIHRoZSB6b29tIGZhY3RvciBhbmQgdGhlIHJlYWwgY29tcHV0YXRp
b24KLSAgICAgICAgICAgICAgICAvLyBmb3IgaG93IGhpZ2ggdG8gYmUgaW4gcGl4ZWxzIGRvZXMg
aW5jbHVkZSB0aGluZ3MgbGlrZSBtaW5pbXVtIGZvbnQgc2l6ZSBhbmQgdGhlIHpvb20gZmFjdG9y
LgotICAgICAgICAgICAgICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBzaW5jZSBmb250LXNpemUg
ZG9lc24ndCBpbmNsdWRlIHRoZSB6b29tIGZhY3Rvciwgd2UgcmVhbGx5IGNhbid0IGRvCi0gICAg
ICAgICAgICAgICAgLy8gdGhhdCBoZXJlIGVpdGhlci4KLSAgICAgICAgICAgICAgICByZXR1cm4g
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aC5wZXJjZW50KCkg
KiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpKSAvIDEwMCwgc3R5bGUu
Z2V0KCksIHByaW1pdGl2ZVZhbHVlQ2FjaGUpOwotICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1
c3RlZFBpeGVsVmFsdWUobGVuZ3RoLnZhbHVlKCksIHN0eWxlLmdldCgpLCBwcmltaXRpdmVWYWx1
ZUNhY2hlKTsKLSAgICAgICAgfQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhlaWdodDoK
KyAgICAgICAgICAgIHJldHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBwcmlt
aXRpdmVWYWx1ZUNhY2hlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdl
OgogICAgICAgICAgICAgaWYgKHN0eWxlLT5saXN0U3R5bGVJbWFnZSgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBzdHlsZS0+bGlzdFN0eWxlSW1hZ2UoKS0+Y3NzVmFsdWUoKTsKQEAgLTE4NjIs
NyArMTkwNSw2IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJTdHlsZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgotICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1hcmdpbjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>