<?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>130324</bug_id>
          
          <creation_ts>2014-03-17 00:11:57 -0700</creation_ts>
          <short_desc>Operator stretching: read the Open Type MATH table</short_desc>
          <delta_ts>2014-04-02 06:02:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>MathML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.ntg.nl/maps/38/03.pdf</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>130572</dependson>
          <blocked>122297</blocked>
    
    <blocked>130322</blocked>
    
    <blocked>130325</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bunhere</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>991126</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-17 00:11:57 -0700</bug_when>
    <thetext>Third step for attachment 226844.

On some platforms (Linux/Windows), we can directly read the MATH data from the font and thus get a generic support. On other platforms (Mac), we will still use the hardcoded data introduced in bug 130321.

I&apos;ll add an ENABLE_OPENTYPE_MATH compilation flag for that purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991152</commentid>
    <comment_count>1</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-17 02:07:13 -0700</bug_when>
    <thetext>For the MATH data, see http://mpeg.chiariglione.org/standards/mpeg-4/open-font-format/call-proposals-isoiec-14496-22-open-font-format-color-font

I&apos;m not sure if April&apos;s Committee Draft will be made public, but anyone interested in the MATH table can ask me a copy of Microsoft&apos;s document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991188</commentid>
    <comment_count>2</comment_count>
      <attachid>226905</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-17 06:13:14 -0700</bug_when>
    <thetext>Created attachment 226905
WIP Patch

This applies on top of bug 130321.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993010</commentid>
    <comment_count>3</comment_count>
      <attachid>227410</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-21 04:11:53 -0700</bug_when>
    <thetext>Created attachment 227410
Patch + bug 130572 for testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993018</commentid>
    <comment_count>4</comment_count>
      <attachid>227414</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-21 04:34:50 -0700</bug_when>
    <thetext>Created attachment 227414
Patch + 130572 for testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993022</commentid>
    <comment_count>5</comment_count>
      <attachid>227416</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-21 04:52:20 -0700</bug_when>
    <thetext>Created attachment 227416
Patch + 130572 for testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993036</commentid>
    <comment_count>6</comment_count>
      <attachid>227420</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-21 05:49:22 -0700</bug_when>
    <thetext>Created attachment 227420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993838</commentid>
    <comment_count>7</comment_count>
      <attachid>227657</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-24 09:31:20 -0700</bug_when>
    <thetext>Created attachment 227657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994589</commentid>
    <comment_count>8</comment_count>
      <attachid>227657</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-03-26 09:03:47 -0700</bug_when>
    <thetext>Comment on attachment 227657
Patch

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

&gt; Source/WTF/wtf/Platform.h:1053
&gt; +#if OS(DARWIN) || USE(FREETYPE) || (PLATFORM(WIN) &amp;&amp; (USE(CG) || USE(CAIRO)))

i think the OS(DARWIN) also needs the USE(CG) macro to go along with it right

&gt; Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp:44
&gt; +#pragma pack(1)

are you trying to save space here or is the required for reading math data? 
how much extra memory will be used by reading in this data?

&gt; Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp:78
&gt; +        if (!getCoverageIndex(buffer, coverage, glyph, i) || i&gt;= count)

i &gt;=

&gt; Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp:162
&gt; +    OpenType::Offset vertGlyphCoverageOffset;

my thought is we should just use &quot;vertical&quot; and horizontal instead of these abbreviations. The names are already really long anyway

&gt; Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp:242
&gt; +    const OpenType::MathConstants* mathconstants = math-&gt;mathConstants(*m_mathBuffer);

mathConstants for the name

&gt; Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp:248
&gt; +    const OpenType::MathVariants* mathvariants = math-&gt;mathVariants(*m_mathBuffer);

mathVariants

&gt; Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp:259
&gt; +    int32_t value = 0;

seems like you could declare this as int16_t and avoid the casts when assigning the value

&gt; Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp:266
&gt; +    if (constant &lt;= ScriptScriptPercentScaleDown)

for these if/else statements it seems we should also check that
   constants &gt;= 0 in this case (or rather ScriptPercentScaleDown I believe)
and likewise is &gt;= X in the other else if cases

&gt; Source/WebCore/platform/graphics/opentype/OpenTypeTypes.h:127
&gt; +    getCoverageIndex(const SharedBuffer&amp; buffer, const CoverageTable* coverage, Glyph glyph, uint32_t&amp; coverageIndex) const

this should be on the same line as above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994590</commentid>
    <comment_count>9</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-26 09:11:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp:44
&gt; &gt; +#pragma pack(1)
&gt; 
&gt; are you trying to save space here or is the required for reading math data? 
&gt; how much extra memory will be used by reading in this data?
&gt; 

No ideas, I just copied that from OpenTypeVerticalData. I&apos;m assuming it was necessary to prevent unexpected data rearrangement but didn&apos;t really think about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994863</commentid>
    <comment_count>10</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-27 00:48:45 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp:259
&gt; &gt; +    int32_t value = 0;
&gt; 
&gt; seems like you could declare this as int16_t and avoid the casts when assigning the value

Some values are int16_t and others are uint16_t, so that would mean declaring two variables and duplicating the conversion to % / em?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994864</commentid>
    <comment_count>11</comment_count>
      <attachid>227932</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-27 01:00:31 -0700</bug_when>
    <thetext>Created attachment 227932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994930</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-03-27 09:04:51 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; &gt; Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp:259
&gt; &gt; &gt; +    int32_t value = 0;
&gt; &gt; 
&gt; &gt; seems like you could declare this as int16_t and avoid the casts when assigning the value
&gt; 
&gt; Some values are int16_t and others are uint16_t, so that would mean declaring two variables and duplicating the conversion to % / em?

as missed the unit v. int</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996680</commentid>
    <comment_count>13</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-04-02 06:02:07 -0700</bug_when>
    <thetext>Committed r166640: &lt;http://trac.webkit.org/changeset/166640&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226905</attachid>
            <date>2014-03-17 06:13:14 -0700</date>
            <delta_ts>2014-03-21 05:49:22 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>read-math.patch</filename>
            <type>text/plain</type>
            <size>34156</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IDJlOWE2NmMuLmNkNmZmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTA0MCw0
ICsxMDQwLDkgQEAKICNkZWZpbmUgSEFWRV9OU19BQ1RJVklUWSAxCiAjZW5kaWYKIAorI2lmIFVT
RShGUkVFVFlQRSkgfHwgKFBMQVRGT1JNKFdJTikgJiYgKFVTRShDRykgfHwgVVNFKENBSVJPKSkp
CisjdW5kZWYgRU5BQkxFX09QRU5UWVBFX01BVEgKKyNkZWZpbmUgRU5BQkxFX09QRU5UWVBFX01B
VEggMQorI2VuZGlmCisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvSGFyZENvZGVkTWF0aERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL0hhcmRDb2Rl
ZE1hdGhEYXRhLmgKaW5kZXggZTQ5MzA2Mi4uODdjMmY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvSGFyZENvZGVkTWF0aERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9IYXJkQ29kZWRNYXRo
RGF0YS5oCkBAIC0zMiw5ICszMiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiAh
RU5BQkxFKE9QRU5UWVBFX01BVEgpCiBjb25zdCBzdGF0aWMgaW50MTZfdCBMYXRpbk1vZGVybk1h
dGhDb25zdGFudHNbXSA9IHsgNzAsIDUwLCAxMzAwLCAxMzAwLCAxNTQsIDI1MCwgNDUwLCA2NjQs
IDI0NywgMzQ0LCAyMDAsIDM2MywgMjg5LCAxMDgsIDI1MCwgMTYwLCAzNDQsIDU2LCAyMDAsIDEx
MSwgMTY3LCA2MDAsIDQ0NCwgNjc3LCAzNDUsIDY4NiwgMTIwLCAyODAsIDExMSwgNjAwLCAyMDAs
IDE2NywgMzk0LCA2NzcsIDM0NSwgNjg2LCA0MCwgMTIwLCA0MCwgNDAsIDEyMCwgMzUwLCA5Niwg
MTIwLCA0MCwgNDAsIDEyMCwgNDAsIDQwLCA1MCwgMTQ4LCA0MCwgNDAsIDI3OCwgLTU1NiwgNjAg
fTsKIAogY29uc3Qgc3RhdGljIGludDE2X3QgU1RJWE1hdGhDb25zdGFudHNbXSA9IHsgNzUsIDYw
LCAxNTAwLCAxNDUwLCAxNTAsIDI1MCwgNDUwLCA2NjIsIDI1MCwgNDAwLCA1MCwgNDAwLCAyNzUs
IDEyNSwgMzc1LCAyNjQsIDQwMCwgNDEsIDE1MCwgMzAwLCAxNTAsIDYwMCwgNDgwLCA1ODAsIDgw
MCwgOTAwLCAxOTgsIDQ2MiwgMzAwLCA2MDAsIDE1MCwgMTUwLCA0ODAsIDU4MCwgNDgwLCA3MDAs
IDY2LCAxOTgsIDY2LCA2NiwgMTk4LCAzMDAsIDY2LCAxOTgsIDY2LCA2NiwgMTk4LCA2NiwgNjYs
IDgyLCAxODYsIDY2LCA2NiwgMjc3LCAtNTU1LCA3MCB9OworI2VuZGlmIC8vICFFTkFCTEUoT1BF
TlRZUEVfTUFUSCkKIAogc3RydWN0IEl0YWxpY0NvcnJlY3Rpb25FbnRyeSB7CiAgICAgR2x5cGgg
Z2x5cGg7CkBAIC00MywxMiArNDUsMTUgQEAgc3RydWN0IEl0YWxpY0NvcnJlY3Rpb25FbnRyeSB7
CiB0eXBlZGVmIEdseXBoIEl0YWxpY0NvcnJlY3Rpb25LZXk7CiBpbmxpbmUgSXRhbGljQ29ycmVj
dGlvbktleSBFeHRyYWN0SXRhbGljQ29ycmVjdGlvbktleShjb25zdCBJdGFsaWNDb3JyZWN0aW9u
RW50cnkqIGVudHJ5KSB7IHJldHVybiBJdGFsaWNDb3JyZWN0aW9uS2V5KGVudHJ5LT5nbHlwaCk7
IH0KIAorI2lmICFFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBM
YXRpbk1vZGVybkl0YWxpY0NvcnJlY3Rpb25Db3VudCA9IDEwMDI7CiBjb25zdCBzdGF0aWMgSXRh
bGljQ29ycmVjdGlvbkVudHJ5IExhdGluTW9kZXJuSXRhbGljQ29ycmVjdGlvbltdID0geyB7MjQs
IDEzfSwgezUxLCAyNH0sIHs1NSwgOH0sIHs1NiwgOX0sIHs1NywgNH0sIHs1OCwgMTZ9LCB7NjAs
IDZ9LCB7NjMsIDMzfSwgezY0LCAyOH0sIHs2NiwgMTF9LCB7NzEsIDc5fSwgezcyLCAxM30sIHs3
MywgN30sIHs3NiwgMTF9LCB7NzcsIDV9LCB7NzgsIDh9LCB7NzksIDd9LCB7ODIsIDI3fSwgezg2
LCA3fSwgezg3LCA4fSwgezg4LCA5fSwgezg5LCAxNn0sIHs5MCwgOH0sIHs5NSwgMjd9LCB7MTAw
LCAxNn0sIHsxMTAsIDI3fSwgezEzNSwgMjd9LCB7MTQxLCA1fSwgezE2NCwgMTF9LCB7MTY2LCAy
M30sIHsxNzIsIDI4fSwgezE3MywgMjh9LCB7MTc4LCAyMTZ9LCB7MTg4LCAzfSwgezE4OSwgNzN9
LCB7MTk5LCAzfSwgezIwMCwgMzl9LCB7MjAxLCA3OX0sIHsyMDIsIDEwNX0sIHsyMDMsIDZ9LCB7
MjA2LCAxNn0sIHsyMTAsIDI4fSwgezIxMSwgMjR9LCB7MjEzLCAyOH0sIHsyMTksIDI3fSwgezIy
MCwgMjd9LCB7MjIyLCAyN30sIHsyMjMsIDR9LCB7MjI0LCA0M30sIHsyMjYsIDI3fSwgezIzMSwg
MTF9LCB7MjMzLCAxMX0sIHsyMzUsIDExfSwgezIzNywgMTF9LCB7MjM5LCAxMX0sIHsyNDEsIDEx
fSwgezI0MywgMTF9LCB7MjQ1LCAxMX0sIHsyNDcsIDExfSwgezI0OSwgMTF9LCB7MjUxLCAxMX0s
IHsyNTMsIDExfSwgezI1NSwgMTF9LCB7MjU3LCAxMX0sIHsyNTksIDExfSwgezI2MSwgMTF9LCB7
MjYzLCAxMX0sIHsyNjUsIDExfSwgezI2NywgMTF9LCB7MjY5LCAxMX0sIHsyNzUsIDQ2fSwgezMw
NywgMTN9LCB7MzA5LCAxM30sIHszMTEsIDEzfSwgezMxMywgNDF9LCB7MzE1LCAyN30sIHszMjMs
IDI5fSwgezMyNCwgNzB9LCB7MzI1LCAxNX0sIHszMjYsIDU2fSwgezMyOCwgMTF9LCB7MzMwLCAy
Nn0sIHszMzIsIDUyfSwgezMzNCwgNX0sIHszMzYsIDd9LCB7MzM4LCA3fSwgezM0MCwgN30sIHsz
NDIsIDd9LCB7MzY2LCAxNn0sIHszNjgsIDE2fSwgezM3MCwgMTZ9LCB7MzcyLCAxNn0sIHszNzQs
IDE2fSwgezM4MSwgMjR9LCB7MzgzLCAyNH0sIHszODUsIDI0fSwgezQwMCwgN30sIHs0MDIsIDd9
LCB7NDA0LCA3fSwgezQwNiwgN30sIHs0MDgsIDd9LCB7NDEwLCA3fSwgezQxMSwgNH0sIHs0MTIs
IDQzfSwgezQxMywgNH0sIHs0MTQsIDQzfSwgezQxNSwgNH0sIHs0MTYsIDQzfSwgezQxNywgNH0s
IHs0MTgsIDQzfSwgezQxOSwgNH0sIHs0MjAsIDQzfSwgezQyMiwgN30sIHs0MjQsIDd9LCB7NDI2
LCA3fSwgezQyOCwgN30sIHs0MjksIDE2fSwgezQzMCwgOH0sIHs0MzEsIDE2fSwgezQzMiwgOH0s
IHs0MzMsIDE2fSwgezQzNCwgOH0sIHs0MzUsIDE2fSwgezQzNiwgOH0sIHs0MzcsIDE2fSwgezQz
OCwgOH0sIHs0MzksIDE2fSwgezQ0MCwgOH0sIHs0NTYsIDMzfSwgezQ1NywgMjd9LCB7NDc2LCAy
OH0sIHs0NzcsIDI4fSwgezQ4NiwgMjM4fSwgezUwNywgNTh9LCB7NTA5LCA1OX0sIHs1MzgsIDE2
fSwgezUzOSwgNTh9LCB7NTQ1LCA5OX0sIHs1NzEsIDI4fSwgezU4NSwgMjh9LCB7NjAzLCAyN30s
IHs2MTAsIDEwfSwgezYxMSwgMjh9LCB7Njc5LCAxNn0sIHs3MjcsIDZ9LCB7NzI4LCA1MX0sIHs3
MzAsIDM0fSwgezczNiwgMjR9LCB7ODE2LCAxMH0sIHs4MTgsIDEwfSwgezgyMCwgMTB9LCB7ODIy
LCAxMH0sIHs4MjQsIDEwfSwgezg1NiwgM30sIHs4NjIsIDd9LCB7ODYzLCAzM30sIHs4NjQsIDI3
fSwgezg4MywgMjh9LCB7ODg0LCAyOH0sIHs4OTMsIDIzMH0sIHs5MDIsIDExfSwgezkwMywgMTl9
LCB7OTE0LCA3Mn0sIHs5MTYsIDY1fSwgezkyNCwgNH0sIHs5NDUsIDM0fSwgezk0NiwgNzJ9LCB7
OTUyLCAxMDd9LCB7OTY1LCA3fSwgezk3OCwgMjh9LCB7OTgwLCA5fSwgezk4OCwgMTZ9LCB7OTkw
LCAxNn0sIHs5OTIsIDI4fSwgezEwMDAsIDR9LCB7MTAwOCwgMTZ9LCB7MTAxMCwgMjd9LCB7MTAx
MiwgMTF9LCB7MTAxNywgMzd9LCB7MTAxOCwgMjh9LCB7MTAyMCwgN30sIHsxMDI3LCAzfSwgezEw
MjksIDN9LCB7MTA0MywgM30sIHsxMDQ1LCAzfSwgezEwNDcsIDN9LCB7MTA0OSwgM30sIHsxMDUx
LCAzfSwgezEwNTMsIDN9LCB7MTA1NSwgM30sIHsxMDU3LCAzfSwgezEwNTksIDN9LCB7MTA2MSwg
M30sIHsxMDYzLCAzfSwgezEwNjUsIDN9LCB7MTA2NywgM30sIHsxMDY5LCAzfSwgezEwNzEsIDN9
LCB7MTA3MywgM30sIHsxMDc1LCAzfSwgezEwNzcsIDN9LCB7MTA3OSwgM30sIHsxMDgxLCAzfSwg
ezEwODcsIDM5fSwgezExMTksIDR9LCB7MTEyMSwgNH0sIHsxMTIzLCA0fSwgezExMjUsIDE5fSwg
ezExMjcsIDEzfSwgezExMzUsIDIxfSwgezExMzYsIDY2fSwgezExMzcsIDZ9LCB7MTEzOCwgNTF9
LCB7MTE0MiwgMTd9LCB7MTE0NCwgNDd9LCB7MTE3OCwgN30sIHsxMTgwLCA3fSwgezExODIsIDd9
LCB7MTE4NCwgN30sIHsxMTg2LCA3fSwgezExOTMsIDE2fSwgezExOTUsIDE2fSwgezExOTcsIDE2
fSwgezEyMjQsIDM3fSwgezEyMjYsIDM3fSwgezEyMjgsIDM3fSwgezEyMzAsIDM3fSwgezEyMzIs
IDM3fSwgezEyNDEsIDN9LCB7MTI0MywgM30sIHsxMjQ1LCAzfSwgezEyNDcsIDN9LCB7MTI0OSwg
M30sIHsxMjUxLCAzfSwgezEyNjMsIDl9LCB7MTI3MSwgMjV9LCB7MTI3MiwgNzN9LCB7MTI3Mywg
NH0sIHsxMjc0LCA1NH0sIHsxMjc1LCAxMzR9LCB7MTI3NywgNzh9LCB7MTI3OCwgODV9LCB7MTI3
OSwgMTA2fSwgezEyODAsIDY4fSwgezEyODIsIDEwMn0sIHsxMjgzLCAxMDZ9LCB7MTI4NCwgNX0s
IHsxMjg1LCAxNDB9LCB7MTI4NywgMjR9LCB7MTI4OCwgNjB9LCB7MTI4OSwgMTQ4fSwgezEyOTAs
IDEwNX0sIHsxMjkxLCAyMTR9LCB7MTI5MiwgMTMyfSwgezEyOTMsIDUxfSwgezEyOTQsIDIwOX0s
IHsxMjk1LCA2OH0sIHsxMjk3LCAxNH0sIHsxMjk4LCAyNX0sIHsxMjk5LCAyNH0sIHsxMzAxLCA5
MH0sIHsxMzAyLCAyNX0sIHsxMzA1LCAxM30sIHsxMzA2LCAxNX0sIHsxMzEwLCAxMn0sIHsxMzEx
LCAxNX0sIHsxMzEyLCAzNH0sIHsxMzEzLCAxM30sIHsxMzE3LCAxMX0sIHsxMzE4LCAzfSwgezEz
MjAsIDI4fSwgezEzMjEsIDMwfSwgezEzMjMsIDV9LCB7MTMyNiwgN30sIHsxMzI5LCAxMDd9LCB7
MTMzMSwgN30sIHsxMzMyLCAxMX0sIHsxMzMzLCA0Nn0sIHsxMzM2LCAzNX0sIHsxMzM3LCA0MX0s
IHsxMzM5LCAxMTB9LCB7MTM0MywgMTIzfSwgezEzNDQsIDQxfSwgezEzNDUsIDIwMH0sIHsxMzQ2
LCA5OH0sIHsxMzQ4LCAxOTN9LCB7MTM1NSwgMzZ9LCB7MTM2NywgOX0sIHsxMzgwLCA1Mn0sIHsx
MzgyLCAzMH0sIHsxMzgzLCAxMjh9LCB7MTM4NSwgNTJ9LCB7MTM4NiwgNTh9LCB7MTM4NywgODV9
LCB7MTM4OCwgNDd9LCB7MTM5MCwgNzl9LCB7MTM5MSwgODN9LCB7MTM5MywgMTM1fSwgezEzOTUs
IDE2fSwgezEzOTYsIDM2fSwgezEzOTcsIDE0M30sIHsxMzk4LCA4M30sIHsxMzk5LCAyMTR9LCB7
MTQwMCwgMTI1fSwgezE0MDEsIDI0fSwgezE0MDIsIDIwOX0sIHsxNDAzLCA0N30sIHsxNDA2LCAx
Mn0sIHsxNDA3LCA4fSwgezE0MDksIDc1fSwgezE0MTAsIDd9LCB7MTQyMCwgMTV9LCB7MTQyMSwg
MTB9LCB7MTQyOCwgOX0sIHsxNDI5LCAzfSwgezE0MzMsIDIyfSwgezE0NDYsIDExNH0sIHsxNDUw
LCAxMX0sIHsxNDUyLCA0fSwgezE0NTYsIDh9LCB7MTQ2MCwgNX0sIHsxNDYyLCA0fSwgezE0NzAs
IDIyfSwgezE0NzEsIDIzfSwgezE0NzUsIDExfSwgezE0ODIsIDR9LCB7MTQ4NSwgM30sIHsxNDg4
LCA2fSwgezE0ODksIDh9LCB7MTQ5NywgNn0sIHsxNTEwLCAxMTV9LCB7MTUzNSwgN30sIHsxNTYx
LCAxOH0sIHsxNTc0LCAxMjB9LCB7MTU3OCwgNX0sIHsxNTk4LCA4fSwgezE1OTksIDE5fSwgezE2
MDMsIDV9LCB7MTYyNSwgMTZ9LCB7MTYyNiwgNjZ9LCB7MTYyNywgNX0sIHsxNjI4LCA0M30sIHsx
NjI5LCAxNDh9LCB7MTYzMSwgNzN9LCB7MTYzMiwgODN9LCB7MTYzMywgOTF9LCB7MTYzNCwgNjB9
LCB7MTYzNiwgMTAyfSwgezE2MzcsIDEwNX0sIHsxNjM4LCA2fSwgezE2MzksIDE1NH0sIHsxNjQx
LCAzN30sIHsxNjQyLCA0OX0sIHsxNjQzLCAxNjN9LCB7MTY0NCwgMTA1fSwgezE2NDUsIDIzNX0s
IHsxNjQ2LCAxNDJ9LCB7MTY0NywgMzR9LCB7MTY0OCwgMjI4fSwgezE2NDksIDYwfSwgezE2NTEs
IDEzfSwgezE2NTIsIDI2fSwgezE2NTMsIDIyfSwgezE2NTUsIDg2fSwgezE2NTYsIDE3fSwgezE2
NTksIDd9LCB7MTY2NCwgMTJ9LCB7MTY2NSwgMTN9LCB7MTY2NiwgMjl9LCB7MTY2NywgNH0sIHsx
Njc0LCAyMH0sIHsxNjc1LCAxMX0sIHsxNjgwLCAxOH0sIHsxNjgzLCAxNDZ9LCB7MTY4NSwgMTl9
LCB7MTY4NiwgMjJ9LCB7MTY4NywgNTB9LCB7MTY4OCwgMTJ9LCB7MTY5MCwgNDd9LCB7MTY5MSwg
NjB9LCB7MTY5MywgMTUxfSwgezE2OTUsIDE1fSwgezE2OTcsIDE2M30sIHsxNjk4LCA2MH0sIHsx
Njk5LCAyNTN9LCB7MTcwMCwgMTM2fSwgezE3MDIsIDIzNn0sIHsxNzAzLCAxNH0sIHsxNzA5LCA1
MX0sIHsxNzM0LCA1MX0sIHsxNzM2LCAyN30sIHsxNzM3LCAxNTR9LCB7MTczOSwgNTV9LCB7MTc0
MCwgNjF9LCB7MTc0MSwgNzd9LCB7MTc0MiwgNDZ9LCB7MTc0NCwgODR9LCB7MTc0NSwgOTF9LCB7
MTc0NywgMTYwfSwgezE3NDksIDM3fSwgezE3NTAsIDM0fSwgezE3NTEsIDE2OX0sIHsxNzUyLCA5
MH0sIHsxNzUzLCAyNDl9LCB7MTc1NCwgMTQ1fSwgezE3NTUsIDExfSwgezE3NTYsIDIzOX0sIHsx
NzU3LCA0N30sIHsxNzU5LCA0fSwgezE3NjAsIDIwfSwgezE3NjEsIDE4fSwgezE3NjMsIDc4fSwg
ezE3NjQsIDR9LCB7MTc3MiwgM30sIHsxNzczLCA0fSwgezE3NzQsIDE2fSwgezE3ODIsIDd9LCB7
MjM1MiwgNn0sIHsyMzU0LCAyOH0sIHsyMzU1LCAyOH0sIHsyMzU2LCAyOH0sIHsyMzU3LCAyOH0s
IHsyMzU4LCAyOH0sIHsyMzU5LCAyOH0sIHsyMzYwLCAyOH0sIHsyMzYxLCAyOH0sIHsyMzc0LCA2
fSwgezIzNzYsIDI5fSwgezIzNzcsIDI4fSwgezIzNzgsIDI4fSwgezIzNzksIDI4fSwgezIzODAs
IDI4fSwgezIzODEsIDI4fSwgezIzODIsIDI4fSwgezIzODMsIDI4fSwgezIzOTYsIDZ9LCB7MjM5
OCwgMjh9LCB7MjM5OSwgMjh9LCB7MjQwMCwgMjh9LCB7MjQwMSwgMjh9LCB7MjQwMiwgMjh9LCB7
MjQwMywgMjh9LCB7MjQwNCwgMjh9LCB7MjQwNSwgMjh9LCB7MjQxOCwgNX0sIHsyNDIwLCAyOH0s
IHsyNDIxLCAyOH0sIHsyNDIyLCAyOH0sIHsyNDIzLCAyOH0sIHsyNDI0LCAyOH0sIHsyNDI1LCAy
OH0sIHsyNDI2LCAyOH0sIHsyNDI3LCAyOH0sIHsyNDM0LCA0fSwgezI0NDAsIDV9LCB7MjQ0Miwg
Mjh9LCB7MjQ0MywgMjh9LCB7MjQ0NCwgMjh9LCB7MjQ0NSwgMjh9LCB7MjQ0NiwgMjh9LCB7MjQ0
NywgMjh9LCB7MjQ0OCwgMjh9LCB7MjQ0OSwgMjh9LCB7MjQ1NiwgN30sIHsyNDYyLCA1fSwgezI0
NjQsIDI4fSwgezI0NjUsIDI4fSwgezI0NjYsIDI4fSwgezI0NjcsIDI4fSwgezI0NjgsIDI4fSwg
ezI0NjksIDI4fSwgezI0NzAsIDI4fSwgezI0NzEsIDI4fSwgezI0NzgsIDl9LCB7MjQ4NCwgNn0s
IHsyNDg2LCAyOH0sIHsyNDg3LCAyOH0sIHsyNDg4LCAyOH0sIHsyNDg5LCAyOH0sIHsyNDkwLCAy
OH0sIHsyNDkxLCAyOH0sIHsyNDkyLCAyOH0sIHsyNDkzLCAyOH0sIHsyNTIwLCA4fSwgezI1MzIs
IDZ9LCB7MjU0MCwgMjh9LCB7MjU0MSwgMjh9LCB7MjU1MCwgMjh9LCB7MjU1MSwgMjh9LCB7MjU1
OCwgMjh9LCB7MjU1OSwgMjh9LCB7MjU2NiwgMjh9LCB7MjU2NywgMjh9LCB7MjYzOSwgOH0sIHsy
NjUxLCAyNX0sIHsyNjUzLCAzMX0sIHsyOTkyLCAyOH0sIHsyOTkzLCAyOH0sIHsyOTk0LCAyOH0s
IHsyOTk1LCAyOH0sIHsyOTk2LCAyOH0sIHszMDE3LCA0OH0sIHszMDE5LCA0OH0sIHszMDIxLCA0
OH0sIHszMDIzLCA0OH0sIHszMDI1LCA0OH0sIHszMDI3LCA0OH0sIHszMDQ0LCAzMzJ9LCB7MzA0
NSwgMzMyfSwgezMwNDYsIDMzMn0sIHszMDQ3LCAzMzJ9LCB7MzA0OCwgMzMyfSwgezMwNDksIDMz
Mn0sIHszMDUwLCAzMzJ9LCB7MzA1MSwgMzYxfSwgezMwNTIsIDM2MX0sIHszMDUzLCAzNjR9LCB7
MzA1NCwgMzUwfSwgezMwNTgsIDU5MX0sIHszMDU5LCA1OTF9LCB7MzA2MCwgNTkxfSwgezMwNjEs
IDU5MX0sIHszMDYyLCA1OTF9LCB7MzA2MywgNTkxfSwgezMwNjQsIDU5MX0sIHszMDY1LCA1OTF9
LCB7MzA2NiwgNTkxfSwgezMwNjcsIDU5MX0sIHszMDY4LCA1OTF9LCB7MzA4MSwgNTkxfSwgezMw
ODIsIDU5MX0sIHszMTMzLCA2OX0sIHszMTM3LCAxM30sIHszMTQzLCAxMH0sIHszMTU5LCAxM30s
IHszMTYxLCA1fSwgezMxNzAsIDEzfSwgezMxNzEsIDEzfSwgezMxNzIsIDEzfSwgezMxNzMsIDEz
fSwgezMxNzQsIDEzfSwgezMxNzUsIDI3fSwgezMxNzYsIDI0fSwgezMxNzcsIDEzfSwgezMxODQs
IDIxfSwgezMxODUsIDU3fSwgezMxODYsIDQ2fSwgezMxODcsIDEwN30sIHszMTg4LCA4M30sIHsz
MTg5LCA1Mn0sIHszMTkwLCA5M30sIHszMTkxLCAxMTh9LCB7MzE5MiwgNTV9LCB7MzE5MywgMTMy
fSwgezMxOTQsIDIxN30sIHszMTk1LCA5MH0sIHszMTk2LCA5OX0sIHszMTk3LCA4MX0sIHszMTk4
LCAxNn0sIHszMTk5LCA4MX0sIHszMjAwLCA5Mn0sIHszMjAxLCAxMTl9LCB7MzIwMiwgODJ9LCB7
MzIwNCwgOTN9LCB7MzIwNSwgNzV9LCB7MzIwNiwgMTd9LCB7MzIwNywgNzl9LCB7MzIwOCwgMTZ9
LCB7MzIwOSwgNTR9LCB7MzIxMCwgNTB9LCB7MzIxMSwgNzl9LCB7MzIxMiwgNDZ9LCB7MzIxMywg
NTR9LCB7MzIxNCwgNDJ9LCB7MzIxNSwgODJ9LCB7MzIxNiwgMTEwfSwgezMyMTcsIDc5fSwgezMy
MTgsIDc5fSwgezMyMTksIDEzN30sIHszMjIwLCA3N30sIHszMjIxLCA4MX0sIHszMjIyLCA0MH0s
IHszMjIzLCAxNjF9LCB7MzIyNCwgMTA3fSwgezMyMjUsIDE2MX0sIHszMjI2LCAxMDd9LCB7MzIy
NywgMTE5fSwgezMyMjgsIDEwNH0sIHszMjI5LCAxNzJ9LCB7MzIzMCwgMTA3fSwgezMyMzEsIDEx
OX0sIHszMjMyLCA4N30sIHszMjMzLCA5Mn0sIHszMjM0LCA4NH0sIHszMjY3LCAzfSwgezMyNjks
IDN9LCB7MzI3NiwgNzN9LCB7MzI3NywgMTJ9LCB7MzI4OCwgMTJ9LCB7MzI5MywgM30sIHszMzU0
LCA0OX0sIHszMzU1LCA5OH0sIHszMzU2LCA1Mn0sIHszMzU3LCAxMDV9LCB7MzM1OCwgMTIwfSwg
ezMzNTksIDgxfSwgezMzNjAsIDc2fSwgezMzNjEsIDc2fSwgezMzNjIsIDc2fSwgezMzNjMsIDEw
NH0sIHszMzY1LCA3Nn0sIHszMzY2LCA3Nn0sIHszMzY3LCA1NH0sIHszMzY4LCA3NX0sIHszMzY5
LCA1NH0sIHszMzcwLCA3N30sIHszMzcxLCA2OH0sIHszMzcyLCAxMjZ9LCB7MzM3MywgNzZ9LCB7
MzM3NCwgMTQzfSwgezMzNzUsIDE0NX0sIHszMzc2LCA4OH0sIHszMzc3LCAxNDd9LCB7MzM3OCwg
MTA2fSwgezMzNzksIDQ5fSwgezMzODAsIDUwfSwgezMzODEsIDgwfSwgezMzODIsIDEwNn0sIHsz
MzgzLCA1OX0sIHszMzg0LCAyMTd9LCB7MzM4NSwgOTl9LCB7MzM4NiwgNDJ9LCB7MzM4NywgMTA5
fSwgezMzODgsIDEwMn0sIHszMzg5LCA3Mn0sIHszMzkwLCAxMDZ9LCB7MzM5MSwgNDJ9LCB7MzM5
MiwgNDJ9LCB7MzM5MywgNTN9LCB7MzM5NCwgNTB9LCB7MzM5NSwgNTh9LCB7MzM5NiwgMTA4fSwg
ezMzOTcsIDc1fSwgezMzOTgsIDcwfSwgezMzOTksIDU3fSwgezM0MDAsIDkzfSwgezM0MDEsIDk0
fSwgezM0MDIsIDc3fSwgezM0MDMsIDkzfSwgezM0MDQsIDc5fSwgezM0MDUsIDU5fSwgezM0MDYs
IDQ4fSwgezM0MDcsIDEyMH0sIHszNDA5LCA1M30sIHszNDEwLCA4OH0sIHszNDExLCAxMTR9LCB7
MzQxMiwgNH0sIHszNDEzLCA0MX0sIHszNDE1LCA2N30sIHszNDE3LCA0fSwgezM0MTgsIDQyfSwg
ezM0MTksIDUzfSwgezM0MjAsIDU3fSwgezM0MjIsIDc1fSwgezM0MjMsIDEwNn0sIHszNDI0LCA3
MH0sIHszNDI1LCAzNn0sIHszNDI2LCA1N30sIHszNDI3LCAyN30sIHszNDI4LCA1OH0sIHszNDI5
LCA1fSwgezM0MzEsIDI0fSwgezM0MzIsIDY2fSwgezM0MzMsIDI4fSwgezM0MzQsIDI5fSwgezM0
MzUsIDM2fSwgezM0MzYsIDU5fSwgezM0MzcsIDM2fSwgezM0MzgsIDUyfSwgezM0MzksIDMwfSwg
ezM0NDIsIDMxfSwgezM0NDMsIDV9LCB7MzQ0NCwgNTd9LCB7MzQ0NSwgNDZ9LCB7MzQ0NiwgOTF9
LCB7MzQ0NywgMjl9LCB7MzQ0OSwgNDl9LCB7MzQ1MCwgMTA1fSwgezM0NTEsIDEwNn0sIHszNDUy
LCA3Nn0sIHszNDUzLCA3Nn0sIHszNDU0LCAxMDR9LCB7MzQ1NSwgNzZ9LCB7MzQ1NiwgNzZ9LCB7
MzQ1NywgNTR9LCB7MzQ1OCwgNzV9LCB7MzQ1OSwgMTI2fSwgezM0NjAsIDcxfSwgezM0NjIsIDM4
fSwgezM0NjUsIDM5fSwgezM0NjYsIDM5fSwgezM0NjksIDU2fSwgezM0NzAsIDU2fSwgezM0NzIs
IDUzfSwgezM1MTksIDI3fSwgezM1NDIsIDE1fSwgezM1NDMsIDc1fSwgezM1NDQsIDE3fSwgezM1
NDUsIDgwfSwgezM1NDYsIDgwfSwgezM3MDMsIDIwfSwgezM3MDUsIDI5fSwgezM3MDcsIDd9LCB7
MzcwOCwgMzh9LCB7MzcxMSwgN30sIHszNzEzLCA1MH0sIHszNzE0LCA3fSwgezM3MTUsIDI4fSwg
ezM3MTYsIDI2fSwgezM3MTgsIDl9LCB7MzcyMCwgMjZ9LCB7MzcyMiwgMzV9LCB7MzcyMywgNDl9
LCB7MzcyNCwgMjN9LCB7MzcyNSwgMzd9LCB7MzcyNiwgMTh9LCB7MzcyOSwgMjV9LCB7MzczNCwg
MjN9LCB7MzczNywgMTd9LCB7Mzc0MCwgMjZ9LCB7Mzc0MSwgMTl9LCB7Mzc0MiwgMjN9LCB7Mzc0
NiwgMzR9LCB7Mzc0OCwgNDR9LCB7Mzc0OSwgMjV9LCB7Mzc1MiwgMTB9LCB7MzgxMiwgMTJ9LCB7
MzgxNywgMjR9LCB7MzgyNiwgOH0sIHszODI3LCAyM30sIHszODI5LCAxMX0sIHszODUwLCA3fSwg
ezM4NTIsIDE4fSwgezM4NjMsIDE3fSwgezM4NjUsIDh9LCB7Mzg2NywgMzR9LCB7Mzg3MCwgNDF9
LCB7Mzg3NSwgNTJ9LCB7Mzg3NiwgNn0sIHszODc3LCAyMX0sIHszODc4LCAxNH0sIHszODgyLCAy
OH0sIHszODg0LCAzN30sIHszODg1LCA0OX0sIHszODg2LCAxM30sIHszODg3LCAzM30sIHszODg4
LCAxNH0sIHszODkxLCAxM30sIHszODk2LCAyOH0sIHszODk5LCAyNH0sIHszOTAyLCA3fSwgezM5
MDMsIDd9LCB7MzkwOCwgMjJ9LCB7MzkxMCwgNDJ9LCB7MzkxMSwgNDR9LCB7MzkxNCwgMTl9LCB7
Mzk3MSwgM30sIHszOTc0LCAxMH0sIHszOTc5LCAyMX0sIHszOTg4LCA2fSwgezM5ODksIDE3fSwg
ezQwMTQsIDExfSwgezQwMTUsIDEzfSwgezQwMjUsIDI0fSwgezQwMjgsIDIyfSwgezQwMzUsIDE1
fSwgezQwMzgsIDV9LCB7NDA0NiwgMTJ9LCB7NDA0NywgNX0sIHs0MDQ4LCAxNX0sIHs0MDUyLCAx
MX0sIHs0MDU1LCAxMH0sIHs0MDU2LCAxOX0sIHs0MDU4LCAxNX0sIHs0MDY2LCA0MH0sIHs0MDY3
LCAyNX0sIHs0MDc3LCAyM30sIHs0MDc4LCAxNX0sIHs0MDc5LCA5fSwgezQwODAsIDN9LCB7NDA4
MSwgMTZ9LCB7NDA4MiwgMTF9LCB7NDA4NSwgOH0sIHs0MDg2LCAzfSwgezQxMjAsIDR9LCB7NDE3
MywgMjR9LCB7NDE3NywgMzV9LCB7NDE4MSwgMjR9LCB7NDE4MiwgMjN9LCB7NDE4NCwgNTR9LCB7
NDE4NSwgMjN9LCB7NDE5NCwgMjR9LCB7NDE5OCwgMjF9LCB7NDIzNSwgOH0sIHs0MjM5LCAxOH0s
IHs0MjQzLCA3fSwgezQyNDQsIDd9LCB7NDI0NiwgMzh9LCB7NDI0NywgOH0sIHs0MjU2LCA4fSwg
ezQyNjAsIDN9LCB7NDM0NywgMzB9LCB7NDM1MSwgMjd9LCB7NDM1NSwgMzB9LCB7NDM1NiwgMzB9
LCB7NDM1OCwgNzN9LCB7NDM1OSwgMzB9LCB7NDM2OCwgMjl9LCB7NDM3MiwgMjJ9LCB7NDM3OCwg
Nn0sIHs0Mzg2LCA2fSwgezQzODcsIDZ9LCB7NDM4OSwgMzd9LCB7NDM5MCwgNn0sIHs0Mzk5LCA1
fSwgezQ0MDksIDI2fSwgezQ0MTMsIDE3fSwgezQ0MTcsIDI1fSwgezQ0MTgsIDI1fSwgezQ0MjAs
IDY1fSwgezQ0MjEsIDI1fSwgezQ0MzAsIDI1fSwgezQ0MzQsIDEzfSwgezQ0NDMsIDEzNH0sIHs0
NDQ1LCA1fSwgezQ0NDcsIDYzfSwgezQ0NDgsIDc3fSwgezQ0NDksIDU0fSwgezQ0NTAsIDE0Nn0s
IHs0NDUxLCA0fSwgezQ0NTIsIDEwOX0sIHs0NDUzLCA0Mn0sIHs0NDU1LCAzNn0sIHs0NDU2LCA1
M30sIHs0NDU3LCAzNn0sIHs0NDU5LCA2NH0sIHs0NDYwLCAyN30sIHs0NDYxLCAxNH0sIHs0NDY3
LCA1OH0sIHs0NDY4LCAzNn0sIHs0NDY5LCAyNX0sIHs0NDcwLCAxM30sIHs0NDcxLCAyNH0sIHs0
NDcyLCAxMDJ9LCB7NDQ3MywgMTJ9LCB7NDQ3NCwgNX0sIHs0NDc2LCAxMn0sIHs0NDc3LCAxMH0s
IHs0NDgwLCAxN30sIHs0NDgxLCAxM30sIHs0NDgyLCA3NH0sIHs0NDg0LCA2M30sIHs0NDg1LCAx
MDZ9LCB7NDQ5MCwgNn0sIHs0NDkyLCAxMTZ9LCB7NDQ5NCwgNTR9LCB7NDQ5OCwgNH0sIHs0NTE0
LCAzOX0sIHs0NTI0LCA0fSwgezQ1MjYsIDIxfSwgezQ1MjcsIDEyOH0sIHs0NTMxLCA0MH0sIHs0
NTMyLCA1MX0sIHs0NTMzLCAzMX0sIHs0NTM0LCAxNDB9LCB7NDUzNiwgOTN9LCB7NDUzNywgMjB9
LCB7NDUzOSwgMTJ9LCB7NDU0MCwgMzl9LCB7NDU0MSwgMTB9LCB7NDU0MywgMzR9LCB7NDU0NCwg
Nn0sIHs0NTUxLCA0Mn0sIHs0NTUyLCA0fSwgezQ1NTMsIDR9LCB7NDU1NSwgNH0sIHs0NTU2LCA4
M30sIHs0NTY2LCA1Mn0sIHs0NTY4LCA1Mn0sIHs0NTcwLCAyNX0sIHs0NTcxLCA1NH0sIHs0NTcy
LCA2OH0sIHs0NTczLCA3OH0sIHs0NTc0LCA4NX0sIHs0NTc1LCA2OH0sIHs0NTc2LCAxMDJ9LCB7
NDU3NywgMTA2fSwgezQ1NzgsIDEyfSwgezQ1NzksIDV9LCB7NDU4MCwgMTQwfSwgezQ1ODEsIDE0
OH0sIHs0NTgyLCA1MX0sIHs0NTg1LCAzMH0sIHs0NTg2LCA0N30sIHs0NTg3LCA1Mn0sIHs0NTg4
LCA1OH0sIHs0NTg5LCA0N30sIHs0NTkwLCA3OX0sIHs0NTkxLCA4M30sIHs0NTk0LCAxMzV9LCB7
NDU5NSwgMTQzfSwgezQ1OTYsIDI0fSwgezQ2MDEsIDd9LCB7NDYwMiwgMTF9LCB7NDYwNCwgMzV9
LCB7NDYwNSwgNDF9LCB7NDYwOCwgMTEwfSwgezQ2MDksIDEyM30sIHs0NjE0LCAxNDh9LCB7NDYx
NiwgNX0sIHs0NjE4LCA1NH0sIHs0NjE5LCA3Mn0sIHs0NjIwLCA0NH0sIHs0NjIxLCAxNTl9LCB7
NDYyMywgMTA2fSwgezQ2MjQsIDM1fSwgezQ2MjYsIDZ9LCB7NDYyNywgNTV9LCB7NDYyOCwgMTl9
LCB7NDYzMCwgNDJ9LCB7NDYzMSwgMjJ9LCB7NDYzMiwgMTN9LCB7NDYzOCwgNTR9LCB7NDYzOSwg
MTF9LCB7NDY0MCwgMTR9LCB7NDY0MSwgMTN9LCB7NDY0MiwgMTN9LCB7NDY0MywgMTExfSwgezQ2
NDcsIDN9LCB7NDY1MSwgOH0sIHs0NjUyLCAxM30sIHs0NjUzLCA2Nn0sIHs0NjU1LCA1N30sIHs0
NjU2LCAxNDZ9LCB7NDY2MSwgMTd9LCB7NDY2MywgMTU4fSwgezQ2NjUsIDczfSwgezQ2NjksIDI4
fSwgezQ2ODAsIDE3fSwgezQ2ODUsIDY3fSwgezQ2OTUsIDE0fSwgezQ2OTcsIDM4fSwgezQ2OTgs
IDE1NH0sIHs0NzAyLCAzOH0sIHs0NzAzLCA1M30sIHs0NzA0LCAyOH0sIHs0NzA1LCAxNjR9LCB7
NDcwNywgOTh9LCB7NDcwOCwgMjB9LCB7NDcxMSwgNDl9LCB7NDcxNCwgMTh9LCB7NDcxNSwgMTB9
LCB7NDcyMiwgNDR9LCB7NDcyNSwgNH0sIHs0NzI3LCAxMDB9LCB7NDczNiwgNH0sIHs0NzM3LCA1
MH0sIHs0NzM5LCA1NH0sIHs0NzQxLCAxNn0sIHs0NzQyLCA0M30sIHs0NzQzLCA2MH0sIHs0NzQ0
LCA3M30sIHs0NzQ1LCA4M30sIHs0NzQ2LCA2MH0sIHs0NzQ3LCAxMDJ9LCB7NDc0OCwgMTA1fSwg
ezQ3NDksIDEyfSwgezQ3NTAsIDZ9LCB7NDc1MSwgMTU0fSwgezQ3NTIsIDE2M30sIHs0NzUzLCAz
NH0sIHs0NzU2LCAyN30sIHs0NzU3LCA0N30sIHs0NzU4LCA1NX0sIHs0NzU5LCA2MX0sIHs0NzYw
LCA0Nn0sIHs0NzYxLCA4NH0sIHs0NzYyLCA5MX0sIHs0NzYzLCAzfSwgezQ3NjUsIDE2MH0sIHs0
NzY2LCAxNjl9LCB7NDc2NywgMTF9LCB7NDc3MSwgMTR9LCB7NDc3MiwgMTl9LCB7NDc3MywgMjJ9
LCB7NDc3NCwgMTJ9LCB7NDc3NSwgNDd9LCB7NDc3NiwgNjB9LCB7NDc3OSwgMTUxfSwgezQ3ODAs
IDE2M30sIHs0Nzg3LCA1fSwgezQ3ODgsIDV9IH07CisjZW5kaWYgLy8gIUVOQUJMRShPUEVOVFlQ
RV9NQVRIKQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgU1RJWEl0YWxpY0NvcnJlY3Rpb25Db3Vu
dCA9IDI2OwogY29uc3Qgc3RhdGljIEl0YWxpY0NvcnJlY3Rpb25FbnRyeSBTVElYSXRhbGljQ29y
cmVjdGlvbltdID0geyB7MTA4OCwgNDc5fSwgezEwODksIDY2MH0sIHsxMDkwLCA4NDJ9LCB7MTA5
MSwgNDc5fSwgezEwOTIsIDY2MH0sIHsxMDkzLCA4NDF9LCB7MTA5NCwgNDc5fSwgezEwOTUsIDQ3
OX0sIHsxMDk2LCA0Nzl9LCB7MTk4OCwgMTAyM30sIHsxOTg5LCA0Nzl9LCB7MTk5MCwgNDc5fSwg
ezE5OTEsIDQ3OX0sIHsxOTkyLCA0Nzl9LCB7MTk5MywgNDc5fSwgezE5OTQsIDQ3OX0sIHsxOTk1
LCA0Nzl9LCB7MTk5NiwgNTE2fSwgezE5OTcsIDQ3OX0sIHsxOTk4LCA0Nzl9LCB7MTk5OSwgNjEz
fSwgezIwMDAsIDQ3OX0sIHsyMDAxLCA0Nzl9LCB7MjAwMiwgNDc5fSwgezIwMDMsIDQ3OX0sIHsy
MDA0LCA0Nzl9IH07CiAKKyNpZiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCiAjZGVmaW5lIE1BVEhW
QVJJQU5UX1NJWkVfQ09VTlQgOAogI2RlZmluZSBNQVRIVkFSSUFOVF9QQVJUX0NPVU5UIDUKIHN0
cnVjdCBNYXRoVmFyaWFudEVudHJ5IHsKQEAgLTM4Nyw2ICszOTIsNyBAQCBzdGF0aWMgY29uc3Qg
TWF0aFZhcmlhbnRFbnRyeSBTVElYTWF0aFZhcmlhbnRzW10gPSB7CiAgICAgeyAzODQ4LCB0cnVl
LCB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfSwgeyB7Mzg0NiwgZmFsc2V9LCB7Mzg0MywgdHJ1
ZX0sIHszODQwLCBmYWxzZX0sIHswLCBmYWxzZX0sIHswLCBmYWxzZX0gfSB9LCAvLyB1bmkyM0Iw
LnMxCiAgICAgeyAzODQ5LCB0cnVlLCB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfSwgeyB7Mzg0
MiwgZmFsc2V9LCB7Mzg0MywgdHJ1ZX0sIHszODQ0LCBmYWxzZX0sIHswLCBmYWxzZX0sIHswLCBm
YWxzZX0gfSB9IC8vIHVuaTIzQjEuczEKIH07CisjZW5kaWYgLy8gIUVOQUJMRShPUEVOVFlQRV9N
QVRIKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5j
cHAKaW5kZXggZTIyNWMzNS4uOTRlMWY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAK
QEAgLTI2LDE2ICsyNiwyMzQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPcGVu
VHlwZU1hdGhEYXRhLmgiCiAKLS8vIEZJWE1FOiBGb3IgcGxhdGZvcm1zIHRoYXQgY2FuIHJlYWQg
T3BlblR5cGUgdGFibGVzLCB3ZSBzaG91bGQgZGlyZWN0bHkgZ2V0IHRoZSBNQVRIIGRhdGEgZnJv
bSB0aGUgZm9udCAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMy
NCkuCisvLyBXaGVuIE9QRU5UWVBFX01BVEggaXMgZGlzYWJsZWQsIHdlIGNhbiBub3QgcmVhZCB0
aGUgbWF0aCBkYXRhIGZyb20gdGhlIE1BVEggdGFibGUgYW5kIG11c3QgdXNlIGhhcmRjb2RlZCBk
YXRhIGluc3RlYWQuCisvLyBFdmVuIHdoZW4gT1BFTlRZUEVfTUFUSCBpcyBlbmFibGVkLCB3ZSBu
ZWVkIGhhcmRjb2RlZCBkYXRhIGZvciB0aGUgaXRhbGljIGNvcnJlY3Rpb25zIG9mIFNUSVggTWF0
aCBzaW5jZSB0aGV5IGFyZSBtaXNzaW5nIGZyb20gdGhlIE1BVEggdGFibGUuCiAjaW5jbHVkZSAi
SGFyZENvZGVkTWF0aERhdGEuaCIKKyNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKKyNpbmNsdWRl
ICJPcGVuVHlwZVR5cGVzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjZW5kaWYgLy8g
RU5BQkxFKE9QRU5UWVBFX01BVEgpCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKE9Q
RU5UWVBFX01BVEgpCituYW1lc3BhY2UgT3BlblR5cGUgeworCitjb25zdCB1aW50MzJfdCBNQVRI
VGFnID0gT1RfTUFLRV9UQUcoJ00nLCAnQScsICdUJywgJ0gnKTsKKworI3ByYWdtYSBwYWNrKDEp
CisKK3N0cnVjdCBNYXRoVmFsdWVSZWNvcmQgeworICAgIE9wZW5UeXBlOjpJbnQxNiB2YWx1ZTsK
KyAgICBPcGVuVHlwZTo6T2Zmc2V0IGRldmljZVRhYmxlT2Zmc2V0OworfTsKKworc3RydWN0IE1h
dGhDb25zdGFudHMgeworICAgIE9wZW5UeXBlOjpJbnQxNiBpbnRDb25zdGFudHNbT3BlblR5cGVN
YXRoRGF0YTo6U2NyaXB0U2NyaXB0UGVyY2VudFNjYWxlRG93biAtIE9wZW5UeXBlTWF0aERhdGE6
OlNjcmlwdFBlcmNlbnRTY2FsZURvd24gKyAxXTsKKyAgICBPcGVuVHlwZTo6VUludDE2IHVJbnRD
b25zdGFudHNbT3BlblR5cGVNYXRoRGF0YTo6RGlzcGxheU9wZXJhdG9yTWluSGVpZ2h0IC0gT3Bl
blR5cGVNYXRoRGF0YTo6RGVsaW1pdGVkU3ViRm9ybXVsYU1pbkhlaWdodCArIDFdOworICAgIE9w
ZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgbWF0aFZhbHVlc0NvbnN0YW50c1tPcGVuVHlwZU1hdGhE
YXRhOjpSYWRpY2FsS2VybkFmdGVyRGVncmVlIC0gT3BlblR5cGVNYXRoRGF0YTo6TWF0aExlYWRp
bmcgKyAxXTsKKyAgICBPcGVuVHlwZTo6VUludDE2IHJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBl
cmNlbnQ7Cit9OworCitzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0
aENvdmVyYWdlIHsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OworICAgIE9w
ZW5UeXBlOjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKKyAgICBPcGVuVHlwZTo6TWF0
aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0Nv
cnJlY3Rpb25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCisKKyAgICBpbnQxNl90IGdl
dEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBo
KSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNz
Q29ycmVjdGlvbkNvdW50KTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxp
Y3NDb3JyZWN0aW9uW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBjb3ZlcmFnZU9mZnNldDsKKyAgICAgICAgaWYgKCFvZmZzZXQpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJh
Z2UgPSB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIG9mZnNldCk7CisgICAg
ICAgIGlmICghY292ZXJhZ2UpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAvLyBX
ZSBkZXRlcm1pbmUgdGhlIGluZGV4IGluIHRoZSBpdGFsaWNzQ29ycmVjdGlvbiB0YWJsZS4KKyAg
ICAgICAgdWludDMyX3QgaTsKKyAgICAgICAgaWYgKCFnZXRDb3ZlcmFnZUluZGV4KGJ1ZmZlciwg
Y292ZXJhZ2UsIGdseXBoLCBpKSB8fCBpPj0gY291bnQpCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICByZXR1cm4gaW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbltpXS52YWx1ZSk7Cisg
ICAgfQorfTsKKworc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7Cisg
ICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OworICAg
IE9wZW5UeXBlOjpPZmZzZXQgbWF0aFRvcEFjY2VudEF0dGFjaG1lbnRPZmZzZXQ7CisgICAgT3Bl
blR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CisgICAgT3BlblR5cGU6
Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CisKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJl
Y3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxp
Y3NDb3JyZWN0aW9uSW5mb09mZnNldDsKKyAgICAgICAgaWYgKG9mZnNldCkKKyAgICAgICAgICAg
IHJldHVybiB2YWxpZGF0ZU9mZnNldDxNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvPihidWZmZXIs
IG9mZnNldCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK307CisKK3N0cnVjdCBH
bHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKKyAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3Jk
IGl0YWxpY3NDb3JyZWN0aW9uOworICAgIE9wZW5UeXBlOjpVSW50MTYgcGFydENvdW50OworICAg
IHN0cnVjdCBHbHlwaFBhcnRSZWNvcmQgeworICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCBnbHlw
aDsKKyAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBzdGFydENvbm5lY3Rvckxlbmd0aDsKKyAgICAg
ICAgT3BlblR5cGU6OlVJbnQxNiBlbmRDb25uZWN0b3JMZW5ndGg7CisgICAgICAgIE9wZW5UeXBl
OjpVSW50MTYgZnVsbEFkdmFuY2U7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgcGFydEZsYWdz
OworICAgIH0gcGFydFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSBwYXJ0Q291bnQgR2x5cGhQYXJ0
UmVjb3JkJ3MuCisKKyAgICAvLyBQYXJ0RmxhZ3MgZW51bWVyYXRpb24gY3VycmVudGx5IHVzZXMg
b25seSBvbmUgYml0OgorICAgIC8vIDB4MDAwMSBJZiBzZXQsIHRoZSBwYXJ0IGNhbiBiZSBza2lw
cGVkIG9yIHJlcGVhdGVkLgorICAgIC8vIDB4RkZGRSBSZXNlcnZlZC4KKyAgICBlbnVtIHsKKyAg
ICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCisgICAgfTsKKworICAgIHZvaWQgZ2V0QXNz
ZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0
aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgeworICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKKyAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGFzc2VtYmx5UGFydHMucmVzaXplKGNvdW50KTsKKyAgICAgICAgZm9yICh1aW50MTZfdCBpID0g
MDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIGFzc2VtYmx5UGFydHNbaV0uZ2x5cGgg
PSBwYXJ0UmVjb3Jkc1tpXS5nbHlwaDsKKyAgICAgICAgICAgIHVpbnQxNl90IGZsYWcgPSBwYXJ0
UmVjb3Jkc1tpXS5wYXJ0RmxhZ3M7CisgICAgICAgICAgICBhc3NlbWJseVBhcnRzW2ldLmlzRXh0
ZW5kZXIgPSBmbGFnICYgUGFydEZsYWdzRXh0ZW5kZXI7CisgICAgICAgIH0KKyAgICB9CisKK307
CisKK3N0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgeworICAgIE9wZW5U
eXBlOjpPZmZzZXQgZ2x5cGhBc3NlbWJseU9mZnNldDsKKyAgICBPcGVuVHlwZTo6VUludDE2IHZh
cmlhbnRDb3VudDsKKyAgICBzdHJ1Y3QgTWF0aEdseXBoVmFyaWFudFJlY29yZCB7CisgICAgICAg
IE9wZW5UeXBlOjpHbHlwaElEIHZhcmlhbnRHbHlwaDsKKyAgICAgICAgT3BlblR5cGU6OlVJbnQx
NiBhZHZhbmNlTWVhc3VyZW1lbnQ7CisgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsg
Ly8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCisKKyAg
ICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9y
PEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBjb3VudCA9
IHZhcmlhbnRDb3VudDsKKyAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlw
aFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZh
cmlhbnRzLnJlc2l6ZShjb3VudCk7CisgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKQorICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVj
b3Jkc1tpXS52YXJpYW50R2x5cGg7CisgICAgfQorCisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNz
ZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB7CisgICAgICAgIHVpbnQxNl90
IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CisgICAgICAgIGNvbnN0IEdseXBoQXNzZW1i
bHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIs
IG9mZnNldCk7CisgICAgICAgIGlmIChnbHlwaEFzc2VtYmx5KQorICAgICAgICAgICAgZ2x5cGhB
c3NlbWJseS0+Z2V0QXNzZW1ibHlQYXJ0cyhidWZmZXIsIGFzc2VtYmx5UGFydHMpOworICAgIH0K
K307CisKK3N0cnVjdCBNYXRoVmFyaWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CisgICAgT3Bl
blR5cGU6OlVJbnQxNiBtaW5Db25uZWN0b3JPdmVybGFwOworICAgIE9wZW5UeXBlOjpPZmZzZXQg
dmVydEdseXBoQ292ZXJhZ2VPZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBob3JpekdseXBo
Q292ZXJhZ2VPZmZzZXQ7CisgICAgT3BlblR5cGU6OlVJbnQxNiB2ZXJ0R2x5cGhDb3VudDsKKyAg
ICBPcGVuVHlwZTo6VUludDE2IGhvcml6R2x5cGhDb3VudDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0
IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0R2x5cGhD
b3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6R2x5cGhDb3VudCB2ZXJ0
aWNhbCBnbHlwaCBjb250cnVjdGlvbnMuCisKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rp
b24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5
cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICB7CisgICAgICAgIHVpbnQzMl90
IGNvdW50ID0gdWludDE2X3QodmVydEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpHbHlwaENv
dW50KTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVj
dGlvbnNPZmZzZXRbY291bnRdKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
ICAgIC8vIFdlIGRldGVybWluZSB0aGUgY292ZXJhZ2UgdGFibGUgZm9yIHRoZSBzcGVjaWZpZWQg
Z2x5cGguCisgICAgICAgIHVpbnQxNl90IGNvdmVyYWdlT2Zmc2V0ID0gaXNWZXJ0aWNhbCA/IHZl
cnRHbHlwaENvdmVyYWdlT2Zmc2V0IDogaG9yaXpHbHlwaENvdmVyYWdlT2Zmc2V0OworICAgICAg
ICBpZiAoIWNvdmVyYWdlT2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlID0gdmFsaWRhdGVPZmZzZXQ8Q292ZXJh
Z2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7CisgICAgICAgIGlmICghY292ZXJhZ2Up
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBXZSBkZXRlcm1pbmUg
dGhlIGluZGV4IGluIHRoZSBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0IHRhYmxlLgorICAg
ICAgICB1aW50MzJfdCBpOworICAgICAgICBpZiAoIWdldENvdmVyYWdlSW5kZXgoYnVmZmVyLCBj
b3ZlcmFnZSwgZ2x5cGgsIGkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IGNvdW50ID0gaXNWZXJ0aWNhbCA/IHZlcnRHbHlwaENvdW50IDogaG9yaXpHbHlwaENvdW50Owor
ICAgICAgICBpZiAoaSA+PSBjb3VudCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICBpZiAoIWlzVmVydGljYWwpCisgICAgICAgICAgICBpICs9IHVpbnQxNl90KHZlcnRHbHlw
aENvdW50KTsKKworICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TWF0aEdseXBoQ29uc3Ry
dWN0aW9uPihidWZmZXIsIG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbaV0pOworICAgIH0K
K307CisKK3N0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgeworICAgIE9wZW5UeXBlOjpGaXhl
ZCB2ZXJzaW9uOworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aENvbnN0YW50c09mZnNldDsKKyAg
ICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9m
ZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CisKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRo
Q29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKKyAgICAgICAgaWYgKG9m
ZnNldCkKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxNYXRoQ29uc3RhbnRzPihi
dWZmZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNv
bnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5cGhJbmZv
T2Zmc2V0OworICAgICAgICBpZiAob2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PE1hdGhHbHlwaEluZm8+KGJ1ZmZlciwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBv
ZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CisgICAgICAgIGlmIChvZmZzZXQpCisgICAgICAg
ICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TWF0aFZhcmlhbnRzPihidWZmZXIsIG9mZnNldCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK307CisKKyNwcmFnbWEgcGFjaygpCisK
K30gLy8gbmFtZXNwYWNlIE9wZW5UeXBlCisjZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX01BVEgp
CisKIE9wZW5UeXBlTWF0aERhdGE6Ok9wZW5UeXBlTWF0aERhdGEoY29uc3QgU2ltcGxlRm9udERh
dGEmIGZvbnQpCiB7CisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCisgICAgbV9tYXRoQnVmZmVy
ID0gZm9udC5wbGF0Zm9ybURhdGEoKS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpNQVRIVGFnKTsK
KyAgICBjb25zdCBPcGVuVHlwZTo6TUFUSFRhYmxlKiBtYXRoID0gT3BlblR5cGU6OnZhbGlkYXRl
VGFibGU8T3BlblR5cGU6Ok1BVEhUYWJsZT4obV9tYXRoQnVmZmVyKTsKKyAgICBpZiAoIW1hdGgp
IHsKKyAgICAgICAgbV9tYXRoQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGNvbnN0IE9wZW5UeXBlOjpNYXRoQ29uc3RhbnRzKiBtYXRoY29uc3RhbnRzID0g
bWF0aC0+bWF0aENvbnN0YW50cygqbV9tYXRoQnVmZmVyKTsKKyAgICBpZiAoIW1hdGhjb25zdGFu
dHMpIHsKKyAgICAgICAgbV9tYXRoQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNvbnN0IE9wZW5UeXBlOjpNYXRoVmFyaWFudHMqIG1hdGh2YXJpYW50cyA9
IG1hdGgtPm1hdGhWYXJpYW50cygqbV9tYXRoQnVmZmVyKTsKKyAgICBpZiAoIW1hdGh2YXJpYW50
cykgeworICAgICAgICBtX21hdGhCdWZmZXIgPSBudWxscHRyOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2Vsc2UgLy8gRU5BQkxFKE9QRU5UWVBFX01BVEgpCiAgICAgLy8gV2UgdHJ5IHRvIHJl
Y29nbml6ZSB0aGUgTGF0aW4gTW9kZXJuIE1hdGggb3IgU1RJWCBNYXRoIGZvbnRzIGJ5IHRlc3Rp
bmcgdGhlIHVuaXRzUGVyRW0gdmFsdWUgYXMgd2VsbCBhcyBhIGZldyBnbHlwaCBpbmRpY2VzIG9m
IG1hdGggY2hhcmFjdGVycy4KIAogICAgIGlmIChmb250LmZvbnRNZXRyaWNzKCkudW5pdHNQZXJF
bSgpID09IDEwMDAKQEAgLTYzLDE4ICsyODEsMzUgQEAgT3BlblR5cGVNYXRoRGF0YTo6T3BlblR5
cGVNYXRoRGF0YShjb25zdCBTaW1wbGVGb250RGF0YSYgZm9udCkKICAgICB9CiAKICAgICBtX21h
dGhGb250ID0gVW5rbm93bkZvbnQ7CisjZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX01BVEgpCiB9
CiAKIGZsb2F0IE9wZW5UeXBlTWF0aERhdGE6OmdldE1hdGhDb25zdGFudChjb25zdCBTaW1wbGVG
b250RGF0YSogZm9udCwgTWF0aENvbnN0YW50IGNvbnN0YW50KSBjb25zdAogewogICAgIGludDMy
X3QgdmFsdWU7CiAKKyNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKKyAgICBjb25zdCBPcGVuVHlw
ZTo6TUFUSFRhYmxlKiBtYXRoID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6Ok1B
VEhUYWJsZT4obV9tYXRoQnVmZmVyKTsKKyAgICBBU1NFUlQobWF0aCk7CisgICAgY29uc3QgT3Bl
blR5cGU6Ok1hdGhDb25zdGFudHMqIG1hdGhjb25zdGFudHMgPSBtYXRoLT5tYXRoQ29uc3RhbnRz
KCptX21hdGhCdWZmZXIpOworICAgIEFTU0VSVChtYXRoY29uc3RhbnRzKTsKKworICAgIGlmIChj
b25zdGFudCA8PSBTY3JpcHRTY3JpcHRQZXJjZW50U2NhbGVEb3duKQorICAgICAgICB2YWx1ZSA9
IGludDE2X3QobWF0aGNvbnN0YW50cy0+aW50Q29uc3RhbnRzW2NvbnN0YW50XSk7CisgICAgZWxz
ZSBpZiAoY29uc3RhbnQgPD0gRGlzcGxheU9wZXJhdG9yTWluSGVpZ2h0KQorICAgICAgICB2YWx1
ZSA9IHVpbnQxNl90KG1hdGhjb25zdGFudHMtPnVJbnRDb25zdGFudHNbY29uc3RhbnQgLSBEZWxp
bWl0ZWRTdWJGb3JtdWxhTWluSGVpZ2h0XSk7CisgICAgZWxzZSBpZiAoY29uc3RhbnQgPD0gUmFk
aWNhbEtlcm5BZnRlckRlZ3JlZSkKKyAgICAgICAgdmFsdWUgPSBpbnQxNl90KG1hdGhjb25zdGFu
dHMtPm1hdGhWYWx1ZXNDb25zdGFudHNbY29uc3RhbnQgLSBNYXRoTGVhZGluZ10udmFsdWUpOwor
ICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSB1aW50MTZfdChtYXRoY29uc3RhbnRzLT5yYWRpY2Fs
RGVncmVlQm90dG9tUmFpc2VQZXJjZW50KTsKKyNlbHNlIC8vIEVOQUJMRShPUEVOVFlQRV9NQVRI
KQogICAgIGlmIChtX21hdGhGb250ID09IExhdGluTW9kZXJuTWF0aCkKICAgICAgICAgdmFsdWUg
PSBMYXRpbk1vZGVybk1hdGhDb25zdGFudHNbY29uc3RhbnRdOwogICAgIGVsc2UgewogICAgICAg
ICBBU1NFUlQobV9tYXRoRm9udCA9PSBTVElYTWF0aCk7CiAgICAgICAgIHZhbHVlID0gU1RJWE1h
dGhDb25zdGFudHNbY29uc3RhbnRdOwogICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoT1BFTlRZUEVf
TUFUSCkKIAogICAgIGlmIChjb25zdGFudCA9PSBTY3JpcHRQZXJjZW50U2NhbGVEb3duIHx8IGNv
bnN0YW50ID09IFNjcmlwdFNjcmlwdFBlcmNlbnRTY2FsZURvd24gfHwgY29uc3RhbnQgPT0gUmFk
aWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudCkKICAgICAgICAgcmV0dXJuIHZhbHVlIC8gMTAw
LjA7CkBAIC04NCw2ICszMTksMjQgQEAgZmxvYXQgT3BlblR5cGVNYXRoRGF0YTo6Z2V0TWF0aENv
bnN0YW50KGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBNYXRoQ29uc3RhbnQKIAogZmxvYXQg
T3BlblR5cGVNYXRoRGF0YTo6Z2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaW1wbGVGb250RGF0
YSogZm9udCwgR2x5cGggZ2x5cGgpIGNvbnN0CiB7CisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgp
CisgICAgY29uc3QgT3BlblR5cGU6Ok1BVEhUYWJsZSogbWF0aCA9IE9wZW5UeXBlOjp2YWxpZGF0
ZVRhYmxlPE9wZW5UeXBlOjpNQVRIVGFibGU+KG1fbWF0aEJ1ZmZlcik7CisgICAgQVNTRVJUKG1h
dGgpOworICAgIGNvbnN0IE9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvID0g
bWF0aC0+bWF0aEdseXBoSW5mbygqbV9tYXRoQnVmZmVyKTsKKyAgICBpZiAoIW1hdGhHbHlwaElu
Zm8pCisgICAgICAgIHJldHVybiAwOworCisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gPSBtYXRoR2x5cGhJbmZv
LT5tYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKCptX21hdGhCdWZmZXIpOworICAgIGlmICghbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbykgeworICAgICAgICAvLyBUaGlzIE1BVEggZm9udCBkb2Vz
IG5vdCBjb250YWluIGl0YWxpYyBjb3JyZWN0aW9ucyBzbyB3ZSBhc3N1bWUgaXQgaXMgdGhlIFNU
SVggTWF0aCwgd2hpY2ggaXMgdGhlIG9ubHkgcHJhY3RpY2FsIG1hdGggZm9udHMgbWlzc2luZyB0
aGF0IHRhYmxlIChodHRwOi8vc291cmNlZm9yZ2UubmV0L3Avc3RpeGZvbnRzL3RyYWNraW5nLzUw
LykuCisgICAgICAgIGNvbnN0IEl0YWxpY0NvcnJlY3Rpb25FbnRyeSogZW50cnkgPSB0cnlCaW5h
cnlTZWFyY2g8Y29uc3QgSXRhbGljQ29ycmVjdGlvbkVudHJ5LCBJdGFsaWNDb3JyZWN0aW9uS2V5
PihTVElYSXRhbGljQ29ycmVjdGlvbiwgU1RJWEl0YWxpY0NvcnJlY3Rpb25Db3VudCwgSXRhbGlj
Q29ycmVjdGlvbktleShnbHlwaCksIEV4dHJhY3RJdGFsaWNDb3JyZWN0aW9uS2V5KTsKKyAgICAg
ICAgaWYgKCFlbnRyeSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gZW50
cnktPml0YWxpY0NvcnJlY3Rpb24gKiBmb250LT5zaXplUGVyVW5pdCgpOworICAgIH0KKworICAg
IHJldHVybiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvLT5nZXRJdGFsaWNDb3JyZWN0aW9uKCpt
X21hdGhCdWZmZXIsIGdseXBoKSAqIGZvbnQtPnNpemVQZXJVbml0KCk7CisjZWxzZSAvLyBFTkFC
TEUoT1BFTlRZUEVfTUFUSCkKICAgICBjb25zdCBJdGFsaWNDb3JyZWN0aW9uRW50cnkqIGVudHJ5
OwogICAgIGlmIChtX21hdGhGb250ID09IExhdGluTW9kZXJuTWF0aCkKICAgICAgICAgZW50cnkg
PSB0cnlCaW5hcnlTZWFyY2g8Y29uc3QgSXRhbGljQ29ycmVjdGlvbkVudHJ5LCBJdGFsaWNDb3Jy
ZWN0aW9uS2V5PihMYXRpbk1vZGVybkl0YWxpY0NvcnJlY3Rpb24sIExhdGluTW9kZXJuSXRhbGlj
Q29ycmVjdGlvbkNvdW50LCBJdGFsaWNDb3JyZWN0aW9uS2V5KGdseXBoKSwgRXh0cmFjdEl0YWxp
Y0NvcnJlY3Rpb25LZXkpOwpAQCAtOTQsMTIgKzM0NywyNiBAQCBmbG9hdCBPcGVuVHlwZU1hdGhE
YXRhOjpnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBHbHlw
aCBnbAogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBlbnRy
eS0+aXRhbGljQ29ycmVjdGlvbiAqIGZvbnQtPnNpemVQZXJVbml0KCk7CisjZW5kaWYgLy8gRU5B
QkxFKE9QRU5UWVBFX01BVEgpCiB9CiAKIHZvaWQgT3BlblR5cGVNYXRoRGF0YTo6Z2V0TWF0aFZh
cmlhbnRzKEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwsIFZlY3RvcjxHbHlwaD4mIHNpemVW
YXJpYW50cywgVmVjdG9yPEFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiB7CiAg
ICAgc2l6ZVZhcmlhbnRzLmNsZWFyKCk7CiAgICAgYXNzZW1ibHlQYXJ0cy5jbGVhcigpOworI2lm
IEVOQUJMRShPUEVOVFlQRV9NQVRIKQorICAgIGNvbnN0IE9wZW5UeXBlOjpNQVRIVGFibGUqIG1h
dGggPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6TUFUSFRhYmxlPihtX21hdGhC
dWZmZXIpOworICAgIEFTU0VSVChtYXRoKTsKKyAgICBjb25zdCBPcGVuVHlwZTo6TWF0aFZhcmlh
bnRzKiBtYXRodmFyaWFudHMgPSBtYXRoLT5tYXRoVmFyaWFudHMoKm1fbWF0aEJ1ZmZlcik7Cisg
ICAgQVNTRVJUKG1hdGh2YXJpYW50cyk7CisKKyAgICBjb25zdCBPcGVuVHlwZTo6TWF0aEdseXBo
Q29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24gPSBtYXRodmFyaWFudHMtPm1hdGhH
bHlwaENvbnN0cnVjdGlvbigqbV9tYXRoQnVmZmVyLCBnbHlwaCwgaXNWZXJ0aWNhbCk7CisgICAg
aWYgKCFtYXRoR2x5cGhDb25zdHJ1Y3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1hdGhH
bHlwaENvbnN0cnVjdGlvbi0+Z2V0U2l6ZVZhcmlhbnRzKCptX21hdGhCdWZmZXIsIHNpemVWYXJp
YW50cyk7CisgICAgbWF0aEdseXBoQ29uc3RydWN0aW9uLT5nZXRBc3NlbWJseVBhcnRzKCptX21h
dGhCdWZmZXIsIGFzc2VtYmx5UGFydHMpOworI2Vsc2UgLy8gRU5BQkxFKE9QRU5UWVBFX01BVEgp
CiAgICAgY29uc3QgTWF0aFZhcmlhbnRFbnRyeSogZW50cnk7CiAgICAgaWYgKG1fbWF0aEZvbnQg
PT0gTGF0aW5Nb2Rlcm5NYXRoKQogICAgICAgICBlbnRyeSA9IHRyeUJpbmFyeVNlYXJjaDxjb25z
dCBNYXRoVmFyaWFudEVudHJ5LCBNYXRoVmFyaWFudEtleT4oTGF0aW5Nb2Rlcm5NYXRoVmFyaWFu
dHMsIExhdGluTW9kZXJuTWF0aFZhcmlhbnRzQ291bnQsIE1hdGhWYXJpYW50S2V5KGdseXBoLCBp
c1ZlcnRpY2FsKSwgRXh0cmFjdE1hdGhWYXJpYW50S2V5KTsKQEAgLTEyMCw2ICszODcsNyBAQCB2
b2lkIE9wZW5UeXBlTWF0aERhdGE6OmdldE1hdGhWYXJpYW50cyhHbHlwaCBnbHlwaCwgYm9vbCBp
c1ZlcnRpY2FsLCBWZWN0b3I8R2x5cAogICAgIGZvciAoaSA9IDA7IGkgPCBNQVRIVkFSSUFOVF9Q
QVJUX0NPVU5UICYmIGVudHJ5LT5hc3NlbWJseVBhcnRzW2ldLmdseXBoOyBpKyspCiAgICAgICAg
IGFzc2VtYmx5UGFydHNbaV0gPSBlbnRyeS0+YXNzZW1ibHlQYXJ0c1tpXTsKICAgICBhc3NlbWJs
eVBhcnRzLnJlc2l6ZShpKTsKKyNlbmRpZiAvLyBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDY3NzZi
OTguLmI2ZjVkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTMxLDYgKzMxLDEwIEBA
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
KyNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNl
bmRpZiAvLyBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBTaW1wbGVGb250RGF0YTsKQEAgLTQyLDcgKzQ2LDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBPcGVuVHlwZU1hdGhEYXRhKGZvbnREYXRhKSk7CiAgICAgfQog
CisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCisgICAgYm9vbCBoYXNNYXRoRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWF0aEJ1ZmZlcjsgfQorI2Vsc2UgLy8gRU5BQkxFKE9QRU5UWVBFX01BVEgp
CiAgICAgYm9vbCBoYXNNYXRoRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0aEZvbnQgIT0gVW5r
bm93bkZvbnQ7IH0KKyNlbmRpZiAvLyBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIAogICAgIC8vIFRo
ZSBvcmRlciBvZiB0aGUgY29uc3RhbnRzIG11c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHRoZSBmaWVs
ZHMgZGVmaW5lZCBpbiB0aGUgTUFUSCB0YWJsZS4KICAgICBlbnVtIE1hdGhDb25zdGFudCB7CkBA
IC0xMTUsNiArMTIzLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5U
eXBlTWF0aERhdGEoY29uc3QgU2ltcGxlRm9udERhdGEmKTsKKyNpZiBFTkFCTEUoT1BFTlRZUEVf
TUFUSCkKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CisjZWxzZSAvLyBF
TkFCTEUoT1BFTlRZUEVfTUFUSCkKICAgICBlbnVtIE9wZW5UeXBlTWF0aEZvbnQgewogICAgICAg
ICBMYXRpbk1vZGVybk1hdGgsCiAgICAgICAgIFNUSVhNYXRoLApAQCAtMTIyLDYgKzEzMyw3IEBA
IHByaXZhdGU6CiAgICAgfTsKICAgICBPcGVuVHlwZU1hdGhGb250IG1fbWF0aEZvbnQ7CiAgICAg
dm9pZCB0cnlUb1JlY29nbml6ZU1hdGhGb250KGNvbnN0IFNpbXBsZUZvbnREYXRhKik7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBk
YTljZWE5Li4yOGRjYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC0xMDAsNiArMTAwLDg4IEBA
IHByb3RlY3RlZDoKICAgICB9CiB9OwogCisjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKSB8
fCBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKK3N0cnVjdCBDb3ZlcmFnZVRhYmxlIDogVGFibGVCYXNl
IHsKKyAgICBPcGVuVHlwZTo6VUludDE2IGNvdmVyYWdlRm9ybWF0OworfTsKKworc3RydWN0IENv
dmVyYWdlMVRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CisgICAgT3BlblR5cGU6OlVJbnQxNiBnbHlw
aENvdW50OworICAgIE9wZW5UeXBlOjpHbHlwaElEIGdseXBoQXJyYXlbMV07Cit9OworCitzdHJ1
Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKKyAgICBPcGVuVHlwZTo6VUludDE2
IHJhbmdlQ291bnQ7CisgICAgc3RydWN0IFJhbmdlUmVjb3JkIHsKKyAgICAgICAgT3BlblR5cGU6
OkdseXBoSUQgc3RhcnQ7CisgICAgICAgIE9wZW5UeXBlOjpHbHlwaElEIGVuZDsKKyAgICAgICAg
T3BlblR5cGU6OlVJbnQxNiBzdGFydENvdmVyYWdlSW5kZXg7CisgICAgfSByYW5nZXNbMV07Cit9
OworI2VuZGlmIC8vIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkgfHwgRU5BQkxFKE9QRU5UWVBF
X01BVEgpCisKKyNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKK3N0cnVjdCBUYWJsZVdpdGhDb3Zl
cmFnZSA6IFRhYmxlQmFzZSB7Citwcm90ZWN0ZWQ6CisgICAgYm9vbAorICAgIGdldENvdmVyYWdl
SW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNv
dmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAg
eworICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgeworICAgICAgICBj
YXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKKyAgICAgICAgICAgIGNvbnN0IENvdmVyYWdl
MVRhYmxlKiBjb3ZlcmFnZTEgPSB2YWxpZGF0ZVB0cjxDb3ZlcmFnZTFUYWJsZT4oYnVmZmVyLCBj
b3ZlcmFnZSk7CisgICAgICAgICAgICBpZiAoIWNvdmVyYWdlMSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB1aW50MTZfdCBnbHlwaENvdW50ID0gY292ZXJhZ2Ux
LT5nbHlwaENvdW50OworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNvdmVy
YWdlMS0+Z2x5cGhBcnJheVtnbHlwaENvdW50XSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgICAgICAvLyBXZSBkbyBhIGJpbmFyeSBzZWFyY2ggb24gdGhlIGdseXBo
IGluZGV4ZXMuCisgICAgICAgICAgICB1aW50MzJfdCBpbWluID0gMCwgaW1heCA9IGdseXBoQ291
bnQ7CisgICAgICAgICAgICB3aGlsZSAoaW1pbiA8IGltYXgpIHsKKyAgICAgICAgICAgICAgICB1
aW50MzJfdCBpbWlkID0gKGltaW4gKyBpbWF4KSA+PiAxOworICAgICAgICAgICAgICAgIHVpbnQx
Nl90IGdseXBoTWlkID0gY292ZXJhZ2UxLT5nbHlwaEFycmF5W2ltaWRdOworICAgICAgICAgICAg
ICAgIGlmIChnbHlwaE1pZCA9PSBnbHlwaCkgeworICAgICAgICAgICAgICAgICAgICBjb3ZlcmFn
ZUluZGV4ID0gaW1pZDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChnbHlwaE1pZCA8IGdseXBoKQorICAgICAg
ICAgICAgICAgICAgICBpbWluID0gaW1pZCArIDE7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBpbWF4ID0gaW1pZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMjogeyAvLyBDb3ZlcmFnZSBGb3JtYXQg
MgorICAgICAgICAgICAgY29uc3QgQ292ZXJhZ2UyVGFibGUqIGNvdmVyYWdlMiA9IHZhbGlkYXRl
UHRyPENvdmVyYWdlMlRhYmxlPihidWZmZXIsIGNvdmVyYWdlKTsKKyAgICAgICAgICAgIGlmICgh
Y292ZXJhZ2UyKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHVp
bnQxNl90IHJhbmdlQ291bnQgPSBjb3ZlcmFnZTItPnJhbmdlQ291bnQ7CisgICAgICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY292ZXJhZ2UyLT5yYW5nZXNbcmFuZ2VDb3VudF0pKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8gV2UgZG8gYSBi
aW5hcnkgc2VhcmNoIG9uIHRoZSByYW5nZXMuCisgICAgICAgICAgICB1aW50MzJfdCBpbWluID0g
MCwgaW1heCA9IHJhbmdlQ291bnQ7CisgICAgICAgICAgICB3aGlsZSAoaW1pbiA8IGltYXgpIHsK
KyAgICAgICAgICAgICAgICB1aW50MzJfdCBpbWlkID0gKGltaW4gKyBpbWF4KSA+PiAxOworICAg
ICAgICAgICAgICAgIHVpbnQxNl90IHJTdGFydCA9IGNvdmVyYWdlMi0+cmFuZ2VzW2ltaWRdLnN0
YXJ0OworICAgICAgICAgICAgICAgIHVpbnQxNl90IHJFbmQgPSBjb3ZlcmFnZTItPnJhbmdlc1tp
bWlkXS5lbmQ7CisgICAgICAgICAgICAgICAgaWYgKHJFbmQgPCBnbHlwaCkKKyAgICAgICAgICAg
ICAgICAgICAgaW1pbiA9IGltaWQgKyAxOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGdseXBo
IDwgclN0YXJ0KQorICAgICAgICAgICAgICAgICAgICBpbWF4ID0gaW1pZDsKKyAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY292ZXJhZ2VJbmRleCA9IGNvdmVyYWdl
Mi0+cmFuZ2VzW2ltaWRdLnN0YXJ0Q292ZXJhZ2VJbmRleCArIGdseXBoIC0gclN0YXJ0OworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIE9wZW5U
eXBlCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYgLy8gT3BlblR5cGVUeXBlc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMzVhZTcxZC4uN2MzNzA0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTEyLDI0ICsxMTIsNiBA
QCBzdHJ1Y3QgVk9SR1RhYmxlIHsKICAgICBzaXplX3QgcmVxdWlyZWRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZW9mKCp0aGlzKSArIHNpemVvZihWZXJ0T3JpZ2luWU1ldHJpY3MpICogKG51bVZl
cnRPcmlnaW5ZTWV0cmljcyAtIDEpOyB9CiB9OwogCi1zdHJ1Y3QgQ292ZXJhZ2VUYWJsZSA6IFRh
YmxlQmFzZSB7Ci0gICAgT3BlblR5cGU6OlVJbnQxNiBjb3ZlcmFnZUZvcm1hdDsKLX07Ci0KLXN0
cnVjdCBDb3ZlcmFnZTFUYWJsZSA6IENvdmVyYWdlVGFibGUgewotICAgIE9wZW5UeXBlOjpVSW50
MTYgZ2x5cGhDb3VudDsKLSAgICBPcGVuVHlwZTo6R2x5cGhJRCBnbHlwaEFycmF5WzFdOwotfTsK
LQotc3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7Ci0gICAgT3BlblR5cGU6
OlVJbnQxNiByYW5nZUNvdW50OwotICAgIHN0cnVjdCBSYW5nZVJlY29yZCB7Ci0gICAgICAgIE9w
ZW5UeXBlOjpHbHlwaElEIHN0YXJ0OwotICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCBlbmQ7Ci0g
ICAgICAgIE9wZW5UeXBlOjpVSW50MTYgc3RhcnRDb3ZlcmFnZUluZGV4OwotICAgIH0gcmFuZ2Vz
WzFdOwotfTsKLQogc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292
ZXJhZ2VPZmZzZXQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227410</attachid>
            <date>2014-03-21 04:11:53 -0700</date>
            <delta_ts>2014-03-21 05:49:22 -0700</delta_ts>
            <desc>Patch + bug 130572 for testing</desc>
            <filename>read-MATH-all.patch</filename>
            <type>text/plain</type>
            <size>43980</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMGM0ZjVlMC4uZjdiYTg1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5NDUsNiArMTk0NSw4IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYyYWFlNGUuLjgzNGJk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxNC0wMy0yMSAgRnLDqWTDqXJpYyBX
YW5nICA8ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgT3BlcmF0b3Igc3RyZXRjaGluZzog
cmVhZCB0aGUgT3BlbiBUeXBlIE1BVEggdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIHBhcnNlIGFuZCBleHBvc2Ugc29tZSBkYXRhIGZyb20g
dGhlIE9wZW5UeXBlIE1BVEggdGFibGUgdGhhdCB3aWxsIGJlCisgICAgICAgIGJlIHJlbGV2YW50
IGZvciBhdCBsZWFzdCB0aGUgTWF0aE1MIG9wZXJhdG9yIHN0cmV0Y2hpbmcgKGJ1ZyAxMzAzMjIp
OgorICAgICAgICBtYXRoIGNvbnN0YW50cywgaXRhbGljIGNvcnJlY3Rpb25zIGFuZCBzaXplIHZh
cmlhbnRzIC8gZ2x5cGggYXNzZW1ibHkuCisgICAgICAgIFRoaXMgd2lsbCBiZSB0ZXN0ZWQgd2hl
biB0aGUgTWF0aE1MIGNvZGUgdXNlcyB0aGUgZGF0YS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIE9wZW5UeXBlVHlwZXMuaCB0byB0aGUgTWFjIGJ1
aWxkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuY3BwOiBXZSBpbXBsZW1lbnQgdGhlIGxvdy1sZXZlbCBwYXJzaW5nIG9mIHRoZSBNQVRIIHRh
YmxlLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm86OmdldEl0YWxpY0NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1h
dGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246Omdl
dEFzc2VtYmx5UGFydHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50
czo6bWF0aEdseXBoQ29uc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpN
QVRIVGFibGU6Om1hdGhDb25zdGFudHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1B
VEhUYWJsZTo6bWF0aEdseXBoSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFU
SFRhYmxlOjptYXRoVmFyaWFudHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVNYXRoRGF0
YTo6T3BlblR5cGVNYXRoRGF0YSk6IFdlIGxvYWQgdGhlIE1BVEggdGFibGUuCisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZU1hdGhEYXRhOjpnZXRNYXRoQ29uc3RhbnQpOiBXZSBhZGQgYSBmdW5j
dGlvbiB0byBnZXQgdmFsdWVzIGZyb20gdGhlIE1hdGhDb25zdGFudCBzdWJ0YWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6OmdldEl0YWxpY0NvcnJlY3Rpb24pOiBXZSBh
ZGQgYSBmdW5jdGlvbiB0byBnZXQgaXRhbGljIGNvcnJlY3Rpb24gZnJvbSB0aGUgTWF0aEdseXBo
SW5mbyBzdWJ0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6OmdldE1h
dGhWYXJpYW50cyk6IFdlIGFkZCBhIGZ1bmN0aW9uIHRvIGdldCBzaXplIHZhcmlhbnRzIC8gZ2x5
cGggYXNzZW1ibHkgZnJvbSB0aGUgTWF0aFZhcmlhbnRzIHN1YnRhYmxlLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDogV2UgZXhwb3NlIHRo
cmVlIG5ldyBmdW5jdGlvbnMgdG8gZ2V0IG1hdGggZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6IFdlIHNoYXJlIHRoZSBjb3ZlcmFnZSB0
YWJsZXMgdGhhdCBhcmUgY29tbW9uIHRvIHZlcnRpY2FsIGFuZCBtYXRoIGRhdGEuCisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXgp
OiBXZSBhZGQgYSBmdW5jdGlvbiB0byBnZXQgdGhlIGNvdmVyYWdlIGluZGV4IGZyb20gYSBnaXZl
biBnbHlwaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZl
cnRpY2FsRGF0YS5jcHA6IFdlIG1vdmUgdGhlIGNvdmVyYWdlIHRhYmxlcyB0byBPcGVuVHlwZVR5
cGVzLmguCisKKzIwMTQtMDMtMjEgIEZyw6lkw6lyaWMgV2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZy
PgorCisgICAgICAgIE9wZXJhdG9yIHN0cmV0Y2hpbmc6IGV4cG9zZSBhIG1hdGggZGF0YSBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDU3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGV4cG9z
ZSBhIG5ldyBTaW1wbGVGb250RGF0YSBBUEkgdG8gZ2l2ZSBhY2Nlc3MgdG8gdGhlIGRhdGEgZnJv
bSB0aGUKKyAgICAgICAgT3BlblR5cGUgTUFUSCB0YWJsZSB1c2luZyBhIGZvbnQgY2FjaGUuIFRo
ZSBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIHdpbGwKKyAgICAgICAgYmUgaW1wbGVtZW50ZWQgaW4g
YnVnIDEzMDMyNC4gT24gRGFyd2luIHBsYXRmb3JtLCB3ZSBhbHNvIGltcGxlbWVudCB0aGUKKyAg
ICAgICAgbWlzc2luZyBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGZ1bmN0aW9uIHdo
aWNoIHdpbGwgYmUgbmVjZXNzYXJ5CisgICAgICAgIHRvIGxvYWQgdGhlIE9wZW5UeXBlIE1BVEgg
dGFibGUuIFRoZSBjaGFuZ2VzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkCisgICAgICAgIGZvciBN
YXRoTUwgb3BlcmF0b3Igc3RyZXRjaGluZyAoYnVnIDEzMDMyMikgc28gdGVzdHMgYXJlIG5vdCBh
ZGRlZCB5ZXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogYWRkIG5ldyBPcGVuVHlwZU1h
dGhEYXRhIGZpbGVzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IGRpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IGRpdHRvLgorICAgICAgICAq
IFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczogZGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBkaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOiBXZSBhZGQgYSBGb250Q2FjaGU6OmdldE1h
dGhEYXRhIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBhIGNhY2hlIGZvciB0aGUgbWF0aCBkYXRhLgor
ICAgICAgICBXZSBtYWtlIHRoZSBtYXRoIGFuZCB2ZXJ0aWNhbCBkYXRhIHNoYXJlIHRoZSBzYW1l
IGtleSBmb3IgdGhlIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6Zm9udE1hdGhEYXRhQ2FjaGVJ
bnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldE1hdGhEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZvbnRWZXJ0aWNhbERhdGFDYWNoZUluc3RhbmNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDogV2UgZGVjbGFyZSBGb250Q2FjaGU6Omdl
dE1hdGhEYXRhIGFuZCBGb250RmlsZUtleSBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSk6IFdlIGltcGxlbWVudCBvcGVuVHlwZVRh
YmxlKCkgb24gRGFyd2luIHBsYXRmb3JtLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaDogV2UgZXhwb3NlIG9wZW5UeXBlVGFibGUoKSBvbiBEYXJ3aW4gcGxh
dGZvcm0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOiBX
ZSBpbml0aWFsaXplIG1fbWF0aERhdGEgZnJvbSB0aGUgZm9udCBjYWNoZS4KKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUZvbnREYXRhOjpTaW1wbGVGb250RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDogV2UgZXhwb3NlIGEgbWF0aERhdGEoKSBmdW5j
dGlvbiB0byBhY2Nlc3MgdGhlIE1BVEggZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDogQWRkZWQuIFRoaXMgaXMgYSBuZXcgY2xh
c3MgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcGFyc2UgdGhlIGRhdGEgZnJvbSB0aGUgT3BlblR5cGUg
TUFUSCB0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6Ok9wZW5UeXBl
TWF0aERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZU1hdGhEYXRhOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVNYXRoRGF0YTo6aGFzTWF0aERhdGEp
OgorCiAyMDE0LTAzLTIwICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLiBpT1MgYnVpbGQgZml4IGFmdGVyIHIxNjYwMTcsIHIxNjYwMzIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1ZTBhZDdhLi43ZmQwOWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTUzNTUsNiArNTM1NSw4IEBAIHdlYmNvcmVf
cGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdM
U2V0dGluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNDU5NzU3YS4uMGRl
NWNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC03OTQzLDYgKzc5NDMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luXEludFJlY3RXaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEludFNpemVXaW4uY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcT3BlblR5cGVNYXRoRGF0YS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlw
ZVV0aWxpdGllcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cU2ltcGxlRm9udERhdGFDYWly
b1dpbi5jcHAiPgpAQCAtMTkzMDEsNiArMTkzMDIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEZ1bGxTY3JlZW5Db250cm9sbGVyQ2xpZW50Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTG9j
YWxXaW5kb3dzQ29udGV4dC5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50
eXBlXE9wZW5UeXBlTWF0aERhdGEuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlVXRpbGl0
aWVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xv
cGVudHlwZVxPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDBiYTE4
NTguLjZlYmNhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTE0NzYsNiArMTQ3Niw5IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGlj
c1x3aW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlTWF0aERhdGEuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3Ncd2luPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlw
ZVxPcGVuVHlwZVV0aWxpdGllcy5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGlj
c1x3aW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTg0MTYsNiArODQxOSw5IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTG9jYWxXaW5k
b3dzQ29udGV4dC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3Ncd2luPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZU1hdGhEYXRhLmgiPgorICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljc1x3aW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlVHlw
ZXMuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXHdpbjwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDIyN2Y1OTAuLjMyMjQzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1ODYsNiArNDU4Niw5
IEBACiAJCUIyQzNEQTYzMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTUyMEQwMDZDRDYwMEVG
NkYyNiAvKiBGb250Q2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCMkMzREE2NDBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RB
NTMwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmNwcCAqLzsgfTsKIAkJQjJDM0RB
NjUwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREE1NDBEMDA2Q0Q2MDBFRjZGMjYgLyog
U2ltcGxlRm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCMkQzREE2NDBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkQzREE1
MzBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5jcHAgKi87IH07CisJCUIyRDNE
QTY1MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkQzREE1NDBEMDA2Q0Q2MDBFRjZGMjcg
LyogT3BlblR5cGVNYXRoRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUIyRDNFQTY1MEQwMDZDRDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkQzRUE1
NDBEMDA2Q0Q2MDBFRjZGMjggLyogT3BlblR5cGVUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyQzNEQTY2MEQwMDZDRDYwMEVGNkYyNiAv
KiBGb250RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyQzNEQTU1MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250RGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMkMzREE2
NzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEdseXBocy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREE1NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9u
dEdseXBocy5jcHAgKi87IH07CiAJCUIyQzNEQTY4MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250R2x5
cGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMz
REE1NzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEdseXBocy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTgxOCw2ICsxMTgyMSw5IEBACiAJCUIy
QzNEQTUyMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvbnRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMkMzREE1MzBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUZvbnREYXRhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0RBNTQwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBs
ZUZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVGb250
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMkQzREE1MzBEMDA2Q0Q2MDBF
RjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUIyRDNEQTU0MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBvcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRDNFQTU0MEQwMDZD
RDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBvcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyQzNEQTU1MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250RGVzY3JpcHRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREE1NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEds
eXBocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEdseXBo
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTU3MEQwMDZDRDYwMEVG
NkYyNiAvKiBGb250R2x5cGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b250R2x5cGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDA4NSw2ICsyMDA5
MSw5IEBACiAJCQkJMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLywK
IAkJCQlCMkMzREE1MzBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuY3BwICovLAog
CQkJCUIyQzNEQTU0MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVGb250RGF0YS5oICovLAorCQkJ
CUIyRDNEQTUzMEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmNwcCAqLywKKwkJ
CQlCMkQzREE1NDBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5oICovLAorCQkJ
CUIyRDNFQTU0MEQwMDZDRDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVzLmggKi8sCiAJCQkJQ0Q2
NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLywKIAkJCQlD
REM2MURBMDE4MDg2N0Q4MDA0QjkxM0YgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAogCQkJ
CUNEQzhCNUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmgg
Ki8sCkBAIC0yNTQxNiw2ICsyNTQyNSw4IEBACiAJCQkJRTFCNzgzOUMxNjM3NDBBNzAwMDdCNjky
IC8qIFNoYXJlZFdvcmtlclN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQxNjhFRTEw
MjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkMzREE2NTBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUIyRDNEQTY1MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCMkQzRUE2NTBEMDA2Q0Q2MDBFRjZGMjggLyogT3BlblR5cGVU
eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8qIFNp
bXBsZUxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RTlCMTFEMTgxNDU2OUMwMDNB
Q0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NEU5QjExOTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI4NzcxLDYgKzI4NzgyLDcgQEAKIAkJCQlFMUI3ODQyMDE2MzlDQkJF
MDAwN0I2OTIgLyogU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUQxNjhFRDEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyQzNEQTY0MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVGb250RGF0
YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMkQzREE2NDBEMDA2Q0Q2MDBFRjZGMjcgLyogT3Bl
blR5cGVNYXRoRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNjNFODhGNzExOEEzOUQyMDBF
RDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
N0U2NTk1MDE2M0IxMEMyMDBFQjQ1NzQgLyogU2ltcGxlRm9udERhdGFJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCMkFGRkM3RjBEMDBBNUMxMDAzMDA3NEQgLyogU2ltcGxlRm9udERhdGFNYWMu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCmluZGV4IDhjZGZmMTIuLjI4YWE4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkZvbnRHbHlwaHMuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5j
bHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiT3BlblR5cGVNYXRoRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYktpdEZvbnRGYW1pbHlOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC0yNjYsOCArMjY3LDcgQEAgRm9udFBs
YXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm8KICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogfQogCi0jaWYg
RU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQotc3RydWN0IEZvbnRWZXJ0aWNhbERhdGFDYWNoZUtl
eUhhc2ggeworc3RydWN0IEZvbnRGaWxlQ2FjaGVLZXlIYXNoIHsKICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBGb250Q2FjaGU6OkZvbnRGaWxlS2V5JiBmb250RmlsZUtleSkKICAgICB7
CiAgICAgICAgIHJldHVybiBQdHJIYXNoPGNvbnN0IEZvbnRDYWNoZTo6Rm9udEZpbGVLZXkqPjo6
aGFzaCgmZm9udEZpbGVLZXkpOwpAQCAtMjgxLDcgKzI4MSw3IEBAIHN0cnVjdCBGb250VmVydGlj
YWxEYXRhQ2FjaGVLZXlIYXNoIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogCi1zdHJ1Y3QgRm9udFZlcnRpY2FsRGF0YUNh
Y2hlS2V5VHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxGb250Q2FjaGU6OkZvbnRGaWxl
S2V5PiB7CitzdHJ1Y3QgRm9udEZpbGVDYWNoZUtleVRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hU
cmFpdHM8Rm9udENhY2hlOjpGb250RmlsZUtleT4gewogICAgIHN0YXRpYyBjb25zdCBib29sIGVt
cHR5VmFsdWVJc1plcm8gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBGb250Q2FjaGU6OkZvbnRGaWxlS2V5JiBl
bXB0eVZhbHVlKCkKQEAgLTI5OSw5ICsyOTksMzIgQEAgc3RydWN0IEZvbnRWZXJ0aWNhbERhdGFD
YWNoZUtleVRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8Rm9udENhY2hlOjpGb250RmkK
ICAgICB9CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8Rm9udENhY2hlOjpGb250RmlsZUtleSwgUmVm
UHRyPE9wZW5UeXBlVmVydGljYWxEYXRhPiwgRm9udFZlcnRpY2FsRGF0YUNhY2hlS2V5SGFzaCwg
Rm9udFZlcnRpY2FsRGF0YUNhY2hlS2V5VHJhaXRzPiBGb250VmVydGljYWxEYXRhQ2FjaGU7Cit0
eXBlZGVmIEhhc2hNYXA8Rm9udENhY2hlOjpGb250RmlsZUtleSwgUmVmUHRyPE9wZW5UeXBlTWF0
aERhdGE+LCBGb250RmlsZUNhY2hlS2V5SGFzaCwgRm9udEZpbGVDYWNoZUtleVRyYWl0cz4gRm9u
dE1hdGhEYXRhQ2FjaGU7CisKK3N0YXRpYyBGb250TWF0aERhdGFDYWNoZSYgZm9udE1hdGhEYXRh
Q2FjaGVJbnN0YW5jZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRNYXRoRGF0
YUNhY2hlPiBmb250TWF0aERhdGFDYWNoZTsKKyAgICByZXR1cm4gZm9udE1hdGhEYXRhQ2FjaGU7
Cit9CisKK1Bhc3NSZWZQdHI8T3BlblR5cGVNYXRoRGF0YT4gRm9udENhY2hlOjpnZXRNYXRoRGF0
YShjb25zdCBGb250RmlsZUtleSYga2V5LCBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250RGF0
YSkKK3sKKyAgICBGb250TWF0aERhdGFDYWNoZSYgZm9udE1hdGhEYXRhQ2FjaGUgPSBmb250TWF0
aERhdGFDYWNoZUluc3RhbmNlKCk7CisgICAgRm9udE1hdGhEYXRhQ2FjaGU6Oml0ZXJhdG9yIHJl
c3VsdCA9IGZvbnRNYXRoRGF0YUNhY2hlLmZpbmQoa2V5KTsKKyAgICBpZiAocmVzdWx0ICE9IGZv
bnRNYXRoRGF0YUNhY2hlLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LmdldCgpLT52YWx1
ZTsKKworICAgIFJlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBtYXRoRGF0YSA9IE9wZW5UeXBlTWF0
aERhdGE6OmNyZWF0ZShmb250RGF0YSk7CisgICAgaWYgKCFtYXRoRGF0YS0+aGFzTWF0aERhdGEo
KSkKKyAgICAgICAgbWF0aERhdGEuY2xlYXIoKTsKKyAgICBmb250TWF0aERhdGFDYWNoZS5zZXQo
a2V5LCBtYXRoRGF0YSk7CisgICAgcmV0dXJuIG1hdGhEYXRhOworfQorCisjaWYgRU5BQkxFKE9Q
RU5UWVBFX1ZFUlRJQ0FMKQordHlwZWRlZiBIYXNoTWFwPEZvbnRDYWNoZTo6Rm9udEZpbGVLZXks
IFJlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4sIEZvbnRGaWxlQ2FjaGVLZXlIYXNoLCBGb250
RmlsZUNhY2hlS2V5VHJhaXRzPiBGb250VmVydGljYWxEYXRhQ2FjaGU7CiAKLUZvbnRWZXJ0aWNh
bERhdGFDYWNoZSYgZm9udFZlcnRpY2FsRGF0YUNhY2hlSW5zdGFuY2UoKQorc3RhdGljIEZvbnRW
ZXJ0aWNhbERhdGFDYWNoZSYgZm9udFZlcnRpY2FsRGF0YUNhY2hlSW5zdGFuY2UoKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250VmVydGljYWxEYXRhQ2FjaGU+IGZvbnRWZXJ0aWNh
bERhdGFDYWNoZTsKICAgICByZXR1cm4gZm9udFZlcnRpY2FsRGF0YUNhY2hlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCBjM2U4ZTcxLi5lOWJi
ZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApA
QCAtNTQsNiArNTQsNyBAQCBjbGFzcyBGb250OwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKIGNs
YXNzIEZvbnREYXRhOwogY2xhc3MgRm9udFNlbGVjdG9yOworY2xhc3MgT3BlblR5cGVNYXRoRGF0
YTsKIGNsYXNzIE9wZW5UeXBlVmVydGljYWxEYXRhOwogY2xhc3MgU2ltcGxlRm9udERhdGE7CiAK
QEAgLTE1MSw4ICsxNTIsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0
YT4gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIFNob3VsZFJldGFpbiwgY29uc3QgTE9HRk9OVCYsIEF0b21pY1N0cmluZyYgb3V0Rm9udEZh
bWlseU5hbWUpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAgICAg
dHlwZWRlZiBBdG9taWNTdHJpbmcgRm9udEZpbGVLZXk7CisgICAgUGFzc1JlZlB0cjxPcGVuVHlw
ZU1hdGhEYXRhPiBnZXRNYXRoRGF0YShjb25zdCBGb250RmlsZUtleSYsIGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmKTsKKyNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAgICAgUGFzc1JlZlB0
cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gZ2V0VmVydGljYWxEYXRhKGNvbnN0IEZvbnRGaWxlS2V5
JiwgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNTMw
OGViZC4uM2MwNWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKQEAgLTI3LDYgKzI3LDExIEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPEFw
cGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCkBAIC0xNjksNCArMTc0LDE2IEBAIGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBvdGhlCiAgICAgcmV0dXJuIHBsYXRmb3JtRGF0YUFzc2lnbihvdGhlcik7CiB9
CiAKKyNpZiBPUyhEQVJXSU4pCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK3sKKyAgICBDR0ZvbnRS
ZWYgZm9udCA9IGNnRm9udCgpOworICAgIENGRGF0YVJlZiBkYXRhID0gQ0dGb250Q29weVRhYmxl
Rm9yVGFnKGZvbnQsIHRhYmxlKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShkYXRhKTsKK30KKyNl
bmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
UGxhdGZvcm1EYXRhLmgKaW5kZXggYmZhNTcwOS4uMTg1NzZlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMjE2LDcg
KzIxNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotI2lmIFBMQVRGT1JNKFdJTikgJiYg
KFVTRShDRykgfHwgVVNFKENBSVJPKSkKKyNpZiBPUyhEQVJXSU4pIHx8IChQTEFURk9STShXSU4p
ICYmIChVU0UoQ0cpIHx8IFVTRShDQUlSTykpKQogICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAKaW5k
ZXggNDVlNWI2Yy4uZmE5M2ExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVk
ZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIk9wZW5UeXBlTWF0
aERhdGEuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKE9QRU5U
WVBFX1ZFUlRJQ0FMKQpAQCAtNTIsNiArNTMsNyBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9u
dERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBib29sIGlzQ3VzdAog
ICAgICwgbV9pc0xvYWRpbmcoaXNMb2FkaW5nKQogICAgICwgbV9pc1RleHRPcmllbnRhdGlvbkZh
bGxiYWNrKGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2spCiAgICAgLCBtX2lzQnJva2VuSWRlb2dy
YXBoRmFsbGJhY2soZmFsc2UpCisgICAgLCBtX21hdGhEYXRhKG51bGxwdHIpCiAjaWYgRU5BQkxF
KE9QRU5UWVBFX1ZFUlRJQ0FMKQogICAgICwgbV92ZXJ0aWNhbERhdGEoMCkKICNlbmRpZgpAQCAt
NjAsNiArNjIsNyBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBib29sIGlzQ3VzdAogICAgIHBsYXRmb3JtSW5pdCgp
OwogICAgIHBsYXRmb3JtR2x5cGhJbml0KCk7CiAgICAgcGxhdGZvcm1DaGFyV2lkdGhJbml0KCk7
CisgICAgbV9tYXRoRGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRNYXRoRGF0YShTdHJpbmc6Om51bWJl
cihwbGF0Zm9ybURhdGEuaGFzaCgpKSwgcGxhdGZvcm1EYXRhKTsKICNpZiBFTkFCTEUoT1BFTlRZ
UEVfVkVSVElDQUwpCiAgICAgaWYgKHBsYXRmb3JtRGF0YS5vcmllbnRhdGlvbigpID09IFZlcnRp
Y2FsICYmICFpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKSB7CiAgICAgICAgIG1fdmVydGljYWxE
YXRhID0gcGxhdGZvcm1EYXRhLnZlcnRpY2FsRGF0YSgpOwpAQCAtNzYsNiArNzksNyBAQCBTaW1w
bGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoc3RkOjp1bmlxdWVfcHRyPEFkZGl0aW9uYWxGb250
RGF0YT4gZm9udERhdGEsIGZsbwogICAgICwgbV9pc0xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX2lz
VGV4dE9yaWVudGF0aW9uRmFsbGJhY2soZmFsc2UpCiAgICAgLCBtX2lzQnJva2VuSWRlb2dyYXBo
RmFsbGJhY2soZmFsc2UpCisgICAgLCBtX21hdGhEYXRhKG51bGxwdHIpCiAjaWYgRU5BQkxFKE9Q
RU5UWVBFX1ZFUlRJQ0FMKQogICAgICwgbV92ZXJ0aWNhbERhdGEoMCkKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKaW5kZXgg
NWRhNWM5OC4uZDhjYzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR2x5cGhC
dWZmZXIuaCIKICNpbmNsdWRlICJHbHlwaE1ldHJpY3NNYXAuaCIKICNpbmNsdWRlICJHbHlwaFBh
Z2VUcmVlTm9kZS5oIgorI2luY2x1ZGUgIk9wZW5UeXBlTWF0aERhdGEuaCIKICNpZiBFTkFCTEUo
T1BFTlRZUEVfVkVSVElDQUwpCiAjaW5jbHVkZSAiT3BlblR5cGVWZXJ0aWNhbERhdGEuaCIKICNl
bmRpZgpAQCAtOTIsNiArOTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBzeXN0ZW1GYWxsYmFjaygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
U2ltcGxlRm9udERhdGEqPigtMSk7IH0KIAogICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EYXRhOyB9CisgICAgY29uc3Qg
T3BlblR5cGVNYXRoRGF0YSogbWF0aERhdGEoKSBjb25zdCB7IHJldHVybiBtX21hdGhEYXRhLmdl
dCgpOyB9CiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQogICAgIGNvbnN0IE9wZW5UeXBl
VmVydGljYWxEYXRhKiB2ZXJ0aWNhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsRGF0
YS5nZXQoKTsgfQogI2VuZGlmCkBAIC0yNTksNiArMjYxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9pc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrOwogICAgIGJvb2wgbV9pc0Jyb2tlbklkZW9n
cmFwaEZhbGxiYWNrOworICAgIFJlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBtX21hdGhEYXRhOwog
I2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKICAgICBSZWZQdHI8T3BlblR5cGVWZXJ0aWNh
bERhdGE+IG1fdmVydGljYWxEYXRhOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkODhlMmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmNwcApAQCAtMCwwICsxLDMzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBGcmVkZXJpYyBXYW5nIChmcmVkLndhbmdAZnJlZS5mcikuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiT3Bl
blR5cGVNYXRoRGF0YS5oIgorCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorI2lmIEVO
QUJMRShPUEVOVFlQRV9NQVRIKQorI2luY2x1ZGUgIk9wZW5UeXBlVHlwZXMuaCIKKyNlbmRpZgor
I2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQorbmFtZXNwYWNl
IE9wZW5UeXBlIHsKKworY29uc3QgdWludDMyX3QgTUFUSFRhZyA9IE9UX01BS0VfVEFHKCdNJywg
J0EnLCAnVCcsICdIJyk7CisKKyNwcmFnbWEgcGFjaygxKQorCitzdHJ1Y3QgTWF0aFZhbHVlUmVj
b3JkIHsKKyAgICBPcGVuVHlwZTo6SW50MTYgdmFsdWU7CisgICAgT3BlblR5cGU6Ok9mZnNldCBk
ZXZpY2VUYWJsZU9mZnNldDsKK307CisKK3N0cnVjdCBNYXRoQ29uc3RhbnRzIHsKKyAgICBPcGVu
VHlwZTo6SW50MTYgaW50Q29uc3RhbnRzW09wZW5UeXBlTWF0aERhdGE6OlNjcmlwdFNjcmlwdFBl
cmNlbnRTY2FsZURvd24gLSBPcGVuVHlwZU1hdGhEYXRhOjpTY3JpcHRQZXJjZW50U2NhbGVEb3du
ICsgMV07CisgICAgT3BlblR5cGU6OlVJbnQxNiB1SW50Q29uc3RhbnRzW09wZW5UeXBlTWF0aERh
dGE6OkRpc3BsYXlPcGVyYXRvck1pbkhlaWdodCAtIE9wZW5UeXBlTWF0aERhdGE6OkRlbGltaXRl
ZFN1YkZvcm11bGFNaW5IZWlnaHQgKyAxXTsKKyAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3Jk
IG1hdGhWYWx1ZXNDb25zdGFudHNbT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbEtlcm5BZnRlckRl
Z3JlZSAtIE9wZW5UeXBlTWF0aERhdGE6Ok1hdGhMZWFkaW5nICsgMV07CisgICAgT3BlblR5cGU6
OlVJbnQxNiByYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50OworfTsKKworc3RydWN0IE1h
dGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CisgICAgT3BlblR5
cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsKKyAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3ND
b3JyZWN0aW9uQ291bnQ7CisgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29y
cmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNv
cnJlY3Rpb24gdmFsdWVzLgorCisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICB7CisgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CisgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gY292ZXJh
Z2VPZmZzZXQ7CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlID0gdmFsaWRhdGVPZmZzZXQ8Q292
ZXJhZ2VUYWJsZT4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICBpZiAoIWNvdmVyYWdlKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gV2UgZGV0ZXJtaW5lIHRoZSBpbmRleCBp
biB0aGUgaXRhbGljc0NvcnJlY3Rpb24gdGFibGUuCisgICAgICAgIHVpbnQzMl90IGk7CisgICAg
ICAgIGlmICghZ2V0Q292ZXJhZ2VJbmRleChidWZmZXIsIGNvdmVyYWdlLCBnbHlwaCwgaSkgfHwg
aT49IGNvdW50KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIGludDE2
X3QoaXRhbGljc0NvcnJlY3Rpb25baV0udmFsdWUpOworICAgIH0KK307CisKK3N0cnVjdCBNYXRo
R2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgeworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhU
b3BBY2NlbnRBdHRhY2htZW50T2Zmc2V0OworICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRT
aGFwZUNvdmVyYWdlT2Zmc2V0OworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zm
c2V0OworCisgICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3ND
b3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7
CisgICAgICAgIGlmIChvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbz4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9Cit9OworCitzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFz
ZSB7CisgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvbjsKKyAg
ICBPcGVuVHlwZTo6VUludDE2IHBhcnRDb3VudDsKKyAgICBzdHJ1Y3QgR2x5cGhQYXJ0UmVjb3Jk
IHsKKyAgICAgICAgT3BlblR5cGU6OkdseXBoSUQgZ2x5cGg7CisgICAgICAgIE9wZW5UeXBlOjpV
SW50MTYgc3RhcnRDb25uZWN0b3JMZW5ndGg7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgZW5k
Q29ubmVjdG9yTGVuZ3RoOworICAgICAgICBPcGVuVHlwZTo6VUludDE2IGZ1bGxBZHZhbmNlOwor
ICAgICAgICBPcGVuVHlwZTo6VUludDE2IHBhcnRGbGFnczsKKyAgICB9IHBhcnRSZWNvcmRzWzFd
OyAvLyBUaGVyZSBhcmUgcGFydENvdW50IEdseXBoUGFydFJlY29yZCdzLgorCisgICAgLy8gUGFy
dEZsYWdzIGVudW1lcmF0aW9uIGN1cnJlbnRseSB1c2VzIG9ubHkgb25lIGJpdDoKKyAgICAvLyAw
eDAwMDEgSWYgc2V0LCB0aGUgcGFydCBjYW4gYmUgc2tpcHBlZCBvciByZXBlYXRlZC4KKyAgICAv
LyAweEZGRkUgUmVzZXJ2ZWQuCisgICAgZW51bSB7CisgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVy
ID0gMHgwMQorICAgIH07CisKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBh
c3NlbWJseVBhcnRzKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0
Q291bnQ7CisgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3Vu
dF0pKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhc3NlbWJseVBhcnRzLnJlc2l6ZShj
b3VudCk7CisgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cisg
ICAgICAgICAgICBhc3NlbWJseVBhcnRzW2ldLmdseXBoID0gcGFydFJlY29yZHNbaV0uZ2x5cGg7
CisgICAgICAgICAgICB1aW50MTZfdCBmbGFnID0gcGFydFJlY29yZHNbaV0ucGFydEZsYWdzOwor
ICAgICAgICAgICAgYXNzZW1ibHlQYXJ0c1tpXS5pc0V4dGVuZGVyID0gZmxhZyAmIFBhcnRGbGFn
c0V4dGVuZGVyOworICAgICAgICB9CisgICAgfQorCit9OworCitzdHJ1Y3QgTWF0aEdseXBoQ29u
c3RydWN0aW9uIDogVGFibGVCYXNlIHsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IGdseXBoQXNzZW1i
bHlPZmZzZXQ7CisgICAgT3BlblR5cGU6OlVJbnQxNiB2YXJpYW50Q291bnQ7CisgICAgc3RydWN0
IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQgeworICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCB2YXJp
YW50R2x5cGg7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50Owor
ICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291
bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgorCisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25z
dAorICAgIHsKKyAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CisgICAgICAg
IGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0p
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXJpYW50cy5yZXNpemUoY291bnQpOwor
ICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAg
IHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbaV0udmFyaWFudEdseXBoOwor
ICAgIH0KKworICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFy
dHMpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5
T2Zmc2V0OworICAgICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFs
aWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICBpZiAo
Z2x5cGhBc3NlbWJseSkKKyAgICAgICAgICAgIGdseXBoQXNzZW1ibHktPmdldEFzc2VtYmx5UGFy
dHMoYnVmZmVyLCBhc3NlbWJseVBhcnRzKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgTWF0aFZhcmlh
bnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgeworICAgIE9wZW5UeXBlOjpVSW50MTYgbWluQ29ubmVj
dG9yT3ZlcmxhcDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IHZlcnRHbHlwaENvdmVyYWdlT2Zmc2V0
OworICAgIE9wZW5UeXBlOjpPZmZzZXQgaG9yaXpHbHlwaENvdmVyYWdlT2Zmc2V0OworICAgIE9w
ZW5UeXBlOjpVSW50MTYgdmVydEdseXBoQ291bnQ7CisgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jp
ekdseXBoQ291bnQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25z
T2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29u
dHJ1Y3Rpb25zIGFuZCBob3JpekdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25z
LgorCisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rp
b24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGlj
YWwpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRH
bHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6R2x5cGhDb3VudCk7CisgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBXZSBkZXRlcm1pbmUgdGhl
IGNvdmVyYWdlIHRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIGdseXBoLgorICAgICAgICB1aW50MTZf
dCBjb3ZlcmFnZU9mZnNldCA9IGlzVmVydGljYWwgPyB2ZXJ0R2x5cGhDb3ZlcmFnZU9mZnNldCA6
IGhvcml6R2x5cGhDb3ZlcmFnZU9mZnNldDsKKyAgICAgICAgaWYgKCFjb3ZlcmFnZU9mZnNldCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBjb25zdCBDb3ZlcmFnZVRhYmxl
KiBjb3ZlcmFnZSA9IHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJh
Z2VPZmZzZXQpOworICAgICAgICBpZiAoIWNvdmVyYWdlKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgLy8gV2UgZGV0ZXJtaW5lIHRoZSBpbmRleCBpbiB0aGUgbWF0aEds
eXBoQ29uc3RydWN0aW9uc09mZnNldCB0YWJsZS4KKyAgICAgICAgdWludDMyX3QgaTsKKyAgICAg
ICAgaWYgKCFnZXRDb3ZlcmFnZUluZGV4KGJ1ZmZlciwgY292ZXJhZ2UsIGdseXBoLCBpKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBjb3VudCA9IGlzVmVydGljYWwgPyB2
ZXJ0R2x5cGhDb3VudCA6IGhvcml6R2x5cGhDb3VudDsKKyAgICAgICAgaWYgKGkgPj0gY291bnQp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc1ZlcnRpY2FsKQor
ICAgICAgICAgICAgaSArPSB1aW50MTZfdCh2ZXJ0R2x5cGhDb3VudCk7CisKKyAgICAgICAgcmV0
dXJuIHZhbGlkYXRlT2Zmc2V0PE1hdGhHbHlwaENvbnN0cnVjdGlvbj4oYnVmZmVyLCBtYXRoR2x5
cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2ldKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgTUFUSFRhYmxl
IDogVGFibGVCYXNlIHsKKyAgICBPcGVuVHlwZTo6Rml4ZWQgdmVyc2lvbjsKKyAgICBPcGVuVHlw
ZTo6T2Zmc2V0IG1hdGhDb25zdGFudHNPZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
R2x5cGhJbmZvT2Zmc2V0OworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0
OworCisgICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICB7CisgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1h
dGhDb25zdGFudHNPZmZzZXQ7CisgICAgICAgIGlmIChvZmZzZXQpCisgICAgICAgICAgICByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8TWF0aENvbnN0YW50cz4oYnVmZmVyLCBvZmZzZXQpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRo
R2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKKyAgICAgICAgaWYgKG9m
ZnNldCkKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxNYXRoR2x5cGhJbmZvPihi
dWZmZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNv
bnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zm
c2V0OworICAgICAgICBpZiAob2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PE1hdGhWYXJpYW50cz4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9Cit9OworCisjcHJhZ21hIHBhY2soKQorCit9IC8vIG5hbWVzcGFjZSBPcGVuVHlw
ZQorI2VuZGlmIC8vIEVOQUJMRShPUEVOVFlQRV9NQVRIKQorCitPcGVuVHlwZU1hdGhEYXRhOjpP
cGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKQoreworI2lmIEVOQUJMRShP
UEVOVFlQRV9NQVRIKQorICAgIG1fbWF0aEJ1ZmZlciA9IGZvbnQub3BlblR5cGVUYWJsZShPcGVu
VHlwZTo6TUFUSFRhZyk7CisgICAgY29uc3QgT3BlblR5cGU6Ok1BVEhUYWJsZSogbWF0aCA9IE9w
ZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpNQVRIVGFibGU+KG1fbWF0aEJ1ZmZlcik7
CisgICAgaWYgKCFtYXRoKSB7CisgICAgICAgIG1fbWF0aEJ1ZmZlciA9IG51bGxwdHI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBPcGVuVHlwZTo6TWF0aENvbnN0YW50cyog
bWF0aGNvbnN0YW50cyA9IG1hdGgtPm1hdGhDb25zdGFudHMoKm1fbWF0aEJ1ZmZlcik7CisgICAg
aWYgKCFtYXRoY29uc3RhbnRzKSB7CisgICAgICAgIG1fbWF0aEJ1ZmZlciA9IG51bGxwdHI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBPcGVuVHlwZTo6TWF0aFZhcmlhbnRz
KiBtYXRodmFyaWFudHMgPSBtYXRoLT5tYXRoVmFyaWFudHMoKm1fbWF0aEJ1ZmZlcik7CisgICAg
aWYgKCFtYXRodmFyaWFudHMpCisgICAgICAgIG1fbWF0aEJ1ZmZlciA9IG51bGxwdHI7CisjZWxz
ZQorICAgIG1fbWF0aEJ1ZmZlciA9IG51bGxwdHI7CisjZW5kaWYKK30KKworZmxvYXQgT3BlblR5
cGVNYXRoRGF0YTo6Z2V0TWF0aENvbnN0YW50KGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBN
YXRoQ29uc3RhbnQgY29uc3RhbnQpIGNvbnN0Cit7CisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgp
CisgICAgaW50MzJfdCB2YWx1ZSA9IDA7CisKKyAgICBjb25zdCBPcGVuVHlwZTo6TUFUSFRhYmxl
KiBtYXRoID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6Ok1BVEhUYWJsZT4obV9t
YXRoQnVmZmVyKTsKKyAgICBBU1NFUlQobWF0aCk7CisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhD
b25zdGFudHMqIG1hdGhjb25zdGFudHMgPSBtYXRoLT5tYXRoQ29uc3RhbnRzKCptX21hdGhCdWZm
ZXIpOworICAgIEFTU0VSVChtYXRoY29uc3RhbnRzKTsKKworICAgIGlmIChjb25zdGFudCA8PSBT
Y3JpcHRTY3JpcHRQZXJjZW50U2NhbGVEb3duKQorICAgICAgICB2YWx1ZSA9IGludDE2X3QobWF0
aGNvbnN0YW50cy0+aW50Q29uc3RhbnRzW2NvbnN0YW50XSk7CisgICAgZWxzZSBpZiAoY29uc3Rh
bnQgPD0gRGlzcGxheU9wZXJhdG9yTWluSGVpZ2h0KQorICAgICAgICB2YWx1ZSA9IHVpbnQxNl90
KG1hdGhjb25zdGFudHMtPnVJbnRDb25zdGFudHNbY29uc3RhbnQgLSBEZWxpbWl0ZWRTdWJGb3Jt
dWxhTWluSGVpZ2h0XSk7CisgICAgZWxzZSBpZiAoY29uc3RhbnQgPD0gUmFkaWNhbEtlcm5BZnRl
ckRlZ3JlZSkKKyAgICAgICAgdmFsdWUgPSBpbnQxNl90KG1hdGhjb25zdGFudHMtPm1hdGhWYWx1
ZXNDb25zdGFudHNbY29uc3RhbnQgLSBNYXRoTGVhZGluZ10udmFsdWUpOworICAgIGVsc2UKKyAg
ICAgICAgdmFsdWUgPSB1aW50MTZfdChtYXRoY29uc3RhbnRzLT5yYWRpY2FsRGVncmVlQm90dG9t
UmFpc2VQZXJjZW50KTsKKworICAgIGlmIChjb25zdGFudCA9PSBTY3JpcHRQZXJjZW50U2NhbGVE
b3duIHx8IGNvbnN0YW50ID09IFNjcmlwdFNjcmlwdFBlcmNlbnRTY2FsZURvd24gfHwgY29uc3Rh
bnQgPT0gUmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudCkKKyAgICAgICAgcmV0dXJuIHZh
bHVlIC8gMTAwLjA7CisKKyAgICByZXR1cm4gdmFsdWUgKiBmb250LT5zaXplUGVyVW5pdCgpOwor
I2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgor
fQorCitmbG9hdCBPcGVuVHlwZU1hdGhEYXRhOjpnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmb250LCBHbHlwaCBnbHlwaCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoT1BF
TlRZUEVfTUFUSCkKKyAgICBjb25zdCBPcGVuVHlwZTo6TUFUSFRhYmxlKiBtYXRoID0gT3BlblR5
cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6Ok1BVEhUYWJsZT4obV9tYXRoQnVmZmVyKTsKKyAg
ICBBU1NFUlQobWF0aCk7CisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhHbHlwaEluZm8qIG1hdGhH
bHlwaEluZm8gPSBtYXRoLT5tYXRoR2x5cGhJbmZvKCptX21hdGhCdWZmZXIpOworICAgIGlmICgh
bWF0aEdseXBoSW5mbykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBPcGVuVHlwZTo6
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA9IG1h
dGhHbHlwaEluZm8tPm1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oKm1fbWF0aEJ1ZmZlcik7Cisg
ICAgaWYgKCFtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKSB7CisgICAgICAgIC8vIFRoaXMgTUFU
SCBmb250IGRvZXMgbm90IGNvbnRhaW4gaXRhbGljIGNvcnJlY3Rpb25zIHNvIHdlIGFzc3VtZSBp
dCBpcyB0aGUgU1RJWCBNYXRoLCB3aGljaCBpcyB0aGUgb25seSBwcmFjdGljYWwgbWF0aCBmb250
cyBtaXNzaW5nIHRoYXQgdGFibGUgKGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9zdGl4Zm9udHMv
dHJhY2tpbmcvNTAvKS4KKyAgICAgICAgY29uc3QgSXRhbGljQ29ycmVjdGlvbkVudHJ5KiBlbnRy
eSA9IHRyeUJpbmFyeVNlYXJjaDxjb25zdCBJdGFsaWNDb3JyZWN0aW9uRW50cnksIEl0YWxpY0Nv
cnJlY3Rpb25LZXk+KFNUSVhJdGFsaWNDb3JyZWN0aW9uLCBTVElYSXRhbGljQ29ycmVjdGlvbkNv
dW50LCBJdGFsaWNDb3JyZWN0aW9uS2V5KGdseXBoKSwgRXh0cmFjdEl0YWxpY0NvcnJlY3Rpb25L
ZXkpOworICAgICAgICBpZiAoIWVudHJ5KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBlbnRyeS0+aXRhbGljQ29ycmVjdGlvbiAqIGZvbnQtPnNpemVQZXJVbml0KCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8tPmdldEl0YWxpY0Nv
cnJlY3Rpb24oKm1fbWF0aEJ1ZmZlciwgZ2x5cGgpICogZm9udC0+c2l6ZVBlclVuaXQoKTsKKyNl
bHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30K
Kwordm9pZCBPcGVuVHlwZU1hdGhEYXRhOjpnZXRNYXRoVmFyaWFudHMoR2x5cGggZ2x5cGgsIGJv
b2wgaXNWZXJ0aWNhbCwgVmVjdG9yPEdseXBoPiYgc2l6ZVZhcmlhbnRzLCBWZWN0b3I8QXNzZW1i
bHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKK3sKKyAgICBzaXplVmFyaWFudHMuY2xlYXIo
KTsKKyAgICBhc3NlbWJseVBhcnRzLmNsZWFyKCk7CisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgp
CisgICAgY29uc3QgT3BlblR5cGU6Ok1BVEhUYWJsZSogbWF0aCA9IE9wZW5UeXBlOjp2YWxpZGF0
ZVRhYmxlPE9wZW5UeXBlOjpNQVRIVGFibGU+KG1fbWF0aEJ1ZmZlcik7CisgICAgQVNTRVJUKG1h
dGgpOworICAgIGNvbnN0IE9wZW5UeXBlOjpNYXRoVmFyaWFudHMqIG1hdGh2YXJpYW50cyA9IG1h
dGgtPm1hdGhWYXJpYW50cygqbV9tYXRoQnVmZmVyKTsKKyAgICBBU1NFUlQobWF0aHZhcmlhbnRz
KTsKKworICAgIGNvbnN0IE9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlw
aENvbnN0cnVjdGlvbiA9IG1hdGh2YXJpYW50cy0+bWF0aEdseXBoQ29uc3RydWN0aW9uKCptX21h
dGhCdWZmZXIsIGdseXBoLCBpc1ZlcnRpY2FsKTsKKyAgICBpZiAoIW1hdGhHbHlwaENvbnN0cnVj
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbWF0aEdseXBoQ29uc3RydWN0aW9uLT5nZXRT
aXplVmFyaWFudHMoKm1fbWF0aEJ1ZmZlciwgc2l6ZVZhcmlhbnRzKTsKKyAgICBtYXRoR2x5cGhD
b25zdHJ1Y3Rpb24tPmdldEFzc2VtYmx5UGFydHMoKm1fbWF0aEJ1ZmZlciwgYXNzZW1ibHlQYXJ0
cyk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kYzQ3OGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC0w
LDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEZyZWRlcmljIFdhbmcgKGZy
ZWQud2FuZ0BmcmVlLmZyKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgT3BlblR5cGVNYXRoRGF0YV9oCisjZGVmaW5lIE9wZW5UeXBlTWF0aERhdGFf
aAorCisjaW5jbHVkZSAiR2x5cGguaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNpbXBs
ZUZvbnREYXRhOworY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKKworY2xhc3MgT3BlblR5cGVNYXRo
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBjcmVhdGUoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgZm9udERhdGEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE9wZW5UeXBlTWF0aERhdGEoZm9udERhdGEpKTsKKyAgICB9CisKKyAgICBib29sIGhhc01hdGhE
YXRhKCkgY29uc3QgeyByZXR1cm4gISFtX21hdGhCdWZmZXI7IH0KKworICAgIC8vIFRoZXNlIGNv
bnN0YW50cyBhcmUgZGVmaW5lZCBpbiB0aGUgTUFUSCB0YWJsZS4KKyAgICAvLyBUaGUgaW1wbGVt
ZW50YXRpb24gb2YgT3BlblR5cGVNYXRoRGF0YTo6Z2V0TWF0aENvbnN0YW50IGFzc3VtZXMgdGhh
dCB0aGV5IGNvcnJlc3BvbmQgdG8gdGhlIGluZGljZXMgb2YgdGhlIE1hdGhDb250YW50IHRhYmxl
LgorICAgIGVudW0gTWF0aENvbnN0YW50IHsKKyAgICAgICAgU2NyaXB0UGVyY2VudFNjYWxlRG93
biwKKyAgICAgICAgU2NyaXB0U2NyaXB0UGVyY2VudFNjYWxlRG93biwKKyAgICAgICAgRGVsaW1p
dGVkU3ViRm9ybXVsYU1pbkhlaWdodCwKKyAgICAgICAgRGlzcGxheU9wZXJhdG9yTWluSGVpZ2h0
LAorICAgICAgICBNYXRoTGVhZGluZywKKyAgICAgICAgQXhpc0hlaWdodCwKKyAgICAgICAgQWNj
ZW50QmFzZUhlaWdodCwKKyAgICAgICAgRmxhdHRlbmVkQWNjZW50QmFzZUhlaWdodCwKKyAgICAg
ICAgU3Vic2NyaXB0U2hpZnREb3duLAorICAgICAgICBTdWJzY3JpcHRUb3BNYXgsCisgICAgICAg
IFN1YnNjcmlwdEJhc2VsaW5lRHJvcE1pbiwKKyAgICAgICAgU3VwZXJzY3JpcHRTaGlmdFVwLAor
ICAgICAgICBTdXBlcnNjcmlwdFNoaWZ0VXBDcmFtcGVkLAorICAgICAgICBTdXBlcnNjcmlwdEJv
dHRvbU1pbiwKKyAgICAgICAgU3VwZXJzY3JpcHRCYXNlbGluZURyb3BNYXgsCisgICAgICAgIFN1
YlN1cGVyc2NyaXB0R2FwTWluLAorICAgICAgICBTdXBlcnNjcmlwdEJvdHRvbU1heFdpdGhTdWJz
Y3JpcHQsCisgICAgICAgIFNwYWNlQWZ0ZXJTY3JpcHQsCisgICAgICAgIFVwcGVyTGltaXRHYXBN
aW4sCisgICAgICAgIFVwcGVyTGltaXRCYXNlbGluZVJpc2VNaW4sCisgICAgICAgIExvd2VyTGlt
aXRHYXBNaW4sCisgICAgICAgIExvd2VyTGltaXRCYXNlbGluZURyb3BNaW4sCisgICAgICAgIFN0
YWNrVG9wU2hpZnRVcCwKKyAgICAgICAgU3RhY2tUb3BEaXNwbGF5U3R5bGVTaGlmdFVwLAorICAg
ICAgICBTdGFja0JvdHRvbVNoaWZ0RG93biwKKyAgICAgICAgU3RhY2tCb3R0b21EaXNwbGF5U3R5
bGVTaGlmdERvd24sCisgICAgICAgIFN0YWNrR2FwTWluLAorICAgICAgICBTdGFja0Rpc3BsYXlT
dHlsZUdhcE1pbiwKKyAgICAgICAgU3RyZXRjaFN0YWNrVG9wU2hpZnRVcCwKKyAgICAgICAgU3Ry
ZXRjaFN0YWNrQm90dG9tU2hpZnREb3duLAorICAgICAgICBTdHJldGNoU3RhY2tHYXBBYm92ZU1p
biwKKyAgICAgICAgU3RyZXRjaFN0YWNrR2FwQmVsb3dNaW4sCisgICAgICAgIEZyYWN0aW9uTnVt
ZXJhdG9yU2hpZnRVcCwKKyAgICAgICAgRnJhY3Rpb25OdW1lcmF0b3JEaXNwbGF5U3R5bGVTaGlm
dFVwLAorICAgICAgICBGcmFjdGlvbkRlbm9taW5hdG9yU2hpZnREb3duLAorICAgICAgICBGcmFj
dGlvbkRlbm9taW5hdG9yRGlzcGxheVN0eWxlU2hpZnREb3duLAorICAgICAgICBGcmFjdGlvbk51
bWVyYXRvckdhcE1pbiwKKyAgICAgICAgRnJhY3Rpb25OdW1EaXNwbGF5U3R5bGVHYXBNaW4sCisg
ICAgICAgIEZyYWN0aW9uUnVsZVRoaWNrbmVzcywKKyAgICAgICAgRnJhY3Rpb25EZW5vbWluYXRv
ckdhcE1pbiwKKyAgICAgICAgRnJhY3Rpb25EZW5vbURpc3BsYXlTdHlsZUdhcE1pbiwKKyAgICAg
ICAgU2tld2VkRnJhY3Rpb25Ib3Jpem9udGFsR2FwLAorICAgICAgICBTa2V3ZWRGcmFjdGlvblZl
cnRpY2FsR2FwLAorICAgICAgICBPdmVyYmFyVmVydGljYWxHYXAsCisgICAgICAgIE92ZXJiYXJS
dWxlVGhpY2tuZXNzLAorICAgICAgICBPdmVyYmFyRXh0cmFBc2NlbmRlciwKKyAgICAgICAgVW5k
ZXJiYXJWZXJ0aWNhbEdhcCwKKyAgICAgICAgVW5kZXJiYXJSdWxlVGhpY2tuZXNzLAorICAgICAg
ICBVbmRlcmJhckV4dHJhRGVzY2VuZGVyLAorICAgICAgICBSYWRpY2FsVmVydGljYWxHYXAsCisg
ICAgICAgIFJhZGljYWxEaXNwbGF5U3R5bGVWZXJ0aWNhbEdhcCwKKyAgICAgICAgUmFkaWNhbFJ1
bGVUaGlja25lc3MsCisgICAgICAgIFJhZGljYWxFeHRyYUFzY2VuZGVyLAorICAgICAgICBSYWRp
Y2FsS2VybkJlZm9yZURlZ3JlZSwKKyAgICAgICAgUmFkaWNhbEtlcm5BZnRlckRlZ3JlZSwKKyAg
ICAgICAgUmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudAorICAgIH07CisKKyAgICBzdHJ1
Y3QgQXNzZW1ibHlQYXJ0IHsKKyAgICAgICAgR2x5cGggZ2x5cGg7CisgICAgICAgIGJvb2wgaXNF
eHRlbmRlcjsKKyAgICB9OworCisgICAgZmxvYXQgZ2V0TWF0aENvbnN0YW50KGNvbnN0IFNpbXBs
ZUZvbnREYXRhKiwgTWF0aENvbnN0YW50KSBjb25zdDsKKyAgICBmbG9hdCBnZXRJdGFsaWNDb3Jy
ZWN0aW9uKGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgR2x5cGgpIGNvbnN0OworICAgIHZvaWQgZ2V0
TWF0aFZhcmlhbnRzKEdseXBoLCBib29sIGlzVmVydGljYWwsIFZlY3RvcjxHbHlwaD4mIHNpemVW
YXJpYW50cywgVmVjdG9yPEFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0OworCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE9wZW5UeXBlTWF0aERhdGFfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVUeXBlcy5oCmluZGV4IGRhOWNlYTkuLjI4ZGNiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgK
QEAgLTEwMCw2ICsxMDAsODggQEAgcHJvdGVjdGVkOgogICAgIH0KIH07CiAKKyNpZiBFTkFCTEUo
T1BFTlRZUEVfVkVSVElDQUwpIHx8IEVOQUJMRShPUEVOVFlQRV9NQVRIKQorc3RydWN0IENvdmVy
YWdlVGFibGUgOiBUYWJsZUJhc2UgeworICAgIE9wZW5UeXBlOjpVSW50MTYgY292ZXJhZ2VGb3Jt
YXQ7Cit9OworCitzdHJ1Y3QgQ292ZXJhZ2UxVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKKyAgICBP
cGVuVHlwZTo6VUludDE2IGdseXBoQ291bnQ7CisgICAgT3BlblR5cGU6OkdseXBoSUQgZ2x5cGhB
cnJheVsxXTsKK307CisKK3N0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewor
ICAgIE9wZW5UeXBlOjpVSW50MTYgcmFuZ2VDb3VudDsKKyAgICBzdHJ1Y3QgUmFuZ2VSZWNvcmQg
eworICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCBzdGFydDsKKyAgICAgICAgT3BlblR5cGU6Okds
eXBoSUQgZW5kOworICAgICAgICBPcGVuVHlwZTo6VUludDE2IHN0YXJ0Q292ZXJhZ2VJbmRleDsK
KyAgICB9IHJhbmdlc1sxXTsKK307CisjZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FM
KSB8fCBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKKworI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQor
c3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBi
b29sCisgICAgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJh
Z2VJbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdl
Rm9ybWF0KSB7CisgICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQorICAgICAg
ICAgICAgY29uc3QgQ292ZXJhZ2UxVGFibGUqIGNvdmVyYWdlMSA9IHZhbGlkYXRlUHRyPENvdmVy
YWdlMVRhYmxlPihidWZmZXIsIGNvdmVyYWdlKTsKKyAgICAgICAgICAgIGlmICghY292ZXJhZ2Ux
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHVpbnQxNl90IGds
eXBoQ291bnQgPSBjb3ZlcmFnZTEtPmdseXBoQ291bnQ7CisgICAgICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmY292ZXJhZ2UxLT5nbHlwaEFycmF5W2dseXBoQ291bnRdKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIFdlIGRvIGEgYmluYXJ5
IHNlYXJjaCBvbiB0aGUgZ2x5cGggaW5kZXhlcy4KKyAgICAgICAgICAgIHVpbnQzMl90IGltaW4g
PSAwLCBpbWF4ID0gZ2x5cGhDb3VudDsKKyAgICAgICAgICAgIHdoaWxlIChpbWluIDwgaW1heCkg
eworICAgICAgICAgICAgICAgIHVpbnQzMl90IGltaWQgPSAoaW1pbiArIGltYXgpID4+IDE7Cisg
ICAgICAgICAgICAgICAgdWludDE2X3QgZ2x5cGhNaWQgPSBjb3ZlcmFnZTEtPmdseXBoQXJyYXlb
aW1pZF07CisgICAgICAgICAgICAgICAgaWYgKGdseXBoTWlkID09IGdseXBoKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvdmVyYWdlSW5kZXggPSBpbWlkOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGdseXBo
TWlkIDwgZ2x5cGgpCisgICAgICAgICAgICAgICAgICAgIGltaW4gPSBpbWlkICsgMTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGltYXggPSBpbWlkOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAyOiB7
IC8vIENvdmVyYWdlIEZvcm1hdCAyCisgICAgICAgICAgICBjb25zdCBDb3ZlcmFnZTJUYWJsZSog
Y292ZXJhZ2UyID0gdmFsaWRhdGVQdHI8Q292ZXJhZ2UyVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2Up
OworICAgICAgICAgICAgaWYgKCFjb3ZlcmFnZTIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgdWludDE2X3QgcmFuZ2VDb3VudCA9IGNvdmVyYWdlMi0+cmFuZ2VD
b3VudDsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjb3ZlcmFnZTItPnJh
bmdlc1tyYW5nZUNvdW50XSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgICAgICAvLyBXZSBkbyBhIGJpbmFyeSBzZWFyY2ggb24gdGhlIHJhbmdlcy4KKyAgICAgICAg
ICAgIHVpbnQzMl90IGltaW4gPSAwLCBpbWF4ID0gcmFuZ2VDb3VudDsKKyAgICAgICAgICAgIHdo
aWxlIChpbWluIDwgaW1heCkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IGltaWQgPSAoaW1p
biArIGltYXgpID4+IDE7CisgICAgICAgICAgICAgICAgdWludDE2X3QgclN0YXJ0ID0gY292ZXJh
Z2UyLT5yYW5nZXNbaW1pZF0uc3RhcnQ7CisgICAgICAgICAgICAgICAgdWludDE2X3QgckVuZCA9
IGNvdmVyYWdlMi0+cmFuZ2VzW2ltaWRdLmVuZDsKKyAgICAgICAgICAgICAgICBpZiAockVuZCA8
IGdseXBoKQorICAgICAgICAgICAgICAgICAgICBpbWluID0gaW1pZCArIDE7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZ2x5cGggPCByU3RhcnQpCisgICAgICAgICAgICAgICAgICAgIGltYXgg
PSBpbWlkOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb3Zl
cmFnZUluZGV4ID0gY292ZXJhZ2UyLT5yYW5nZXNbaW1pZF0uc3RhcnRDb3ZlcmFnZUluZGV4ICsg
Z2x5cGggLSByU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgT3BlblR5cGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAv
LyBPcGVuVHlwZVR5cGVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRl
eCAzNWFlNzFkLi43YzM3MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
CkBAIC0xMTIsMjQgKzExMiw2IEBAIHN0cnVjdCBWT1JHVGFibGUgewogICAgIHNpemVfdCByZXF1
aXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBzaXplb2YoKnRoaXMpICsgc2l6ZW9mKFZlcnRPcmln
aW5ZTWV0cmljcykgKiAobnVtVmVydE9yaWdpbllNZXRyaWNzIC0gMSk7IH0KIH07CiAKLXN0cnVj
dCBDb3ZlcmFnZVRhYmxlIDogVGFibGVCYXNlIHsKLSAgICBPcGVuVHlwZTo6VUludDE2IGNvdmVy
YWdlRm9ybWF0OwotfTsKLQotc3RydWN0IENvdmVyYWdlMVRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7
Ci0gICAgT3BlblR5cGU6OlVJbnQxNiBnbHlwaENvdW50OwotICAgIE9wZW5UeXBlOjpHbHlwaElE
IGdseXBoQXJyYXlbMV07Ci19OwotCi1zdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRh
YmxlIHsKLSAgICBPcGVuVHlwZTo6VUludDE2IHJhbmdlQ291bnQ7Ci0gICAgc3RydWN0IFJhbmdl
UmVjb3JkIHsKLSAgICAgICAgT3BlblR5cGU6OkdseXBoSUQgc3RhcnQ7Ci0gICAgICAgIE9wZW5U
eXBlOjpHbHlwaElEIGVuZDsKLSAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBzdGFydENvdmVyYWdl
SW5kZXg7Ci0gICAgfSByYW5nZXNbMV07Ci19OwotCiBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227414</attachid>
            <date>2014-03-21 04:34:50 -0700</date>
            <delta_ts>2014-03-21 04:52:20 -0700</delta_ts>
            <desc>Patch + 130572 for testing</desc>
            <filename>read-MATH-all.patch</filename>
            <type>text/plain</type>
            <size>44949</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZDQ4MDI3Ny4uMjY4ZGVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMy0yMSAg
RnLDqWTDqXJpYyBXYW5nICA8ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgT3BlcmF0b3Ig
c3RyZXRjaGluZzogcmVhZCB0aGUgT3BlbiBUeXBlIE1BVEggdGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMyNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IGVuYWJs
ZSBPUEVOVFlQRV9NQVRIIG9uIHBsYXRmb3JtcyB0aGF0IGNhbiByZWFkIE9wZW5UeXBlIHRhYmxl
cy4KKwogMjAxNC0wMy0yMCAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgTW92ZSB0byB1c2luZyBzdGQ6OnVuaXF1ZV9wdHIgZm9yIEVGTCBvYmplY3RzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKaW5kZXggYWU1ZjVmOS4uZGUxYTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMDQ2LDQg
KzEwNDYsOSBAQAogI2RlZmluZSBIQVZFX05TX0FDVElWSVRZIDEKICNlbmRpZgogCisjaWYgT1Mo
REFSV0lOKSB8fCBVU0UoRlJFRVRZUEUpIHx8IChQTEFURk9STShXSU4pICYmIChVU0UoQ0cpIHx8
IFVTRShDQUlSTykpKQorI3VuZGVmIEVOQUJMRV9PUEVOVFlQRV9NQVRICisjZGVmaW5lIEVOQUJM
RV9PUEVOVFlQRV9NQVRIIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMGM0ZjVlMC4uZjdiYTg1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5NDUsNiArMTk0NSw4IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYyYWFlNGUuLjgzNGJk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxNC0wMy0yMSAgRnLDqWTDqXJpYyBX
YW5nICA8ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgT3BlcmF0b3Igc3RyZXRjaGluZzog
cmVhZCB0aGUgT3BlbiBUeXBlIE1BVEggdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIHBhcnNlIGFuZCBleHBvc2Ugc29tZSBkYXRhIGZyb20g
dGhlIE9wZW5UeXBlIE1BVEggdGFibGUgdGhhdCB3aWxsIGJlCisgICAgICAgIGJlIHJlbGV2YW50
IGZvciBhdCBsZWFzdCB0aGUgTWF0aE1MIG9wZXJhdG9yIHN0cmV0Y2hpbmcgKGJ1ZyAxMzAzMjIp
OgorICAgICAgICBtYXRoIGNvbnN0YW50cywgaXRhbGljIGNvcnJlY3Rpb25zIGFuZCBzaXplIHZh
cmlhbnRzIC8gZ2x5cGggYXNzZW1ibHkuCisgICAgICAgIFRoaXMgd2lsbCBiZSB0ZXN0ZWQgd2hl
biB0aGUgTWF0aE1MIGNvZGUgdXNlcyB0aGUgZGF0YS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIE9wZW5UeXBlVHlwZXMuaCB0byB0aGUgTWFjIGJ1
aWxkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuY3BwOiBXZSBpbXBsZW1lbnQgdGhlIGxvdy1sZXZlbCBwYXJzaW5nIG9mIHRoZSBNQVRIIHRh
YmxlLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm86OmdldEl0YWxpY0NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1h
dGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246Omdl
dEFzc2VtYmx5UGFydHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50
czo6bWF0aEdseXBoQ29uc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpN
QVRIVGFibGU6Om1hdGhDb25zdGFudHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1B
VEhUYWJsZTo6bWF0aEdseXBoSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFU
SFRhYmxlOjptYXRoVmFyaWFudHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVNYXRoRGF0
YTo6T3BlblR5cGVNYXRoRGF0YSk6IFdlIGxvYWQgdGhlIE1BVEggdGFibGUuCisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZU1hdGhEYXRhOjpnZXRNYXRoQ29uc3RhbnQpOiBXZSBhZGQgYSBmdW5j
dGlvbiB0byBnZXQgdmFsdWVzIGZyb20gdGhlIE1hdGhDb25zdGFudCBzdWJ0YWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6OmdldEl0YWxpY0NvcnJlY3Rpb24pOiBXZSBh
ZGQgYSBmdW5jdGlvbiB0byBnZXQgaXRhbGljIGNvcnJlY3Rpb24gZnJvbSB0aGUgTWF0aEdseXBo
SW5mbyBzdWJ0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6OmdldE1h
dGhWYXJpYW50cyk6IFdlIGFkZCBhIGZ1bmN0aW9uIHRvIGdldCBzaXplIHZhcmlhbnRzIC8gZ2x5
cGggYXNzZW1ibHkgZnJvbSB0aGUgTWF0aFZhcmlhbnRzIHN1YnRhYmxlLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDogV2UgZXhwb3NlIHRo
cmVlIG5ldyBmdW5jdGlvbnMgdG8gZ2V0IG1hdGggZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6IFdlIHNoYXJlIHRoZSBjb3ZlcmFnZSB0
YWJsZXMgdGhhdCBhcmUgY29tbW9uIHRvIHZlcnRpY2FsIGFuZCBtYXRoIGRhdGEuCisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXgp
OiBXZSBhZGQgYSBmdW5jdGlvbiB0byBnZXQgdGhlIGNvdmVyYWdlIGluZGV4IGZyb20gYSBnaXZl
biBnbHlwaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZl
cnRpY2FsRGF0YS5jcHA6IFdlIG1vdmUgdGhlIGNvdmVyYWdlIHRhYmxlcyB0byBPcGVuVHlwZVR5
cGVzLmguCisKKzIwMTQtMDMtMjEgIEZyw6lkw6lyaWMgV2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZy
PgorCisgICAgICAgIE9wZXJhdG9yIHN0cmV0Y2hpbmc6IGV4cG9zZSBhIG1hdGggZGF0YSBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDU3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGV4cG9z
ZSBhIG5ldyBTaW1wbGVGb250RGF0YSBBUEkgdG8gZ2l2ZSBhY2Nlc3MgdG8gdGhlIGRhdGEgZnJv
bSB0aGUKKyAgICAgICAgT3BlblR5cGUgTUFUSCB0YWJsZSB1c2luZyBhIGZvbnQgY2FjaGUuIFRo
ZSBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIHdpbGwKKyAgICAgICAgYmUgaW1wbGVtZW50ZWQgaW4g
YnVnIDEzMDMyNC4gT24gRGFyd2luIHBsYXRmb3JtLCB3ZSBhbHNvIGltcGxlbWVudCB0aGUKKyAg
ICAgICAgbWlzc2luZyBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGZ1bmN0aW9uIHdo
aWNoIHdpbGwgYmUgbmVjZXNzYXJ5CisgICAgICAgIHRvIGxvYWQgdGhlIE9wZW5UeXBlIE1BVEgg
dGFibGUuIFRoZSBjaGFuZ2VzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkCisgICAgICAgIGZvciBN
YXRoTUwgb3BlcmF0b3Igc3RyZXRjaGluZyAoYnVnIDEzMDMyMikgc28gdGVzdHMgYXJlIG5vdCBh
ZGRlZCB5ZXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogYWRkIG5ldyBPcGVuVHlwZU1h
dGhEYXRhIGZpbGVzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IGRpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IGRpdHRvLgorICAgICAgICAq
IFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczogZGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBkaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOiBXZSBhZGQgYSBGb250Q2FjaGU6OmdldE1h
dGhEYXRhIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBhIGNhY2hlIGZvciB0aGUgbWF0aCBkYXRhLgor
ICAgICAgICBXZSBtYWtlIHRoZSBtYXRoIGFuZCB2ZXJ0aWNhbCBkYXRhIHNoYXJlIHRoZSBzYW1l
IGtleSBmb3IgdGhlIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6Zm9udE1hdGhEYXRhQ2FjaGVJ
bnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldE1hdGhEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZvbnRWZXJ0aWNhbERhdGFDYWNoZUluc3RhbmNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDogV2UgZGVjbGFyZSBGb250Q2FjaGU6Omdl
dE1hdGhEYXRhIGFuZCBGb250RmlsZUtleSBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSk6IFdlIGltcGxlbWVudCBvcGVuVHlwZVRh
YmxlKCkgb24gRGFyd2luIHBsYXRmb3JtLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaDogV2UgZXhwb3NlIG9wZW5UeXBlVGFibGUoKSBvbiBEYXJ3aW4gcGxh
dGZvcm0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOiBX
ZSBpbml0aWFsaXplIG1fbWF0aERhdGEgZnJvbSB0aGUgZm9udCBjYWNoZS4KKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUZvbnREYXRhOjpTaW1wbGVGb250RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDogV2UgZXhwb3NlIGEgbWF0aERhdGEoKSBmdW5j
dGlvbiB0byBhY2Nlc3MgdGhlIE1BVEggZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDogQWRkZWQuIFRoaXMgaXMgYSBuZXcgY2xh
c3MgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcGFyc2UgdGhlIGRhdGEgZnJvbSB0aGUgT3BlblR5cGUg
TUFUSCB0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6Ok9wZW5UeXBl
TWF0aERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZU1hdGhEYXRhOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVNYXRoRGF0YTo6aGFzTWF0aERhdGEp
OgorCiAyMDE0LTAzLTIwICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLiBpT1MgYnVpbGQgZml4IGFmdGVyIHIxNjYwMTcsIHIxNjYwMzIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1ZTBhZDdhLi43ZmQwOWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTUzNTUsNiArNTM1NSw4IEBAIHdlYmNvcmVf
cGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdM
U2V0dGluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNDU5NzU3YS4uMGRl
NWNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC03OTQzLDYgKzc5NDMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luXEludFJlY3RXaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEludFNpemVXaW4uY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcT3BlblR5cGVNYXRoRGF0YS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlw
ZVV0aWxpdGllcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cU2ltcGxlRm9udERhdGFDYWly
b1dpbi5jcHAiPgpAQCAtMTkzMDEsNiArMTkzMDIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEZ1bGxTY3JlZW5Db250cm9sbGVyQ2xpZW50Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTG9j
YWxXaW5kb3dzQ29udGV4dC5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50
eXBlXE9wZW5UeXBlTWF0aERhdGEuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlVXRpbGl0
aWVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xv
cGVudHlwZVxPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDBiYTE4
NTguLjZlYmNhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTE0NzYsNiArMTQ3Niw5IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGlj
c1x3aW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlTWF0aERhdGEuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3Ncd2luPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlw
ZVxPcGVuVHlwZVV0aWxpdGllcy5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGlj
c1x3aW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTg0MTYsNiArODQxOSw5IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTG9jYWxXaW5k
b3dzQ29udGV4dC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3Ncd2luPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZU1hdGhEYXRhLmgiPgorICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljc1x3aW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlVHlw
ZXMuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXHdpbjwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDIyN2Y1OTAuLjMyMjQzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1ODYsNiArNDU4Niw5
IEBACiAJCUIyQzNEQTYzMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTUyMEQwMDZDRDYwMEVG
NkYyNiAvKiBGb250Q2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCMkMzREE2NDBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RB
NTMwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmNwcCAqLzsgfTsKIAkJQjJDM0RB
NjUwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREE1NDBEMDA2Q0Q2MDBFRjZGMjYgLyog
U2ltcGxlRm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCMkQzREE2NDBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkQzREE1
MzBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5jcHAgKi87IH07CisJCUIyRDNE
QTY1MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkQzREE1NDBEMDA2Q0Q2MDBFRjZGMjcg
LyogT3BlblR5cGVNYXRoRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUIyRDNFQTY1MEQwMDZDRDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkQzRUE1
NDBEMDA2Q0Q2MDBFRjZGMjggLyogT3BlblR5cGVUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyQzNEQTY2MEQwMDZDRDYwMEVGNkYyNiAv
KiBGb250RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyQzNEQTU1MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250RGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMkMzREE2
NzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEdseXBocy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREE1NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9u
dEdseXBocy5jcHAgKi87IH07CiAJCUIyQzNEQTY4MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250R2x5
cGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMz
REE1NzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEdseXBocy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTgxOCw2ICsxMTgyMSw5IEBACiAJCUIy
QzNEQTUyMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvbnRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMkMzREE1MzBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUZvbnREYXRhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0RBNTQwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBs
ZUZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVGb250
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMkQzREE1MzBEMDA2Q0Q2MDBF
RjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUIyRDNEQTU0MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBvcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRDNFQTU0MEQwMDZD
RDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBvcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyQzNEQTU1MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250RGVzY3JpcHRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREE1NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEds
eXBocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEdseXBo
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTU3MEQwMDZDRDYwMEVG
NkYyNiAvKiBGb250R2x5cGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b250R2x5cGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDA4NSw2ICsyMDA5
MSw5IEBACiAJCQkJMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLywK
IAkJCQlCMkMzREE1MzBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuY3BwICovLAog
CQkJCUIyQzNEQTU0MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVGb250RGF0YS5oICovLAorCQkJ
CUIyRDNEQTUzMEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmNwcCAqLywKKwkJ
CQlCMkQzREE1NDBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5oICovLAorCQkJ
CUIyRDNFQTU0MEQwMDZDRDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVzLmggKi8sCiAJCQkJQ0Q2
NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLywKIAkJCQlD
REM2MURBMDE4MDg2N0Q4MDA0QjkxM0YgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAogCQkJ
CUNEQzhCNUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmgg
Ki8sCkBAIC0yNTQxNiw2ICsyNTQyNSw4IEBACiAJCQkJRTFCNzgzOUMxNjM3NDBBNzAwMDdCNjky
IC8qIFNoYXJlZFdvcmtlclN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQxNjhFRTEw
MjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkMzREE2NTBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUIyRDNEQTY1MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCMkQzRUE2NTBEMDA2Q0Q2MDBFRjZGMjggLyogT3BlblR5cGVU
eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8qIFNp
bXBsZUxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RTlCMTFEMTgxNDU2OUMwMDNB
Q0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NEU5QjExOTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI4NzcxLDYgKzI4NzgyLDcgQEAKIAkJCQlFMUI3ODQyMDE2MzlDQkJF
MDAwN0I2OTIgLyogU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUQxNjhFRDEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyQzNEQTY0MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVGb250RGF0
YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMkQzREE2NDBEMDA2Q0Q2MDBFRjZGMjcgLyogT3Bl
blR5cGVNYXRoRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNjNFODhGNzExOEEzOUQyMDBF
RDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
N0U2NTk1MDE2M0IxMEMyMDBFQjQ1NzQgLyogU2ltcGxlRm9udERhdGFJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCMkFGRkM3RjBEMDBBNUMxMDAzMDA3NEQgLyogU2ltcGxlRm9udERhdGFNYWMu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCmluZGV4IDhjZGZmMTIuLjI4YWE4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkZvbnRHbHlwaHMuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5j
bHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiT3BlblR5cGVNYXRoRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYktpdEZvbnRGYW1pbHlOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC0yNjYsOCArMjY3LDcgQEAgRm9udFBs
YXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm8KICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogfQogCi0jaWYg
RU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQotc3RydWN0IEZvbnRWZXJ0aWNhbERhdGFDYWNoZUtl
eUhhc2ggeworc3RydWN0IEZvbnRGaWxlQ2FjaGVLZXlIYXNoIHsKICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBGb250Q2FjaGU6OkZvbnRGaWxlS2V5JiBmb250RmlsZUtleSkKICAgICB7
CiAgICAgICAgIHJldHVybiBQdHJIYXNoPGNvbnN0IEZvbnRDYWNoZTo6Rm9udEZpbGVLZXkqPjo6
aGFzaCgmZm9udEZpbGVLZXkpOwpAQCAtMjgxLDcgKzI4MSw3IEBAIHN0cnVjdCBGb250VmVydGlj
YWxEYXRhQ2FjaGVLZXlIYXNoIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogCi1zdHJ1Y3QgRm9udFZlcnRpY2FsRGF0YUNh
Y2hlS2V5VHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxGb250Q2FjaGU6OkZvbnRGaWxl
S2V5PiB7CitzdHJ1Y3QgRm9udEZpbGVDYWNoZUtleVRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hU
cmFpdHM8Rm9udENhY2hlOjpGb250RmlsZUtleT4gewogICAgIHN0YXRpYyBjb25zdCBib29sIGVt
cHR5VmFsdWVJc1plcm8gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBGb250Q2FjaGU6OkZvbnRGaWxlS2V5JiBl
bXB0eVZhbHVlKCkKQEAgLTI5OSw5ICsyOTksMzIgQEAgc3RydWN0IEZvbnRWZXJ0aWNhbERhdGFD
YWNoZUtleVRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8Rm9udENhY2hlOjpGb250RmkK
ICAgICB9CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8Rm9udENhY2hlOjpGb250RmlsZUtleSwgUmVm
UHRyPE9wZW5UeXBlVmVydGljYWxEYXRhPiwgRm9udFZlcnRpY2FsRGF0YUNhY2hlS2V5SGFzaCwg
Rm9udFZlcnRpY2FsRGF0YUNhY2hlS2V5VHJhaXRzPiBGb250VmVydGljYWxEYXRhQ2FjaGU7Cit0
eXBlZGVmIEhhc2hNYXA8Rm9udENhY2hlOjpGb250RmlsZUtleSwgUmVmUHRyPE9wZW5UeXBlTWF0
aERhdGE+LCBGb250RmlsZUNhY2hlS2V5SGFzaCwgRm9udEZpbGVDYWNoZUtleVRyYWl0cz4gRm9u
dE1hdGhEYXRhQ2FjaGU7CisKK3N0YXRpYyBGb250TWF0aERhdGFDYWNoZSYgZm9udE1hdGhEYXRh
Q2FjaGVJbnN0YW5jZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRNYXRoRGF0
YUNhY2hlPiBmb250TWF0aERhdGFDYWNoZTsKKyAgICByZXR1cm4gZm9udE1hdGhEYXRhQ2FjaGU7
Cit9CisKK1Bhc3NSZWZQdHI8T3BlblR5cGVNYXRoRGF0YT4gRm9udENhY2hlOjpnZXRNYXRoRGF0
YShjb25zdCBGb250RmlsZUtleSYga2V5LCBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250RGF0
YSkKK3sKKyAgICBGb250TWF0aERhdGFDYWNoZSYgZm9udE1hdGhEYXRhQ2FjaGUgPSBmb250TWF0
aERhdGFDYWNoZUluc3RhbmNlKCk7CisgICAgRm9udE1hdGhEYXRhQ2FjaGU6Oml0ZXJhdG9yIHJl
c3VsdCA9IGZvbnRNYXRoRGF0YUNhY2hlLmZpbmQoa2V5KTsKKyAgICBpZiAocmVzdWx0ICE9IGZv
bnRNYXRoRGF0YUNhY2hlLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LmdldCgpLT52YWx1
ZTsKKworICAgIFJlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBtYXRoRGF0YSA9IE9wZW5UeXBlTWF0
aERhdGE6OmNyZWF0ZShmb250RGF0YSk7CisgICAgaWYgKCFtYXRoRGF0YS0+aGFzTWF0aERhdGEo
KSkKKyAgICAgICAgbWF0aERhdGEuY2xlYXIoKTsKKyAgICBmb250TWF0aERhdGFDYWNoZS5zZXQo
a2V5LCBtYXRoRGF0YSk7CisgICAgcmV0dXJuIG1hdGhEYXRhOworfQorCisjaWYgRU5BQkxFKE9Q
RU5UWVBFX1ZFUlRJQ0FMKQordHlwZWRlZiBIYXNoTWFwPEZvbnRDYWNoZTo6Rm9udEZpbGVLZXks
IFJlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4sIEZvbnRGaWxlQ2FjaGVLZXlIYXNoLCBGb250
RmlsZUNhY2hlS2V5VHJhaXRzPiBGb250VmVydGljYWxEYXRhQ2FjaGU7CiAKLUZvbnRWZXJ0aWNh
bERhdGFDYWNoZSYgZm9udFZlcnRpY2FsRGF0YUNhY2hlSW5zdGFuY2UoKQorc3RhdGljIEZvbnRW
ZXJ0aWNhbERhdGFDYWNoZSYgZm9udFZlcnRpY2FsRGF0YUNhY2hlSW5zdGFuY2UoKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250VmVydGljYWxEYXRhQ2FjaGU+IGZvbnRWZXJ0aWNh
bERhdGFDYWNoZTsKICAgICByZXR1cm4gZm9udFZlcnRpY2FsRGF0YUNhY2hlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCBjM2U4ZTcxLi5lOWJi
ZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApA
QCAtNTQsNiArNTQsNyBAQCBjbGFzcyBGb250OwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKIGNs
YXNzIEZvbnREYXRhOwogY2xhc3MgRm9udFNlbGVjdG9yOworY2xhc3MgT3BlblR5cGVNYXRoRGF0
YTsKIGNsYXNzIE9wZW5UeXBlVmVydGljYWxEYXRhOwogY2xhc3MgU2ltcGxlRm9udERhdGE7CiAK
QEAgLTE1MSw4ICsxNTIsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0
YT4gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIFNob3VsZFJldGFpbiwgY29uc3QgTE9HRk9OVCYsIEF0b21pY1N0cmluZyYgb3V0Rm9udEZh
bWlseU5hbWUpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAgICAg
dHlwZWRlZiBBdG9taWNTdHJpbmcgRm9udEZpbGVLZXk7CisgICAgUGFzc1JlZlB0cjxPcGVuVHlw
ZU1hdGhEYXRhPiBnZXRNYXRoRGF0YShjb25zdCBGb250RmlsZUtleSYsIGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmKTsKKyNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAgICAgUGFzc1JlZlB0
cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gZ2V0VmVydGljYWxEYXRhKGNvbnN0IEZvbnRGaWxlS2V5
JiwgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNTMw
OGViZC4uM2MwNWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKQEAgLTI3LDYgKzI3LDExIEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPEFw
cGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCkBAIC0xNjksNCArMTc0LDE2IEBAIGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBvdGhlCiAgICAgcmV0dXJuIHBsYXRmb3JtRGF0YUFzc2lnbihvdGhlcik7CiB9
CiAKKyNpZiBPUyhEQVJXSU4pCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK3sKKyAgICBDR0ZvbnRS
ZWYgZm9udCA9IGNnRm9udCgpOworICAgIENGRGF0YVJlZiBkYXRhID0gQ0dGb250Q29weVRhYmxl
Rm9yVGFnKGZvbnQsIHRhYmxlKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShkYXRhKTsKK30KKyNl
bmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
UGxhdGZvcm1EYXRhLmgKaW5kZXggYmZhNTcwOS4uMTg1NzZlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMjE2LDcg
KzIxNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotI2lmIFBMQVRGT1JNKFdJTikgJiYg
KFVTRShDRykgfHwgVVNFKENBSVJPKSkKKyNpZiBPUyhEQVJXSU4pIHx8IChQTEFURk9STShXSU4p
ICYmIChVU0UoQ0cpIHx8IFVTRShDQUlSTykpKQogICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAKaW5k
ZXggNDVlNWI2Yy4uZmE5M2ExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVk
ZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIk9wZW5UeXBlTWF0
aERhdGEuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKE9QRU5U
WVBFX1ZFUlRJQ0FMKQpAQCAtNTIsNiArNTMsNyBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9u
dERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBib29sIGlzQ3VzdAog
ICAgICwgbV9pc0xvYWRpbmcoaXNMb2FkaW5nKQogICAgICwgbV9pc1RleHRPcmllbnRhdGlvbkZh
bGxiYWNrKGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2spCiAgICAgLCBtX2lzQnJva2VuSWRlb2dy
YXBoRmFsbGJhY2soZmFsc2UpCisgICAgLCBtX21hdGhEYXRhKG51bGxwdHIpCiAjaWYgRU5BQkxF
KE9QRU5UWVBFX1ZFUlRJQ0FMKQogICAgICwgbV92ZXJ0aWNhbERhdGEoMCkKICNlbmRpZgpAQCAt
NjAsNiArNjIsNyBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBib29sIGlzQ3VzdAogICAgIHBsYXRmb3JtSW5pdCgp
OwogICAgIHBsYXRmb3JtR2x5cGhJbml0KCk7CiAgICAgcGxhdGZvcm1DaGFyV2lkdGhJbml0KCk7
CisgICAgbV9tYXRoRGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRNYXRoRGF0YShTdHJpbmc6Om51bWJl
cihwbGF0Zm9ybURhdGEuaGFzaCgpKSwgcGxhdGZvcm1EYXRhKTsKICNpZiBFTkFCTEUoT1BFTlRZ
UEVfVkVSVElDQUwpCiAgICAgaWYgKHBsYXRmb3JtRGF0YS5vcmllbnRhdGlvbigpID09IFZlcnRp
Y2FsICYmICFpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKSB7CiAgICAgICAgIG1fdmVydGljYWxE
YXRhID0gcGxhdGZvcm1EYXRhLnZlcnRpY2FsRGF0YSgpOwpAQCAtNzYsNiArNzksNyBAQCBTaW1w
bGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoc3RkOjp1bmlxdWVfcHRyPEFkZGl0aW9uYWxGb250
RGF0YT4gZm9udERhdGEsIGZsbwogICAgICwgbV9pc0xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX2lz
VGV4dE9yaWVudGF0aW9uRmFsbGJhY2soZmFsc2UpCiAgICAgLCBtX2lzQnJva2VuSWRlb2dyYXBo
RmFsbGJhY2soZmFsc2UpCisgICAgLCBtX21hdGhEYXRhKG51bGxwdHIpCiAjaWYgRU5BQkxFKE9Q
RU5UWVBFX1ZFUlRJQ0FMKQogICAgICwgbV92ZXJ0aWNhbERhdGEoMCkKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKaW5kZXgg
NWRhNWM5OC4uZDhjYzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR2x5cGhC
dWZmZXIuaCIKICNpbmNsdWRlICJHbHlwaE1ldHJpY3NNYXAuaCIKICNpbmNsdWRlICJHbHlwaFBh
Z2VUcmVlTm9kZS5oIgorI2luY2x1ZGUgIk9wZW5UeXBlTWF0aERhdGEuaCIKICNpZiBFTkFCTEUo
T1BFTlRZUEVfVkVSVElDQUwpCiAjaW5jbHVkZSAiT3BlblR5cGVWZXJ0aWNhbERhdGEuaCIKICNl
bmRpZgpAQCAtOTIsNiArOTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBzeXN0ZW1GYWxsYmFjaygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
U2ltcGxlRm9udERhdGEqPigtMSk7IH0KIAogICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EYXRhOyB9CisgICAgY29uc3Qg
T3BlblR5cGVNYXRoRGF0YSogbWF0aERhdGEoKSBjb25zdCB7IHJldHVybiBtX21hdGhEYXRhLmdl
dCgpOyB9CiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQogICAgIGNvbnN0IE9wZW5UeXBl
VmVydGljYWxEYXRhKiB2ZXJ0aWNhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsRGF0
YS5nZXQoKTsgfQogI2VuZGlmCkBAIC0yNTksNiArMjYxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9pc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrOwogICAgIGJvb2wgbV9pc0Jyb2tlbklkZW9n
cmFwaEZhbGxiYWNrOworICAgIFJlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBtX21hdGhEYXRhOwog
I2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKICAgICBSZWZQdHI8T3BlblR5cGVWZXJ0aWNh
bERhdGE+IG1fdmVydGljYWxEYXRhOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkODhlMmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmNwcApAQCAtMCwwICsxLDMzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBGcmVkZXJpYyBXYW5nIChmcmVkLndhbmdAZnJlZS5mcikuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiT3Bl
blR5cGVNYXRoRGF0YS5oIgorCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorI2lmIEVO
QUJMRShPUEVOVFlQRV9NQVRIKQorI2luY2x1ZGUgIk9wZW5UeXBlVHlwZXMuaCIKKyNlbmRpZgor
I2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQorbmFtZXNwYWNl
IE9wZW5UeXBlIHsKKworY29uc3QgdWludDMyX3QgTUFUSFRhZyA9IE9UX01BS0VfVEFHKCdNJywg
J0EnLCAnVCcsICdIJyk7CisKKyNwcmFnbWEgcGFjaygxKQorCitzdHJ1Y3QgTWF0aFZhbHVlUmVj
b3JkIHsKKyAgICBPcGVuVHlwZTo6SW50MTYgdmFsdWU7CisgICAgT3BlblR5cGU6Ok9mZnNldCBk
ZXZpY2VUYWJsZU9mZnNldDsKK307CisKK3N0cnVjdCBNYXRoQ29uc3RhbnRzIHsKKyAgICBPcGVu
VHlwZTo6SW50MTYgaW50Q29uc3RhbnRzW09wZW5UeXBlTWF0aERhdGE6OlNjcmlwdFNjcmlwdFBl
cmNlbnRTY2FsZURvd24gLSBPcGVuVHlwZU1hdGhEYXRhOjpTY3JpcHRQZXJjZW50U2NhbGVEb3du
ICsgMV07CisgICAgT3BlblR5cGU6OlVJbnQxNiB1SW50Q29uc3RhbnRzW09wZW5UeXBlTWF0aERh
dGE6OkRpc3BsYXlPcGVyYXRvck1pbkhlaWdodCAtIE9wZW5UeXBlTWF0aERhdGE6OkRlbGltaXRl
ZFN1YkZvcm11bGFNaW5IZWlnaHQgKyAxXTsKKyAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3Jk
IG1hdGhWYWx1ZXNDb25zdGFudHNbT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbEtlcm5BZnRlckRl
Z3JlZSAtIE9wZW5UeXBlTWF0aERhdGE6Ok1hdGhMZWFkaW5nICsgMV07CisgICAgT3BlblR5cGU6
OlVJbnQxNiByYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50OworfTsKKworc3RydWN0IE1h
dGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CisgICAgT3BlblR5
cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsKKyAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3ND
b3JyZWN0aW9uQ291bnQ7CisgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29y
cmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNv
cnJlY3Rpb24gdmFsdWVzLgorCisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICB7CisgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CisgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gY292ZXJh
Z2VPZmZzZXQ7CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlID0gdmFsaWRhdGVPZmZzZXQ8Q292
ZXJhZ2VUYWJsZT4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICBpZiAoIWNvdmVyYWdlKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gV2UgZGV0ZXJtaW5lIHRoZSBpbmRleCBp
biB0aGUgaXRhbGljc0NvcnJlY3Rpb24gdGFibGUuCisgICAgICAgIHVpbnQzMl90IGk7CisgICAg
ICAgIGlmICghZ2V0Q292ZXJhZ2VJbmRleChidWZmZXIsIGNvdmVyYWdlLCBnbHlwaCwgaSkgfHwg
aT49IGNvdW50KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIGludDE2
X3QoaXRhbGljc0NvcnJlY3Rpb25baV0udmFsdWUpOworICAgIH0KK307CisKK3N0cnVjdCBNYXRo
R2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgeworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhU
b3BBY2NlbnRBdHRhY2htZW50T2Zmc2V0OworICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRT
aGFwZUNvdmVyYWdlT2Zmc2V0OworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zm
c2V0OworCisgICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3ND
b3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7
CisgICAgICAgIGlmIChvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbz4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9Cit9OworCitzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFz
ZSB7CisgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvbjsKKyAg
ICBPcGVuVHlwZTo6VUludDE2IHBhcnRDb3VudDsKKyAgICBzdHJ1Y3QgR2x5cGhQYXJ0UmVjb3Jk
IHsKKyAgICAgICAgT3BlblR5cGU6OkdseXBoSUQgZ2x5cGg7CisgICAgICAgIE9wZW5UeXBlOjpV
SW50MTYgc3RhcnRDb25uZWN0b3JMZW5ndGg7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgZW5k
Q29ubmVjdG9yTGVuZ3RoOworICAgICAgICBPcGVuVHlwZTo6VUludDE2IGZ1bGxBZHZhbmNlOwor
ICAgICAgICBPcGVuVHlwZTo6VUludDE2IHBhcnRGbGFnczsKKyAgICB9IHBhcnRSZWNvcmRzWzFd
OyAvLyBUaGVyZSBhcmUgcGFydENvdW50IEdseXBoUGFydFJlY29yZCdzLgorCisgICAgLy8gUGFy
dEZsYWdzIGVudW1lcmF0aW9uIGN1cnJlbnRseSB1c2VzIG9ubHkgb25lIGJpdDoKKyAgICAvLyAw
eDAwMDEgSWYgc2V0LCB0aGUgcGFydCBjYW4gYmUgc2tpcHBlZCBvciByZXBlYXRlZC4KKyAgICAv
LyAweEZGRkUgUmVzZXJ2ZWQuCisgICAgZW51bSB7CisgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVy
ID0gMHgwMQorICAgIH07CisKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBh
c3NlbWJseVBhcnRzKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0
Q291bnQ7CisgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3Vu
dF0pKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhc3NlbWJseVBhcnRzLnJlc2l6ZShj
b3VudCk7CisgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cisg
ICAgICAgICAgICBhc3NlbWJseVBhcnRzW2ldLmdseXBoID0gcGFydFJlY29yZHNbaV0uZ2x5cGg7
CisgICAgICAgICAgICB1aW50MTZfdCBmbGFnID0gcGFydFJlY29yZHNbaV0ucGFydEZsYWdzOwor
ICAgICAgICAgICAgYXNzZW1ibHlQYXJ0c1tpXS5pc0V4dGVuZGVyID0gZmxhZyAmIFBhcnRGbGFn
c0V4dGVuZGVyOworICAgICAgICB9CisgICAgfQorCit9OworCitzdHJ1Y3QgTWF0aEdseXBoQ29u
c3RydWN0aW9uIDogVGFibGVCYXNlIHsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IGdseXBoQXNzZW1i
bHlPZmZzZXQ7CisgICAgT3BlblR5cGU6OlVJbnQxNiB2YXJpYW50Q291bnQ7CisgICAgc3RydWN0
IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQgeworICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCB2YXJp
YW50R2x5cGg7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50Owor
ICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291
bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgorCisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25z
dAorICAgIHsKKyAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CisgICAgICAg
IGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0p
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXJpYW50cy5yZXNpemUoY291bnQpOwor
ICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAg
IHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbaV0udmFyaWFudEdseXBoOwor
ICAgIH0KKworICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFy
dHMpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5
T2Zmc2V0OworICAgICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFs
aWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICBpZiAo
Z2x5cGhBc3NlbWJseSkKKyAgICAgICAgICAgIGdseXBoQXNzZW1ibHktPmdldEFzc2VtYmx5UGFy
dHMoYnVmZmVyLCBhc3NlbWJseVBhcnRzKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgTWF0aFZhcmlh
bnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgeworICAgIE9wZW5UeXBlOjpVSW50MTYgbWluQ29ubmVj
dG9yT3ZlcmxhcDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IHZlcnRHbHlwaENvdmVyYWdlT2Zmc2V0
OworICAgIE9wZW5UeXBlOjpPZmZzZXQgaG9yaXpHbHlwaENvdmVyYWdlT2Zmc2V0OworICAgIE9w
ZW5UeXBlOjpVSW50MTYgdmVydEdseXBoQ291bnQ7CisgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jp
ekdseXBoQ291bnQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25z
T2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29u
dHJ1Y3Rpb25zIGFuZCBob3JpekdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25z
LgorCisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rp
b24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGlj
YWwpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRH
bHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6R2x5cGhDb3VudCk7CisgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBXZSBkZXRlcm1pbmUgdGhl
IGNvdmVyYWdlIHRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIGdseXBoLgorICAgICAgICB1aW50MTZf
dCBjb3ZlcmFnZU9mZnNldCA9IGlzVmVydGljYWwgPyB2ZXJ0R2x5cGhDb3ZlcmFnZU9mZnNldCA6
IGhvcml6R2x5cGhDb3ZlcmFnZU9mZnNldDsKKyAgICAgICAgaWYgKCFjb3ZlcmFnZU9mZnNldCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBjb25zdCBDb3ZlcmFnZVRhYmxl
KiBjb3ZlcmFnZSA9IHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJh
Z2VPZmZzZXQpOworICAgICAgICBpZiAoIWNvdmVyYWdlKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgLy8gV2UgZGV0ZXJtaW5lIHRoZSBpbmRleCBpbiB0aGUgbWF0aEds
eXBoQ29uc3RydWN0aW9uc09mZnNldCB0YWJsZS4KKyAgICAgICAgdWludDMyX3QgaTsKKyAgICAg
ICAgaWYgKCFnZXRDb3ZlcmFnZUluZGV4KGJ1ZmZlciwgY292ZXJhZ2UsIGdseXBoLCBpKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBjb3VudCA9IGlzVmVydGljYWwgPyB2
ZXJ0R2x5cGhDb3VudCA6IGhvcml6R2x5cGhDb3VudDsKKyAgICAgICAgaWYgKGkgPj0gY291bnQp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc1ZlcnRpY2FsKQor
ICAgICAgICAgICAgaSArPSB1aW50MTZfdCh2ZXJ0R2x5cGhDb3VudCk7CisKKyAgICAgICAgcmV0
dXJuIHZhbGlkYXRlT2Zmc2V0PE1hdGhHbHlwaENvbnN0cnVjdGlvbj4oYnVmZmVyLCBtYXRoR2x5
cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2ldKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgTUFUSFRhYmxl
IDogVGFibGVCYXNlIHsKKyAgICBPcGVuVHlwZTo6Rml4ZWQgdmVyc2lvbjsKKyAgICBPcGVuVHlw
ZTo6T2Zmc2V0IG1hdGhDb25zdGFudHNPZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
R2x5cGhJbmZvT2Zmc2V0OworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0
OworCisgICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICB7CisgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1h
dGhDb25zdGFudHNPZmZzZXQ7CisgICAgICAgIGlmIChvZmZzZXQpCisgICAgICAgICAgICByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8TWF0aENvbnN0YW50cz4oYnVmZmVyLCBvZmZzZXQpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRo
R2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKKyAgICAgICAgaWYgKG9m
ZnNldCkKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxNYXRoR2x5cGhJbmZvPihi
dWZmZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNv
bnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zm
c2V0OworICAgICAgICBpZiAob2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PE1hdGhWYXJpYW50cz4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9Cit9OworCisjcHJhZ21hIHBhY2soKQorCit9IC8vIG5hbWVzcGFjZSBPcGVuVHlw
ZQorI2VuZGlmIC8vIEVOQUJMRShPUEVOVFlQRV9NQVRIKQorCitPcGVuVHlwZU1hdGhEYXRhOjpP
cGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKQoreworI2lmIEVOQUJMRShP
UEVOVFlQRV9NQVRIKQorICAgIG1fbWF0aEJ1ZmZlciA9IGZvbnQub3BlblR5cGVUYWJsZShPcGVu
VHlwZTo6TUFUSFRhZyk7CisgICAgY29uc3QgT3BlblR5cGU6Ok1BVEhUYWJsZSogbWF0aCA9IE9w
ZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpNQVRIVGFibGU+KG1fbWF0aEJ1ZmZlcik7
CisgICAgaWYgKCFtYXRoKSB7CisgICAgICAgIG1fbWF0aEJ1ZmZlciA9IG51bGxwdHI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBPcGVuVHlwZTo6TWF0aENvbnN0YW50cyog
bWF0aGNvbnN0YW50cyA9IG1hdGgtPm1hdGhDb25zdGFudHMoKm1fbWF0aEJ1ZmZlcik7CisgICAg
aWYgKCFtYXRoY29uc3RhbnRzKSB7CisgICAgICAgIG1fbWF0aEJ1ZmZlciA9IG51bGxwdHI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBPcGVuVHlwZTo6TWF0aFZhcmlhbnRz
KiBtYXRodmFyaWFudHMgPSBtYXRoLT5tYXRoVmFyaWFudHMoKm1fbWF0aEJ1ZmZlcik7CisgICAg
aWYgKCFtYXRodmFyaWFudHMpCisgICAgICAgIG1fbWF0aEJ1ZmZlciA9IG51bGxwdHI7CisjZWxz
ZQorICAgIG1fbWF0aEJ1ZmZlciA9IG51bGxwdHI7CisjZW5kaWYKK30KKworZmxvYXQgT3BlblR5
cGVNYXRoRGF0YTo6Z2V0TWF0aENvbnN0YW50KGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBN
YXRoQ29uc3RhbnQgY29uc3RhbnQpIGNvbnN0Cit7CisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgp
CisgICAgaW50MzJfdCB2YWx1ZSA9IDA7CisKKyAgICBjb25zdCBPcGVuVHlwZTo6TUFUSFRhYmxl
KiBtYXRoID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6Ok1BVEhUYWJsZT4obV9t
YXRoQnVmZmVyKTsKKyAgICBBU1NFUlQobWF0aCk7CisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhD
b25zdGFudHMqIG1hdGhjb25zdGFudHMgPSBtYXRoLT5tYXRoQ29uc3RhbnRzKCptX21hdGhCdWZm
ZXIpOworICAgIEFTU0VSVChtYXRoY29uc3RhbnRzKTsKKworICAgIGlmIChjb25zdGFudCA8PSBT
Y3JpcHRTY3JpcHRQZXJjZW50U2NhbGVEb3duKQorICAgICAgICB2YWx1ZSA9IGludDE2X3QobWF0
aGNvbnN0YW50cy0+aW50Q29uc3RhbnRzW2NvbnN0YW50XSk7CisgICAgZWxzZSBpZiAoY29uc3Rh
bnQgPD0gRGlzcGxheU9wZXJhdG9yTWluSGVpZ2h0KQorICAgICAgICB2YWx1ZSA9IHVpbnQxNl90
KG1hdGhjb25zdGFudHMtPnVJbnRDb25zdGFudHNbY29uc3RhbnQgLSBEZWxpbWl0ZWRTdWJGb3Jt
dWxhTWluSGVpZ2h0XSk7CisgICAgZWxzZSBpZiAoY29uc3RhbnQgPD0gUmFkaWNhbEtlcm5BZnRl
ckRlZ3JlZSkKKyAgICAgICAgdmFsdWUgPSBpbnQxNl90KG1hdGhjb25zdGFudHMtPm1hdGhWYWx1
ZXNDb25zdGFudHNbY29uc3RhbnQgLSBNYXRoTGVhZGluZ10udmFsdWUpOworICAgIGVsc2UKKyAg
ICAgICAgdmFsdWUgPSB1aW50MTZfdChtYXRoY29uc3RhbnRzLT5yYWRpY2FsRGVncmVlQm90dG9t
UmFpc2VQZXJjZW50KTsKKworICAgIGlmIChjb25zdGFudCA9PSBTY3JpcHRQZXJjZW50U2NhbGVE
b3duIHx8IGNvbnN0YW50ID09IFNjcmlwdFNjcmlwdFBlcmNlbnRTY2FsZURvd24gfHwgY29uc3Rh
bnQgPT0gUmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudCkKKyAgICAgICAgcmV0dXJuIHZh
bHVlIC8gMTAwLjA7CisKKyAgICByZXR1cm4gdmFsdWUgKiBmb250LT5zaXplUGVyVW5pdCgpOwor
I2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgor
fQorCitmbG9hdCBPcGVuVHlwZU1hdGhEYXRhOjpnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmb250LCBHbHlwaCBnbHlwaCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoT1BF
TlRZUEVfTUFUSCkKKyAgICBjb25zdCBPcGVuVHlwZTo6TUFUSFRhYmxlKiBtYXRoID0gT3BlblR5
cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6Ok1BVEhUYWJsZT4obV9tYXRoQnVmZmVyKTsKKyAg
ICBBU1NFUlQobWF0aCk7CisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhHbHlwaEluZm8qIG1hdGhH
bHlwaEluZm8gPSBtYXRoLT5tYXRoR2x5cGhJbmZvKCptX21hdGhCdWZmZXIpOworICAgIGlmICgh
bWF0aEdseXBoSW5mbykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBPcGVuVHlwZTo6
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA9IG1h
dGhHbHlwaEluZm8tPm1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oKm1fbWF0aEJ1ZmZlcik7Cisg
ICAgaWYgKCFtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKSB7CisgICAgICAgIC8vIFRoaXMgTUFU
SCBmb250IGRvZXMgbm90IGNvbnRhaW4gaXRhbGljIGNvcnJlY3Rpb25zIHNvIHdlIGFzc3VtZSBp
dCBpcyB0aGUgU1RJWCBNYXRoLCB3aGljaCBpcyB0aGUgb25seSBwcmFjdGljYWwgbWF0aCBmb250
cyBtaXNzaW5nIHRoYXQgdGFibGUgKGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9zdGl4Zm9udHMv
dHJhY2tpbmcvNTAvKS4KKyAgICAgICAgY29uc3QgSXRhbGljQ29ycmVjdGlvbkVudHJ5KiBlbnRy
eSA9IHRyeUJpbmFyeVNlYXJjaDxjb25zdCBJdGFsaWNDb3JyZWN0aW9uRW50cnksIEl0YWxpY0Nv
cnJlY3Rpb25LZXk+KFNUSVhJdGFsaWNDb3JyZWN0aW9uLCBTVElYSXRhbGljQ29ycmVjdGlvbkNv
dW50LCBJdGFsaWNDb3JyZWN0aW9uS2V5KGdseXBoKSwgRXh0cmFjdEl0YWxpY0NvcnJlY3Rpb25L
ZXkpOworICAgICAgICBpZiAoIWVudHJ5KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBlbnRyeS0+aXRhbGljQ29ycmVjdGlvbiAqIGZvbnQtPnNpemVQZXJVbml0KCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8tPmdldEl0YWxpY0Nv
cnJlY3Rpb24oKm1fbWF0aEJ1ZmZlciwgZ2x5cGgpICogZm9udC0+c2l6ZVBlclVuaXQoKTsKKyNl
bHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30K
Kwordm9pZCBPcGVuVHlwZU1hdGhEYXRhOjpnZXRNYXRoVmFyaWFudHMoR2x5cGggZ2x5cGgsIGJv
b2wgaXNWZXJ0aWNhbCwgVmVjdG9yPEdseXBoPiYgc2l6ZVZhcmlhbnRzLCBWZWN0b3I8QXNzZW1i
bHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKK3sKKyAgICBzaXplVmFyaWFudHMuY2xlYXIo
KTsKKyAgICBhc3NlbWJseVBhcnRzLmNsZWFyKCk7CisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgp
CisgICAgY29uc3QgT3BlblR5cGU6Ok1BVEhUYWJsZSogbWF0aCA9IE9wZW5UeXBlOjp2YWxpZGF0
ZVRhYmxlPE9wZW5UeXBlOjpNQVRIVGFibGU+KG1fbWF0aEJ1ZmZlcik7CisgICAgQVNTRVJUKG1h
dGgpOworICAgIGNvbnN0IE9wZW5UeXBlOjpNYXRoVmFyaWFudHMqIG1hdGh2YXJpYW50cyA9IG1h
dGgtPm1hdGhWYXJpYW50cygqbV9tYXRoQnVmZmVyKTsKKyAgICBBU1NFUlQobWF0aHZhcmlhbnRz
KTsKKworICAgIGNvbnN0IE9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlw
aENvbnN0cnVjdGlvbiA9IG1hdGh2YXJpYW50cy0+bWF0aEdseXBoQ29uc3RydWN0aW9uKCptX21h
dGhCdWZmZXIsIGdseXBoLCBpc1ZlcnRpY2FsKTsKKyAgICBpZiAoIW1hdGhHbHlwaENvbnN0cnVj
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbWF0aEdseXBoQ29uc3RydWN0aW9uLT5nZXRT
aXplVmFyaWFudHMoKm1fbWF0aEJ1ZmZlciwgc2l6ZVZhcmlhbnRzKTsKKyAgICBtYXRoR2x5cGhD
b25zdHJ1Y3Rpb24tPmdldEFzc2VtYmx5UGFydHMoKm1fbWF0aEJ1ZmZlciwgYXNzZW1ibHlQYXJ0
cyk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kYzQ3OGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC0w
LDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEZyZWRlcmljIFdhbmcgKGZy
ZWQud2FuZ0BmcmVlLmZyKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgT3BlblR5cGVNYXRoRGF0YV9oCisjZGVmaW5lIE9wZW5UeXBlTWF0aERhdGFf
aAorCisjaW5jbHVkZSAiR2x5cGguaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNpbXBs
ZUZvbnREYXRhOworY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKKworY2xhc3MgT3BlblR5cGVNYXRo
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBjcmVhdGUoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgZm9udERhdGEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE9wZW5UeXBlTWF0aERhdGEoZm9udERhdGEpKTsKKyAgICB9CisKKyAgICBib29sIGhhc01hdGhE
YXRhKCkgY29uc3QgeyByZXR1cm4gISFtX21hdGhCdWZmZXI7IH0KKworICAgIC8vIFRoZXNlIGNv
bnN0YW50cyBhcmUgZGVmaW5lZCBpbiB0aGUgTUFUSCB0YWJsZS4KKyAgICAvLyBUaGUgaW1wbGVt
ZW50YXRpb24gb2YgT3BlblR5cGVNYXRoRGF0YTo6Z2V0TWF0aENvbnN0YW50IGFzc3VtZXMgdGhh
dCB0aGV5IGNvcnJlc3BvbmQgdG8gdGhlIGluZGljZXMgb2YgdGhlIE1hdGhDb250YW50IHRhYmxl
LgorICAgIGVudW0gTWF0aENvbnN0YW50IHsKKyAgICAgICAgU2NyaXB0UGVyY2VudFNjYWxlRG93
biwKKyAgICAgICAgU2NyaXB0U2NyaXB0UGVyY2VudFNjYWxlRG93biwKKyAgICAgICAgRGVsaW1p
dGVkU3ViRm9ybXVsYU1pbkhlaWdodCwKKyAgICAgICAgRGlzcGxheU9wZXJhdG9yTWluSGVpZ2h0
LAorICAgICAgICBNYXRoTGVhZGluZywKKyAgICAgICAgQXhpc0hlaWdodCwKKyAgICAgICAgQWNj
ZW50QmFzZUhlaWdodCwKKyAgICAgICAgRmxhdHRlbmVkQWNjZW50QmFzZUhlaWdodCwKKyAgICAg
ICAgU3Vic2NyaXB0U2hpZnREb3duLAorICAgICAgICBTdWJzY3JpcHRUb3BNYXgsCisgICAgICAg
IFN1YnNjcmlwdEJhc2VsaW5lRHJvcE1pbiwKKyAgICAgICAgU3VwZXJzY3JpcHRTaGlmdFVwLAor
ICAgICAgICBTdXBlcnNjcmlwdFNoaWZ0VXBDcmFtcGVkLAorICAgICAgICBTdXBlcnNjcmlwdEJv
dHRvbU1pbiwKKyAgICAgICAgU3VwZXJzY3JpcHRCYXNlbGluZURyb3BNYXgsCisgICAgICAgIFN1
YlN1cGVyc2NyaXB0R2FwTWluLAorICAgICAgICBTdXBlcnNjcmlwdEJvdHRvbU1heFdpdGhTdWJz
Y3JpcHQsCisgICAgICAgIFNwYWNlQWZ0ZXJTY3JpcHQsCisgICAgICAgIFVwcGVyTGltaXRHYXBN
aW4sCisgICAgICAgIFVwcGVyTGltaXRCYXNlbGluZVJpc2VNaW4sCisgICAgICAgIExvd2VyTGlt
aXRHYXBNaW4sCisgICAgICAgIExvd2VyTGltaXRCYXNlbGluZURyb3BNaW4sCisgICAgICAgIFN0
YWNrVG9wU2hpZnRVcCwKKyAgICAgICAgU3RhY2tUb3BEaXNwbGF5U3R5bGVTaGlmdFVwLAorICAg
ICAgICBTdGFja0JvdHRvbVNoaWZ0RG93biwKKyAgICAgICAgU3RhY2tCb3R0b21EaXNwbGF5U3R5
bGVTaGlmdERvd24sCisgICAgICAgIFN0YWNrR2FwTWluLAorICAgICAgICBTdGFja0Rpc3BsYXlT
dHlsZUdhcE1pbiwKKyAgICAgICAgU3RyZXRjaFN0YWNrVG9wU2hpZnRVcCwKKyAgICAgICAgU3Ry
ZXRjaFN0YWNrQm90dG9tU2hpZnREb3duLAorICAgICAgICBTdHJldGNoU3RhY2tHYXBBYm92ZU1p
biwKKyAgICAgICAgU3RyZXRjaFN0YWNrR2FwQmVsb3dNaW4sCisgICAgICAgIEZyYWN0aW9uTnVt
ZXJhdG9yU2hpZnRVcCwKKyAgICAgICAgRnJhY3Rpb25OdW1lcmF0b3JEaXNwbGF5U3R5bGVTaGlm
dFVwLAorICAgICAgICBGcmFjdGlvbkRlbm9taW5hdG9yU2hpZnREb3duLAorICAgICAgICBGcmFj
dGlvbkRlbm9taW5hdG9yRGlzcGxheVN0eWxlU2hpZnREb3duLAorICAgICAgICBGcmFjdGlvbk51
bWVyYXRvckdhcE1pbiwKKyAgICAgICAgRnJhY3Rpb25OdW1EaXNwbGF5U3R5bGVHYXBNaW4sCisg
ICAgICAgIEZyYWN0aW9uUnVsZVRoaWNrbmVzcywKKyAgICAgICAgRnJhY3Rpb25EZW5vbWluYXRv
ckdhcE1pbiwKKyAgICAgICAgRnJhY3Rpb25EZW5vbURpc3BsYXlTdHlsZUdhcE1pbiwKKyAgICAg
ICAgU2tld2VkRnJhY3Rpb25Ib3Jpem9udGFsR2FwLAorICAgICAgICBTa2V3ZWRGcmFjdGlvblZl
cnRpY2FsR2FwLAorICAgICAgICBPdmVyYmFyVmVydGljYWxHYXAsCisgICAgICAgIE92ZXJiYXJS
dWxlVGhpY2tuZXNzLAorICAgICAgICBPdmVyYmFyRXh0cmFBc2NlbmRlciwKKyAgICAgICAgVW5k
ZXJiYXJWZXJ0aWNhbEdhcCwKKyAgICAgICAgVW5kZXJiYXJSdWxlVGhpY2tuZXNzLAorICAgICAg
ICBVbmRlcmJhckV4dHJhRGVzY2VuZGVyLAorICAgICAgICBSYWRpY2FsVmVydGljYWxHYXAsCisg
ICAgICAgIFJhZGljYWxEaXNwbGF5U3R5bGVWZXJ0aWNhbEdhcCwKKyAgICAgICAgUmFkaWNhbFJ1
bGVUaGlja25lc3MsCisgICAgICAgIFJhZGljYWxFeHRyYUFzY2VuZGVyLAorICAgICAgICBSYWRp
Y2FsS2VybkJlZm9yZURlZ3JlZSwKKyAgICAgICAgUmFkaWNhbEtlcm5BZnRlckRlZ3JlZSwKKyAg
ICAgICAgUmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudAorICAgIH07CisKKyAgICBzdHJ1
Y3QgQXNzZW1ibHlQYXJ0IHsKKyAgICAgICAgR2x5cGggZ2x5cGg7CisgICAgICAgIGJvb2wgaXNF
eHRlbmRlcjsKKyAgICB9OworCisgICAgZmxvYXQgZ2V0TWF0aENvbnN0YW50KGNvbnN0IFNpbXBs
ZUZvbnREYXRhKiwgTWF0aENvbnN0YW50KSBjb25zdDsKKyAgICBmbG9hdCBnZXRJdGFsaWNDb3Jy
ZWN0aW9uKGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgR2x5cGgpIGNvbnN0OworICAgIHZvaWQgZ2V0
TWF0aFZhcmlhbnRzKEdseXBoLCBib29sIGlzVmVydGljYWwsIFZlY3RvcjxHbHlwaD4mIHNpemVW
YXJpYW50cywgVmVjdG9yPEFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0OworCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE9wZW5UeXBlTWF0aERhdGFfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVUeXBlcy5oCmluZGV4IGRhOWNlYTkuLjI4ZGNiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgK
QEAgLTEwMCw2ICsxMDAsODggQEAgcHJvdGVjdGVkOgogICAgIH0KIH07CiAKKyNpZiBFTkFCTEUo
T1BFTlRZUEVfVkVSVElDQUwpIHx8IEVOQUJMRShPUEVOVFlQRV9NQVRIKQorc3RydWN0IENvdmVy
YWdlVGFibGUgOiBUYWJsZUJhc2UgeworICAgIE9wZW5UeXBlOjpVSW50MTYgY292ZXJhZ2VGb3Jt
YXQ7Cit9OworCitzdHJ1Y3QgQ292ZXJhZ2UxVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKKyAgICBP
cGVuVHlwZTo6VUludDE2IGdseXBoQ291bnQ7CisgICAgT3BlblR5cGU6OkdseXBoSUQgZ2x5cGhB
cnJheVsxXTsKK307CisKK3N0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewor
ICAgIE9wZW5UeXBlOjpVSW50MTYgcmFuZ2VDb3VudDsKKyAgICBzdHJ1Y3QgUmFuZ2VSZWNvcmQg
eworICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCBzdGFydDsKKyAgICAgICAgT3BlblR5cGU6Okds
eXBoSUQgZW5kOworICAgICAgICBPcGVuVHlwZTo6VUludDE2IHN0YXJ0Q292ZXJhZ2VJbmRleDsK
KyAgICB9IHJhbmdlc1sxXTsKK307CisjZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FM
KSB8fCBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKKworI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQor
c3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBi
b29sCisgICAgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJh
Z2VJbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdl
Rm9ybWF0KSB7CisgICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQorICAgICAg
ICAgICAgY29uc3QgQ292ZXJhZ2UxVGFibGUqIGNvdmVyYWdlMSA9IHZhbGlkYXRlUHRyPENvdmVy
YWdlMVRhYmxlPihidWZmZXIsIGNvdmVyYWdlKTsKKyAgICAgICAgICAgIGlmICghY292ZXJhZ2Ux
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHVpbnQxNl90IGds
eXBoQ291bnQgPSBjb3ZlcmFnZTEtPmdseXBoQ291bnQ7CisgICAgICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmY292ZXJhZ2UxLT5nbHlwaEFycmF5W2dseXBoQ291bnRdKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIFdlIGRvIGEgYmluYXJ5
IHNlYXJjaCBvbiB0aGUgZ2x5cGggaW5kZXhlcy4KKyAgICAgICAgICAgIHVpbnQzMl90IGltaW4g
PSAwLCBpbWF4ID0gZ2x5cGhDb3VudDsKKyAgICAgICAgICAgIHdoaWxlIChpbWluIDwgaW1heCkg
eworICAgICAgICAgICAgICAgIHVpbnQzMl90IGltaWQgPSAoaW1pbiArIGltYXgpID4+IDE7Cisg
ICAgICAgICAgICAgICAgdWludDE2X3QgZ2x5cGhNaWQgPSBjb3ZlcmFnZTEtPmdseXBoQXJyYXlb
aW1pZF07CisgICAgICAgICAgICAgICAgaWYgKGdseXBoTWlkID09IGdseXBoKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvdmVyYWdlSW5kZXggPSBpbWlkOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGdseXBo
TWlkIDwgZ2x5cGgpCisgICAgICAgICAgICAgICAgICAgIGltaW4gPSBpbWlkICsgMTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGltYXggPSBpbWlkOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAyOiB7
IC8vIENvdmVyYWdlIEZvcm1hdCAyCisgICAgICAgICAgICBjb25zdCBDb3ZlcmFnZTJUYWJsZSog
Y292ZXJhZ2UyID0gdmFsaWRhdGVQdHI8Q292ZXJhZ2UyVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2Up
OworICAgICAgICAgICAgaWYgKCFjb3ZlcmFnZTIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgdWludDE2X3QgcmFuZ2VDb3VudCA9IGNvdmVyYWdlMi0+cmFuZ2VD
b3VudDsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjb3ZlcmFnZTItPnJh
bmdlc1tyYW5nZUNvdW50XSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgICAgICAvLyBXZSBkbyBhIGJpbmFyeSBzZWFyY2ggb24gdGhlIHJhbmdlcy4KKyAgICAgICAg
ICAgIHVpbnQzMl90IGltaW4gPSAwLCBpbWF4ID0gcmFuZ2VDb3VudDsKKyAgICAgICAgICAgIHdo
aWxlIChpbWluIDwgaW1heCkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IGltaWQgPSAoaW1p
biArIGltYXgpID4+IDE7CisgICAgICAgICAgICAgICAgdWludDE2X3QgclN0YXJ0ID0gY292ZXJh
Z2UyLT5yYW5nZXNbaW1pZF0uc3RhcnQ7CisgICAgICAgICAgICAgICAgdWludDE2X3QgckVuZCA9
IGNvdmVyYWdlMi0+cmFuZ2VzW2ltaWRdLmVuZDsKKyAgICAgICAgICAgICAgICBpZiAockVuZCA8
IGdseXBoKQorICAgICAgICAgICAgICAgICAgICBpbWluID0gaW1pZCArIDE7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZ2x5cGggPCByU3RhcnQpCisgICAgICAgICAgICAgICAgICAgIGltYXgg
PSBpbWlkOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb3Zl
cmFnZUluZGV4ID0gY292ZXJhZ2UyLT5yYW5nZXNbaW1pZF0uc3RhcnRDb3ZlcmFnZUluZGV4ICsg
Z2x5cGggLSByU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgT3BlblR5cGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAv
LyBPcGVuVHlwZVR5cGVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRl
eCAzNWFlNzFkLi43YzM3MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
CkBAIC0xMTIsMjQgKzExMiw2IEBAIHN0cnVjdCBWT1JHVGFibGUgewogICAgIHNpemVfdCByZXF1
aXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBzaXplb2YoKnRoaXMpICsgc2l6ZW9mKFZlcnRPcmln
aW5ZTWV0cmljcykgKiAobnVtVmVydE9yaWdpbllNZXRyaWNzIC0gMSk7IH0KIH07CiAKLXN0cnVj
dCBDb3ZlcmFnZVRhYmxlIDogVGFibGVCYXNlIHsKLSAgICBPcGVuVHlwZTo6VUludDE2IGNvdmVy
YWdlRm9ybWF0OwotfTsKLQotc3RydWN0IENvdmVyYWdlMVRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7
Ci0gICAgT3BlblR5cGU6OlVJbnQxNiBnbHlwaENvdW50OwotICAgIE9wZW5UeXBlOjpHbHlwaElE
IGdseXBoQXJyYXlbMV07Ci19OwotCi1zdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRh
YmxlIHsKLSAgICBPcGVuVHlwZTo6VUludDE2IHJhbmdlQ291bnQ7Ci0gICAgc3RydWN0IFJhbmdl
UmVjb3JkIHsKLSAgICAgICAgT3BlblR5cGU6OkdseXBoSUQgc3RhcnQ7Ci0gICAgICAgIE9wZW5U
eXBlOjpHbHlwaElEIGVuZDsKLSAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBzdGFydENvdmVyYWdl
SW5kZXg7Ci0gICAgfSByYW5nZXNbMV07Ci19OwotCiBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227416</attachid>
            <date>2014-03-21 04:52:20 -0700</date>
            <delta_ts>2014-03-24 09:31:03 -0700</delta_ts>
            <desc>Patch + 130572 for testing</desc>
            <filename>read-MATH-all.patch</filename>
            <type>text/plain</type>
            <size>44441</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZDQ4MDI3Ny4uMjY4ZGVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMy0yMSAg
RnLDqWTDqXJpYyBXYW5nICA8ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgT3BlcmF0b3Ig
c3RyZXRjaGluZzogcmVhZCB0aGUgT3BlbiBUeXBlIE1BVEggdGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMyNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IGVuYWJs
ZSBPUEVOVFlQRV9NQVRIIG9uIHBsYXRmb3JtcyB0aGF0IGNhbiByZWFkIE9wZW5UeXBlIHRhYmxl
cy4KKwogMjAxNC0wMy0yMCAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgTW92ZSB0byB1c2luZyBzdGQ6OnVuaXF1ZV9wdHIgZm9yIEVGTCBvYmplY3RzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKaW5kZXggYWU1ZjVmOS4uZGUxYTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMDQ2LDQg
KzEwNDYsOSBAQAogI2RlZmluZSBIQVZFX05TX0FDVElWSVRZIDEKICNlbmRpZgogCisjaWYgT1Mo
REFSV0lOKSB8fCBVU0UoRlJFRVRZUEUpIHx8IChQTEFURk9STShXSU4pICYmIChVU0UoQ0cpIHx8
IFVTRShDQUlSTykpKQorI3VuZGVmIEVOQUJMRV9PUEVOVFlQRV9NQVRICisjZGVmaW5lIEVOQUJM
RV9PUEVOVFlQRV9NQVRIIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMGM0ZjVlMC4uZjdiYTg1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5NDUsNiArMTk0NSw4IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYyYWFlNGUuLjgzNGJk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxNC0wMy0yMSAgRnLDqWTDqXJpYyBX
YW5nICA8ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgT3BlcmF0b3Igc3RyZXRjaGluZzog
cmVhZCB0aGUgT3BlbiBUeXBlIE1BVEggdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIHBhcnNlIGFuZCBleHBvc2Ugc29tZSBkYXRhIGZyb20g
dGhlIE9wZW5UeXBlIE1BVEggdGFibGUgdGhhdCB3aWxsIGJlCisgICAgICAgIGJlIHJlbGV2YW50
IGZvciBhdCBsZWFzdCB0aGUgTWF0aE1MIG9wZXJhdG9yIHN0cmV0Y2hpbmcgKGJ1ZyAxMzAzMjIp
OgorICAgICAgICBtYXRoIGNvbnN0YW50cywgaXRhbGljIGNvcnJlY3Rpb25zIGFuZCBzaXplIHZh
cmlhbnRzIC8gZ2x5cGggYXNzZW1ibHkuCisgICAgICAgIFRoaXMgd2lsbCBiZSB0ZXN0ZWQgd2hl
biB0aGUgTWF0aE1MIGNvZGUgdXNlcyB0aGUgZGF0YS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIE9wZW5UeXBlVHlwZXMuaCB0byB0aGUgTWFjIGJ1
aWxkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuY3BwOiBXZSBpbXBsZW1lbnQgdGhlIGxvdy1sZXZlbCBwYXJzaW5nIG9mIHRoZSBNQVRIIHRh
YmxlLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm86OmdldEl0YWxpY0NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1h
dGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246Omdl
dEFzc2VtYmx5UGFydHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50
czo6bWF0aEdseXBoQ29uc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpN
QVRIVGFibGU6Om1hdGhDb25zdGFudHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1B
VEhUYWJsZTo6bWF0aEdseXBoSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFU
SFRhYmxlOjptYXRoVmFyaWFudHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVNYXRoRGF0
YTo6T3BlblR5cGVNYXRoRGF0YSk6IFdlIGxvYWQgdGhlIE1BVEggdGFibGUuCisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZU1hdGhEYXRhOjpnZXRNYXRoQ29uc3RhbnQpOiBXZSBhZGQgYSBmdW5j
dGlvbiB0byBnZXQgdmFsdWVzIGZyb20gdGhlIE1hdGhDb25zdGFudCBzdWJ0YWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6OmdldEl0YWxpY0NvcnJlY3Rpb24pOiBXZSBh
ZGQgYSBmdW5jdGlvbiB0byBnZXQgaXRhbGljIGNvcnJlY3Rpb24gZnJvbSB0aGUgTWF0aEdseXBo
SW5mbyBzdWJ0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6OmdldE1h
dGhWYXJpYW50cyk6IFdlIGFkZCBhIGZ1bmN0aW9uIHRvIGdldCBzaXplIHZhcmlhbnRzIC8gZ2x5
cGggYXNzZW1ibHkgZnJvbSB0aGUgTWF0aFZhcmlhbnRzIHN1YnRhYmxlLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDogV2UgZXhwb3NlIHRo
cmVlIG5ldyBmdW5jdGlvbnMgdG8gZ2V0IG1hdGggZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6IFdlIHNoYXJlIHRoZSBjb3ZlcmFnZSB0
YWJsZXMgdGhhdCBhcmUgY29tbW9uIHRvIHZlcnRpY2FsIGFuZCBtYXRoIGRhdGEuCisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXgp
OiBXZSBhZGQgYSBmdW5jdGlvbiB0byBnZXQgdGhlIGNvdmVyYWdlIGluZGV4IGZyb20gYSBnaXZl
biBnbHlwaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZl
cnRpY2FsRGF0YS5jcHA6IFdlIG1vdmUgdGhlIGNvdmVyYWdlIHRhYmxlcyB0byBPcGVuVHlwZVR5
cGVzLmguCisKKzIwMTQtMDMtMjEgIEZyw6lkw6lyaWMgV2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZy
PgorCisgICAgICAgIE9wZXJhdG9yIHN0cmV0Y2hpbmc6IGV4cG9zZSBhIG1hdGggZGF0YSBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDU3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGV4cG9z
ZSBhIG5ldyBTaW1wbGVGb250RGF0YSBBUEkgdG8gZ2l2ZSBhY2Nlc3MgdG8gdGhlIGRhdGEgZnJv
bSB0aGUKKyAgICAgICAgT3BlblR5cGUgTUFUSCB0YWJsZSB1c2luZyBhIGZvbnQgY2FjaGUuIFRo
ZSBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIHdpbGwKKyAgICAgICAgYmUgaW1wbGVtZW50ZWQgaW4g
YnVnIDEzMDMyNC4gT24gRGFyd2luIHBsYXRmb3JtLCB3ZSBhbHNvIGltcGxlbWVudCB0aGUKKyAg
ICAgICAgbWlzc2luZyBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGZ1bmN0aW9uIHdo
aWNoIHdpbGwgYmUgbmVjZXNzYXJ5CisgICAgICAgIHRvIGxvYWQgdGhlIE9wZW5UeXBlIE1BVEgg
dGFibGUuIFRoZSBjaGFuZ2VzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkCisgICAgICAgIGZvciBN
YXRoTUwgb3BlcmF0b3Igc3RyZXRjaGluZyAoYnVnIDEzMDMyMikgc28gdGVzdHMgYXJlIG5vdCBh
ZGRlZCB5ZXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogYWRkIG5ldyBPcGVuVHlwZU1h
dGhEYXRhIGZpbGVzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IGRpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IGRpdHRvLgorICAgICAgICAq
IFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczogZGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBkaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOiBXZSBhZGQgYSBGb250Q2FjaGU6OmdldE1h
dGhEYXRhIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBhIGNhY2hlIGZvciB0aGUgbWF0aCBkYXRhLgor
ICAgICAgICBXZSBtYWtlIHRoZSBtYXRoIGFuZCB2ZXJ0aWNhbCBkYXRhIHNoYXJlIHRoZSBzYW1l
IGtleSBmb3IgdGhlIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6Zm9udE1hdGhEYXRhQ2FjaGVJ
bnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldE1hdGhEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZvbnRWZXJ0aWNhbERhdGFDYWNoZUluc3RhbmNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDogV2UgZGVjbGFyZSBGb250Q2FjaGU6Omdl
dE1hdGhEYXRhIGFuZCBGb250RmlsZUtleSBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSk6IFdlIGltcGxlbWVudCBvcGVuVHlwZVRh
YmxlKCkgb24gRGFyd2luIHBsYXRmb3JtLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaDogV2UgZXhwb3NlIG9wZW5UeXBlVGFibGUoKSBvbiBEYXJ3aW4gcGxh
dGZvcm0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOiBX
ZSBpbml0aWFsaXplIG1fbWF0aERhdGEgZnJvbSB0aGUgZm9udCBjYWNoZS4KKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUZvbnREYXRhOjpTaW1wbGVGb250RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDogV2UgZXhwb3NlIGEgbWF0aERhdGEoKSBmdW5j
dGlvbiB0byBhY2Nlc3MgdGhlIE1BVEggZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDogQWRkZWQuIFRoaXMgaXMgYSBuZXcgY2xh
c3MgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcGFyc2UgdGhlIGRhdGEgZnJvbSB0aGUgT3BlblR5cGUg
TUFUSCB0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6Ok9wZW5UeXBl
TWF0aERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZU1hdGhEYXRhOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVNYXRoRGF0YTo6aGFzTWF0aERhdGEp
OgorCiAyMDE0LTAzLTIwICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLiBpT1MgYnVpbGQgZml4IGFmdGVyIHIxNjYwMTcsIHIxNjYwMzIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1ZTBhZDdhLi43ZmQwOWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTUzNTUsNiArNTM1NSw4IEBAIHdlYmNvcmVf
cGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdM
U2V0dGluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNDU5NzU3YS4uMGRl
NWNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC03OTQzLDYgKzc5NDMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luXEludFJlY3RXaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEludFNpemVXaW4uY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcT3BlblR5cGVNYXRoRGF0YS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlw
ZVV0aWxpdGllcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cU2ltcGxlRm9udERhdGFDYWly
b1dpbi5jcHAiPgpAQCAtMTkzMDEsNiArMTkzMDIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEZ1bGxTY3JlZW5Db250cm9sbGVyQ2xpZW50Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTG9j
YWxXaW5kb3dzQ29udGV4dC5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50
eXBlXE9wZW5UeXBlTWF0aERhdGEuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlVXRpbGl0
aWVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xv
cGVudHlwZVxPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDBiYTE4
NTguLjZlYmNhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTE0NzYsNiArMTQ3Niw5IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGlj
c1x3aW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlTWF0aERhdGEuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3Ncd2luPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlw
ZVxPcGVuVHlwZVV0aWxpdGllcy5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGlj
c1x3aW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTg0MTYsNiArODQxOSw5IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTG9jYWxXaW5k
b3dzQ29udGV4dC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3Ncd2luPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZU1hdGhEYXRhLmgiPgorICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljc1x3aW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBlVHlw
ZXMuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXHdpbjwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDIyN2Y1OTAuLjMyMjQzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1ODYsNiArNDU4Niw5
IEBACiAJCUIyQzNEQTYzMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTUyMEQwMDZDRDYwMEVG
NkYyNiAvKiBGb250Q2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCMkMzREE2NDBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RB
NTMwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmNwcCAqLzsgfTsKIAkJQjJDM0RB
NjUwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREE1NDBEMDA2Q0Q2MDBFRjZGMjYgLyog
U2ltcGxlRm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCMkQzREE2NDBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkQzREE1
MzBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5jcHAgKi87IH07CisJCUIyRDNE
QTY1MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkQzREE1NDBEMDA2Q0Q2MDBFRjZGMjcg
LyogT3BlblR5cGVNYXRoRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUIyRDNFQTY1MEQwMDZDRDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkQzRUE1
NDBEMDA2Q0Q2MDBFRjZGMjggLyogT3BlblR5cGVUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyQzNEQTY2MEQwMDZDRDYwMEVGNkYyNiAv
KiBGb250RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyQzNEQTU1MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250RGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMkMzREE2
NzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEdseXBocy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREE1NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9u
dEdseXBocy5jcHAgKi87IH07CiAJCUIyQzNEQTY4MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250R2x5
cGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMz
REE1NzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEdseXBocy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTgxOCw2ICsxMTgyMSw5IEBACiAJCUIy
QzNEQTUyMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvbnRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMkMzREE1MzBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUZvbnREYXRhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0RBNTQwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBs
ZUZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVGb250
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMkQzREE1MzBEMDA2Q0Q2MDBF
RjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUIyRDNEQTU0MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBvcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRDNFQTU0MEQwMDZD
RDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBvcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyQzNEQTU1MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250RGVzY3JpcHRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREE1NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEds
eXBocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEdseXBo
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTU3MEQwMDZDRDYwMEVG
NkYyNiAvKiBGb250R2x5cGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b250R2x5cGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDA4NSw2ICsyMDA5
MSw5IEBACiAJCQkJMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLywK
IAkJCQlCMkMzREE1MzBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuY3BwICovLAog
CQkJCUIyQzNEQTU0MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVGb250RGF0YS5oICovLAorCQkJ
CUIyRDNEQTUzMEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmNwcCAqLywKKwkJ
CQlCMkQzREE1NDBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5oICovLAorCQkJ
CUIyRDNFQTU0MEQwMDZDRDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVzLmggKi8sCiAJCQkJQ0Q2
NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLywKIAkJCQlD
REM2MURBMDE4MDg2N0Q4MDA0QjkxM0YgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAogCQkJ
CUNEQzhCNUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmgg
Ki8sCkBAIC0yNTQxNiw2ICsyNTQyNSw4IEBACiAJCQkJRTFCNzgzOUMxNjM3NDBBNzAwMDdCNjky
IC8qIFNoYXJlZFdvcmtlclN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQxNjhFRTEw
MjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkMzREE2NTBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUIyRDNEQTY1MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCMkQzRUE2NTBEMDA2Q0Q2MDBFRjZGMjggLyogT3BlblR5cGVU
eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8qIFNp
bXBsZUxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RTlCMTFEMTgxNDU2OUMwMDNB
Q0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NEU5QjExOTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI4NzcxLDYgKzI4NzgyLDcgQEAKIAkJCQlFMUI3ODQyMDE2MzlDQkJF
MDAwN0I2OTIgLyogU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUQxNjhFRDEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyQzNEQTY0MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVGb250RGF0
YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMkQzREE2NDBEMDA2Q0Q2MDBFRjZGMjcgLyogT3Bl
blR5cGVNYXRoRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNjNFODhGNzExOEEzOUQyMDBF
RDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
N0U2NTk1MDE2M0IxMEMyMDBFQjQ1NzQgLyogU2ltcGxlRm9udERhdGFJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCMkFGRkM3RjBEMDBBNUMxMDAzMDA3NEQgLyogU2ltcGxlRm9udERhdGFNYWMu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCmluZGV4IDhjZGZmMTIuLjI4YWE4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkZvbnRHbHlwaHMuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5j
bHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiT3BlblR5cGVNYXRoRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYktpdEZvbnRGYW1pbHlOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC0yNjYsOCArMjY3LDcgQEAgRm9udFBs
YXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm8KICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogfQogCi0jaWYg
RU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQotc3RydWN0IEZvbnRWZXJ0aWNhbERhdGFDYWNoZUtl
eUhhc2ggeworc3RydWN0IEZvbnRGaWxlQ2FjaGVLZXlIYXNoIHsKICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBGb250Q2FjaGU6OkZvbnRGaWxlS2V5JiBmb250RmlsZUtleSkKICAgICB7
CiAgICAgICAgIHJldHVybiBQdHJIYXNoPGNvbnN0IEZvbnRDYWNoZTo6Rm9udEZpbGVLZXkqPjo6
aGFzaCgmZm9udEZpbGVLZXkpOwpAQCAtMjgxLDcgKzI4MSw3IEBAIHN0cnVjdCBGb250VmVydGlj
YWxEYXRhQ2FjaGVLZXlIYXNoIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogCi1zdHJ1Y3QgRm9udFZlcnRpY2FsRGF0YUNh
Y2hlS2V5VHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxGb250Q2FjaGU6OkZvbnRGaWxl
S2V5PiB7CitzdHJ1Y3QgRm9udEZpbGVDYWNoZUtleVRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hU
cmFpdHM8Rm9udENhY2hlOjpGb250RmlsZUtleT4gewogICAgIHN0YXRpYyBjb25zdCBib29sIGVt
cHR5VmFsdWVJc1plcm8gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBGb250Q2FjaGU6OkZvbnRGaWxlS2V5JiBl
bXB0eVZhbHVlKCkKQEAgLTI5OSw5ICsyOTksMzIgQEAgc3RydWN0IEZvbnRWZXJ0aWNhbERhdGFD
YWNoZUtleVRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8Rm9udENhY2hlOjpGb250RmkK
ICAgICB9CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8Rm9udENhY2hlOjpGb250RmlsZUtleSwgUmVm
UHRyPE9wZW5UeXBlVmVydGljYWxEYXRhPiwgRm9udFZlcnRpY2FsRGF0YUNhY2hlS2V5SGFzaCwg
Rm9udFZlcnRpY2FsRGF0YUNhY2hlS2V5VHJhaXRzPiBGb250VmVydGljYWxEYXRhQ2FjaGU7Cit0
eXBlZGVmIEhhc2hNYXA8Rm9udENhY2hlOjpGb250RmlsZUtleSwgUmVmUHRyPE9wZW5UeXBlTWF0
aERhdGE+LCBGb250RmlsZUNhY2hlS2V5SGFzaCwgRm9udEZpbGVDYWNoZUtleVRyYWl0cz4gRm9u
dE1hdGhEYXRhQ2FjaGU7CisKK3N0YXRpYyBGb250TWF0aERhdGFDYWNoZSYgZm9udE1hdGhEYXRh
Q2FjaGVJbnN0YW5jZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRNYXRoRGF0
YUNhY2hlPiBmb250TWF0aERhdGFDYWNoZTsKKyAgICByZXR1cm4gZm9udE1hdGhEYXRhQ2FjaGU7
Cit9CisKK1Bhc3NSZWZQdHI8T3BlblR5cGVNYXRoRGF0YT4gRm9udENhY2hlOjpnZXRNYXRoRGF0
YShjb25zdCBGb250RmlsZUtleSYga2V5LCBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250RGF0
YSkKK3sKKyAgICBGb250TWF0aERhdGFDYWNoZSYgZm9udE1hdGhEYXRhQ2FjaGUgPSBmb250TWF0
aERhdGFDYWNoZUluc3RhbmNlKCk7CisgICAgRm9udE1hdGhEYXRhQ2FjaGU6Oml0ZXJhdG9yIHJl
c3VsdCA9IGZvbnRNYXRoRGF0YUNhY2hlLmZpbmQoa2V5KTsKKyAgICBpZiAocmVzdWx0ICE9IGZv
bnRNYXRoRGF0YUNhY2hlLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LmdldCgpLT52YWx1
ZTsKKworICAgIFJlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBtYXRoRGF0YSA9IE9wZW5UeXBlTWF0
aERhdGE6OmNyZWF0ZShmb250RGF0YSk7CisgICAgaWYgKCFtYXRoRGF0YS0+aGFzTWF0aERhdGEo
KSkKKyAgICAgICAgbWF0aERhdGEuY2xlYXIoKTsKKyAgICBmb250TWF0aERhdGFDYWNoZS5zZXQo
a2V5LCBtYXRoRGF0YSk7CisgICAgcmV0dXJuIG1hdGhEYXRhOworfQorCisjaWYgRU5BQkxFKE9Q
RU5UWVBFX1ZFUlRJQ0FMKQordHlwZWRlZiBIYXNoTWFwPEZvbnRDYWNoZTo6Rm9udEZpbGVLZXks
IFJlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4sIEZvbnRGaWxlQ2FjaGVLZXlIYXNoLCBGb250
RmlsZUNhY2hlS2V5VHJhaXRzPiBGb250VmVydGljYWxEYXRhQ2FjaGU7CiAKLUZvbnRWZXJ0aWNh
bERhdGFDYWNoZSYgZm9udFZlcnRpY2FsRGF0YUNhY2hlSW5zdGFuY2UoKQorc3RhdGljIEZvbnRW
ZXJ0aWNhbERhdGFDYWNoZSYgZm9udFZlcnRpY2FsRGF0YUNhY2hlSW5zdGFuY2UoKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250VmVydGljYWxEYXRhQ2FjaGU+IGZvbnRWZXJ0aWNh
bERhdGFDYWNoZTsKICAgICByZXR1cm4gZm9udFZlcnRpY2FsRGF0YUNhY2hlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCBjM2U4ZTcxLi5lOWJi
ZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApA
QCAtNTQsNiArNTQsNyBAQCBjbGFzcyBGb250OwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKIGNs
YXNzIEZvbnREYXRhOwogY2xhc3MgRm9udFNlbGVjdG9yOworY2xhc3MgT3BlblR5cGVNYXRoRGF0
YTsKIGNsYXNzIE9wZW5UeXBlVmVydGljYWxEYXRhOwogY2xhc3MgU2ltcGxlRm9udERhdGE7CiAK
QEAgLTE1MSw4ICsxNTIsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0
YT4gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIFNob3VsZFJldGFpbiwgY29uc3QgTE9HRk9OVCYsIEF0b21pY1N0cmluZyYgb3V0Rm9udEZh
bWlseU5hbWUpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAgICAg
dHlwZWRlZiBBdG9taWNTdHJpbmcgRm9udEZpbGVLZXk7CisgICAgUGFzc1JlZlB0cjxPcGVuVHlw
ZU1hdGhEYXRhPiBnZXRNYXRoRGF0YShjb25zdCBGb250RmlsZUtleSYsIGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmKTsKKyNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAgICAgUGFzc1JlZlB0
cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gZ2V0VmVydGljYWxEYXRhKGNvbnN0IEZvbnRGaWxlS2V5
JiwgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNTMw
OGViZC4uM2MwNWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKQEAgLTI3LDYgKzI3LDExIEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPEFw
cGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCkBAIC0xNjksNCArMTc0LDE2IEBAIGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBvdGhlCiAgICAgcmV0dXJuIHBsYXRmb3JtRGF0YUFzc2lnbihvdGhlcik7CiB9
CiAKKyNpZiBPUyhEQVJXSU4pCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK3sKKyAgICBDR0ZvbnRS
ZWYgZm9udCA9IGNnRm9udCgpOworICAgIENGRGF0YVJlZiBkYXRhID0gQ0dGb250Q29weVRhYmxl
Rm9yVGFnKGZvbnQsIHRhYmxlKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShkYXRhKTsKK30KKyNl
bmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
UGxhdGZvcm1EYXRhLmgKaW5kZXggYmZhNTcwOS4uMTg1NzZlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMjE2LDcg
KzIxNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotI2lmIFBMQVRGT1JNKFdJTikgJiYg
KFVTRShDRykgfHwgVVNFKENBSVJPKSkKKyNpZiBPUyhEQVJXSU4pIHx8IChQTEFURk9STShXSU4p
ICYmIChVU0UoQ0cpIHx8IFVTRShDQUlSTykpKQogICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAKaW5k
ZXggNDVlNWI2Yy4uZmE5M2ExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVk
ZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIk9wZW5UeXBlTWF0
aERhdGEuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKE9QRU5U
WVBFX1ZFUlRJQ0FMKQpAQCAtNTIsNiArNTMsNyBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9u
dERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBib29sIGlzQ3VzdAog
ICAgICwgbV9pc0xvYWRpbmcoaXNMb2FkaW5nKQogICAgICwgbV9pc1RleHRPcmllbnRhdGlvbkZh
bGxiYWNrKGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2spCiAgICAgLCBtX2lzQnJva2VuSWRlb2dy
YXBoRmFsbGJhY2soZmFsc2UpCisgICAgLCBtX21hdGhEYXRhKG51bGxwdHIpCiAjaWYgRU5BQkxF
KE9QRU5UWVBFX1ZFUlRJQ0FMKQogICAgICwgbV92ZXJ0aWNhbERhdGEoMCkKICNlbmRpZgpAQCAt
NjAsNiArNjIsNyBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBib29sIGlzQ3VzdAogICAgIHBsYXRmb3JtSW5pdCgp
OwogICAgIHBsYXRmb3JtR2x5cGhJbml0KCk7CiAgICAgcGxhdGZvcm1DaGFyV2lkdGhJbml0KCk7
CisgICAgbV9tYXRoRGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRNYXRoRGF0YShTdHJpbmc6Om51bWJl
cihwbGF0Zm9ybURhdGEuaGFzaCgpKSwgcGxhdGZvcm1EYXRhKTsKICNpZiBFTkFCTEUoT1BFTlRZ
UEVfVkVSVElDQUwpCiAgICAgaWYgKHBsYXRmb3JtRGF0YS5vcmllbnRhdGlvbigpID09IFZlcnRp
Y2FsICYmICFpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKSB7CiAgICAgICAgIG1fdmVydGljYWxE
YXRhID0gcGxhdGZvcm1EYXRhLnZlcnRpY2FsRGF0YSgpOwpAQCAtNzYsNiArNzksNyBAQCBTaW1w
bGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoc3RkOjp1bmlxdWVfcHRyPEFkZGl0aW9uYWxGb250
RGF0YT4gZm9udERhdGEsIGZsbwogICAgICwgbV9pc0xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX2lz
VGV4dE9yaWVudGF0aW9uRmFsbGJhY2soZmFsc2UpCiAgICAgLCBtX2lzQnJva2VuSWRlb2dyYXBo
RmFsbGJhY2soZmFsc2UpCisgICAgLCBtX21hdGhEYXRhKG51bGxwdHIpCiAjaWYgRU5BQkxFKE9Q
RU5UWVBFX1ZFUlRJQ0FMKQogICAgICwgbV92ZXJ0aWNhbERhdGEoMCkKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKaW5kZXgg
NWRhNWM5OC4uZDhjYzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR2x5cGhC
dWZmZXIuaCIKICNpbmNsdWRlICJHbHlwaE1ldHJpY3NNYXAuaCIKICNpbmNsdWRlICJHbHlwaFBh
Z2VUcmVlTm9kZS5oIgorI2luY2x1ZGUgIk9wZW5UeXBlTWF0aERhdGEuaCIKICNpZiBFTkFCTEUo
T1BFTlRZUEVfVkVSVElDQUwpCiAjaW5jbHVkZSAiT3BlblR5cGVWZXJ0aWNhbERhdGEuaCIKICNl
bmRpZgpAQCAtOTIsNiArOTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBzeXN0ZW1GYWxsYmFjaygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
U2ltcGxlRm9udERhdGEqPigtMSk7IH0KIAogICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EYXRhOyB9CisgICAgY29uc3Qg
T3BlblR5cGVNYXRoRGF0YSogbWF0aERhdGEoKSBjb25zdCB7IHJldHVybiBtX21hdGhEYXRhLmdl
dCgpOyB9CiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQogICAgIGNvbnN0IE9wZW5UeXBl
VmVydGljYWxEYXRhKiB2ZXJ0aWNhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsRGF0
YS5nZXQoKTsgfQogI2VuZGlmCkBAIC0yNTksNiArMjYxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9pc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrOwogICAgIGJvb2wgbV9pc0Jyb2tlbklkZW9n
cmFwaEZhbGxiYWNrOworICAgIFJlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBtX21hdGhEYXRhOwog
I2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKICAgICBSZWZQdHI8T3BlblR5cGVWZXJ0aWNh
bERhdGE+IG1fdmVydGljYWxEYXRhOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMTE1NjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmNwcApAQCAtMCwwICsxLDMyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBGcmVkZXJpYyBXYW5nIChmcmVkLndhbmdAZnJlZS5mcikuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiT3Bl
blR5cGVNYXRoRGF0YS5oIgorCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorI2lmIEVO
QUJMRShPUEVOVFlQRV9NQVRIKQorI2luY2x1ZGUgIk9wZW5UeXBlVHlwZXMuaCIKKyNlbmRpZgor
I2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQorbmFtZXNwYWNl
IE9wZW5UeXBlIHsKKworY29uc3QgdWludDMyX3QgTUFUSFRhZyA9IE9UX01BS0VfVEFHKCdNJywg
J0EnLCAnVCcsICdIJyk7CisKKyNwcmFnbWEgcGFjaygxKQorCitzdHJ1Y3QgTWF0aFZhbHVlUmVj
b3JkIHsKKyAgICBPcGVuVHlwZTo6SW50MTYgdmFsdWU7CisgICAgT3BlblR5cGU6Ok9mZnNldCBk
ZXZpY2VUYWJsZU9mZnNldDsKK307CisKK3N0cnVjdCBNYXRoQ29uc3RhbnRzIHsKKyAgICBPcGVu
VHlwZTo6SW50MTYgaW50Q29uc3RhbnRzW09wZW5UeXBlTWF0aERhdGE6OlNjcmlwdFNjcmlwdFBl
cmNlbnRTY2FsZURvd24gLSBPcGVuVHlwZU1hdGhEYXRhOjpTY3JpcHRQZXJjZW50U2NhbGVEb3du
ICsgMV07CisgICAgT3BlblR5cGU6OlVJbnQxNiB1SW50Q29uc3RhbnRzW09wZW5UeXBlTWF0aERh
dGE6OkRpc3BsYXlPcGVyYXRvck1pbkhlaWdodCAtIE9wZW5UeXBlTWF0aERhdGE6OkRlbGltaXRl
ZFN1YkZvcm11bGFNaW5IZWlnaHQgKyAxXTsKKyAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3Jk
IG1hdGhWYWx1ZXNDb25zdGFudHNbT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbEtlcm5BZnRlckRl
Z3JlZSAtIE9wZW5UeXBlTWF0aERhdGE6Ok1hdGhMZWFkaW5nICsgMV07CisgICAgT3BlblR5cGU6
OlVJbnQxNiByYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50OworfTsKKworc3RydWN0IE1h
dGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CisgICAgT3BlblR5
cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsKKyAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3ND
b3JyZWN0aW9uQ291bnQ7CisgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29y
cmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNv
cnJlY3Rpb24gdmFsdWVzLgorCisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICB7CisgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CisgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gY292ZXJh
Z2VPZmZzZXQ7CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlID0gdmFsaWRhdGVPZmZzZXQ8Q292
ZXJhZ2VUYWJsZT4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICBpZiAoIWNvdmVyYWdlKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gV2UgZGV0ZXJtaW5lIHRoZSBpbmRleCBp
biB0aGUgaXRhbGljc0NvcnJlY3Rpb24gdGFibGUuCisgICAgICAgIHVpbnQzMl90IGk7CisgICAg
ICAgIGlmICghZ2V0Q292ZXJhZ2VJbmRleChidWZmZXIsIGNvdmVyYWdlLCBnbHlwaCwgaSkgfHwg
aT49IGNvdW50KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIGludDE2
X3QoaXRhbGljc0NvcnJlY3Rpb25baV0udmFsdWUpOworICAgIH0KK307CisKK3N0cnVjdCBNYXRo
R2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgeworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhU
b3BBY2NlbnRBdHRhY2htZW50T2Zmc2V0OworICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRT
aGFwZUNvdmVyYWdlT2Zmc2V0OworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zm
c2V0OworCisgICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3ND
b3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7
CisgICAgICAgIGlmIChvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbz4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9Cit9OworCitzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFz
ZSB7CisgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvbjsKKyAg
ICBPcGVuVHlwZTo6VUludDE2IHBhcnRDb3VudDsKKyAgICBzdHJ1Y3QgR2x5cGhQYXJ0UmVjb3Jk
IHsKKyAgICAgICAgT3BlblR5cGU6OkdseXBoSUQgZ2x5cGg7CisgICAgICAgIE9wZW5UeXBlOjpV
SW50MTYgc3RhcnRDb25uZWN0b3JMZW5ndGg7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgZW5k
Q29ubmVjdG9yTGVuZ3RoOworICAgICAgICBPcGVuVHlwZTo6VUludDE2IGZ1bGxBZHZhbmNlOwor
ICAgICAgICBPcGVuVHlwZTo6VUludDE2IHBhcnRGbGFnczsKKyAgICB9IHBhcnRSZWNvcmRzWzFd
OyAvLyBUaGVyZSBhcmUgcGFydENvdW50IEdseXBoUGFydFJlY29yZCdzLgorCisgICAgLy8gUGFy
dEZsYWdzIGVudW1lcmF0aW9uIGN1cnJlbnRseSB1c2VzIG9ubHkgb25lIGJpdDoKKyAgICAvLyAw
eDAwMDEgSWYgc2V0LCB0aGUgcGFydCBjYW4gYmUgc2tpcHBlZCBvciByZXBlYXRlZC4KKyAgICAv
LyAweEZGRkUgUmVzZXJ2ZWQuCisgICAgZW51bSB7CisgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVy
ID0gMHgwMQorICAgIH07CisKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBh
c3NlbWJseVBhcnRzKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0
Q291bnQ7CisgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3Vu
dF0pKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhc3NlbWJseVBhcnRzLnJlc2l6ZShj
b3VudCk7CisgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cisg
ICAgICAgICAgICBhc3NlbWJseVBhcnRzW2ldLmdseXBoID0gcGFydFJlY29yZHNbaV0uZ2x5cGg7
CisgICAgICAgICAgICB1aW50MTZfdCBmbGFnID0gcGFydFJlY29yZHNbaV0ucGFydEZsYWdzOwor
ICAgICAgICAgICAgYXNzZW1ibHlQYXJ0c1tpXS5pc0V4dGVuZGVyID0gZmxhZyAmIFBhcnRGbGFn
c0V4dGVuZGVyOworICAgICAgICB9CisgICAgfQorCit9OworCitzdHJ1Y3QgTWF0aEdseXBoQ29u
c3RydWN0aW9uIDogVGFibGVCYXNlIHsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IGdseXBoQXNzZW1i
bHlPZmZzZXQ7CisgICAgT3BlblR5cGU6OlVJbnQxNiB2YXJpYW50Q291bnQ7CisgICAgc3RydWN0
IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQgeworICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCB2YXJp
YW50R2x5cGg7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50Owor
ICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291
bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgorCisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25z
dAorICAgIHsKKyAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CisgICAgICAg
IGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0p
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXJpYW50cy5yZXNpemUoY291bnQpOwor
ICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAg
IHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbaV0udmFyaWFudEdseXBoOwor
ICAgIH0KKworICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFy
dHMpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5
T2Zmc2V0OworICAgICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFs
aWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICBpZiAo
Z2x5cGhBc3NlbWJseSkKKyAgICAgICAgICAgIGdseXBoQXNzZW1ibHktPmdldEFzc2VtYmx5UGFy
dHMoYnVmZmVyLCBhc3NlbWJseVBhcnRzKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgTWF0aFZhcmlh
bnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgeworICAgIE9wZW5UeXBlOjpVSW50MTYgbWluQ29ubmVj
dG9yT3ZlcmxhcDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IHZlcnRHbHlwaENvdmVyYWdlT2Zmc2V0
OworICAgIE9wZW5UeXBlOjpPZmZzZXQgaG9yaXpHbHlwaENvdmVyYWdlT2Zmc2V0OworICAgIE9w
ZW5UeXBlOjpVSW50MTYgdmVydEdseXBoQ291bnQ7CisgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jp
ekdseXBoQ291bnQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25z
T2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29u
dHJ1Y3Rpb25zIGFuZCBob3JpekdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25z
LgorCisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rp
b24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGlj
YWwpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRH
bHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6R2x5cGhDb3VudCk7CisgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBXZSBkZXRlcm1pbmUgdGhl
IGNvdmVyYWdlIHRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIGdseXBoLgorICAgICAgICB1aW50MTZf
dCBjb3ZlcmFnZU9mZnNldCA9IGlzVmVydGljYWwgPyB2ZXJ0R2x5cGhDb3ZlcmFnZU9mZnNldCA6
IGhvcml6R2x5cGhDb3ZlcmFnZU9mZnNldDsKKyAgICAgICAgaWYgKCFjb3ZlcmFnZU9mZnNldCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBjb25zdCBDb3ZlcmFnZVRhYmxl
KiBjb3ZlcmFnZSA9IHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJh
Z2VPZmZzZXQpOworICAgICAgICBpZiAoIWNvdmVyYWdlKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgLy8gV2UgZGV0ZXJtaW5lIHRoZSBpbmRleCBpbiB0aGUgbWF0aEds
eXBoQ29uc3RydWN0aW9uc09mZnNldCB0YWJsZS4KKyAgICAgICAgdWludDMyX3QgaTsKKyAgICAg
ICAgaWYgKCFnZXRDb3ZlcmFnZUluZGV4KGJ1ZmZlciwgY292ZXJhZ2UsIGdseXBoLCBpKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBjb3VudCA9IGlzVmVydGljYWwgPyB2
ZXJ0R2x5cGhDb3VudCA6IGhvcml6R2x5cGhDb3VudDsKKyAgICAgICAgaWYgKGkgPj0gY291bnQp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc1ZlcnRpY2FsKQor
ICAgICAgICAgICAgaSArPSB1aW50MTZfdCh2ZXJ0R2x5cGhDb3VudCk7CisKKyAgICAgICAgcmV0
dXJuIHZhbGlkYXRlT2Zmc2V0PE1hdGhHbHlwaENvbnN0cnVjdGlvbj4oYnVmZmVyLCBtYXRoR2x5
cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2ldKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgTUFUSFRhYmxl
IDogVGFibGVCYXNlIHsKKyAgICBPcGVuVHlwZTo6Rml4ZWQgdmVyc2lvbjsKKyAgICBPcGVuVHlw
ZTo6T2Zmc2V0IG1hdGhDb25zdGFudHNPZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
R2x5cGhJbmZvT2Zmc2V0OworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0
OworCisgICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICB7CisgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1h
dGhDb25zdGFudHNPZmZzZXQ7CisgICAgICAgIGlmIChvZmZzZXQpCisgICAgICAgICAgICByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8TWF0aENvbnN0YW50cz4oYnVmZmVyLCBvZmZzZXQpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRo
R2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKKyAgICAgICAgaWYgKG9m
ZnNldCkKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxNYXRoR2x5cGhJbmZvPihi
dWZmZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNv
bnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zm
c2V0OworICAgICAgICBpZiAob2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PE1hdGhWYXJpYW50cz4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9Cit9OworCisjcHJhZ21hIHBhY2soKQorCit9IC8vIG5hbWVzcGFjZSBPcGVuVHlw
ZQorI2VuZGlmIC8vIEVOQUJMRShPUEVOVFlQRV9NQVRIKQorCitPcGVuVHlwZU1hdGhEYXRhOjpP
cGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGZvbnREYXRhKQoreworI2lm
IEVOQUJMRShPUEVOVFlQRV9NQVRIKQorICAgIG1fbWF0aEJ1ZmZlciA9IGZvbnREYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6Ok1BVEhUYWcpOworICAgIGNvbnN0IE9wZW5UeXBlOjpNQVRIVGFi
bGUqIG1hdGggPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6TUFUSFRhYmxlPiht
X21hdGhCdWZmZXIpOworICAgIGlmICghbWF0aCkgeworICAgICAgICBtX21hdGhCdWZmZXIgPSBu
dWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgT3BlblR5cGU6Ok1h
dGhDb25zdGFudHMqIG1hdGhjb25zdGFudHMgPSBtYXRoLT5tYXRoQ29uc3RhbnRzKCptX21hdGhC
dWZmZXIpOworICAgIGlmICghbWF0aGNvbnN0YW50cykgeworICAgICAgICBtX21hdGhCdWZmZXIg
PSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgT3BlblR5cGU6
Ok1hdGhWYXJpYW50cyogbWF0aHZhcmlhbnRzID0gbWF0aC0+bWF0aFZhcmlhbnRzKCptX21hdGhC
dWZmZXIpOworICAgIGlmICghbWF0aHZhcmlhbnRzKQorICAgICAgICBtX21hdGhCdWZmZXIgPSBu
dWxscHRyOworI2Vsc2UKKyAgICBtX21hdGhCdWZmZXIgPSBudWxscHRyOworI2VuZGlmCit9CisK
K2Zsb2F0IE9wZW5UeXBlTWF0aERhdGE6OmdldE1hdGhDb25zdGFudChjb25zdCBTaW1wbGVGb250
RGF0YSogZm9udCwgTWF0aENvbnN0YW50IGNvbnN0YW50KSBjb25zdAoreworI2lmIEVOQUJMRShP
UEVOVFlQRV9NQVRIKQorICAgIGludDMyX3QgdmFsdWUgPSAwOworCisgICAgY29uc3QgT3BlblR5
cGU6Ok1BVEhUYWJsZSogbWF0aCA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpN
QVRIVGFibGU+KG1fbWF0aEJ1ZmZlcik7CisgICAgQVNTRVJUKG1hdGgpOworICAgIGNvbnN0IE9w
ZW5UeXBlOjpNYXRoQ29uc3RhbnRzKiBtYXRoY29uc3RhbnRzID0gbWF0aC0+bWF0aENvbnN0YW50
cygqbV9tYXRoQnVmZmVyKTsKKyAgICBBU1NFUlQobWF0aGNvbnN0YW50cyk7CisKKyAgICBpZiAo
Y29uc3RhbnQgPD0gU2NyaXB0U2NyaXB0UGVyY2VudFNjYWxlRG93bikKKyAgICAgICAgdmFsdWUg
PSBpbnQxNl90KG1hdGhjb25zdGFudHMtPmludENvbnN0YW50c1tjb25zdGFudF0pOworICAgIGVs
c2UgaWYgKGNvbnN0YW50IDw9IERpc3BsYXlPcGVyYXRvck1pbkhlaWdodCkKKyAgICAgICAgdmFs
dWUgPSB1aW50MTZfdChtYXRoY29uc3RhbnRzLT51SW50Q29uc3RhbnRzW2NvbnN0YW50IC0gRGVs
aW1pdGVkU3ViRm9ybXVsYU1pbkhlaWdodF0pOworICAgIGVsc2UgaWYgKGNvbnN0YW50IDw9IFJh
ZGljYWxLZXJuQWZ0ZXJEZWdyZWUpCisgICAgICAgIHZhbHVlID0gaW50MTZfdChtYXRoY29uc3Rh
bnRzLT5tYXRoVmFsdWVzQ29uc3RhbnRzW2NvbnN0YW50IC0gTWF0aExlYWRpbmddLnZhbHVlKTsK
KyAgICBlbHNlCisgICAgICAgIHZhbHVlID0gdWludDE2X3QobWF0aGNvbnN0YW50cy0+cmFkaWNh
bERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudCk7CisKKyAgICBpZiAoY29uc3RhbnQgPT0gU2NyaXB0
UGVyY2VudFNjYWxlRG93biB8fCBjb25zdGFudCA9PSBTY3JpcHRTY3JpcHRQZXJjZW50U2NhbGVE
b3duIHx8IGNvbnN0YW50ID09IFJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQpCisgICAg
ICAgIHJldHVybiB2YWx1ZSAvIDEwMC4wOworCisgICAgcmV0dXJuIHZhbHVlICogZm9udC0+c2l6
ZVBlclVuaXQoKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworZmxvYXQgT3BlblR5cGVNYXRoRGF0YTo6Z2V0SXRhbGljQ29ycmVj
dGlvbihjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgR2x5cGggZ2x5cGgpIGNvbnN0Cit7Cisj
aWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCisgICAgY29uc3QgT3BlblR5cGU6Ok1BVEhUYWJsZSog
bWF0aCA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpNQVRIVGFibGU+KG1fbWF0
aEJ1ZmZlcik7CisgICAgQVNTRVJUKG1hdGgpOworICAgIGNvbnN0IE9wZW5UeXBlOjpNYXRoR2x5
cGhJbmZvKiBtYXRoR2x5cGhJbmZvID0gbWF0aC0+bWF0aEdseXBoSW5mbygqbV9tYXRoQnVmZmVy
KTsKKyAgICBpZiAoIW1hdGhHbHlwaEluZm8pCisgICAgICAgIHJldHVybiAwOworCisgICAgY29u
c3QgT3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8gPSBtYXRoR2x5cGhJbmZvLT5tYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKCptX21h
dGhCdWZmZXIpOworICAgIGlmICghbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbykKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mby0+Z2V0SXRh
bGljQ29ycmVjdGlvbigqbV9tYXRoQnVmZmVyLCBnbHlwaCkgKiBmb250LT5zaXplUGVyVW5pdCgp
OworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgorfQorCit2b2lkIE9wZW5UeXBlTWF0aERhdGE6OmdldE1hdGhWYXJpYW50cyhHbHlwaCBnbHlw
aCwgYm9vbCBpc1ZlcnRpY2FsLCBWZWN0b3I8R2x5cGg+JiBzaXplVmFyaWFudHMsIFZlY3RvcjxB
c3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAoreworICAgIHNpemVWYXJpYW50cy5j
bGVhcigpOworICAgIGFzc2VtYmx5UGFydHMuY2xlYXIoKTsKKyNpZiBFTkFCTEUoT1BFTlRZUEVf
TUFUSCkKKyAgICBjb25zdCBPcGVuVHlwZTo6TUFUSFRhYmxlKiBtYXRoID0gT3BlblR5cGU6OnZh
bGlkYXRlVGFibGU8T3BlblR5cGU6Ok1BVEhUYWJsZT4obV9tYXRoQnVmZmVyKTsKKyAgICBBU1NF
UlQobWF0aCk7CisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhWYXJpYW50cyogbWF0aHZhcmlhbnRz
ID0gbWF0aC0+bWF0aFZhcmlhbnRzKCptX21hdGhCdWZmZXIpOworICAgIEFTU0VSVChtYXRodmFy
aWFudHMpOworCisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0
aEdseXBoQ29uc3RydWN0aW9uID0gbWF0aHZhcmlhbnRzLT5tYXRoR2x5cGhDb25zdHJ1Y3Rpb24o
Km1fbWF0aEJ1ZmZlciwgZ2x5cGgsIGlzVmVydGljYWwpOworICAgIGlmICghbWF0aEdseXBoQ29u
c3RydWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24t
PmdldFNpemVWYXJpYW50cygqbV9tYXRoQnVmZmVyLCBzaXplVmFyaWFudHMpOworICAgIG1hdGhH
bHlwaENvbnN0cnVjdGlvbi0+Z2V0QXNzZW1ibHlQYXJ0cygqbV9tYXRoQnVmZmVyLCBhc3NlbWJs
eVBhcnRzKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNDc4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgK
QEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgRnJlZGVyaWMgV2Fu
ZyAoZnJlZC53YW5nQGZyZWUuZnIpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBPcGVuVHlwZU1hdGhEYXRhX2gKKyNkZWZpbmUgT3BlblR5cGVNYXRo
RGF0YV9oCisKKyNpbmNsdWRlICJHbHlwaC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U2ltcGxlRm9udERhdGE7CitjbGFzcyBGb250UGxhdGZvcm1EYXRhOworCitjbGFzcyBPcGVuVHlw
ZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wZW5UeXBlTWF0aERhdGE+IGNyZWF0ZShjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBmb250RGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgT3BlblR5cGVNYXRoRGF0YShmb250RGF0YSkpOworICAgIH0KKworICAgIGJvb2wgaGFz
TWF0aERhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fbWF0aEJ1ZmZlcjsgfQorCisgICAgLy8gVGhl
c2UgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHRoZSBNQVRIIHRhYmxlLgorICAgIC8vIFRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBPcGVuVHlwZU1hdGhEYXRhOjpnZXRNYXRoQ29uc3RhbnQgYXNzdW1l
cyB0aGF0IHRoZXkgY29ycmVzcG9uZCB0byB0aGUgaW5kaWNlcyBvZiB0aGUgTWF0aENvbnRhbnQg
dGFibGUuCisgICAgZW51bSBNYXRoQ29uc3RhbnQgeworICAgICAgICBTY3JpcHRQZXJjZW50U2Nh
bGVEb3duLAorICAgICAgICBTY3JpcHRTY3JpcHRQZXJjZW50U2NhbGVEb3duLAorICAgICAgICBE
ZWxpbWl0ZWRTdWJGb3JtdWxhTWluSGVpZ2h0LAorICAgICAgICBEaXNwbGF5T3BlcmF0b3JNaW5I
ZWlnaHQsCisgICAgICAgIE1hdGhMZWFkaW5nLAorICAgICAgICBBeGlzSGVpZ2h0LAorICAgICAg
ICBBY2NlbnRCYXNlSGVpZ2h0LAorICAgICAgICBGbGF0dGVuZWRBY2NlbnRCYXNlSGVpZ2h0LAor
ICAgICAgICBTdWJzY3JpcHRTaGlmdERvd24sCisgICAgICAgIFN1YnNjcmlwdFRvcE1heCwKKyAg
ICAgICAgU3Vic2NyaXB0QmFzZWxpbmVEcm9wTWluLAorICAgICAgICBTdXBlcnNjcmlwdFNoaWZ0
VXAsCisgICAgICAgIFN1cGVyc2NyaXB0U2hpZnRVcENyYW1wZWQsCisgICAgICAgIFN1cGVyc2Ny
aXB0Qm90dG9tTWluLAorICAgICAgICBTdXBlcnNjcmlwdEJhc2VsaW5lRHJvcE1heCwKKyAgICAg
ICAgU3ViU3VwZXJzY3JpcHRHYXBNaW4sCisgICAgICAgIFN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0
aFN1YnNjcmlwdCwKKyAgICAgICAgU3BhY2VBZnRlclNjcmlwdCwKKyAgICAgICAgVXBwZXJMaW1p
dEdhcE1pbiwKKyAgICAgICAgVXBwZXJMaW1pdEJhc2VsaW5lUmlzZU1pbiwKKyAgICAgICAgTG93
ZXJMaW1pdEdhcE1pbiwKKyAgICAgICAgTG93ZXJMaW1pdEJhc2VsaW5lRHJvcE1pbiwKKyAgICAg
ICAgU3RhY2tUb3BTaGlmdFVwLAorICAgICAgICBTdGFja1RvcERpc3BsYXlTdHlsZVNoaWZ0VXAs
CisgICAgICAgIFN0YWNrQm90dG9tU2hpZnREb3duLAorICAgICAgICBTdGFja0JvdHRvbURpc3Bs
YXlTdHlsZVNoaWZ0RG93biwKKyAgICAgICAgU3RhY2tHYXBNaW4sCisgICAgICAgIFN0YWNrRGlz
cGxheVN0eWxlR2FwTWluLAorICAgICAgICBTdHJldGNoU3RhY2tUb3BTaGlmdFVwLAorICAgICAg
ICBTdHJldGNoU3RhY2tCb3R0b21TaGlmdERvd24sCisgICAgICAgIFN0cmV0Y2hTdGFja0dhcEFi
b3ZlTWluLAorICAgICAgICBTdHJldGNoU3RhY2tHYXBCZWxvd01pbiwKKyAgICAgICAgRnJhY3Rp
b25OdW1lcmF0b3JTaGlmdFVwLAorICAgICAgICBGcmFjdGlvbk51bWVyYXRvckRpc3BsYXlTdHls
ZVNoaWZ0VXAsCisgICAgICAgIEZyYWN0aW9uRGVub21pbmF0b3JTaGlmdERvd24sCisgICAgICAg
IEZyYWN0aW9uRGVub21pbmF0b3JEaXNwbGF5U3R5bGVTaGlmdERvd24sCisgICAgICAgIEZyYWN0
aW9uTnVtZXJhdG9yR2FwTWluLAorICAgICAgICBGcmFjdGlvbk51bURpc3BsYXlTdHlsZUdhcE1p
biwKKyAgICAgICAgRnJhY3Rpb25SdWxlVGhpY2tuZXNzLAorICAgICAgICBGcmFjdGlvbkRlbm9t
aW5hdG9yR2FwTWluLAorICAgICAgICBGcmFjdGlvbkRlbm9tRGlzcGxheVN0eWxlR2FwTWluLAor
ICAgICAgICBTa2V3ZWRGcmFjdGlvbkhvcml6b250YWxHYXAsCisgICAgICAgIFNrZXdlZEZyYWN0
aW9uVmVydGljYWxHYXAsCisgICAgICAgIE92ZXJiYXJWZXJ0aWNhbEdhcCwKKyAgICAgICAgT3Zl
cmJhclJ1bGVUaGlja25lc3MsCisgICAgICAgIE92ZXJiYXJFeHRyYUFzY2VuZGVyLAorICAgICAg
ICBVbmRlcmJhclZlcnRpY2FsR2FwLAorICAgICAgICBVbmRlcmJhclJ1bGVUaGlja25lc3MsCisg
ICAgICAgIFVuZGVyYmFyRXh0cmFEZXNjZW5kZXIsCisgICAgICAgIFJhZGljYWxWZXJ0aWNhbEdh
cCwKKyAgICAgICAgUmFkaWNhbERpc3BsYXlTdHlsZVZlcnRpY2FsR2FwLAorICAgICAgICBSYWRp
Y2FsUnVsZVRoaWNrbmVzcywKKyAgICAgICAgUmFkaWNhbEV4dHJhQXNjZW5kZXIsCisgICAgICAg
IFJhZGljYWxLZXJuQmVmb3JlRGVncmVlLAorICAgICAgICBSYWRpY2FsS2VybkFmdGVyRGVncmVl
LAorICAgICAgICBSYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50CisgICAgfTsKKworICAg
IHN0cnVjdCBBc3NlbWJseVBhcnQgeworICAgICAgICBHbHlwaCBnbHlwaDsKKyAgICAgICAgYm9v
bCBpc0V4dGVuZGVyOworICAgIH07CisKKyAgICBmbG9hdCBnZXRNYXRoQ29uc3RhbnQoY29uc3Qg
U2ltcGxlRm9udERhdGEqLCBNYXRoQ29uc3RhbnQpIGNvbnN0OworICAgIGZsb2F0IGdldEl0YWxp
Y0NvcnJlY3Rpb24oY29uc3QgU2ltcGxlRm9udERhdGEqLCBHbHlwaCkgY29uc3Q7CisgICAgdm9p
ZCBnZXRNYXRoVmFyaWFudHMoR2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCwgVmVjdG9yPEdseXBoPiYg
c2l6ZVZhcmlhbnRzLCBWZWN0b3I8QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxh
dGZvcm1EYXRhJik7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gT3BlblR5cGVNYXRoRGF0YV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggZGE5Y2VhOS4uMjhkY2I1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlw
ZXMuaApAQCAtMTAwLDYgKzEwMCw4OCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAorI2lmIEVO
QUJMRShPUEVOVFlQRV9WRVJUSUNBTCkgfHwgRU5BQkxFKE9QRU5UWVBFX01BVEgpCitzdHJ1Y3Qg
Q292ZXJhZ2VUYWJsZSA6IFRhYmxlQmFzZSB7CisgICAgT3BlblR5cGU6OlVJbnQxNiBjb3ZlcmFn
ZUZvcm1hdDsKK307CisKK3N0cnVjdCBDb3ZlcmFnZTFUYWJsZSA6IENvdmVyYWdlVGFibGUgewor
ICAgIE9wZW5UeXBlOjpVSW50MTYgZ2x5cGhDb3VudDsKKyAgICBPcGVuVHlwZTo6R2x5cGhJRCBn
bHlwaEFycmF5WzFdOworfTsKKworc3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJs
ZSB7CisgICAgT3BlblR5cGU6OlVJbnQxNiByYW5nZUNvdW50OworICAgIHN0cnVjdCBSYW5nZVJl
Y29yZCB7CisgICAgICAgIE9wZW5UeXBlOjpHbHlwaElEIHN0YXJ0OworICAgICAgICBPcGVuVHlw
ZTo6R2x5cGhJRCBlbmQ7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgc3RhcnRDb3ZlcmFnZUlu
ZGV4OworICAgIH0gcmFuZ2VzWzFdOworfTsKKyNlbmRpZiAvLyBFTkFCTEUoT1BFTlRZUEVfVkVS
VElDQUwpIHx8IEVOQUJMRShPUEVOVFlQRV9NQVRIKQorCisjaWYgRU5BQkxFKE9QRU5UWVBFX01B
VEgpCitzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgeworcHJvdGVjdGVkOgor
ICAgIGJvb2wKKyAgICBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBj
b3ZlcmFnZUluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292
ZXJhZ2VGb3JtYXQpIHsKKyAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAxCisg
ICAgICAgICAgICBjb25zdCBDb3ZlcmFnZTFUYWJsZSogY292ZXJhZ2UxID0gdmFsaWRhdGVQdHI8
Q292ZXJhZ2UxVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2UpOworICAgICAgICAgICAgaWYgKCFjb3Zl
cmFnZTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdWludDE2
X3QgZ2x5cGhDb3VudCA9IGNvdmVyYWdlMS0+Z2x5cGhDb3VudDsKKyAgICAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZjb3ZlcmFnZTEtPmdseXBoQXJyYXlbZ2x5cGhDb3VudF0pKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8gV2UgZG8gYSBi
aW5hcnkgc2VhcmNoIG9uIHRoZSBnbHlwaCBpbmRleGVzLgorICAgICAgICAgICAgdWludDMyX3Qg
aW1pbiA9IDAsIGltYXggPSBnbHlwaENvdW50OworICAgICAgICAgICAgd2hpbGUgKGltaW4gPCBp
bWF4KSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgaW1pZCA9IChpbWluICsgaW1heCkgPj4g
MTsKKyAgICAgICAgICAgICAgICB1aW50MTZfdCBnbHlwaE1pZCA9IGNvdmVyYWdlMS0+Z2x5cGhB
cnJheVtpbWlkXTsKKyAgICAgICAgICAgICAgICBpZiAoZ2x5cGhNaWQgPT0gZ2x5cGgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY292ZXJhZ2VJbmRleCA9IGltaWQ7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
Z2x5cGhNaWQgPCBnbHlwaCkKKyAgICAgICAgICAgICAgICAgICAgaW1pbiA9IGltaWQgKyAxOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaW1heCA9IGltaWQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IDI6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDIKKyAgICAgICAgICAgIGNvbnN0IENvdmVyYWdlMlRh
YmxlKiBjb3ZlcmFnZTIgPSB2YWxpZGF0ZVB0cjxDb3ZlcmFnZTJUYWJsZT4oYnVmZmVyLCBjb3Zl
cmFnZSk7CisgICAgICAgICAgICBpZiAoIWNvdmVyYWdlMikKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB1aW50MTZfdCByYW5nZUNvdW50ID0gY292ZXJhZ2UyLT5y
YW5nZUNvdW50OworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNvdmVyYWdl
Mi0+cmFuZ2VzW3JhbmdlQ291bnRdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgICAgIC8vIFdlIGRvIGEgYmluYXJ5IHNlYXJjaCBvbiB0aGUgcmFuZ2VzLgorICAg
ICAgICAgICAgdWludDMyX3QgaW1pbiA9IDAsIGltYXggPSByYW5nZUNvdW50OworICAgICAgICAg
ICAgd2hpbGUgKGltaW4gPCBpbWF4KSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgaW1pZCA9
IChpbWluICsgaW1heCkgPj4gMTsKKyAgICAgICAgICAgICAgICB1aW50MTZfdCByU3RhcnQgPSBj
b3ZlcmFnZTItPnJhbmdlc1tpbWlkXS5zdGFydDsKKyAgICAgICAgICAgICAgICB1aW50MTZfdCBy
RW5kID0gY292ZXJhZ2UyLT5yYW5nZXNbaW1pZF0uZW5kOworICAgICAgICAgICAgICAgIGlmIChy
RW5kIDwgZ2x5cGgpCisgICAgICAgICAgICAgICAgICAgIGltaW4gPSBpbWlkICsgMTsKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmIChnbHlwaCA8IHJTdGFydCkKKyAgICAgICAgICAgICAgICAgICAg
aW1heCA9IGltaWQ7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IGNvdmVyYWdlSW5kZXggPSBjb3ZlcmFnZTItPnJhbmdlc1tpbWlkXS5zdGFydENvdmVyYWdlSW5k
ZXggKyBnbHlwaCAtIHJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfTsKKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBPcGVuVHlwZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2Vu
ZGlmIC8vIE9wZW5UeXBlVHlwZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
CmluZGV4IDM1YWU3MWQuLjdjMzcwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0
YS5jcHAKQEAgLTExMiwyNCArMTEyLDYgQEAgc3RydWN0IFZPUkdUYWJsZSB7CiAgICAgc2l6ZV90
IHJlcXVpcmVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVvZigqdGhpcykgKyBzaXplb2YoVmVy
dE9yaWdpbllNZXRyaWNzKSAqIChudW1WZXJ0T3JpZ2luWU1ldHJpY3MgLSAxKTsgfQogfTsKIAot
c3RydWN0IENvdmVyYWdlVGFibGUgOiBUYWJsZUJhc2UgewotICAgIE9wZW5UeXBlOjpVSW50MTYg
Y292ZXJhZ2VGb3JtYXQ7Ci19OwotCi1zdHJ1Y3QgQ292ZXJhZ2UxVGFibGUgOiBDb3ZlcmFnZVRh
YmxlIHsKLSAgICBPcGVuVHlwZTo6VUludDE2IGdseXBoQ291bnQ7Ci0gICAgT3BlblR5cGU6Okds
eXBoSUQgZ2x5cGhBcnJheVsxXTsKLX07Ci0KLXN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVy
YWdlVGFibGUgewotICAgIE9wZW5UeXBlOjpVSW50MTYgcmFuZ2VDb3VudDsKLSAgICBzdHJ1Y3Qg
UmFuZ2VSZWNvcmQgewotICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCBzdGFydDsKLSAgICAgICAg
T3BlblR5cGU6OkdseXBoSUQgZW5kOwotICAgICAgICBPcGVuVHlwZTo6VUludDE2IHN0YXJ0Q292
ZXJhZ2VJbmRleDsKLSAgICB9IHJhbmdlc1sxXTsKLX07Ci0KIHN0cnVjdCBTdWJzdGl0dXRpb25T
dWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsK
ICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227420</attachid>
            <date>2014-03-21 05:49:22 -0700</date>
            <delta_ts>2014-03-24 09:31:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>read-MATH.patch</filename>
            <type>text/plain</type>
            <size>26234</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZDQ4MDI3Ny4uMjY4ZGVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMy0yMSAg
RnLDqWTDqXJpYyBXYW5nICA8ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgT3BlcmF0b3Ig
c3RyZXRjaGluZzogcmVhZCB0aGUgT3BlbiBUeXBlIE1BVEggdGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMyNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IGVuYWJs
ZSBPUEVOVFlQRV9NQVRIIG9uIHBsYXRmb3JtcyB0aGF0IGNhbiByZWFkIE9wZW5UeXBlIHRhYmxl
cy4KKwogMjAxNC0wMy0yMCAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgTW92ZSB0byB1c2luZyBzdGQ6OnVuaXF1ZV9wdHIgZm9yIEVGTCBvYmplY3RzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKaW5kZXggYWU1ZjVmOS4uZGUxYTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMDQ2LDQg
KzEwNDYsOSBAQAogI2RlZmluZSBIQVZFX05TX0FDVElWSVRZIDEKICNlbmRpZgogCisjaWYgT1Mo
REFSV0lOKSB8fCBVU0UoRlJFRVRZUEUpIHx8IChQTEFURk9STShXSU4pICYmIChVU0UoQ0cpIHx8
IFVTRShDQUlSTykpKQorI3VuZGVmIEVOQUJMRV9PUEVOVFlQRV9NQVRICisjZGVmaW5lIEVOQUJM
RV9PUEVOVFlQRV9NQVRIIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNjcyODdhLi44MzRiZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzcg
QEAKIDIwMTQtMDMtMjEgIEZyw6lkw6lyaWMgV2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZyPgogCisg
ICAgICAgIE9wZXJhdG9yIHN0cmV0Y2hpbmc6IHJlYWQgdGhlIE9wZW4gVHlwZSBNQVRIIHRhYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMjQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBwYXJz
ZSBhbmQgZXhwb3NlIHNvbWUgZGF0YSBmcm9tIHRoZSBPcGVuVHlwZSBNQVRIIHRhYmxlIHRoYXQg
d2lsbCBiZQorICAgICAgICBiZSByZWxldmFudCBmb3IgYXQgbGVhc3QgdGhlIE1hdGhNTCBvcGVy
YXRvciBzdHJldGNoaW5nIChidWcgMTMwMzIyKToKKyAgICAgICAgbWF0aCBjb25zdGFudHMsIGl0
YWxpYyBjb3JyZWN0aW9ucyBhbmQgc2l6ZSB2YXJpYW50cyAvIGdseXBoIGFzc2VtYmx5LgorICAg
ICAgICBUaGlzIHdpbGwgYmUgdGVzdGVkIHdoZW4gdGhlIE1hdGhNTCBjb2RlIHVzZXMgdGhlIGRh
dGEuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBP
cGVuVHlwZVR5cGVzLmggdG8gdGhlIE1hYyBidWlsZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDogV2UgaW1wbGVtZW50IHRoZSBsb3ct
bGV2ZWwgcGFyc2luZyBvZiB0aGUgTUFUSCB0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJl
Y3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5Ojpn
ZXRBc3NlbWJseVBhcnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhD
b25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6Ok9wZW5UeXBlTWF0aERhdGEpOiBXZSBsb2Fk
IHRoZSBNQVRIIHRhYmxlLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVNYXRoRGF0YTo6Z2V0
TWF0aENvbnN0YW50KTogV2UgYWRkIGEgZnVuY3Rpb24gdG8gZ2V0IHZhbHVlcyBmcm9tIHRoZSBN
YXRoQ29uc3RhbnQgc3VidGFibGUuCisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZU1hdGhEYXRh
OjpnZXRJdGFsaWNDb3JyZWN0aW9uKTogV2UgYWRkIGEgZnVuY3Rpb24gdG8gZ2V0IGl0YWxpYyBj
b3JyZWN0aW9uIGZyb20gdGhlIE1hdGhHbHlwaEluZm8gc3VidGFibGUuCisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZU1hdGhEYXRhOjpnZXRNYXRoVmFyaWFudHMpOiBXZSBhZGQgYSBmdW5jdGlv
biB0byBnZXQgc2l6ZSB2YXJpYW50cyAvIGdseXBoIGFzc2VtYmx5IGZyb20gdGhlIE1hdGhWYXJp
YW50cyBzdWJ0YWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmg6IFdlIGV4cG9zZSB0aHJlZSBuZXcgZnVuY3Rpb25zIHRvIGdldCBtYXRo
IGRhdGEuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBl
cy5oOiBXZSBzaGFyZSB0aGUgY292ZXJhZ2UgdGFibGVzIHRoYXQgYXJlIGNvbW1vbiB0byB2ZXJ0
aWNhbCBhbmQgbWF0aCBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlV2l0
aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4KTogV2UgYWRkIGEgZnVuY3Rpb24gdG8gZ2V0IHRo
ZSBjb3ZlcmFnZSBpbmRleCBmcm9tIGEgZ2l2ZW4gZ2x5cGguCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwOiBXZSBtb3ZlIHRoZSBj
b3ZlcmFnZSB0YWJsZXMgdG8gT3BlblR5cGVUeXBlcy5oLgorCisyMDE0LTAzLTIxICBGcsOpZMOp
cmljIFdhbmcgIDxmcmVkLndhbmdAZnJlZS5mcj4KKwogICAgICAgICBPcGVyYXRvciBzdHJldGNo
aW5nOiBleHBvc2UgYSBtYXRoIGRhdGEgQVBJCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA1NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQxYjRlMWYuLjMyMjQzMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQ1ODgsNiArNDU4OCw3IEBACiAJCUIyQzNEQTY1MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVG
b250RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjJDM0RBNTQwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjJEM0RBNjQwRDAwNkNENjAw
RUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjJEM0RBNTMwRDAwNkNENjAwRUY2RjI3IC8qIE9wZW5UeXBl
TWF0aERhdGEuY3BwICovOyB9OwogCQlCMkQzREE2NTBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5
cGVNYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjJEM0RBNTQwRDAwNkNENjAwRUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCMkQzRUE2NTBEMDA2
Q0Q2MDBFRjZGMjggLyogT3BlblR5cGVUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjJEM0VBNTQwRDAwNkNENjAwRUY2RjI4IC8qIE9wZW5UeXBl
VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCMkMzREE2NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udERlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREE1NTBEMDA2Q0Q2MDBF
RjZGMjYgLyogRm9udERlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjJDM0RBNjcwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRHbHlw
aHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJD
M0RBNTYwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRHbHlwaHMuY3BwICovOyB9OwogCQlCMkMzREE2
ODBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEdseXBocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBNTcwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRH
bHlwaHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTE4MjIsNiArMTE4MjMsNyBAQAogCQlCMkMzREE1NDBEMDA2Q0Q2MDBFRjZGMjYgLyogU2lt
cGxlRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZUZv
bnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRDNEQTUzMEQwMDZDRDYw
MEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBvcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJEM0RBNTQwRDAwNkNENjAwRUY2RjI3IC8qIE9wZW5UeXBlTWF0
aERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG9wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJEM0VBNTQwRDAw
NkNENjAwRUY2RjI4IC8qIE9wZW5UeXBlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IG9wZW50eXBlL09wZW5UeXBlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjJDM0RBNTUwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnREZXNjcmlwdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udERlc2NyaXB0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTU2MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250
R2x5cGhzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250R2x5
cGhzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0RBNTcwRDAwNkNENjAw
RUY2RjI2IC8qIEZvbnRHbHlwaHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZvbnRHbHlwaHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMDkxLDYgKzIw
MDkzLDcgQEAKIAkJCQlCMkMzREE1NDBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEu
aCAqLywKIAkJCQlCMkQzREE1MzBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5j
cHAgKi8sCiAJCQkJQjJEM0RBNTQwRDAwNkNENjAwRUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEu
aCAqLywKKwkJCQlCMkQzRUE1NDBEMDA2Q0Q2MDBFRjZGMjggLyogT3BlblR5cGVUeXBlcy5oICov
LAogCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmgg
Ki8sCiAJCQkJQ0RDNjFEQTAxODA4NjdEODAwNEI5MTNGIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUu
aCAqLywKIAkJCQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudC5oICovLApAQCAtMjU0MjMsNiArMjU0MjYsNyBAQAogCQkJCTQxRDE2OEVFMTAyMjZF
ODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
QzNEQTY1MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVGb250RGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJEM0RBNjUwRDAwNkNENjAwRUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUIyRDNFQTY1MEQwMDZDRDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDg5NDRBMzE4MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxl
TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRFOUIxMUQxODE0NTY5QzAwM0FDQ0RG
IC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RTlC
MTE5MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCAxODA5NzM0Li5kMzExNTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtMjcsMTUgKzI3LDMwMCBAQAogI2lu
Y2x1ZGUgIk9wZW5UeXBlTWF0aERhdGEuaCIKIAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEu
aCIKKyNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKKyNpbmNsdWRlICJPcGVuVHlwZVR5cGVzLmgi
CisjZW5kaWYKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wZW5UeXBlTWF0aERhdGE6Ok9wZW5UeXBl
TWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpCisjaWYgRU5BQkxFKE9QRU5UWVBFX01B
VEgpCituYW1lc3BhY2UgT3BlblR5cGUgeworCitjb25zdCB1aW50MzJfdCBNQVRIVGFnID0gT1Rf
TUFLRV9UQUcoJ00nLCAnQScsICdUJywgJ0gnKTsKKworI3ByYWdtYSBwYWNrKDEpCisKK3N0cnVj
dCBNYXRoVmFsdWVSZWNvcmQgeworICAgIE9wZW5UeXBlOjpJbnQxNiB2YWx1ZTsKKyAgICBPcGVu
VHlwZTo6T2Zmc2V0IGRldmljZVRhYmxlT2Zmc2V0OworfTsKKworc3RydWN0IE1hdGhDb25zdGFu
dHMgeworICAgIE9wZW5UeXBlOjpJbnQxNiBpbnRDb25zdGFudHNbT3BlblR5cGVNYXRoRGF0YTo6
U2NyaXB0U2NyaXB0UGVyY2VudFNjYWxlRG93biAtIE9wZW5UeXBlTWF0aERhdGE6OlNjcmlwdFBl
cmNlbnRTY2FsZURvd24gKyAxXTsKKyAgICBPcGVuVHlwZTo6VUludDE2IHVJbnRDb25zdGFudHNb
T3BlblR5cGVNYXRoRGF0YTo6RGlzcGxheU9wZXJhdG9yTWluSGVpZ2h0IC0gT3BlblR5cGVNYXRo
RGF0YTo6RGVsaW1pdGVkU3ViRm9ybXVsYU1pbkhlaWdodCArIDFdOworICAgIE9wZW5UeXBlOjpN
YXRoVmFsdWVSZWNvcmQgbWF0aFZhbHVlc0NvbnN0YW50c1tPcGVuVHlwZU1hdGhEYXRhOjpSYWRp
Y2FsS2VybkFmdGVyRGVncmVlIC0gT3BlblR5cGVNYXRoRGF0YTo6TWF0aExlYWRpbmcgKyAxXTsK
KyAgICBPcGVuVHlwZTo6VUludDE2IHJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQ7Cit9
OworCitzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdl
IHsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OworICAgIE9wZW5UeXBlOjpV
SW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKKyAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVj
b3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25D
b3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCisKKyAgICBpbnQxNl90IGdldEl0YWxpY0Nv
cnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgdWludDE2X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlv
bkNvdW50KTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0
aW9uW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICB1aW50MTZfdCBv
ZmZzZXQgPSBjb3ZlcmFnZU9mZnNldDsKKyAgICAgICAgaWYgKCFvZmZzZXQpCisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UgPSB2YWxp
ZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIG9mZnNldCk7CisgICAgICAgIGlmICgh
Y292ZXJhZ2UpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAvLyBXZSBkZXRlcm1p
bmUgdGhlIGluZGV4IGluIHRoZSBpdGFsaWNzQ29ycmVjdGlvbiB0YWJsZS4KKyAgICAgICAgdWlu
dDMyX3QgaTsKKyAgICAgICAgaWYgKCFnZXRDb3ZlcmFnZUluZGV4KGJ1ZmZlciwgY292ZXJhZ2Us
IGdseXBoLCBpKSB8fCBpPj0gY291bnQpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAg
ICByZXR1cm4gaW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbltpXS52YWx1ZSk7CisgICAgfQorfTsK
Kworc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CisgICAgT3BlblR5
cGU6Ok9mZnNldCBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OworICAgIE9wZW5UeXBl
OjpPZmZzZXQgbWF0aFRvcEFjY2VudEF0dGFjaG1lbnRPZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9m
ZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBt
YXRoS2VybkluZm9PZmZzZXQ7CisKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
KiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mb09mZnNldDsKKyAgICAgICAgaWYgKG9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiB2
YWxpZGF0ZU9mZnNldDxNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvPihidWZmZXIsIG9mZnNldCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK307CisKK3N0cnVjdCBHbHlwaEFzc2Vt
Ymx5IDogVGFibGVCYXNlIHsKKyAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3ND
b3JyZWN0aW9uOworICAgIE9wZW5UeXBlOjpVSW50MTYgcGFydENvdW50OworICAgIHN0cnVjdCBH
bHlwaFBhcnRSZWNvcmQgeworICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCBnbHlwaDsKKyAgICAg
ICAgT3BlblR5cGU6OlVJbnQxNiBzdGFydENvbm5lY3Rvckxlbmd0aDsKKyAgICAgICAgT3BlblR5
cGU6OlVJbnQxNiBlbmRDb25uZWN0b3JMZW5ndGg7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYg
ZnVsbEFkdmFuY2U7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgcGFydEZsYWdzOworICAgIH0g
cGFydFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSBwYXJ0Q291bnQgR2x5cGhQYXJ0UmVjb3JkJ3Mu
CisKKyAgICAvLyBQYXJ0RmxhZ3MgZW51bWVyYXRpb24gY3VycmVudGx5IHVzZXMgb25seSBvbmUg
Yml0OgorICAgIC8vIDB4MDAwMSBJZiBzZXQsIHRoZSBwYXJ0IGNhbiBiZSBza2lwcGVkIG9yIHJl
cGVhdGVkLgorICAgIC8vIDB4RkZGRSBSZXNlcnZlZC4KKyAgICBlbnVtIHsKKyAgICAgICAgUGFy
dEZsYWdzRXh0ZW5kZXIgPSAweDAxCisgICAgfTsKKworICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFz
c2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZf
dCBjb3VudCA9IHBhcnRDb3VudDsKKyAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBh
cnRSZWNvcmRzW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGFzc2VtYmx5
UGFydHMucmVzaXplKGNvdW50KTsKKyAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGNv
dW50OyBpKyspIHsKKyAgICAgICAgICAgIGFzc2VtYmx5UGFydHNbaV0uZ2x5cGggPSBwYXJ0UmVj
b3Jkc1tpXS5nbHlwaDsKKyAgICAgICAgICAgIHVpbnQxNl90IGZsYWcgPSBwYXJ0UmVjb3Jkc1tp
XS5wYXJ0RmxhZ3M7CisgICAgICAgICAgICBhc3NlbWJseVBhcnRzW2ldLmlzRXh0ZW5kZXIgPSBm
bGFnICYgUGFydEZsYWdzRXh0ZW5kZXI7CisgICAgICAgIH0KKyAgICB9CisKK307CisKK3N0cnVj
dCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgeworICAgIE9wZW5UeXBlOjpPZmZz
ZXQgZ2x5cGhBc3NlbWJseU9mZnNldDsKKyAgICBPcGVuVHlwZTo6VUludDE2IHZhcmlhbnRDb3Vu
dDsKKyAgICBzdHJ1Y3QgTWF0aEdseXBoVmFyaWFudFJlY29yZCB7CisgICAgICAgIE9wZW5UeXBl
OjpHbHlwaElEIHZhcmlhbnRHbHlwaDsKKyAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBhZHZhbmNl
TWVhc3VyZW1lbnQ7CisgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhlcmUg
YXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCisKKyAgICB2b2lkIGdl
dFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYg
dmFyaWFudHMpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRD
b3VudDsKKyAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRS
ZWNvcmRzW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhcmlhbnRzLnJl
c2l6ZShjb3VudCk7CisgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KQorICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52
YXJpYW50R2x5cGg7CisgICAgfQorCisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0
PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB7CisgICAgICAgIHVpbnQxNl90IG9mZnNldCA9
IGdseXBoQXNzZW1ibHlPZmZzZXQ7CisgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBo
QXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7
CisgICAgICAgIGlmIChnbHlwaEFzc2VtYmx5KQorICAgICAgICAgICAgZ2x5cGhBc3NlbWJseS0+
Z2V0QXNzZW1ibHlQYXJ0cyhidWZmZXIsIGFzc2VtYmx5UGFydHMpOworICAgIH0KK307CisKK3N0
cnVjdCBNYXRoVmFyaWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CisgICAgT3BlblR5cGU6OlVJ
bnQxNiBtaW5Db25uZWN0b3JPdmVybGFwOworICAgIE9wZW5UeXBlOjpPZmZzZXQgdmVydEdseXBo
Q292ZXJhZ2VPZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBob3JpekdseXBoQ292ZXJhZ2VP
ZmZzZXQ7CisgICAgT3BlblR5cGU6OlVJbnQxNiB2ZXJ0R2x5cGhDb3VudDsKKyAgICBPcGVuVHlw
ZTo6VUludDE2IGhvcml6R2x5cGhDb3VudDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlw
aENvbnN0cnVjdGlvbnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0R2x5cGhDb3VudCB2ZXJ0
aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6R2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlw
aCBjb250cnVjdGlvbnMuCisKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhH
bHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgs
IGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGNvdW50ID0g
dWludDE2X3QodmVydEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpHbHlwaENvdW50KTsKKyAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZz
ZXRbY291bnRdKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIC8vIFdl
IGRldGVybWluZSB0aGUgY292ZXJhZ2UgdGFibGUgZm9yIHRoZSBzcGVjaWZpZWQgZ2x5cGguCisg
ICAgICAgIHVpbnQxNl90IGNvdmVyYWdlT2Zmc2V0ID0gaXNWZXJ0aWNhbCA/IHZlcnRHbHlwaENv
dmVyYWdlT2Zmc2V0IDogaG9yaXpHbHlwaENvdmVyYWdlT2Zmc2V0OworICAgICAgICBpZiAoIWNv
dmVyYWdlT2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGNvbnN0
IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlID0gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4o
YnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7CisgICAgICAgIGlmICghY292ZXJhZ2UpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBXZSBkZXRlcm1pbmUgdGhlIGluZGV4
IGluIHRoZSBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0IHRhYmxlLgorICAgICAgICB1aW50
MzJfdCBpOworICAgICAgICBpZiAoIWdldENvdmVyYWdlSW5kZXgoYnVmZmVyLCBjb3ZlcmFnZSwg
Z2x5cGgsIGkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGNvdW50ID0g
aXNWZXJ0aWNhbCA/IHZlcnRHbHlwaENvdW50IDogaG9yaXpHbHlwaENvdW50OworICAgICAgICBp
ZiAoaSA+PSBjb3VudCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAo
IWlzVmVydGljYWwpCisgICAgICAgICAgICBpICs9IHVpbnQxNl90KHZlcnRHbHlwaENvdW50KTsK
KworICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TWF0aEdseXBoQ29uc3RydWN0aW9uPihi
dWZmZXIsIG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbaV0pOworICAgIH0KK307CisKK3N0
cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgeworICAgIE9wZW5UeXBlOjpGaXhlZCB2ZXJzaW9u
OworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aENvbnN0YW50c09mZnNldDsKKyAgICBPcGVuVHlw
ZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
VmFyaWFudHNPZmZzZXQ7CisKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2
X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKKyAgICAgICAgaWYgKG9mZnNldCkKKyAg
ICAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxNYXRoQ29uc3RhbnRzPihidWZmZXIsIG9m
ZnNldCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNvbnN0IE1hdGhH
bHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgeworICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0Owor
ICAgICAgICBpZiAob2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PE1h
dGhHbHlwaEluZm8+KGJ1ZmZlciwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBt
YXRoVmFyaWFudHNPZmZzZXQ7CisgICAgICAgIGlmIChvZmZzZXQpCisgICAgICAgICAgICByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8TWF0aFZhcmlhbnRzPihidWZmZXIsIG9mZnNldCk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KK307CisKKyNwcmFnbWEgcGFjaygpCisKK30gLy8gbmFt
ZXNwYWNlIE9wZW5UeXBlCisjZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX01BVEgpCisKK09wZW5U
eXBlTWF0aERhdGE6Ok9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9u
dERhdGEpCiB7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFkIHRoZSBkYXRhIGZyb20gdGhl
IE1BVEggdGFibGUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAz
MjQpLgorI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQorICAgIG1fbWF0aEJ1ZmZlciA9IGZvbnRE
YXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6Ok1BVEhUYWcpOworICAgIGNvbnN0IE9wZW5UeXBl
OjpNQVRIVGFibGUqIG1hdGggPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6TUFU
SFRhYmxlPihtX21hdGhCdWZmZXIpOworICAgIGlmICghbWF0aCkgeworICAgICAgICBtX21hdGhC
dWZmZXIgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgT3Bl
blR5cGU6Ok1hdGhDb25zdGFudHMqIG1hdGhjb25zdGFudHMgPSBtYXRoLT5tYXRoQ29uc3RhbnRz
KCptX21hdGhCdWZmZXIpOworICAgIGlmICghbWF0aGNvbnN0YW50cykgeworICAgICAgICBtX21h
dGhCdWZmZXIgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qg
T3BlblR5cGU6Ok1hdGhWYXJpYW50cyogbWF0aHZhcmlhbnRzID0gbWF0aC0+bWF0aFZhcmlhbnRz
KCptX21hdGhCdWZmZXIpOworICAgIGlmICghbWF0aHZhcmlhbnRzKQorICAgICAgICBtX21hdGhC
dWZmZXIgPSBudWxscHRyOworI2Vsc2UKICAgICBtX21hdGhCdWZmZXIgPSBudWxscHRyOworI2Vu
ZGlmCit9CisKK2Zsb2F0IE9wZW5UeXBlTWF0aERhdGE6OmdldE1hdGhDb25zdGFudChjb25zdCBT
aW1wbGVGb250RGF0YSogZm9udCwgTWF0aENvbnN0YW50IGNvbnN0YW50KSBjb25zdAoreworI2lm
IEVOQUJMRShPUEVOVFlQRV9NQVRIKQorICAgIGludDMyX3QgdmFsdWUgPSAwOworCisgICAgY29u
c3QgT3BlblR5cGU6Ok1BVEhUYWJsZSogbWF0aCA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9w
ZW5UeXBlOjpNQVRIVGFibGU+KG1fbWF0aEJ1ZmZlcik7CisgICAgQVNTRVJUKG1hdGgpOworICAg
IGNvbnN0IE9wZW5UeXBlOjpNYXRoQ29uc3RhbnRzKiBtYXRoY29uc3RhbnRzID0gbWF0aC0+bWF0
aENvbnN0YW50cygqbV9tYXRoQnVmZmVyKTsKKyAgICBBU1NFUlQobWF0aGNvbnN0YW50cyk7CisK
KyAgICBpZiAoY29uc3RhbnQgPD0gU2NyaXB0U2NyaXB0UGVyY2VudFNjYWxlRG93bikKKyAgICAg
ICAgdmFsdWUgPSBpbnQxNl90KG1hdGhjb25zdGFudHMtPmludENvbnN0YW50c1tjb25zdGFudF0p
OworICAgIGVsc2UgaWYgKGNvbnN0YW50IDw9IERpc3BsYXlPcGVyYXRvck1pbkhlaWdodCkKKyAg
ICAgICAgdmFsdWUgPSB1aW50MTZfdChtYXRoY29uc3RhbnRzLT51SW50Q29uc3RhbnRzW2NvbnN0
YW50IC0gRGVsaW1pdGVkU3ViRm9ybXVsYU1pbkhlaWdodF0pOworICAgIGVsc2UgaWYgKGNvbnN0
YW50IDw9IFJhZGljYWxLZXJuQWZ0ZXJEZWdyZWUpCisgICAgICAgIHZhbHVlID0gaW50MTZfdCht
YXRoY29uc3RhbnRzLT5tYXRoVmFsdWVzQ29uc3RhbnRzW2NvbnN0YW50IC0gTWF0aExlYWRpbmdd
LnZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlID0gdWludDE2X3QobWF0aGNvbnN0YW50
cy0+cmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudCk7CisKKyAgICBpZiAoY29uc3RhbnQg
PT0gU2NyaXB0UGVyY2VudFNjYWxlRG93biB8fCBjb25zdGFudCA9PSBTY3JpcHRTY3JpcHRQZXJj
ZW50U2NhbGVEb3duIHx8IGNvbnN0YW50ID09IFJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNl
bnQpCisgICAgICAgIHJldHVybiB2YWx1ZSAvIDEwMC4wOworCisgICAgcmV0dXJuIHZhbHVlICog
Zm9udC0+c2l6ZVBlclVuaXQoKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworZmxvYXQgT3BlblR5cGVNYXRoRGF0YTo6Z2V0SXRh
bGljQ29ycmVjdGlvbihjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgR2x5cGggZ2x5cGgpIGNv
bnN0Cit7CisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCisgICAgY29uc3QgT3BlblR5cGU6Ok1B
VEhUYWJsZSogbWF0aCA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpNQVRIVGFi
bGU+KG1fbWF0aEJ1ZmZlcik7CisgICAgQVNTRVJUKG1hdGgpOworICAgIGNvbnN0IE9wZW5UeXBl
OjpNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvID0gbWF0aC0+bWF0aEdseXBoSW5mbygqbV9t
YXRoQnVmZmVyKTsKKyAgICBpZiAoIW1hdGhHbHlwaEluZm8pCisgICAgICAgIHJldHVybiAwOwor
CisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFs
aWNzQ29ycmVjdGlvbkluZm8gPSBtYXRoR2x5cGhJbmZvLT5tYXRoSXRhbGljc0NvcnJlY3Rpb25J
bmZvKCptX21hdGhCdWZmZXIpOworICAgIGlmICghbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbykK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5m
by0+Z2V0SXRhbGljQ29ycmVjdGlvbigqbV9tYXRoQnVmZmVyLCBnbHlwaCkgKiBmb250LT5zaXpl
UGVyVW5pdCgpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
MDsKKyNlbmRpZgorfQorCit2b2lkIE9wZW5UeXBlTWF0aERhdGE6OmdldE1hdGhWYXJpYW50cyhH
bHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsLCBWZWN0b3I8R2x5cGg+JiBzaXplVmFyaWFudHMs
IFZlY3RvcjxBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAoreworICAgIHNpemVW
YXJpYW50cy5jbGVhcigpOworICAgIGFzc2VtYmx5UGFydHMuY2xlYXIoKTsKKyNpZiBFTkFCTEUo
T1BFTlRZUEVfTUFUSCkKKyAgICBjb25zdCBPcGVuVHlwZTo6TUFUSFRhYmxlKiBtYXRoID0gT3Bl
blR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6Ok1BVEhUYWJsZT4obV9tYXRoQnVmZmVyKTsK
KyAgICBBU1NFUlQobWF0aCk7CisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhWYXJpYW50cyogbWF0
aHZhcmlhbnRzID0gbWF0aC0+bWF0aFZhcmlhbnRzKCptX21hdGhCdWZmZXIpOworICAgIEFTU0VS
VChtYXRodmFyaWFudHMpOworCisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVj
dGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uID0gbWF0aHZhcmlhbnRzLT5tYXRoR2x5cGhDb25z
dHJ1Y3Rpb24oKm1fbWF0aEJ1ZmZlciwgZ2x5cGgsIGlzVmVydGljYWwpOworICAgIGlmICghbWF0
aEdseXBoQ29uc3RydWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXRoR2x5cGhDb25z
dHJ1Y3Rpb24tPmdldFNpemVWYXJpYW50cygqbV9tYXRoQnVmZmVyLCBzaXplVmFyaWFudHMpOwor
ICAgIG1hdGhHbHlwaENvbnN0cnVjdGlvbi0+Z2V0QXNzZW1ibHlQYXJ0cygqbV9tYXRoQnVmZmVy
LCBhc3NlbWJseVBhcnRzKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmlu
ZGV4IDgyYmRjYzIuLmRjNDc4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTI2LDEy
ICsyNiwxNSBAQAogI2lmbmRlZiBPcGVuVHlwZU1hdGhEYXRhX2gKICNkZWZpbmUgT3BlblR5cGVN
YXRoRGF0YV9oCiAKKyNpbmNsdWRlICJHbHlwaC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgU2ltcGxlRm9udERhdGE7CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwogCiBjbGFzcyBPcGVu
VHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAt
NDMsNiArNDYsNzYgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNNYXRoRGF0YSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9tYXRoQnVmZmVyOyB9CiAKKyAgICAvLyBUaGVzZSBjb25zdGFudHMgYXJlIGRl
ZmluZWQgaW4gdGhlIE1BVEggdGFibGUuCisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG9mIE9w
ZW5UeXBlTWF0aERhdGE6OmdldE1hdGhDb25zdGFudCBhc3N1bWVzIHRoYXQgdGhleSBjb3JyZXNw
b25kIHRvIHRoZSBpbmRpY2VzIG9mIHRoZSBNYXRoQ29udGFudCB0YWJsZS4KKyAgICBlbnVtIE1h
dGhDb25zdGFudCB7CisgICAgICAgIFNjcmlwdFBlcmNlbnRTY2FsZURvd24sCisgICAgICAgIFNj
cmlwdFNjcmlwdFBlcmNlbnRTY2FsZURvd24sCisgICAgICAgIERlbGltaXRlZFN1YkZvcm11bGFN
aW5IZWlnaHQsCisgICAgICAgIERpc3BsYXlPcGVyYXRvck1pbkhlaWdodCwKKyAgICAgICAgTWF0
aExlYWRpbmcsCisgICAgICAgIEF4aXNIZWlnaHQsCisgICAgICAgIEFjY2VudEJhc2VIZWlnaHQs
CisgICAgICAgIEZsYXR0ZW5lZEFjY2VudEJhc2VIZWlnaHQsCisgICAgICAgIFN1YnNjcmlwdFNo
aWZ0RG93biwKKyAgICAgICAgU3Vic2NyaXB0VG9wTWF4LAorICAgICAgICBTdWJzY3JpcHRCYXNl
bGluZURyb3BNaW4sCisgICAgICAgIFN1cGVyc2NyaXB0U2hpZnRVcCwKKyAgICAgICAgU3VwZXJz
Y3JpcHRTaGlmdFVwQ3JhbXBlZCwKKyAgICAgICAgU3VwZXJzY3JpcHRCb3R0b21NaW4sCisgICAg
ICAgIFN1cGVyc2NyaXB0QmFzZWxpbmVEcm9wTWF4LAorICAgICAgICBTdWJTdXBlcnNjcmlwdEdh
cE1pbiwKKyAgICAgICAgU3VwZXJzY3JpcHRCb3R0b21NYXhXaXRoU3Vic2NyaXB0LAorICAgICAg
ICBTcGFjZUFmdGVyU2NyaXB0LAorICAgICAgICBVcHBlckxpbWl0R2FwTWluLAorICAgICAgICBV
cHBlckxpbWl0QmFzZWxpbmVSaXNlTWluLAorICAgICAgICBMb3dlckxpbWl0R2FwTWluLAorICAg
ICAgICBMb3dlckxpbWl0QmFzZWxpbmVEcm9wTWluLAorICAgICAgICBTdGFja1RvcFNoaWZ0VXAs
CisgICAgICAgIFN0YWNrVG9wRGlzcGxheVN0eWxlU2hpZnRVcCwKKyAgICAgICAgU3RhY2tCb3R0
b21TaGlmdERvd24sCisgICAgICAgIFN0YWNrQm90dG9tRGlzcGxheVN0eWxlU2hpZnREb3duLAor
ICAgICAgICBTdGFja0dhcE1pbiwKKyAgICAgICAgU3RhY2tEaXNwbGF5U3R5bGVHYXBNaW4sCisg
ICAgICAgIFN0cmV0Y2hTdGFja1RvcFNoaWZ0VXAsCisgICAgICAgIFN0cmV0Y2hTdGFja0JvdHRv
bVNoaWZ0RG93biwKKyAgICAgICAgU3RyZXRjaFN0YWNrR2FwQWJvdmVNaW4sCisgICAgICAgIFN0
cmV0Y2hTdGFja0dhcEJlbG93TWluLAorICAgICAgICBGcmFjdGlvbk51bWVyYXRvclNoaWZ0VXAs
CisgICAgICAgIEZyYWN0aW9uTnVtZXJhdG9yRGlzcGxheVN0eWxlU2hpZnRVcCwKKyAgICAgICAg
RnJhY3Rpb25EZW5vbWluYXRvclNoaWZ0RG93biwKKyAgICAgICAgRnJhY3Rpb25EZW5vbWluYXRv
ckRpc3BsYXlTdHlsZVNoaWZ0RG93biwKKyAgICAgICAgRnJhY3Rpb25OdW1lcmF0b3JHYXBNaW4s
CisgICAgICAgIEZyYWN0aW9uTnVtRGlzcGxheVN0eWxlR2FwTWluLAorICAgICAgICBGcmFjdGlv
blJ1bGVUaGlja25lc3MsCisgICAgICAgIEZyYWN0aW9uRGVub21pbmF0b3JHYXBNaW4sCisgICAg
ICAgIEZyYWN0aW9uRGVub21EaXNwbGF5U3R5bGVHYXBNaW4sCisgICAgICAgIFNrZXdlZEZyYWN0
aW9uSG9yaXpvbnRhbEdhcCwKKyAgICAgICAgU2tld2VkRnJhY3Rpb25WZXJ0aWNhbEdhcCwKKyAg
ICAgICAgT3ZlcmJhclZlcnRpY2FsR2FwLAorICAgICAgICBPdmVyYmFyUnVsZVRoaWNrbmVzcywK
KyAgICAgICAgT3ZlcmJhckV4dHJhQXNjZW5kZXIsCisgICAgICAgIFVuZGVyYmFyVmVydGljYWxH
YXAsCisgICAgICAgIFVuZGVyYmFyUnVsZVRoaWNrbmVzcywKKyAgICAgICAgVW5kZXJiYXJFeHRy
YURlc2NlbmRlciwKKyAgICAgICAgUmFkaWNhbFZlcnRpY2FsR2FwLAorICAgICAgICBSYWRpY2Fs
RGlzcGxheVN0eWxlVmVydGljYWxHYXAsCisgICAgICAgIFJhZGljYWxSdWxlVGhpY2tuZXNzLAor
ICAgICAgICBSYWRpY2FsRXh0cmFBc2NlbmRlciwKKyAgICAgICAgUmFkaWNhbEtlcm5CZWZvcmVE
ZWdyZWUsCisgICAgICAgIFJhZGljYWxLZXJuQWZ0ZXJEZWdyZWUsCisgICAgICAgIFJhZGljYWxE
ZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQKKyAgICB9OworCisgICAgc3RydWN0IEFzc2VtYmx5UGFy
dCB7CisgICAgICAgIEdseXBoIGdseXBoOworICAgICAgICBib29sIGlzRXh0ZW5kZXI7CisgICAg
fTsKKworICAgIGZsb2F0IGdldE1hdGhDb25zdGFudChjb25zdCBTaW1wbGVGb250RGF0YSosIE1h
dGhDb25zdGFudCkgY29uc3Q7CisgICAgZmxvYXQgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBT
aW1wbGVGb250RGF0YSosIEdseXBoKSBjb25zdDsKKyAgICB2b2lkIGdldE1hdGhWYXJpYW50cyhH
bHlwaCwgYm9vbCBpc1ZlcnRpY2FsLCBWZWN0b3I8R2x5cGg+JiBzaXplVmFyaWFudHMsIFZlY3Rv
cjxBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXgg
ZGE5Y2VhOS4uMjhkY2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtMTAwLDYgKzEwMCw4OCBA
QCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAorI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkg
fHwgRU5BQkxFKE9QRU5UWVBFX01BVEgpCitzdHJ1Y3QgQ292ZXJhZ2VUYWJsZSA6IFRhYmxlQmFz
ZSB7CisgICAgT3BlblR5cGU6OlVJbnQxNiBjb3ZlcmFnZUZvcm1hdDsKK307CisKK3N0cnVjdCBD
b3ZlcmFnZTFUYWJsZSA6IENvdmVyYWdlVGFibGUgeworICAgIE9wZW5UeXBlOjpVSW50MTYgZ2x5
cGhDb3VudDsKKyAgICBPcGVuVHlwZTo6R2x5cGhJRCBnbHlwaEFycmF5WzFdOworfTsKKworc3Ry
dWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CisgICAgT3BlblR5cGU6OlVJbnQx
NiByYW5nZUNvdW50OworICAgIHN0cnVjdCBSYW5nZVJlY29yZCB7CisgICAgICAgIE9wZW5UeXBl
OjpHbHlwaElEIHN0YXJ0OworICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCBlbmQ7CisgICAgICAg
IE9wZW5UeXBlOjpVSW50MTYgc3RhcnRDb3ZlcmFnZUluZGV4OworICAgIH0gcmFuZ2VzWzFdOwor
fTsKKyNlbmRpZiAvLyBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpIHx8IEVOQUJMRShPUEVOVFlQ
RV9NQVRIKQorCisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCitzdHJ1Y3QgVGFibGVXaXRoQ292
ZXJhZ2UgOiBUYWJsZUJhc2UgeworcHJvdGVjdGVkOgorICAgIGJvb2wKKyAgICBnZXRDb3ZlcmFn
ZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBj
b3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAg
IHsKKyAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKKyAgICAgICAg
Y2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAxCisgICAgICAgICAgICBjb25zdCBDb3ZlcmFn
ZTFUYWJsZSogY292ZXJhZ2UxID0gdmFsaWRhdGVQdHI8Q292ZXJhZ2UxVGFibGU+KGJ1ZmZlciwg
Y292ZXJhZ2UpOworICAgICAgICAgICAgaWYgKCFjb3ZlcmFnZTEpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdWludDE2X3QgZ2x5cGhDb3VudCA9IGNvdmVyYWdl
MS0+Z2x5cGhDb3VudDsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjb3Zl
cmFnZTEtPmdseXBoQXJyYXlbZ2x5cGhDb3VudF0pKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICAgICAgLy8gV2UgZG8gYSBiaW5hcnkgc2VhcmNoIG9uIHRoZSBnbHlw
aCBpbmRleGVzLgorICAgICAgICAgICAgdWludDMyX3QgaW1pbiA9IDAsIGltYXggPSBnbHlwaENv
dW50OworICAgICAgICAgICAgd2hpbGUgKGltaW4gPCBpbWF4KSB7CisgICAgICAgICAgICAgICAg
dWludDMyX3QgaW1pZCA9IChpbWluICsgaW1heCkgPj4gMTsKKyAgICAgICAgICAgICAgICB1aW50
MTZfdCBnbHlwaE1pZCA9IGNvdmVyYWdlMS0+Z2x5cGhBcnJheVtpbWlkXTsKKyAgICAgICAgICAg
ICAgICBpZiAoZ2x5cGhNaWQgPT0gZ2x5cGgpIHsKKyAgICAgICAgICAgICAgICAgICAgY292ZXJh
Z2VJbmRleCA9IGltaWQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZ2x5cGhNaWQgPCBnbHlwaCkKKyAgICAg
ICAgICAgICAgICAgICAgaW1pbiA9IGltaWQgKyAxOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgaW1heCA9IGltaWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDI6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0
IDIKKyAgICAgICAgICAgIGNvbnN0IENvdmVyYWdlMlRhYmxlKiBjb3ZlcmFnZTIgPSB2YWxpZGF0
ZVB0cjxDb3ZlcmFnZTJUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZSk7CisgICAgICAgICAgICBpZiAo
IWNvdmVyYWdlMikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB1
aW50MTZfdCByYW5nZUNvdW50ID0gY292ZXJhZ2UyLT5yYW5nZUNvdW50OworICAgICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNvdmVyYWdlMi0+cmFuZ2VzW3JhbmdlQ291bnRdKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIFdlIGRvIGEg
YmluYXJ5IHNlYXJjaCBvbiB0aGUgcmFuZ2VzLgorICAgICAgICAgICAgdWludDMyX3QgaW1pbiA9
IDAsIGltYXggPSByYW5nZUNvdW50OworICAgICAgICAgICAgd2hpbGUgKGltaW4gPCBpbWF4KSB7
CisgICAgICAgICAgICAgICAgdWludDMyX3QgaW1pZCA9IChpbWluICsgaW1heCkgPj4gMTsKKyAg
ICAgICAgICAgICAgICB1aW50MTZfdCByU3RhcnQgPSBjb3ZlcmFnZTItPnJhbmdlc1tpbWlkXS5z
dGFydDsKKyAgICAgICAgICAgICAgICB1aW50MTZfdCByRW5kID0gY292ZXJhZ2UyLT5yYW5nZXNb
aW1pZF0uZW5kOworICAgICAgICAgICAgICAgIGlmIChyRW5kIDwgZ2x5cGgpCisgICAgICAgICAg
ICAgICAgICAgIGltaW4gPSBpbWlkICsgMTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChnbHlw
aCA8IHJTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgaW1heCA9IGltaWQ7CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGNvdmVyYWdlSW5kZXggPSBjb3ZlcmFn
ZTItPnJhbmdlc1tpbWlkXS5zdGFydENvdmVyYWdlSW5kZXggKyBnbHlwaCAtIHJTdGFydDsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBPcGVu
VHlwZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmIC8vIE9wZW5UeXBlVHlwZXNfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDM1YWU3MWQuLjdjMzcwNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExMiwyNCArMTEyLDYg
QEAgc3RydWN0IFZPUkdUYWJsZSB7CiAgICAgc2l6ZV90IHJlcXVpcmVkU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHNpemVvZigqdGhpcykgKyBzaXplb2YoVmVydE9yaWdpbllNZXRyaWNzKSAqIChudW1W
ZXJ0T3JpZ2luWU1ldHJpY3MgLSAxKTsgfQogfTsKIAotc3RydWN0IENvdmVyYWdlVGFibGUgOiBU
YWJsZUJhc2UgewotICAgIE9wZW5UeXBlOjpVSW50MTYgY292ZXJhZ2VGb3JtYXQ7Ci19OwotCi1z
dHJ1Y3QgQ292ZXJhZ2UxVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKLSAgICBPcGVuVHlwZTo6VUlu
dDE2IGdseXBoQ291bnQ7Ci0gICAgT3BlblR5cGU6OkdseXBoSUQgZ2x5cGhBcnJheVsxXTsKLX07
Ci0KLXN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewotICAgIE9wZW5UeXBl
OjpVSW50MTYgcmFuZ2VDb3VudDsKLSAgICBzdHJ1Y3QgUmFuZ2VSZWNvcmQgewotICAgICAgICBP
cGVuVHlwZTo6R2x5cGhJRCBzdGFydDsKLSAgICAgICAgT3BlblR5cGU6OkdseXBoSUQgZW5kOwot
ICAgICAgICBPcGVuVHlwZTo6VUludDE2IHN0YXJ0Q292ZXJhZ2VJbmRleDsKLSAgICB9IHJhbmdl
c1sxXTsKLX07Ci0KIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAg
ICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNv
dmVyYWdlT2Zmc2V0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227657</attachid>
            <date>2014-03-24 09:31:20 -0700</date>
            <delta_ts>2014-03-27 01:00:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130324-20140324173058.patch</filename>
            <type>text/plain</type>
            <size>26802</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc1MWY5MDc1MDA0MTEzMmJjMWFiMGI0
NDYyYWY0NzM5YjUyYjg1MjguLjBlNTFmMWNmODYxOWFjZjA2ZTNkZTI5MDllNWNjODNiOWUyNzM3
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDMtMjQgIEZyw6lkw6lyaWMgV2FuZyAgPGZy
ZWQud2FuZ0BmcmVlLmZyPgorCisgICAgICAgIE9wZXJhdG9yIHN0cmV0Y2hpbmc6IHJlYWQgdGhl
IE9wZW4gVHlwZSBNQVRIIHRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzAzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBlbmFibGUgT1BFTlRZUEVfTUFUSCBvbiBw
bGF0Zm9ybXMgdGhhdCBjYW4gcmVhZCBPcGVuVHlwZSB0YWJsZXMuCisKIDIwMTQtMDMtMjMgIEh5
b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIE1vdmUgYWxsIEVG
TCB0eXBlZGVmcyBpbnRvIEVmbFR5cGVkZWZzLmguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzMmI0MjkwMTNi
OTFkOTQ4YjU4ZWNiMTIyMzRmODEyZmUwZWJlMS4uMGU4OTUyZTk0MDk2MDEyYzE4OTM3MDIxOWRk
ODVhY2U5ZjhiNzZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDE0LTAzLTI0ICBG
csOpZMOpcmljIFdhbmcgIDxmcmVkLndhbmdAZnJlZS5mcj4KIAorICAgICAgICBPcGVyYXRvciBz
dHJldGNoaW5nOiByZWFkIHRoZSBPcGVuIFR5cGUgTUFUSCB0YWJsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzI0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgcGFyc2UgYW5kIGV4cG9zZSBzb21l
IGRhdGEgZnJvbSB0aGUgT3BlblR5cGUgTUFUSCB0YWJsZSB0aGF0IHdpbGwgYmUKKyAgICAgICAg
YmUgcmVsZXZhbnQgZm9yIGF0IGxlYXN0IHRoZSBNYXRoTUwgb3BlcmF0b3Igc3RyZXRjaGluZyAo
YnVnIDEzMDMyMik6CisgICAgICAgIG1hdGggY29uc3RhbnRzLCBpdGFsaWMgY29ycmVjdGlvbnMg
YW5kIHNpemUgdmFyaWFudHMgLyBnbHlwaCBhc3NlbWJseS4KKyAgICAgICAgVGhpcyB3aWxsIGJl
IHRlc3RlZCB3aGVuIHRoZSBNYXRoTUwgY29kZSB1c2VzIHRoZSBkYXRhLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgT3BlblR5cGVUeXBlcy5oIHRv
IHRoZSBNYWMgYnVpbGQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVNYXRoRGF0YS5jcHA6IFdlIGltcGxlbWVudCB0aGUgbG93LWxldmVsIHBhcnNpbmcgb2Yg
dGhlIE1BVEggdGFibGUuCisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3ND
b3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRT
aXplVmFyaWFudHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0QXNzZW1ibHlQYXJ0cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZU1hdGhEYXRhOjpPcGVuVHlwZU1hdGhEYXRhKTogV2UgbG9hZCB0aGUgTUFUSCB0YWJsZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlTWF0aERhdGE6OmdldE1hdGhDb25zdGFudCk6IFdl
IGFkZCBhIGZ1bmN0aW9uIHRvIGdldCB2YWx1ZXMgZnJvbSB0aGUgTWF0aENvbnN0YW50IHN1YnRh
YmxlLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVNYXRoRGF0YTo6Z2V0SXRhbGljQ29ycmVj
dGlvbik6IFdlIGFkZCBhIGZ1bmN0aW9uIHRvIGdldCBpdGFsaWMgY29ycmVjdGlvbiBmcm9tIHRo
ZSBNYXRoR2x5cGhJbmZvIHN1YnRhYmxlLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVNYXRo
RGF0YTo6Z2V0TWF0aFZhcmlhbnRzKTogV2UgYWRkIGEgZnVuY3Rpb24gdG8gZ2V0IHNpemUgdmFy
aWFudHMgLyBnbHlwaCBhc3NlbWJseSBmcm9tIHRoZSBNYXRoVmFyaWFudHMgc3VidGFibGUuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOiBX
ZSBleHBvc2UgdGhyZWUgbmV3IGZ1bmN0aW9ucyB0byBnZXQgbWF0aCBkYXRhLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDogV2Ugc2hhcmUgdGhl
IGNvdmVyYWdlIHRhYmxlcyB0aGF0IGFyZSBjb21tb24gdG8gdmVydGljYWwgYW5kIG1hdGggZGF0
YS4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFnZTo6Z2V0Q292
ZXJhZ2VJbmRleCk6IFdlIGFkZCBhIGZ1bmN0aW9uIHRvIGdldCB0aGUgY292ZXJhZ2UgaW5kZXgg
ZnJvbSBhIGdpdmVuIGdseXBoLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVmVydGljYWxEYXRhLmNwcDogV2UgbW92ZSB0aGUgY292ZXJhZ2UgdGFibGVzIHRv
IE9wZW5UeXBlVHlwZXMuaC4KKworMjAxNC0wMy0yNCAgRnLDqWTDqXJpYyBXYW5nICA8ZnJlZC53
YW5nQGZyZWUuZnI+CisKICAgICAgICAgW3JlZ3Jlc3Npb25dIGJhY2tncm91bmQgY29sb3JzIGRv
IG5vdCBhcHBseSB0byA8bW8+IGVsZW1lbnRzLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNDcwLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBjZjllYWQ4NjBl
YmRhODNjMDI1NDNkMDBlYWMxYTFiMTcxZGQ1MWNiLi41NmIzMDNiZWZjNjU0NmJkZGIwYjUzMWQx
Yjg5ZjgxMWNhNDk4ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEwNTAsNCArMTA1MCw5IEBACiAjZGVm
aW5lIEhBVkVfTlNfQUNUSVZJVFkgMQogI2VuZGlmCiAKKyNpZiBPUyhEQVJXSU4pIHx8IFVTRShG
UkVFVFlQRSkgfHwgKFBMQVRGT1JNKFdJTikgJiYgKFVTRShDRykgfHwgVVNFKENBSVJPKSkpCisj
dW5kZWYgRU5BQkxFX09QRU5UWVBFX01BVEgKKyNkZWZpbmUgRU5BQkxFX09QRU5UWVBFX01BVEgg
MQorI2VuZGlmCisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRiYmIzYWZiNDBj
ODk1MmU3Y2NmMmM0YmNjMjhlZTY2ZTFkNjkwMDQuLmMwMWJmNjNlYzFjYTM3ZDg0ZWFkNDU0MDFk
OGZjMzcwODg5Njc3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1OTUsNiArNDU5NSw3IEBACiAJCUIyQzNEQTY1MEQwMDZD
RDYwMEVGNkYyNiAvKiBTaW1wbGVGb250RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBNTQwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZv
bnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQjJEM0RBNjQwRDAwNkNENjAwRUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJEM0RBNTMwRDAwNkNE
NjAwRUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEuY3BwICovOyB9OwogCQlCMkQzREE2NTBEMDA2
Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJEM0RBNTQwRDAwNkNENjAwRUY2RjI3IC8qIE9wZW5U
eXBlTWF0aERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlCMkQzRUE2NTBEMDA2Q0Q2MDBFRjZGMjggLyogT3BlblR5cGVUeXBlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJEM0VBNTQwRDAwNkNE
NjAwRUY2RjI4IC8qIE9wZW5UeXBlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCMkMzREE2NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udERl
c2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMkMzREE1NTBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udERlc2NyaXB0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjJDM0RBNjcwRDAwNkNE
NjAwRUY2RjI2IC8qIEZvbnRHbHlwaHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBNTYwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRHbHlwaHMu
Y3BwICovOyB9OwogCQlCMkMzREE2ODBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEdseXBocy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBNTcwRDAw
NkNENjAwRUY2RjI2IC8qIEZvbnRHbHlwaHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE4NDEsNiArMTE4NDIsNyBAQAogCQlCMkMzREE1NDBE
MDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNpbXBsZUZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyRDNEQTUzMEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBvcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJEM0RBNTQwRDAwNkNENjAw
RUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IG9wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjJEM0VBNTQwRDAwNkNENjAwRUY2RjI4IC8qIE9wZW5UeXBlVHlwZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG9wZW50eXBlL09wZW5UeXBlVHlwZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0RBNTUwRDAwNkNENjAwRUY2RjI2IC8q
IEZvbnREZXNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9u
dERlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTU2MEQw
MDZDRDYwMEVGNkYyNiAvKiBGb250R2x5cGhzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb250R2x5cGhzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJDM0RBNTcwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRHbHlwaHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRHbHlwaHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwMTI1LDYgKzIwMTI3LDcgQEAKIAkJCQlCMkMzREE1NDBEMDA2Q0Q2MDBFRjZG
MjYgLyogU2ltcGxlRm9udERhdGEuaCAqLywKIAkJCQlCMkQzREE1MzBEMDA2Q0Q2MDBFRjZGMjcg
LyogT3BlblR5cGVNYXRoRGF0YS5jcHAgKi8sCiAJCQkJQjJEM0RBNTQwRDAwNkNENjAwRUY2RjI3
IC8qIE9wZW5UeXBlTWF0aERhdGEuaCAqLywKKwkJCQlCMkQzRUE1NDBEMDA2Q0Q2MDBFRjZGMjgg
LyogT3BlblR5cGVUeXBlcy5oICovLAogCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBT
b3VyY2VCdWZmZXJQcml2YXRlLmggKi8sCiAJCQkJQ0RDNjFEQTAxODA4NjdEODAwNEI5MTNGIC8q
IFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLywKIAkJCQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUg
LyogU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oICovLApAQCAtMjU0NjQsNiArMjU0NjcsNyBA
QAogCQkJCTQxRDE2OEVFMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyQzNEQTY1MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVGb250
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJEM0RBNjUwRDAwNkNENjAwRUY2RjI3IC8qIE9w
ZW5UeXBlTWF0aERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUIyRDNFQTY1MEQwMDZDRDYwMEVG
NkYyOCAvKiBPcGVuVHlwZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDg5NDRBMzE4MEI1
N0Q4MDBGMTY1RDggLyogU2ltcGxlTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRF
OUIxMUQxODE0NTY5QzAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0RTlCMTE5MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5
b3V0UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApp
bmRleCAxODA5NzM0ODI0MzdhNTg5ZWVlOGQyZjdkNTExN2JmOGM1NWY2YjQ0Li5kMzExNTYwNTdl
N2QzZTBkNWVkMzViMjU2ZGIzZTY5ZWMzYTk2NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
LmNwcApAQCAtMjcsMTUgKzI3LDMwMCBAQAogI2luY2x1ZGUgIk9wZW5UeXBlTWF0aERhdGEuaCIK
IAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKyNpZiBFTkFCTEUoT1BFTlRZUEVfTUFU
SCkKKyNpbmNsdWRlICJPcGVuVHlwZVR5cGVzLmgiCisjZW5kaWYKKyNpbmNsdWRlICJTaW1wbGVG
b250RGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLU9wZW5UeXBlTWF0aERhdGE6Ok9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpCisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCituYW1lc3BhY2UgT3BlblR5cGUgewor
Citjb25zdCB1aW50MzJfdCBNQVRIVGFnID0gT1RfTUFLRV9UQUcoJ00nLCAnQScsICdUJywgJ0gn
KTsKKworI3ByYWdtYSBwYWNrKDEpCisKK3N0cnVjdCBNYXRoVmFsdWVSZWNvcmQgeworICAgIE9w
ZW5UeXBlOjpJbnQxNiB2YWx1ZTsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IGRldmljZVRhYmxlT2Zm
c2V0OworfTsKKworc3RydWN0IE1hdGhDb25zdGFudHMgeworICAgIE9wZW5UeXBlOjpJbnQxNiBp
bnRDb25zdGFudHNbT3BlblR5cGVNYXRoRGF0YTo6U2NyaXB0U2NyaXB0UGVyY2VudFNjYWxlRG93
biAtIE9wZW5UeXBlTWF0aERhdGE6OlNjcmlwdFBlcmNlbnRTY2FsZURvd24gKyAxXTsKKyAgICBP
cGVuVHlwZTo6VUludDE2IHVJbnRDb25zdGFudHNbT3BlblR5cGVNYXRoRGF0YTo6RGlzcGxheU9w
ZXJhdG9yTWluSGVpZ2h0IC0gT3BlblR5cGVNYXRoRGF0YTo6RGVsaW1pdGVkU3ViRm9ybXVsYU1p
bkhlaWdodCArIDFdOworICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgbWF0aFZhbHVlc0Nv
bnN0YW50c1tPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsS2VybkFmdGVyRGVncmVlIC0gT3BlblR5
cGVNYXRoRGF0YTo6TWF0aExlYWRpbmcgKyAxXTsKKyAgICBPcGVuVHlwZTo6VUludDE2IHJhZGlj
YWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQ7Cit9OworCitzdHJ1Y3QgTWF0aEl0YWxpY3NDb3Jy
ZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IGNv
dmVyYWdlT2Zmc2V0OworICAgIE9wZW5UeXBlOjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3Vu
dDsKKyAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAv
LyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1
ZXMuCisKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3QgY291
bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKKyAgICAgICAgaWYgKCFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKworICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBjb3ZlcmFnZU9mZnNldDsKKyAg
ICAgICAgaWYgKCFvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY29uc3Qg
Q292ZXJhZ2VUYWJsZSogY292ZXJhZ2UgPSB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihi
dWZmZXIsIG9mZnNldCk7CisgICAgICAgIGlmICghY292ZXJhZ2UpCisgICAgICAgICAgICByZXR1
cm4gMDsKKworICAgICAgICAvLyBXZSBkZXRlcm1pbmUgdGhlIGluZGV4IGluIHRoZSBpdGFsaWNz
Q29ycmVjdGlvbiB0YWJsZS4KKyAgICAgICAgdWludDMyX3QgaTsKKyAgICAgICAgaWYgKCFnZXRD
b3ZlcmFnZUluZGV4KGJ1ZmZlciwgY292ZXJhZ2UsIGdseXBoLCBpKSB8fCBpPj0gY291bnQpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gaW50MTZfdChpdGFsaWNzQ29y
cmVjdGlvbltpXS52YWx1ZSk7CisgICAgfQorfTsKKworc3RydWN0IE1hdGhHbHlwaEluZm8gOiBU
YWJsZVdpdGhDb3ZlcmFnZSB7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoSXRhbGljc0NvcnJl
Y3Rpb25JbmZvT2Zmc2V0OworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFRvcEFjY2VudEF0dGFj
aG1lbnRPZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VP
ZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CisKKyAgICBj
b25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2
X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKKyAgICAgICAgaWYg
KG9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxNYXRoSXRhbGljc0Nv
cnJlY3Rpb25JbmZvPihidWZmZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KK307CisKK3N0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKKyAgICBPcGVu
VHlwZTo6TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uOworICAgIE9wZW5UeXBlOjpV
SW50MTYgcGFydENvdW50OworICAgIHN0cnVjdCBHbHlwaFBhcnRSZWNvcmQgeworICAgICAgICBP
cGVuVHlwZTo6R2x5cGhJRCBnbHlwaDsKKyAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBzdGFydENv
bm5lY3Rvckxlbmd0aDsKKyAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBlbmRDb25uZWN0b3JMZW5n
dGg7CisgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgZnVsbEFkdmFuY2U7CisgICAgICAgIE9wZW5U
eXBlOjpVSW50MTYgcGFydEZsYWdzOworICAgIH0gcGFydFJlY29yZHNbMV07IC8vIFRoZXJlIGFy
ZSBwYXJ0Q291bnQgR2x5cGhQYXJ0UmVjb3JkJ3MuCisKKyAgICAvLyBQYXJ0RmxhZ3MgZW51bWVy
YXRpb24gY3VycmVudGx5IHVzZXMgb25seSBvbmUgYml0OgorICAgIC8vIDB4MDAwMSBJZiBzZXQs
IHRoZSBwYXJ0IGNhbiBiZSBza2lwcGVkIG9yIHJlcGVhdGVkLgorICAgIC8vIDB4RkZGRSBSZXNl
cnZlZC4KKyAgICBlbnVtIHsKKyAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCisgICAg
fTsKKworICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMp
IGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKKyAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGFzc2VtYmx5UGFydHMucmVzaXplKGNvdW50KTsKKyAgICAg
ICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIGFz
c2VtYmx5UGFydHNbaV0uZ2x5cGggPSBwYXJ0UmVjb3Jkc1tpXS5nbHlwaDsKKyAgICAgICAgICAg
IHVpbnQxNl90IGZsYWcgPSBwYXJ0UmVjb3Jkc1tpXS5wYXJ0RmxhZ3M7CisgICAgICAgICAgICBh
c3NlbWJseVBhcnRzW2ldLmlzRXh0ZW5kZXIgPSBmbGFnICYgUGFydEZsYWdzRXh0ZW5kZXI7Cisg
ICAgICAgIH0KKyAgICB9CisKK307CisKK3N0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBU
YWJsZUJhc2UgeworICAgIE9wZW5UeXBlOjpPZmZzZXQgZ2x5cGhBc3NlbWJseU9mZnNldDsKKyAg
ICBPcGVuVHlwZTo6VUludDE2IHZhcmlhbnRDb3VudDsKKyAgICBzdHJ1Y3QgTWF0aEdseXBoVmFy
aWFudFJlY29yZCB7CisgICAgICAgIE9wZW5UeXBlOjpHbHlwaElEIHZhcmlhbnRHbHlwaDsKKyAg
ICAgICAgT3BlblR5cGU6OlVJbnQxNiBhZHZhbmNlTWVhc3VyZW1lbnQ7CisgICAgfSBtYXRoR2x5
cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhW
YXJpYW50UmVjb3JkJ3MuCisKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgeworICAg
ICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKKyAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHZhcmlhbnRzLnJlc2l6ZShjb3VudCk7CisgICAgICAgIGZvciAo
dWludDE2X3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgdmFyaWFudHNbaV0g
PSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CisgICAgfQorCisgICAg
dm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAg
ICB7CisgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CisgICAg
ICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxH
bHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CisgICAgICAgIGlmIChnbHlwaEFzc2VtYmx5
KQorICAgICAgICAgICAgZ2x5cGhBc3NlbWJseS0+Z2V0QXNzZW1ibHlQYXJ0cyhidWZmZXIsIGFz
c2VtYmx5UGFydHMpOworICAgIH0KK307CisKK3N0cnVjdCBNYXRoVmFyaWFudHMgOiBUYWJsZVdp
dGhDb3ZlcmFnZSB7CisgICAgT3BlblR5cGU6OlVJbnQxNiBtaW5Db25uZWN0b3JPdmVybGFwOwor
ICAgIE9wZW5UeXBlOjpPZmZzZXQgdmVydEdseXBoQ292ZXJhZ2VPZmZzZXQ7CisgICAgT3BlblR5
cGU6Ok9mZnNldCBob3JpekdseXBoQ292ZXJhZ2VPZmZzZXQ7CisgICAgT3BlblR5cGU6OlVJbnQx
NiB2ZXJ0R2x5cGhDb3VudDsKKyAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6R2x5cGhDb3VudDsK
KyAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbMV07IC8v
IFRoZXJlIGFyZSB2ZXJ0R2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5k
IGhvcml6R2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMuCisKKyAgICBjb25z
dCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydEdseXBoQ291bnQpICsg
dWludDE2X3QoaG9yaXpHbHlwaENvdW50KTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIC8vIFdlIGRldGVybWluZSB0aGUgY292ZXJhZ2UgdGFi
bGUgZm9yIHRoZSBzcGVjaWZpZWQgZ2x5cGguCisgICAgICAgIHVpbnQxNl90IGNvdmVyYWdlT2Zm
c2V0ID0gaXNWZXJ0aWNhbCA/IHZlcnRHbHlwaENvdmVyYWdlT2Zmc2V0IDogaG9yaXpHbHlwaENv
dmVyYWdlT2Zmc2V0OworICAgICAgICBpZiAoIWNvdmVyYWdlT2Zmc2V0KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlID0g
dmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7Cisg
ICAgICAgIGlmICghY292ZXJhZ2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICAvLyBXZSBkZXRlcm1pbmUgdGhlIGluZGV4IGluIHRoZSBtYXRoR2x5cGhDb25zdHJ1Y3Rp
b25zT2Zmc2V0IHRhYmxlLgorICAgICAgICB1aW50MzJfdCBpOworICAgICAgICBpZiAoIWdldENv
dmVyYWdlSW5kZXgoYnVmZmVyLCBjb3ZlcmFnZSwgZ2x5cGgsIGkpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIGNvdW50ID0gaXNWZXJ0aWNhbCA/IHZlcnRHbHlwaENvdW50
IDogaG9yaXpHbHlwaENvdW50OworICAgICAgICBpZiAoaSA+PSBjb3VudCkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoIWlzVmVydGljYWwpCisgICAgICAgICAgICBp
ICs9IHVpbnQxNl90KHZlcnRHbHlwaENvdW50KTsKKworICAgICAgICByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8TWF0aEdseXBoQ29uc3RydWN0aW9uPihidWZmZXIsIG1hdGhHbHlwaENvbnN0cnVjdGlv
bnNPZmZzZXRbaV0pOworICAgIH0KK307CisKK3N0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2Ug
eworICAgIE9wZW5UeXBlOjpGaXhlZCB2ZXJzaW9uOworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0
aENvbnN0YW50c09mZnNldDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZz
ZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CisKKyAgICBjb25z
dCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09m
ZnNldDsKKyAgICAgICAgaWYgKG9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxNYXRoQ29uc3RhbnRzPihidWZmZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBv
ZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0OworICAgICAgICBpZiAob2Zmc2V0KQorICAgICAg
ICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PE1hdGhHbHlwaEluZm8+KGJ1ZmZlciwgb2Zmc2V0
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgY29uc3QgTWF0aFZhcmlh
bnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
eworICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CisgICAgICAg
IGlmIChvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TWF0aFZhcmlh
bnRzPihidWZmZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK307
CisKKyNwcmFnbWEgcGFjaygpCisKK30gLy8gbmFtZXNwYWNlIE9wZW5UeXBlCisjZW5kaWYgLy8g
RU5BQkxFKE9QRU5UWVBFX01BVEgpCisKK09wZW5UeXBlTWF0aERhdGE6Ok9wZW5UeXBlTWF0aERh
dGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udERhdGEpCiB7Ci0gICAgLy8gRklYTUU6IFdl
IHNob3VsZCByZWFkIHRoZSBkYXRhIGZyb20gdGhlIE1BVEggdGFibGUgKGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMjQpLgorI2lmIEVOQUJMRShPUEVOVFlQRV9N
QVRIKQorICAgIG1fbWF0aEJ1ZmZlciA9IGZvbnREYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6
Ok1BVEhUYWcpOworICAgIGNvbnN0IE9wZW5UeXBlOjpNQVRIVGFibGUqIG1hdGggPSBPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6TUFUSFRhYmxlPihtX21hdGhCdWZmZXIpOworICAg
IGlmICghbWF0aCkgeworICAgICAgICBtX21hdGhCdWZmZXIgPSBudWxscHRyOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhDb25zdGFudHMqIG1hdGhj
b25zdGFudHMgPSBtYXRoLT5tYXRoQ29uc3RhbnRzKCptX21hdGhCdWZmZXIpOworICAgIGlmICgh
bWF0aGNvbnN0YW50cykgeworICAgICAgICBtX21hdGhCdWZmZXIgPSBudWxscHRyOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhWYXJpYW50cyogbWF0
aHZhcmlhbnRzID0gbWF0aC0+bWF0aFZhcmlhbnRzKCptX21hdGhCdWZmZXIpOworICAgIGlmICgh
bWF0aHZhcmlhbnRzKQorICAgICAgICBtX21hdGhCdWZmZXIgPSBudWxscHRyOworI2Vsc2UKICAg
ICBtX21hdGhCdWZmZXIgPSBudWxscHRyOworI2VuZGlmCit9CisKK2Zsb2F0IE9wZW5UeXBlTWF0
aERhdGE6OmdldE1hdGhDb25zdGFudChjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgTWF0aENv
bnN0YW50IGNvbnN0YW50KSBjb25zdAoreworI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQorICAg
IGludDMyX3QgdmFsdWUgPSAwOworCisgICAgY29uc3QgT3BlblR5cGU6Ok1BVEhUYWJsZSogbWF0
aCA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpNQVRIVGFibGU+KG1fbWF0aEJ1
ZmZlcik7CisgICAgQVNTRVJUKG1hdGgpOworICAgIGNvbnN0IE9wZW5UeXBlOjpNYXRoQ29uc3Rh
bnRzKiBtYXRoY29uc3RhbnRzID0gbWF0aC0+bWF0aENvbnN0YW50cygqbV9tYXRoQnVmZmVyKTsK
KyAgICBBU1NFUlQobWF0aGNvbnN0YW50cyk7CisKKyAgICBpZiAoY29uc3RhbnQgPD0gU2NyaXB0
U2NyaXB0UGVyY2VudFNjYWxlRG93bikKKyAgICAgICAgdmFsdWUgPSBpbnQxNl90KG1hdGhjb25z
dGFudHMtPmludENvbnN0YW50c1tjb25zdGFudF0pOworICAgIGVsc2UgaWYgKGNvbnN0YW50IDw9
IERpc3BsYXlPcGVyYXRvck1pbkhlaWdodCkKKyAgICAgICAgdmFsdWUgPSB1aW50MTZfdChtYXRo
Y29uc3RhbnRzLT51SW50Q29uc3RhbnRzW2NvbnN0YW50IC0gRGVsaW1pdGVkU3ViRm9ybXVsYU1p
bkhlaWdodF0pOworICAgIGVsc2UgaWYgKGNvbnN0YW50IDw9IFJhZGljYWxLZXJuQWZ0ZXJEZWdy
ZWUpCisgICAgICAgIHZhbHVlID0gaW50MTZfdChtYXRoY29uc3RhbnRzLT5tYXRoVmFsdWVzQ29u
c3RhbnRzW2NvbnN0YW50IC0gTWF0aExlYWRpbmddLnZhbHVlKTsKKyAgICBlbHNlCisgICAgICAg
IHZhbHVlID0gdWludDE2X3QobWF0aGNvbnN0YW50cy0+cmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNl
UGVyY2VudCk7CisKKyAgICBpZiAoY29uc3RhbnQgPT0gU2NyaXB0UGVyY2VudFNjYWxlRG93biB8
fCBjb25zdGFudCA9PSBTY3JpcHRTY3JpcHRQZXJjZW50U2NhbGVEb3duIHx8IGNvbnN0YW50ID09
IFJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQpCisgICAgICAgIHJldHVybiB2YWx1ZSAv
IDEwMC4wOworCisgICAgcmV0dXJuIHZhbHVlICogZm9udC0+c2l6ZVBlclVuaXQoKTsKKyNlbHNl
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwor
ZmxvYXQgT3BlblR5cGVNYXRoRGF0YTo6Z2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaW1wbGVG
b250RGF0YSogZm9udCwgR2x5cGggZ2x5cGgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKE9QRU5UWVBF
X01BVEgpCisgICAgY29uc3QgT3BlblR5cGU6Ok1BVEhUYWJsZSogbWF0aCA9IE9wZW5UeXBlOjp2
YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpNQVRIVGFibGU+KG1fbWF0aEJ1ZmZlcik7CisgICAgQVNT
RVJUKG1hdGgpOworICAgIGNvbnN0IE9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJ
bmZvID0gbWF0aC0+bWF0aEdseXBoSW5mbygqbV9tYXRoQnVmZmVyKTsKKyAgICBpZiAoIW1hdGhH
bHlwaEluZm8pCisgICAgICAgIHJldHVybiAwOworCisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gPSBtYXRoR2x5
cGhJbmZvLT5tYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKCptX21hdGhCdWZmZXIpOworICAgIGlm
ICghbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBy
ZXR1cm4gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mby0+Z2V0SXRhbGljQ29ycmVjdGlvbigqbV9t
YXRoQnVmZmVyLCBnbHlwaCkgKiBmb250LT5zaXplUGVyVW5pdCgpOworI2Vsc2UKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lkIE9wZW5U
eXBlTWF0aERhdGE6OmdldE1hdGhWYXJpYW50cyhHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2Fs
LCBWZWN0b3I8R2x5cGg+JiBzaXplVmFyaWFudHMsIFZlY3RvcjxBc3NlbWJseVBhcnQ+JiBhc3Nl
bWJseVBhcnRzKSBjb25zdAoreworICAgIHNpemVWYXJpYW50cy5jbGVhcigpOworICAgIGFzc2Vt
Ymx5UGFydHMuY2xlYXIoKTsKKyNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKKyAgICBjb25zdCBP
cGVuVHlwZTo6TUFUSFRhYmxlKiBtYXRoID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5
cGU6Ok1BVEhUYWJsZT4obV9tYXRoQnVmZmVyKTsKKyAgICBBU1NFUlQobWF0aCk7CisgICAgY29u
c3QgT3BlblR5cGU6Ok1hdGhWYXJpYW50cyogbWF0aHZhcmlhbnRzID0gbWF0aC0+bWF0aFZhcmlh
bnRzKCptX21hdGhCdWZmZXIpOworICAgIEFTU0VSVChtYXRodmFyaWFudHMpOworCisgICAgY29u
c3QgT3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9u
ID0gbWF0aHZhcmlhbnRzLT5tYXRoR2x5cGhDb25zdHJ1Y3Rpb24oKm1fbWF0aEJ1ZmZlciwgZ2x5
cGgsIGlzVmVydGljYWwpOworICAgIGlmICghbWF0aEdseXBoQ29uc3RydWN0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24tPmdldFNpemVWYXJpYW50cygq
bV9tYXRoQnVmZmVyLCBzaXplVmFyaWFudHMpOworICAgIG1hdGhHbHlwaENvbnN0cnVjdGlvbi0+
Z2V0QXNzZW1ibHlQYXJ0cygqbV9tYXRoQnVmZmVyLCBhc3NlbWJseVBhcnRzKTsKKyNlbHNlCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDY2YTQ5MTU3MDIzYTQxY2IxNzZiYzE1
Mjc3OTg3ODgzODc4NDlkY2UuLmYzYWFmOTE5OTQzYTdkZGIxNmM3YTg4ZGFiNWMwMjVkZGMxMWZh
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTI2LDEyICsyNiwxNSBAQAogI2lmbmRl
ZiBPcGVuVHlwZU1hdGhEYXRhX2gKICNkZWZpbmUgT3BlblR5cGVNYXRoRGF0YV9oCiAKKyNpbmNs
dWRlICJHbHlwaC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2ltcGxlRm9udERhdGE7
CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtNDMsNiArNDYsNzYgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBoYXNNYXRoRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0aEJ1ZmZl
cjsgfQogCisgICAgLy8gVGhlc2UgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHRoZSBNQVRIIHRh
YmxlLgorICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBPcGVuVHlwZU1hdGhEYXRhOjpnZXRN
YXRoQ29uc3RhbnQgYXNzdW1lcyB0aGF0IHRoZXkgY29ycmVzcG9uZCB0byB0aGUgaW5kaWNlcyBv
ZiB0aGUgTWF0aENvbnRhbnQgdGFibGUuCisgICAgZW51bSBNYXRoQ29uc3RhbnQgeworICAgICAg
ICBTY3JpcHRQZXJjZW50U2NhbGVEb3duLAorICAgICAgICBTY3JpcHRTY3JpcHRQZXJjZW50U2Nh
bGVEb3duLAorICAgICAgICBEZWxpbWl0ZWRTdWJGb3JtdWxhTWluSGVpZ2h0LAorICAgICAgICBE
aXNwbGF5T3BlcmF0b3JNaW5IZWlnaHQsCisgICAgICAgIE1hdGhMZWFkaW5nLAorICAgICAgICBB
eGlzSGVpZ2h0LAorICAgICAgICBBY2NlbnRCYXNlSGVpZ2h0LAorICAgICAgICBGbGF0dGVuZWRB
Y2NlbnRCYXNlSGVpZ2h0LAorICAgICAgICBTdWJzY3JpcHRTaGlmdERvd24sCisgICAgICAgIFN1
YnNjcmlwdFRvcE1heCwKKyAgICAgICAgU3Vic2NyaXB0QmFzZWxpbmVEcm9wTWluLAorICAgICAg
ICBTdXBlcnNjcmlwdFNoaWZ0VXAsCisgICAgICAgIFN1cGVyc2NyaXB0U2hpZnRVcENyYW1wZWQs
CisgICAgICAgIFN1cGVyc2NyaXB0Qm90dG9tTWluLAorICAgICAgICBTdXBlcnNjcmlwdEJhc2Vs
aW5lRHJvcE1heCwKKyAgICAgICAgU3ViU3VwZXJzY3JpcHRHYXBNaW4sCisgICAgICAgIFN1cGVy
c2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCwKKyAgICAgICAgU3BhY2VBZnRlclNjcmlwdCwK
KyAgICAgICAgVXBwZXJMaW1pdEdhcE1pbiwKKyAgICAgICAgVXBwZXJMaW1pdEJhc2VsaW5lUmlz
ZU1pbiwKKyAgICAgICAgTG93ZXJMaW1pdEdhcE1pbiwKKyAgICAgICAgTG93ZXJMaW1pdEJhc2Vs
aW5lRHJvcE1pbiwKKyAgICAgICAgU3RhY2tUb3BTaGlmdFVwLAorICAgICAgICBTdGFja1RvcERp
c3BsYXlTdHlsZVNoaWZ0VXAsCisgICAgICAgIFN0YWNrQm90dG9tU2hpZnREb3duLAorICAgICAg
ICBTdGFja0JvdHRvbURpc3BsYXlTdHlsZVNoaWZ0RG93biwKKyAgICAgICAgU3RhY2tHYXBNaW4s
CisgICAgICAgIFN0YWNrRGlzcGxheVN0eWxlR2FwTWluLAorICAgICAgICBTdHJldGNoU3RhY2tU
b3BTaGlmdFVwLAorICAgICAgICBTdHJldGNoU3RhY2tCb3R0b21TaGlmdERvd24sCisgICAgICAg
IFN0cmV0Y2hTdGFja0dhcEFib3ZlTWluLAorICAgICAgICBTdHJldGNoU3RhY2tHYXBCZWxvd01p
biwKKyAgICAgICAgRnJhY3Rpb25OdW1lcmF0b3JTaGlmdFVwLAorICAgICAgICBGcmFjdGlvbk51
bWVyYXRvckRpc3BsYXlTdHlsZVNoaWZ0VXAsCisgICAgICAgIEZyYWN0aW9uRGVub21pbmF0b3JT
aGlmdERvd24sCisgICAgICAgIEZyYWN0aW9uRGVub21pbmF0b3JEaXNwbGF5U3R5bGVTaGlmdERv
d24sCisgICAgICAgIEZyYWN0aW9uTnVtZXJhdG9yR2FwTWluLAorICAgICAgICBGcmFjdGlvbk51
bURpc3BsYXlTdHlsZUdhcE1pbiwKKyAgICAgICAgRnJhY3Rpb25SdWxlVGhpY2tuZXNzLAorICAg
ICAgICBGcmFjdGlvbkRlbm9taW5hdG9yR2FwTWluLAorICAgICAgICBGcmFjdGlvbkRlbm9tRGlz
cGxheVN0eWxlR2FwTWluLAorICAgICAgICBTa2V3ZWRGcmFjdGlvbkhvcml6b250YWxHYXAsCisg
ICAgICAgIFNrZXdlZEZyYWN0aW9uVmVydGljYWxHYXAsCisgICAgICAgIE92ZXJiYXJWZXJ0aWNh
bEdhcCwKKyAgICAgICAgT3ZlcmJhclJ1bGVUaGlja25lc3MsCisgICAgICAgIE92ZXJiYXJFeHRy
YUFzY2VuZGVyLAorICAgICAgICBVbmRlcmJhclZlcnRpY2FsR2FwLAorICAgICAgICBVbmRlcmJh
clJ1bGVUaGlja25lc3MsCisgICAgICAgIFVuZGVyYmFyRXh0cmFEZXNjZW5kZXIsCisgICAgICAg
IFJhZGljYWxWZXJ0aWNhbEdhcCwKKyAgICAgICAgUmFkaWNhbERpc3BsYXlTdHlsZVZlcnRpY2Fs
R2FwLAorICAgICAgICBSYWRpY2FsUnVsZVRoaWNrbmVzcywKKyAgICAgICAgUmFkaWNhbEV4dHJh
QXNjZW5kZXIsCisgICAgICAgIFJhZGljYWxLZXJuQmVmb3JlRGVncmVlLAorICAgICAgICBSYWRp
Y2FsS2VybkFmdGVyRGVncmVlLAorICAgICAgICBSYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJj
ZW50CisgICAgfTsKKworICAgIHN0cnVjdCBBc3NlbWJseVBhcnQgeworICAgICAgICBHbHlwaCBn
bHlwaDsKKyAgICAgICAgYm9vbCBpc0V4dGVuZGVyOworICAgIH07CisKKyAgICBmbG9hdCBnZXRN
YXRoQ29uc3RhbnQoY29uc3QgU2ltcGxlRm9udERhdGEqLCBNYXRoQ29uc3RhbnQpIGNvbnN0Owor
ICAgIGZsb2F0IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2ltcGxlRm9udERhdGEqLCBHbHlw
aCkgY29uc3Q7CisgICAgdm9pZCBnZXRNYXRoVmFyaWFudHMoR2x5cGgsIGJvb2wgaXNWZXJ0aWNh
bCwgVmVjdG9yPEdseXBoPiYgc2l6ZVZhcmlhbnRzLCBWZWN0b3I8QXNzZW1ibHlQYXJ0PiYgYXNz
ZW1ibHlQYXJ0cykgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRo
RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9tYXRoQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGRhOWNlYTk2YzNjODdmNDFhNTEw
NzM5NjEyMTQzNzUzMzJhZmZiZTEuLjI4ZGNiNTNkYzk2NzMxMjI4YjRhMWRiNjc1YjE5NzE0MjRm
NTM0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTEwMCw2ICsxMDAsODggQEAgcHJvdGVjdGVk
OgogICAgIH0KIH07CiAKKyNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpIHx8IEVOQUJMRShP
UEVOVFlQRV9NQVRIKQorc3RydWN0IENvdmVyYWdlVGFibGUgOiBUYWJsZUJhc2UgeworICAgIE9w
ZW5UeXBlOjpVSW50MTYgY292ZXJhZ2VGb3JtYXQ7Cit9OworCitzdHJ1Y3QgQ292ZXJhZ2UxVGFi
bGUgOiBDb3ZlcmFnZVRhYmxlIHsKKyAgICBPcGVuVHlwZTo6VUludDE2IGdseXBoQ291bnQ7Cisg
ICAgT3BlblR5cGU6OkdseXBoSUQgZ2x5cGhBcnJheVsxXTsKK307CisKK3N0cnVjdCBDb3ZlcmFn
ZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgeworICAgIE9wZW5UeXBlOjpVSW50MTYgcmFuZ2VDb3Vu
dDsKKyAgICBzdHJ1Y3QgUmFuZ2VSZWNvcmQgeworICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCBz
dGFydDsKKyAgICAgICAgT3BlblR5cGU6OkdseXBoSUQgZW5kOworICAgICAgICBPcGVuVHlwZTo6
VUludDE2IHN0YXJ0Q292ZXJhZ2VJbmRleDsKKyAgICB9IHJhbmdlc1sxXTsKK307CisjZW5kaWYg
Ly8gRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKSB8fCBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKKwor
I2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQorc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFi
bGVCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBib29sCisgICAgZ2V0Q292ZXJhZ2VJbmRleChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEds
eXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CisgICAgICAgIGNhc2UgMTogeyAv
LyBDb3ZlcmFnZSBGb3JtYXQgMQorICAgICAgICAgICAgY29uc3QgQ292ZXJhZ2UxVGFibGUqIGNv
dmVyYWdlMSA9IHZhbGlkYXRlUHRyPENvdmVyYWdlMVRhYmxlPihidWZmZXIsIGNvdmVyYWdlKTsK
KyAgICAgICAgICAgIGlmICghY292ZXJhZ2UxKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIHVpbnQxNl90IGdseXBoQ291bnQgPSBjb3ZlcmFnZTEtPmdseXBoQ291
bnQ7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY292ZXJhZ2UxLT5nbHlw
aEFycmF5W2dseXBoQ291bnRdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgICAgIC8vIFdlIGRvIGEgYmluYXJ5IHNlYXJjaCBvbiB0aGUgZ2x5cGggaW5kZXhlcy4K
KyAgICAgICAgICAgIHVpbnQzMl90IGltaW4gPSAwLCBpbWF4ID0gZ2x5cGhDb3VudDsKKyAgICAg
ICAgICAgIHdoaWxlIChpbWluIDwgaW1heCkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IGlt
aWQgPSAoaW1pbiArIGltYXgpID4+IDE7CisgICAgICAgICAgICAgICAgdWludDE2X3QgZ2x5cGhN
aWQgPSBjb3ZlcmFnZTEtPmdseXBoQXJyYXlbaW1pZF07CisgICAgICAgICAgICAgICAgaWYgKGds
eXBoTWlkID09IGdseXBoKSB7CisgICAgICAgICAgICAgICAgICAgIGNvdmVyYWdlSW5kZXggPSBp
bWlkOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKGdseXBoTWlkIDwgZ2x5cGgpCisgICAgICAgICAgICAgICAg
ICAgIGltaW4gPSBpbWlkICsgMTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGltYXggPSBpbWlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSAyOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAyCisgICAgICAg
ICAgICBjb25zdCBDb3ZlcmFnZTJUYWJsZSogY292ZXJhZ2UyID0gdmFsaWRhdGVQdHI8Q292ZXJh
Z2UyVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2UpOworICAgICAgICAgICAgaWYgKCFjb3ZlcmFnZTIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdWludDE2X3QgcmFu
Z2VDb3VudCA9IGNvdmVyYWdlMi0+cmFuZ2VDb3VudDsKKyAgICAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZjb3ZlcmFnZTItPnJhbmdlc1tyYW5nZUNvdW50XSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAvLyBXZSBkbyBhIGJpbmFyeSBzZWFy
Y2ggb24gdGhlIHJhbmdlcy4KKyAgICAgICAgICAgIHVpbnQzMl90IGltaW4gPSAwLCBpbWF4ID0g
cmFuZ2VDb3VudDsKKyAgICAgICAgICAgIHdoaWxlIChpbWluIDwgaW1heCkgeworICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGltaWQgPSAoaW1pbiArIGltYXgpID4+IDE7CisgICAgICAgICAgICAg
ICAgdWludDE2X3QgclN0YXJ0ID0gY292ZXJhZ2UyLT5yYW5nZXNbaW1pZF0uc3RhcnQ7CisgICAg
ICAgICAgICAgICAgdWludDE2X3QgckVuZCA9IGNvdmVyYWdlMi0+cmFuZ2VzW2ltaWRdLmVuZDsK
KyAgICAgICAgICAgICAgICBpZiAockVuZCA8IGdseXBoKQorICAgICAgICAgICAgICAgICAgICBp
bWluID0gaW1pZCArIDE7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZ2x5cGggPCByU3RhcnQp
CisgICAgICAgICAgICAgICAgICAgIGltYXggPSBpbWlkOworICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBjb3ZlcmFnZUluZGV4ID0gY292ZXJhZ2UyLT5yYW5nZXNb
aW1pZF0uc3RhcnRDb3ZlcmFnZUluZGV4ICsgZ2x5cGggLSByU3RhcnQ7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgT3BlblR5cGUKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBPcGVuVHlwZVR5cGVzX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAzNWFlNzFkZDdkZmRiNmYxOGJmY2RjNzMxMmI1
MTdkOTIzNDZmOGUzLi43YzM3MDQzNjE0MjIwYmFmN2QzODlkYjA2OGMzMDdmNTAyOTJjNzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTIsMjQgKzExMiw2IEBA
IHN0cnVjdCBWT1JHVGFibGUgewogICAgIHNpemVfdCByZXF1aXJlZFNpemUoKSBjb25zdCB7IHJl
dHVybiBzaXplb2YoKnRoaXMpICsgc2l6ZW9mKFZlcnRPcmlnaW5ZTWV0cmljcykgKiAobnVtVmVy
dE9yaWdpbllNZXRyaWNzIC0gMSk7IH0KIH07CiAKLXN0cnVjdCBDb3ZlcmFnZVRhYmxlIDogVGFi
bGVCYXNlIHsKLSAgICBPcGVuVHlwZTo6VUludDE2IGNvdmVyYWdlRm9ybWF0OwotfTsKLQotc3Ry
dWN0IENvdmVyYWdlMVRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7Ci0gICAgT3BlblR5cGU6OlVJbnQx
NiBnbHlwaENvdW50OwotICAgIE9wZW5UeXBlOjpHbHlwaElEIGdseXBoQXJyYXlbMV07Ci19Owot
Ci1zdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKLSAgICBPcGVuVHlwZTo6
VUludDE2IHJhbmdlQ291bnQ7Ci0gICAgc3RydWN0IFJhbmdlUmVjb3JkIHsKLSAgICAgICAgT3Bl
blR5cGU6OkdseXBoSUQgc3RhcnQ7Ci0gICAgICAgIE9wZW5UeXBlOjpHbHlwaElEIGVuZDsKLSAg
ICAgICAgT3BlblR5cGU6OlVJbnQxNiBzdGFydENvdmVyYWdlSW5kZXg7Ci0gICAgfSByYW5nZXNb
MV07Ci19OwotCiBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAg
IE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3Zl
cmFnZU9mZnNldDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227932</attachid>
            <date>2014-03-27 01:00:31 -0700</date>
            <delta_ts>2014-03-27 09:05:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>read-MATH.patch</filename>
            <type>text/plain</type>
            <size>26403</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMTA0Njk5ZC4uNzU4MzFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMy0yNCAg
RnLDqWTDqXJpYyBXYW5nICA8ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgT3BlcmF0b3Ig
c3RyZXRjaGluZzogcmVhZCB0aGUgT3BlbiBUeXBlIE1BVEggdGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMyNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IGVuYWJs
ZSBPUEVOVFlQRV9NQVRIIG9uIHBsYXRmb3JtcyB0aGF0IGNhbiByZWFkIE9wZW5UeXBlIHRhYmxl
cy4KKwogMjAxNC0wMy0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IHRoZSBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBjZjllYWQ4Li42N2RiNDE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKQEAgLTEwNTAsNCArMTA1MCw5IEBACiAjZGVmaW5lIEhBVkVfTlNfQUNUSVZJ
VFkgMQogI2VuZGlmCiAKKyNpZiAoT1MoREFSV0lOKSAmJiBVU0UoQ0cpKSB8fCBVU0UoRlJFRVRZ
UEUpIHx8IChQTEFURk9STShXSU4pICYmIChVU0UoQ0cpIHx8IFVTRShDQUlSTykpKQorI3VuZGVm
IEVOQUJMRV9PUEVOVFlQRV9NQVRICisjZGVmaW5lIEVOQUJMRV9PUEVOVFlQRV9NQVRIIDEKKyNl
bmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NmZiYzJm
Li45OTZhNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzcgQEAKIDIwMTQtMDMtMjUgIEZyw6lk
w6lyaWMgV2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZyPgogCisgICAgICAgIE9wZXJhdG9yIHN0cmV0
Y2hpbmc6IHJlYWQgdGhlIE9wZW4gVHlwZSBNQVRIIHRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBwYXJzZSBhbmQgZXhwb3NlIHNvbWUgZGF0
YSBmcm9tIHRoZSBPcGVuVHlwZSBNQVRIIHRhYmxlIHRoYXQgd2lsbCBiZQorICAgICAgICBiZSBy
ZWxldmFudCBmb3IgYXQgbGVhc3QgdGhlIE1hdGhNTCBvcGVyYXRvciBzdHJldGNoaW5nIChidWcg
MTMwMzIyKToKKyAgICAgICAgbWF0aCBjb25zdGFudHMsIGl0YWxpYyBjb3JyZWN0aW9ucyBhbmQg
c2l6ZSB2YXJpYW50cyAvIGdseXBoIGFzc2VtYmx5LgorICAgICAgICBUaGlzIHdpbGwgYmUgdGVz
dGVkIHdoZW4gdGhlIE1hdGhNTCBjb2RlIHVzZXMgdGhlIGRhdGEuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBPcGVuVHlwZVR5cGVzLmggdG8gdGhl
IE1hYyBidWlsZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmNwcDogV2UgaW1wbGVtZW50IHRoZSBsb3ctbGV2ZWwgcGFyc2luZyBvZiB0aGUg
TUFUSCB0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0NvcnJl
Y3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3NlbWJseVBhcnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVW
YXJpYW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0
aW9uOjpnZXRBc3NlbWJseVBhcnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRo
VmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
TWF0aERhdGE6Ok9wZW5UeXBlTWF0aERhdGEpOiBXZSBsb2FkIHRoZSBNQVRIIHRhYmxlLgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGVNYXRoRGF0YTo6Z2V0TWF0aENvbnN0YW50KTogV2UgYWRk
IGEgZnVuY3Rpb24gdG8gZ2V0IHZhbHVlcyBmcm9tIHRoZSBNYXRoQ29uc3RhbnQgc3VidGFibGUu
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZU1hdGhEYXRhOjpnZXRJdGFsaWNDb3JyZWN0aW9u
KTogV2UgYWRkIGEgZnVuY3Rpb24gdG8gZ2V0IGl0YWxpYyBjb3JyZWN0aW9uIGZyb20gdGhlIE1h
dGhHbHlwaEluZm8gc3VidGFibGUuCisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZU1hdGhEYXRh
OjpnZXRNYXRoVmFyaWFudHMpOiBXZSBhZGQgYSBmdW5jdGlvbiB0byBnZXQgc2l6ZSB2YXJpYW50
cyAvIGdseXBoIGFzc2VtYmx5IGZyb20gdGhlIE1hdGhWYXJpYW50cyBzdWJ0YWJsZS4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6IFdlIGV4
cG9zZSB0aHJlZSBuZXcgZnVuY3Rpb25zIHRvIGdldCBtYXRoIGRhdGEuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOiBXZSBzaGFyZSB0aGUgY292
ZXJhZ2UgdGFibGVzIHRoYXQgYXJlIGNvbW1vbiB0byB2ZXJ0aWNhbCBhbmQgbWF0aCBkYXRhLgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFn
ZUluZGV4KTogV2UgYWRkIGEgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjb3ZlcmFnZSBpbmRleCBmcm9t
IGEgZ2l2ZW4gZ2x5cGguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwOiBXZSBtb3ZlIHRoZSBjb3ZlcmFnZSB0YWJsZXMgdG8gT3Bl
blR5cGVUeXBlcy5oLgorCisyMDE0LTAzLTI1ICBGcsOpZMOpcmljIFdhbmcgIDxmcmVkLndhbmdA
ZnJlZS5mcj4KKwogICAgICAgICBPcGVyYXRvciBzdHJldGNoaW5nOiBleHBvc2UgYSBtYXRoIGRh
dGEgQVBJCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzA1NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDRiYmIzYWZiLi5jMDFiZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTk1LDYgKzQ1OTUsNyBAQAog
CQlCMkMzREE2NTBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTU0MEQwMDZDRDYwMEVG
NkYyNiAvKiBTaW1wbGVGb250RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1h
dGhEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyRDNEQTUzMEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmNwcCAqLzsgfTsK
IAkJQjJEM0RBNjUwRDAwNkNENjAwRUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRDNEQTU0MEQwMDZDRDYw
MEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQjJEM0VBNjUwRDAwNkNENjAwRUY2RjI4IC8qIE9wZW5U
eXBlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyRDNFQTU0MEQwMDZDRDYwMEVGNkYyOCAvKiBPcGVuVHlwZVR5cGVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjJDM0RBNjYwRDAwNkNENjAw
RUY2RjI2IC8qIEZvbnREZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBNTUwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnREZXNjcmlw
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUIyQzNEQTY3MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250R2x5cGhzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTU2MEQwMDZDRDYwMEVGNkYy
NiAvKiBGb250R2x5cGhzLmNwcCAqLzsgfTsKIAkJQjJDM0RBNjgwRDAwNkNENjAwRUY2RjI2IC8q
IEZvbnRHbHlwaHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyQzNEQTU3MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250R2x5cGhzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExODQxLDYgKzExODQyLDcg
QEAKIAkJQjJDM0RBNTQwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVGb250RGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMkQzREE1MzBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVN
YXRoRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIy
RDNEQTU0MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBvcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRDNFQTU0MEQwMDZDRDYwMEVGNkYyOCAvKiBPcGVu
VHlwZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBvcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTU1MEQw
MDZDRDYwMEVGNkYyNiAvKiBGb250RGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMkMzREE1NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udEdseXBocy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEdseXBocy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTU3MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250R2x5cGhz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250R2x5cGhzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDEyNSw2ICsyMDEyNyw3IEBACiAJCQkJQjJDM0RB
NTQwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmggKi8sCiAJCQkJQjJEM0RBNTMw
RDAwNkNENjAwRUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEuY3BwICovLAogCQkJCUIyRDNEQTU0
MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmggKi8sCisJCQkJQjJEM0VBNTQw
RDAwNkNENjAwRUY2RjI4IC8qIE9wZW5UeXBlVHlwZXMuaCAqLywKIAkJCQlDRDY0MUVCMjE4MThG
NUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAogCQkJCUNEQzYxREEwMTgw
ODY3RDgwMDRCOTEzRiAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggKi8sCiAJCQkJQ0RDOEI1QUMx
ODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCAqLywKQEAgLTI1
NDY0LDYgKzI1NDY3LDcgQEAKIAkJCQk0MUQxNjhFRTEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVk
V29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2NTBEMDA2Q0Q2MDBFRjZG
MjYgLyogU2ltcGxlRm9udERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRDNEQTY1MEQwMDZD
RDYwMEVGNkYyNyAvKiBPcGVuVHlwZU1hdGhEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMkQz
RUE2NTBEMDA2Q0Q2MDBFRjZGMjggLyogT3BlblR5cGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVMYXlvdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0RTlCMTFEMTgxNDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEU5QjExOTE4MTA5MTZGMDAzQUNDREYg
LyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVNYXRoRGF0YS5jcHAKaW5kZXggMTgwOTczNC4uODc1ZDk2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5jcHAKQEAgLTI3LDE1ICsyNywzMDAgQEAKICNpbmNsdWRlICJPcGVuVHlwZU1hdGhE
YXRhLmgiCiAKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCisjaWYgRU5BQkxFKE9QRU5U
WVBFX01BVEgpCisjaW5jbHVkZSAiT3BlblR5cGVUeXBlcy5oIgorI2VuZGlmCisjaW5jbHVkZSAi
U2ltcGxlRm9udERhdGEuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1PcGVuVHlwZU1hdGhEYXRhOjpPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmKQorI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQorbmFtZXNwYWNlIE9wZW5U
eXBlIHsKKworY29uc3QgdWludDMyX3QgTUFUSFRhZyA9IE9UX01BS0VfVEFHKCdNJywgJ0EnLCAn
VCcsICdIJyk7CisKKyNwcmFnbWEgcGFjaygxKQorCitzdHJ1Y3QgTWF0aFZhbHVlUmVjb3JkIHsK
KyAgICBPcGVuVHlwZTo6SW50MTYgdmFsdWU7CisgICAgT3BlblR5cGU6Ok9mZnNldCBkZXZpY2VU
YWJsZU9mZnNldDsKK307CisKK3N0cnVjdCBNYXRoQ29uc3RhbnRzIHsKKyAgICBPcGVuVHlwZTo6
SW50MTYgaW50Q29uc3RhbnRzW09wZW5UeXBlTWF0aERhdGE6OlNjcmlwdFNjcmlwdFBlcmNlbnRT
Y2FsZURvd24gLSBPcGVuVHlwZU1hdGhEYXRhOjpTY3JpcHRQZXJjZW50U2NhbGVEb3duICsgMV07
CisgICAgT3BlblR5cGU6OlVJbnQxNiB1SW50Q29uc3RhbnRzW09wZW5UeXBlTWF0aERhdGE6OkRp
c3BsYXlPcGVyYXRvck1pbkhlaWdodCAtIE9wZW5UeXBlTWF0aERhdGE6OkRlbGltaXRlZFN1YkZv
cm11bGFNaW5IZWlnaHQgKyAxXTsKKyAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3JkIG1hdGhW
YWx1ZXNDb25zdGFudHNbT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbEtlcm5BZnRlckRlZ3JlZSAt
IE9wZW5UeXBlTWF0aERhdGE6Ok1hdGhMZWFkaW5nICsgMV07CisgICAgT3BlblR5cGU6OlVJbnQx
NiByYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50OworfTsKKworc3RydWN0IE1hdGhJdGFs
aWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CisgICAgT3BlblR5cGU6Ok9m
ZnNldCBjb3ZlcmFnZU9mZnNldDsKKyAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0
aW9uQ291bnQ7CisgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlv
blsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rp
b24gdmFsdWVzLgorCisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICB7CisgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CisgICAgICAgIGlm
ICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gY292ZXJhZ2VPZmZz
ZXQ7CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlID0gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VU
YWJsZT4oYnVmZmVyLCBvZmZzZXQpOworICAgICAgICBpZiAoIWNvdmVyYWdlKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gV2UgZGV0ZXJtaW5lIHRoZSBpbmRleCBpbiB0aGUg
aXRhbGljc0NvcnJlY3Rpb24gdGFibGUuCisgICAgICAgIHVpbnQzMl90IGk7CisgICAgICAgIGlm
ICghZ2V0Q292ZXJhZ2VJbmRleChidWZmZXIsIGNvdmVyYWdlLCBnbHlwaCwgaSkgfHwgaSA+PSBj
b3VudCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBpbnQxNl90KGl0
YWxpY3NDb3JyZWN0aW9uW2ldLnZhbHVlKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgTWF0aEdseXBo
SW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhJdGFs
aWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVG9wQWNj
ZW50QXR0YWNobWVudE9mZnNldDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVD
b3ZlcmFnZU9mZnNldDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsK
KworICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgeworICAgICAg
ICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OworICAg
ICAgICBpZiAob2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PE1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8+KGJ1ZmZlciwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorfTsKKworc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2Ugewor
ICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb247CisgICAgT3Bl
blR5cGU6OlVJbnQxNiBwYXJ0Q291bnQ7CisgICAgc3RydWN0IEdseXBoUGFydFJlY29yZCB7Cisg
ICAgICAgIE9wZW5UeXBlOjpHbHlwaElEIGdseXBoOworICAgICAgICBPcGVuVHlwZTo6VUludDE2
IHN0YXJ0Q29ubmVjdG9yTGVuZ3RoOworICAgICAgICBPcGVuVHlwZTo6VUludDE2IGVuZENvbm5l
Y3Rvckxlbmd0aDsKKyAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBmdWxsQWR2YW5jZTsKKyAgICAg
ICAgT3BlblR5cGU6OlVJbnQxNiBwYXJ0RmxhZ3M7CisgICAgfSBwYXJ0UmVjb3Jkc1sxXTsgLy8g
VGhlcmUgYXJlIHBhcnRDb3VudCBHbHlwaFBhcnRSZWNvcmQncy4KKworICAgIC8vIFBhcnRGbGFn
cyBlbnVtZXJhdGlvbiBjdXJyZW50bHkgdXNlcyBvbmx5IG9uZSBiaXQ6CisgICAgLy8gMHgwMDAx
IElmIHNldCwgdGhlIHBhcnQgY2FuIGJlIHNraXBwZWQgb3IgcmVwZWF0ZWQuCisgICAgLy8gMHhG
RkZFIFJlc2VydmVkLgorICAgIGVudW0geworICAgICAgICBQYXJ0RmxhZ3NFeHRlbmRlciA9IDB4
MDEKKyAgICB9OworCisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1i
bHlQYXJ0cykgY29uc3QKKyAgICB7CisgICAgICAgIHVpbnQxNl90IGNvdW50ID0gcGFydENvdW50
OworICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmcGFydFJlY29yZHNbY291bnRdKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXNzZW1ibHlQYXJ0cy5yZXNpemUoY291bnQp
OworICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAg
ICAgICAgYXNzZW1ibHlQYXJ0c1tpXS5nbHlwaCA9IHBhcnRSZWNvcmRzW2ldLmdseXBoOworICAg
ICAgICAgICAgdWludDE2X3QgZmxhZyA9IHBhcnRSZWNvcmRzW2ldLnBhcnRGbGFnczsKKyAgICAg
ICAgICAgIGFzc2VtYmx5UGFydHNbaV0uaXNFeHRlbmRlciA9IGZsYWcgJiBQYXJ0RmxhZ3NFeHRl
bmRlcjsKKyAgICAgICAgfQorICAgIH0KKworfTsKKworc3RydWN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiA6IFRhYmxlQmFzZSB7CisgICAgT3BlblR5cGU6Ok9mZnNldCBnbHlwaEFzc2VtYmx5T2Zm
c2V0OworICAgIE9wZW5UeXBlOjpVSW50MTYgdmFyaWFudENvdW50OworICAgIHN0cnVjdCBNYXRo
R2x5cGhWYXJpYW50UmVjb3JkIHsKKyAgICAgICAgT3BlblR5cGU6OkdseXBoSUQgdmFyaWFudEds
eXBoOworICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKKyAgICB9
IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1h
dGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KKworICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAg
ICB7CisgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50OworICAgICAgICBpZiAo
IWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNbY291bnRdKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyaWFudHMucmVzaXplKGNvdW50KTsKKyAgICAg
ICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICB2YXJp
YW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKKyAgICB9
CisKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBj
b25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNl
dDsKKyAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRl
T2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKKyAgICAgICAgaWYgKGdseXBo
QXNzZW1ibHkpCisgICAgICAgICAgICBnbHlwaEFzc2VtYmx5LT5nZXRBc3NlbWJseVBhcnRzKGJ1
ZmZlciwgYXNzZW1ibHlQYXJ0cyk7CisgICAgfQorfTsKKworc3RydWN0IE1hdGhWYXJpYW50cyA6
IFRhYmxlV2l0aENvdmVyYWdlIHsKKyAgICBPcGVuVHlwZTo6VUludDE2IG1pbkNvbm5lY3Rvck92
ZXJsYXA7CisgICAgT3BlblR5cGU6Ok9mZnNldCB2ZXJ0aWNhbEdseXBoQ292ZXJhZ2VPZmZzZXQ7
CisgICAgT3BlblR5cGU6Ok9mZnNldCBob3Jpem9udGFsR2x5cGhDb3ZlcmFnZU9mZnNldDsKKyAg
ICBPcGVuVHlwZTo6VUludDE2IHZlcnRpY2FsR2x5cGhDb3VudDsKKyAgICBPcGVuVHlwZTo6VUlu
dDE2IGhvcml6b250YWxHbHlwaENvdW50OworICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBo
Q29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2
ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRp
Y2FsIGdseXBoIGNvbnRydWN0aW9ucy4KKworICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlv
biogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlw
aCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDMyX3Qg
Y291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRh
bEdseXBoQ291bnQpOworICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBo
Q29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAgICAgLy8gV2UgZGV0ZXJtaW5lIHRoZSBjb3ZlcmFnZSB0YWJsZSBmb3IgdGhlIHNw
ZWNpZmllZCBnbHlwaC4KKyAgICAgICAgdWludDE2X3QgY292ZXJhZ2VPZmZzZXQgPSBpc1ZlcnRp
Y2FsID8gdmVydGljYWxHbHlwaENvdmVyYWdlT2Zmc2V0IDogaG9yaXpvbnRhbEdseXBoQ292ZXJh
Z2VPZmZzZXQ7CisgICAgICAgIGlmICghY292ZXJhZ2VPZmZzZXQpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UgPSB2YWxp
ZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsKKyAgICAg
ICAgaWYgKCFjb3ZlcmFnZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IC8vIFdlIGRldGVybWluZSB0aGUgaW5kZXggaW4gdGhlIG1hdGhHbHlwaENvbnN0cnVjdGlvbnNP
ZmZzZXQgdGFibGUuCisgICAgICAgIHVpbnQzMl90IGk7CisgICAgICAgIGlmICghZ2V0Q292ZXJh
Z2VJbmRleChidWZmZXIsIGNvdmVyYWdlLCBnbHlwaCwgaSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgY291bnQgPSBpc1ZlcnRpY2FsID8gdmVydGljYWxHbHlwaENvdW50
IDogaG9yaXpvbnRhbEdseXBoQ291bnQ7CisgICAgICAgIGlmIChpID49IGNvdW50KQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmICghaXNWZXJ0aWNhbCkKKyAgICAgICAg
ICAgIGkgKz0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KTsKKworICAgICAgICByZXR1cm4g
dmFsaWRhdGVPZmZzZXQ8TWF0aEdseXBoQ29uc3RydWN0aW9uPihidWZmZXIsIG1hdGhHbHlwaENv
bnN0cnVjdGlvbnNPZmZzZXRbaV0pOworICAgIH0KK307CisKK3N0cnVjdCBNQVRIVGFibGUgOiBU
YWJsZUJhc2UgeworICAgIE9wZW5UeXBlOjpGaXhlZCB2ZXJzaW9uOworICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbWF0aENvbnN0YW50c09mZnNldDsKKyAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlw
aEluZm9PZmZzZXQ7CisgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CisK
KyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENv
bnN0YW50c09mZnNldDsKKyAgICAgICAgaWYgKG9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiB2
YWxpZGF0ZU9mZnNldDxNYXRoQ29uc3RhbnRzPihidWZmZXIsIG9mZnNldCk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlw
aEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgeworICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0OworICAgICAgICBpZiAob2Zmc2V0
KQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PE1hdGhHbHlwaEluZm8+KGJ1ZmZl
ciwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgY29uc3Qg
TWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgeworICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7
CisgICAgICAgIGlmIChvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
TWF0aFZhcmlhbnRzPihidWZmZXIsIG9mZnNldCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KK307CisKKyNwcmFnbWEgcGFjaygpCisKK30gLy8gbmFtZXNwYWNlIE9wZW5UeXBlCisj
ZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX01BVEgpCisKK09wZW5UeXBlTWF0aERhdGE6Ok9wZW5U
eXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udERhdGEpCiB7Ci0gICAgLy8g
RklYTUU6IFdlIHNob3VsZCByZWFkIHRoZSBkYXRhIGZyb20gdGhlIE1BVEggdGFibGUgKGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMjQpLgorI2lmIEVOQUJMRShP
UEVOVFlQRV9NQVRIKQorICAgIG1fbWF0aEJ1ZmZlciA9IGZvbnREYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6Ok1BVEhUYWcpOworICAgIGNvbnN0IE9wZW5UeXBlOjpNQVRIVGFibGUqIG1hdGgg
PSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6TUFUSFRhYmxlPihtX21hdGhCdWZm
ZXIpOworICAgIGlmICghbWF0aCkgeworICAgICAgICBtX21hdGhCdWZmZXIgPSBudWxscHRyOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhDb25zdGFu
dHMqIG1hdGhDb25zdGFudHMgPSBtYXRoLT5tYXRoQ29uc3RhbnRzKCptX21hdGhCdWZmZXIpOwor
ICAgIGlmICghbWF0aENvbnN0YW50cykgeworICAgICAgICBtX21hdGhCdWZmZXIgPSBudWxscHRy
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgT3BlblR5cGU6Ok1hdGhWYXJp
YW50cyogbWF0aFZhcmlhbnRzID0gbWF0aC0+bWF0aFZhcmlhbnRzKCptX21hdGhCdWZmZXIpOwor
ICAgIGlmICghbWF0aFZhcmlhbnRzKQorICAgICAgICBtX21hdGhCdWZmZXIgPSBudWxscHRyOwor
I2Vsc2UKICAgICBtX21hdGhCdWZmZXIgPSBudWxscHRyOworI2VuZGlmCit9CisKK2Zsb2F0IE9w
ZW5UeXBlTWF0aERhdGE6OmdldE1hdGhDb25zdGFudChjb25zdCBTaW1wbGVGb250RGF0YSogZm9u
dCwgTWF0aENvbnN0YW50IGNvbnN0YW50KSBjb25zdAoreworI2lmIEVOQUJMRShPUEVOVFlQRV9N
QVRIKQorICAgIGludDMyX3QgdmFsdWUgPSAwOworCisgICAgY29uc3QgT3BlblR5cGU6Ok1BVEhU
YWJsZSogbWF0aCA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpNQVRIVGFibGU+
KG1fbWF0aEJ1ZmZlcik7CisgICAgQVNTRVJUKG1hdGgpOworICAgIGNvbnN0IE9wZW5UeXBlOjpN
YXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzID0gbWF0aC0+bWF0aENvbnN0YW50cygqbV9tYXRo
QnVmZmVyKTsKKyAgICBBU1NFUlQobWF0aENvbnN0YW50cyk7CisKKyAgICBpZiAoY29uc3RhbnQg
Pj0gMCAmJiBjb25zdGFudCA8PSBTY3JpcHRTY3JpcHRQZXJjZW50U2NhbGVEb3duKQorICAgICAg
ICB2YWx1ZSA9IGludDE2X3QobWF0aENvbnN0YW50cy0+aW50Q29uc3RhbnRzW2NvbnN0YW50XSk7
CisgICAgZWxzZSBpZiAoY29uc3RhbnQgPj0gRGVsaW1pdGVkU3ViRm9ybXVsYU1pbkhlaWdodCAm
JiBjb25zdGFudCA8PSBEaXNwbGF5T3BlcmF0b3JNaW5IZWlnaHQpCisgICAgICAgIHZhbHVlID0g
dWludDE2X3QobWF0aENvbnN0YW50cy0+dUludENvbnN0YW50c1tjb25zdGFudCAtIERlbGltaXRl
ZFN1YkZvcm11bGFNaW5IZWlnaHRdKTsKKyAgICBlbHNlIGlmIChjb25zdGFudCA+PSBNYXRoTGVh
ZGluZyAmJiBjb25zdGFudCA8PSBSYWRpY2FsS2VybkFmdGVyRGVncmVlKQorICAgICAgICB2YWx1
ZSA9IGludDE2X3QobWF0aENvbnN0YW50cy0+bWF0aFZhbHVlc0NvbnN0YW50c1tjb25zdGFudCAt
IE1hdGhMZWFkaW5nXS52YWx1ZSk7CisgICAgZWxzZSBpZiAoY29uc3RhbnQgPT0gUmFkaWNhbERl
Z3JlZUJvdHRvbVJhaXNlUGVyY2VudCkKKyAgICAgICAgdmFsdWUgPSB1aW50MTZfdChtYXRoQ29u
c3RhbnRzLT5yYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50KTsKKworICAgIGlmIChjb25z
dGFudCA9PSBTY3JpcHRQZXJjZW50U2NhbGVEb3duIHx8IGNvbnN0YW50ID09IFNjcmlwdFNjcmlw
dFBlcmNlbnRTY2FsZURvd24gfHwgY29uc3RhbnQgPT0gUmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNl
UGVyY2VudCkKKyAgICAgICAgcmV0dXJuIHZhbHVlIC8gMTAwLjA7CisKKyAgICByZXR1cm4gdmFs
dWUgKiBmb250LT5zaXplUGVyVW5pdCgpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitmbG9hdCBPcGVuVHlwZU1hdGhEYXRhOjpn
ZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBHbHlwaCBnbHlw
aCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKKyAgICBjb25zdCBPcGVuVHlw
ZTo6TUFUSFRhYmxlKiBtYXRoID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6Ok1B
VEhUYWJsZT4obV9tYXRoQnVmZmVyKTsKKyAgICBBU1NFUlQobWF0aCk7CisgICAgY29uc3QgT3Bl
blR5cGU6Ok1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8gPSBtYXRoLT5tYXRoR2x5cGhJbmZv
KCptX21hdGhCdWZmZXIpOworICAgIGlmICghbWF0aEdseXBoSW5mbykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBjb25zdCBPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA9IG1hdGhHbHlwaEluZm8tPm1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8oKm1fbWF0aEJ1ZmZlcik7CisgICAgaWYgKCFtYXRoSXRhbGljc0NvcnJlY3Rpb25J
bmZvKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtYXRoSXRhbGljc0NvcnJlY3Rp
b25JbmZvLT5nZXRJdGFsaWNDb3JyZWN0aW9uKCptX21hdGhCdWZmZXIsIGdseXBoKSAqIGZvbnQt
PnNpemVQZXJVbml0KCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiAwOworI2VuZGlmCit9CisKK3ZvaWQgT3BlblR5cGVNYXRoRGF0YTo6Z2V0TWF0aFZhcmlh
bnRzKEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwsIFZlY3RvcjxHbHlwaD4mIHNpemVWYXJp
YW50cywgVmVjdG9yPEFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0Cit7CisgICAg
c2l6ZVZhcmlhbnRzLmNsZWFyKCk7CisgICAgYXNzZW1ibHlQYXJ0cy5jbGVhcigpOworI2lmIEVO
QUJMRShPUEVOVFlQRV9NQVRIKQorICAgIGNvbnN0IE9wZW5UeXBlOjpNQVRIVGFibGUqIG1hdGgg
PSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6TUFUSFRhYmxlPihtX21hdGhCdWZm
ZXIpOworICAgIEFTU0VSVChtYXRoKTsKKyAgICBjb25zdCBPcGVuVHlwZTo6TWF0aFZhcmlhbnRz
KiBtYXRoVmFyaWFudHMgPSBtYXRoLT5tYXRoVmFyaWFudHMoKm1fbWF0aEJ1ZmZlcik7CisgICAg
QVNTRVJUKG1hdGhWYXJpYW50cyk7CisKKyAgICBjb25zdCBPcGVuVHlwZTo6TWF0aEdseXBoQ29u
c3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24gPSBtYXRoVmFyaWFudHMtPm1hdGhHbHlw
aENvbnN0cnVjdGlvbigqbV9tYXRoQnVmZmVyLCBnbHlwaCwgaXNWZXJ0aWNhbCk7CisgICAgaWYg
KCFtYXRoR2x5cGhDb25zdHJ1Y3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1hdGhHbHlw
aENvbnN0cnVjdGlvbi0+Z2V0U2l6ZVZhcmlhbnRzKCptX21hdGhCdWZmZXIsIHNpemVWYXJpYW50
cyk7CisgICAgbWF0aEdseXBoQ29uc3RydWN0aW9uLT5nZXRBc3NlbWJseVBhcnRzKCptX21hdGhC
dWZmZXIsIGFzc2VtYmx5UGFydHMpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
LmgKaW5kZXggNjZhNDkxNS4uZjNhYWY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAt
MjYsMTIgKzI2LDE1IEBACiAjaWZuZGVmIE9wZW5UeXBlTWF0aERhdGFfaAogI2RlZmluZSBPcGVu
VHlwZU1hdGhEYXRhX2gKIAorI2luY2x1ZGUgIkdseXBoLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBTaW1wbGVGb250RGF0YTsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CiAKIGNsYXNz
IE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7
CkBAIC00Myw2ICs0Niw3NiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc01hdGhEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9tYXRoQnVmZmVyOyB9CiAKKyAgICAvLyBUaGVzZSBjb25zdGFudHMgYXJl
IGRlZmluZWQgaW4gdGhlIE1BVEggdGFibGUuCisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG9m
IE9wZW5UeXBlTWF0aERhdGE6OmdldE1hdGhDb25zdGFudCBhc3N1bWVzIHRoYXQgdGhleSBjb3Jy
ZXNwb25kIHRvIHRoZSBpbmRpY2VzIG9mIHRoZSBNYXRoQ29udGFudCB0YWJsZS4KKyAgICBlbnVt
IE1hdGhDb25zdGFudCB7CisgICAgICAgIFNjcmlwdFBlcmNlbnRTY2FsZURvd24sCisgICAgICAg
IFNjcmlwdFNjcmlwdFBlcmNlbnRTY2FsZURvd24sCisgICAgICAgIERlbGltaXRlZFN1YkZvcm11
bGFNaW5IZWlnaHQsCisgICAgICAgIERpc3BsYXlPcGVyYXRvck1pbkhlaWdodCwKKyAgICAgICAg
TWF0aExlYWRpbmcsCisgICAgICAgIEF4aXNIZWlnaHQsCisgICAgICAgIEFjY2VudEJhc2VIZWln
aHQsCisgICAgICAgIEZsYXR0ZW5lZEFjY2VudEJhc2VIZWlnaHQsCisgICAgICAgIFN1YnNjcmlw
dFNoaWZ0RG93biwKKyAgICAgICAgU3Vic2NyaXB0VG9wTWF4LAorICAgICAgICBTdWJzY3JpcHRC
YXNlbGluZURyb3BNaW4sCisgICAgICAgIFN1cGVyc2NyaXB0U2hpZnRVcCwKKyAgICAgICAgU3Vw
ZXJzY3JpcHRTaGlmdFVwQ3JhbXBlZCwKKyAgICAgICAgU3VwZXJzY3JpcHRCb3R0b21NaW4sCisg
ICAgICAgIFN1cGVyc2NyaXB0QmFzZWxpbmVEcm9wTWF4LAorICAgICAgICBTdWJTdXBlcnNjcmlw
dEdhcE1pbiwKKyAgICAgICAgU3VwZXJzY3JpcHRCb3R0b21NYXhXaXRoU3Vic2NyaXB0LAorICAg
ICAgICBTcGFjZUFmdGVyU2NyaXB0LAorICAgICAgICBVcHBlckxpbWl0R2FwTWluLAorICAgICAg
ICBVcHBlckxpbWl0QmFzZWxpbmVSaXNlTWluLAorICAgICAgICBMb3dlckxpbWl0R2FwTWluLAor
ICAgICAgICBMb3dlckxpbWl0QmFzZWxpbmVEcm9wTWluLAorICAgICAgICBTdGFja1RvcFNoaWZ0
VXAsCisgICAgICAgIFN0YWNrVG9wRGlzcGxheVN0eWxlU2hpZnRVcCwKKyAgICAgICAgU3RhY2tC
b3R0b21TaGlmdERvd24sCisgICAgICAgIFN0YWNrQm90dG9tRGlzcGxheVN0eWxlU2hpZnREb3du
LAorICAgICAgICBTdGFja0dhcE1pbiwKKyAgICAgICAgU3RhY2tEaXNwbGF5U3R5bGVHYXBNaW4s
CisgICAgICAgIFN0cmV0Y2hTdGFja1RvcFNoaWZ0VXAsCisgICAgICAgIFN0cmV0Y2hTdGFja0Jv
dHRvbVNoaWZ0RG93biwKKyAgICAgICAgU3RyZXRjaFN0YWNrR2FwQWJvdmVNaW4sCisgICAgICAg
IFN0cmV0Y2hTdGFja0dhcEJlbG93TWluLAorICAgICAgICBGcmFjdGlvbk51bWVyYXRvclNoaWZ0
VXAsCisgICAgICAgIEZyYWN0aW9uTnVtZXJhdG9yRGlzcGxheVN0eWxlU2hpZnRVcCwKKyAgICAg
ICAgRnJhY3Rpb25EZW5vbWluYXRvclNoaWZ0RG93biwKKyAgICAgICAgRnJhY3Rpb25EZW5vbWlu
YXRvckRpc3BsYXlTdHlsZVNoaWZ0RG93biwKKyAgICAgICAgRnJhY3Rpb25OdW1lcmF0b3JHYXBN
aW4sCisgICAgICAgIEZyYWN0aW9uTnVtRGlzcGxheVN0eWxlR2FwTWluLAorICAgICAgICBGcmFj
dGlvblJ1bGVUaGlja25lc3MsCisgICAgICAgIEZyYWN0aW9uRGVub21pbmF0b3JHYXBNaW4sCisg
ICAgICAgIEZyYWN0aW9uRGVub21EaXNwbGF5U3R5bGVHYXBNaW4sCisgICAgICAgIFNrZXdlZEZy
YWN0aW9uSG9yaXpvbnRhbEdhcCwKKyAgICAgICAgU2tld2VkRnJhY3Rpb25WZXJ0aWNhbEdhcCwK
KyAgICAgICAgT3ZlcmJhclZlcnRpY2FsR2FwLAorICAgICAgICBPdmVyYmFyUnVsZVRoaWNrbmVz
cywKKyAgICAgICAgT3ZlcmJhckV4dHJhQXNjZW5kZXIsCisgICAgICAgIFVuZGVyYmFyVmVydGlj
YWxHYXAsCisgICAgICAgIFVuZGVyYmFyUnVsZVRoaWNrbmVzcywKKyAgICAgICAgVW5kZXJiYXJF
eHRyYURlc2NlbmRlciwKKyAgICAgICAgUmFkaWNhbFZlcnRpY2FsR2FwLAorICAgICAgICBSYWRp
Y2FsRGlzcGxheVN0eWxlVmVydGljYWxHYXAsCisgICAgICAgIFJhZGljYWxSdWxlVGhpY2tuZXNz
LAorICAgICAgICBSYWRpY2FsRXh0cmFBc2NlbmRlciwKKyAgICAgICAgUmFkaWNhbEtlcm5CZWZv
cmVEZWdyZWUsCisgICAgICAgIFJhZGljYWxLZXJuQWZ0ZXJEZWdyZWUsCisgICAgICAgIFJhZGlj
YWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQKKyAgICB9OworCisgICAgc3RydWN0IEFzc2VtYmx5
UGFydCB7CisgICAgICAgIEdseXBoIGdseXBoOworICAgICAgICBib29sIGlzRXh0ZW5kZXI7Cisg
ICAgfTsKKworICAgIGZsb2F0IGdldE1hdGhDb25zdGFudChjb25zdCBTaW1wbGVGb250RGF0YSos
IE1hdGhDb25zdGFudCkgY29uc3Q7CisgICAgZmxvYXQgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25z
dCBTaW1wbGVGb250RGF0YSosIEdseXBoKSBjb25zdDsKKyAgICB2b2lkIGdldE1hdGhWYXJpYW50
cyhHbHlwaCwgYm9vbCBpc1ZlcnRpY2FsLCBWZWN0b3I8R2x5cGg+JiBzaXplVmFyaWFudHMsIFZl
Y3RvcjxBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5k
ZXggZGE5Y2VhOS4uYTJmYmExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtMTAwLDYgKzEwMCw4
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAorI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNB
TCkgfHwgRU5BQkxFKE9QRU5UWVBFX01BVEgpCitzdHJ1Y3QgQ292ZXJhZ2VUYWJsZSA6IFRhYmxl
QmFzZSB7CisgICAgT3BlblR5cGU6OlVJbnQxNiBjb3ZlcmFnZUZvcm1hdDsKK307CisKK3N0cnVj
dCBDb3ZlcmFnZTFUYWJsZSA6IENvdmVyYWdlVGFibGUgeworICAgIE9wZW5UeXBlOjpVSW50MTYg
Z2x5cGhDb3VudDsKKyAgICBPcGVuVHlwZTo6R2x5cGhJRCBnbHlwaEFycmF5WzFdOworfTsKKwor
c3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CisgICAgT3BlblR5cGU6OlVJ
bnQxNiByYW5nZUNvdW50OworICAgIHN0cnVjdCBSYW5nZVJlY29yZCB7CisgICAgICAgIE9wZW5U
eXBlOjpHbHlwaElEIHN0YXJ0OworICAgICAgICBPcGVuVHlwZTo6R2x5cGhJRCBlbmQ7CisgICAg
ICAgIE9wZW5UeXBlOjpVSW50MTYgc3RhcnRDb3ZlcmFnZUluZGV4OworICAgIH0gcmFuZ2VzWzFd
OworfTsKKyNlbmRpZiAvLyBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpIHx8IEVOQUJMRShPUEVO
VFlQRV9NQVRIKQorCisjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCitzdHJ1Y3QgVGFibGVXaXRo
Q292ZXJhZ2UgOiBUYWJsZUJhc2UgeworcHJvdGVjdGVkOgorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJ
bmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292
ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICB7
CisgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CisgICAgICAgIGNh
c2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQorICAgICAgICAgICAgY29uc3QgQ292ZXJhZ2Ux
VGFibGUqIGNvdmVyYWdlMSA9IHZhbGlkYXRlUHRyPENvdmVyYWdlMVRhYmxlPihidWZmZXIsIGNv
dmVyYWdlKTsKKyAgICAgICAgICAgIGlmICghY292ZXJhZ2UxKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHVpbnQxNl90IGdseXBoQ291bnQgPSBjb3ZlcmFnZTEt
PmdseXBoQ291bnQ7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY292ZXJh
Z2UxLT5nbHlwaEFycmF5W2dseXBoQ291bnRdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIC8vIFdlIGRvIGEgYmluYXJ5IHNlYXJjaCBvbiB0aGUgZ2x5cGgg
aW5kZXhlcy4KKyAgICAgICAgICAgIHVpbnQzMl90IGltaW4gPSAwLCBpbWF4ID0gZ2x5cGhDb3Vu
dDsKKyAgICAgICAgICAgIHdoaWxlIChpbWluIDwgaW1heCkgeworICAgICAgICAgICAgICAgIHVp
bnQzMl90IGltaWQgPSAoaW1pbiArIGltYXgpID4+IDE7CisgICAgICAgICAgICAgICAgdWludDE2
X3QgZ2x5cGhNaWQgPSBjb3ZlcmFnZTEtPmdseXBoQXJyYXlbaW1pZF07CisgICAgICAgICAgICAg
ICAgaWYgKGdseXBoTWlkID09IGdseXBoKSB7CisgICAgICAgICAgICAgICAgICAgIGNvdmVyYWdl
SW5kZXggPSBpbWlkOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGdseXBoTWlkIDwgZ2x5cGgpCisgICAgICAg
ICAgICAgICAgICAgIGltaW4gPSBpbWlkICsgMTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIGltYXggPSBpbWlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAyOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAy
CisgICAgICAgICAgICBjb25zdCBDb3ZlcmFnZTJUYWJsZSogY292ZXJhZ2UyID0gdmFsaWRhdGVQ
dHI8Q292ZXJhZ2UyVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2UpOworICAgICAgICAgICAgaWYgKCFj
b3ZlcmFnZTIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdWlu
dDE2X3QgcmFuZ2VDb3VudCA9IGNvdmVyYWdlMi0+cmFuZ2VDb3VudDsKKyAgICAgICAgICAgIGlm
ICghaXNWYWxpZEVuZChidWZmZXIsICZjb3ZlcmFnZTItPnJhbmdlc1tyYW5nZUNvdW50XSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAvLyBXZSBkbyBhIGJp
bmFyeSBzZWFyY2ggb24gdGhlIHJhbmdlcy4KKyAgICAgICAgICAgIHVpbnQzMl90IGltaW4gPSAw
LCBpbWF4ID0gcmFuZ2VDb3VudDsKKyAgICAgICAgICAgIHdoaWxlIChpbWluIDwgaW1heCkgewor
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGltaWQgPSAoaW1pbiArIGltYXgpID4+IDE7CisgICAg
ICAgICAgICAgICAgdWludDE2X3QgclN0YXJ0ID0gY292ZXJhZ2UyLT5yYW5nZXNbaW1pZF0uc3Rh
cnQ7CisgICAgICAgICAgICAgICAgdWludDE2X3QgckVuZCA9IGNvdmVyYWdlMi0+cmFuZ2VzW2lt
aWRdLmVuZDsKKyAgICAgICAgICAgICAgICBpZiAockVuZCA8IGdseXBoKQorICAgICAgICAgICAg
ICAgICAgICBpbWluID0gaW1pZCArIDE7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZ2x5cGgg
PCByU3RhcnQpCisgICAgICAgICAgICAgICAgICAgIGltYXggPSBpbWlkOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb3ZlcmFnZUluZGV4ID0gY292ZXJhZ2Uy
LT5yYW5nZXNbaW1pZF0uc3RhcnRDb3ZlcmFnZUluZGV4ICsgZ2x5cGggLSByU3RhcnQ7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgT3BlblR5
cGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBPcGVuVHlwZVR5cGVzX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAzNWFlNzFkLi43YzM3MDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTIsMjQgKzExMiw2IEBA
IHN0cnVjdCBWT1JHVGFibGUgewogICAgIHNpemVfdCByZXF1aXJlZFNpemUoKSBjb25zdCB7IHJl
dHVybiBzaXplb2YoKnRoaXMpICsgc2l6ZW9mKFZlcnRPcmlnaW5ZTWV0cmljcykgKiAobnVtVmVy
dE9yaWdpbllNZXRyaWNzIC0gMSk7IH0KIH07CiAKLXN0cnVjdCBDb3ZlcmFnZVRhYmxlIDogVGFi
bGVCYXNlIHsKLSAgICBPcGVuVHlwZTo6VUludDE2IGNvdmVyYWdlRm9ybWF0OwotfTsKLQotc3Ry
dWN0IENvdmVyYWdlMVRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7Ci0gICAgT3BlblR5cGU6OlVJbnQx
NiBnbHlwaENvdW50OwotICAgIE9wZW5UeXBlOjpHbHlwaElEIGdseXBoQXJyYXlbMV07Ci19Owot
Ci1zdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKLSAgICBPcGVuVHlwZTo6
VUludDE2IHJhbmdlQ291bnQ7Ci0gICAgc3RydWN0IFJhbmdlUmVjb3JkIHsKLSAgICAgICAgT3Bl
blR5cGU6OkdseXBoSUQgc3RhcnQ7Ci0gICAgICAgIE9wZW5UeXBlOjpHbHlwaElEIGVuZDsKLSAg
ICAgICAgT3BlblR5cGU6OlVJbnQxNiBzdGFydENvdmVyYWdlSW5kZXg7Ci0gICAgfSByYW5nZXNb
MV07Ci19OwotCiBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAg
IE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3Zl
cmFnZU9mZnNldDsK
</data>
<flag name="review"
          id="252186"
          type_id="1"
          status="+"
          setter="cfleizach"
    />
          </attachment>
      

    </bug>

</bugzilla>