<?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>18109</bug_id>
          
          <creation_ts>2008-03-26 03:49:37 -0700</creation_ts>
          <short_desc>Implement hanging punctuation</short_desc>
          <delta_ts>2026-03-17 08:55:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>104996</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nicholas Shanks">nickshanks</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danidra</cc>
    
    <cc>fantasai.bugs</cc>
    
    <cc>hyatt</cc>
    
    <cc>itshustletime</cc>
    
    <cc>jmuizelaar</cc>
    
    <cc>me</cc>
    
    <cc>mitz</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ntim</cc>
    
    <cc>sebastianzartner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>vitor.roriz</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>75287</commentid>
    <comment_count>0</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2008-03-26 03:49:37 -0700</bug_when>
    <thetext>The css3-text module is going nowhere fast, and it&apos;s hanging-punctuation declaration is so ill-defined that I can&apos;t even figure out what the values mean.

Since WebKit is the typographical tiger of the web world, we should come up with something awesome that works for all scripts and locales, which we can submit to the CSS WG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75514</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-03-27 13:56:16 -0700</bug_when>
    <thetext>Agree 100%.  I&apos;ve wanted this feature for a while (even if it&apos;s just opt-in through a new property).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267882</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel">danidra</who>
    <bug_when>2010-08-23 06:55:37 -0700</bug_when>
    <thetext>Any news on this? I checked W3C&apos;s specifications and it seems like they don&apos;t know how to implement it in a code either. But this would be so useful for any web designer, since, let&apos;s admit it, punctuation within the content box at the start of a paragraph really does suck. We need Webkit to lead the way on this, as you guys often do! :)

Just wanted to bring this up since the last post on this feature request goes back to 2008.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161743</commentid>
    <comment_count>3</comment_count>
      <attachid>270594</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-02-03 12:10:09 -0800</bug_when>
    <thetext>Created attachment 270594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161744</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-03 12:11:32 -0800</bug_when>
    <thetext>Attachment 270594 did not pass style-queue:


ERROR: Source/WebCore/css/CSSPrimitiveValueMappings.h:1634:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/CSSParser.cpp:10536:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 2 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161745</commentid>
    <comment_count>5</comment_count>
      <attachid>270595</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-02-03 12:14:19 -0800</bug_when>
    <thetext>Created attachment 270595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161751</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-02-03 12:54:49 -0800</bug_when>
    <thetext>Initial parsing landed in r196075.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1883399</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-07-13 15:16:51 -0700</bug_when>
    <thetext>It doesn&apos;t seem like other browsers implemented this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1952461</commentid>
    <comment_count>8</comment_count>
    <who name="Sebastian Zartner">sebastianzartner</who>
    <bug_when>2023-05-02 12:49:57 -0700</bug_when>
    <thetext>For what it&apos;s worth, the hanging-punctuation property is currently defined at https://drafts.csswg.org/css-text-3/#hanging-punctuation-property.

Sebastian</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2127517</commentid>
    <comment_count>9</comment_count>
    <who name="Rehan Butt">me</who>
    <bug_when>2025-07-02 21:45:14 -0700</bug_when>
    <thetext>Not sure if this is the right place for this but looks like `hanging-punctuation` in Safari is inconsistent and not sure why. For reference here are 2 code snippets 1 that works and 1 that does not.

Not Working - https://codepen.io/rehanbutt/pen/raVgbag
Working - https://codepen.io/rehanbutt/pen/GgJaLqv</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2127739</commentid>
    <comment_count>10</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2025-07-03 14:34:51 -0700</bug_when>
    <thetext>WebKit does not recognize U+0022 as candidate for hanging-punctuation (U+201C works fine) and same for single quotation mark (see U_GET_GC_MASK(leadingCharacter) &amp; (U_GC_PS_MASK | U_GC_PI_MASK | U_GC_PF_MASK)).
I need to check if this regressed when WebKit enabled their modern inline layout, and if not, I am curious if git history has some explanation of why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2191000</commentid>
    <comment_count>11</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2026-03-17 08:53:57 -0700</bug_when>
    <thetext>(In reply to alan from comment #10)
&gt; WebKit does not recognize U+0022 as candidate for hanging-punctuation
&gt; (U+201C works fine) and same for single quotation mark (see
&gt; U_GET_GC_MASK(leadingCharacter) &amp; (U_GC_PS_MASK | U_GC_PI_MASK |
&gt; U_GC_PF_MASK)).
&gt; I need to check if this regressed when WebKit enabled their modern inline
&gt; layout, and if not, I am curious if git history has some explanation of why.

Progressed with https://commits.webkit.org/308597@main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2191001</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-03-17 08:55:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/172749824&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270594</attachid>
            <date>2016-02-03 12:10:09 -0800</date>
            <delta_ts>2016-02-03 12:14:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20340</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjA3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE2LTAyLTAzICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBoYW5naW5nLXB1bmN0
dWF0aW9uIHByb3BlcnR5IHBhcnNpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODEwOS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBwYXJzaW5nIHRlc3QgaW4gZmFzdC9jc3MuCisKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlbmRlckVtcGhhc2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6aGFuZ2luZ1B1bmN0dWF0aW9uVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpm
aWxsUmVwZWF0VG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlVGV4dEluZGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlSGFuZ2luZ1B1bmN0dWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cGFyc2VMaW5lQm94Q29udGFpbik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAg
ICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEhhbmdpbmdQdW5jdHVhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGluZUJyZWFrKToKKyAg
ICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0lu
c2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRI
YW5naW5nUHVuY3R1YXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlv
dXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2ViQ29y
ZTo6b3BlcmF0b3J8ICk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcnw9ICk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorCiAy
MDE2LTAyLTAzICBKZXNzaWUgQmVybGluICA8amJlcmxpbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxOTYwMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY5NSw2ICsxNjk1LDIzIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhhc2lzUG9z
aXQKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCitzdGF0aWMgUmVmPENT
U1ZhbHVlPiBoYW5naW5nUHVuY3R1YXRpb25Ub0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBo
YW5naW5nUHVuY3R1YXRpb24pCit7CisgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGlmIChoYW5naW5nUHVuY3R1YXRp
b24gJiBGaXJzdEhhbmdpbmdQdW5jdHVhdGlvbikKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVGaXJzdCkpOworICAgIGlmICho
YW5naW5nUHVuY3R1YXRpb24gJiBBbGxvd0VuZEhhbmdpbmdQdW5jdHVhdGlvbikKKyAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
bGxvd0VuZCkpOworICAgIGlmIChoYW5naW5nUHVuY3R1YXRpb24gJiBGb3JjZUVuZEhhbmdpbmdQ
dW5jdHVhdGlvbikKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVGb3JjZUVuZCkpOworICAgIGlmIChoYW5naW5nUHVuY3R1YXRp
b24gJiBMYXN0SGFuZ2luZ1B1bmN0dWF0aW9uKQorICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxhc3QpKTsKKyAgICBpZiAoIWxp
c3QtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOworICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25OdWxsKCk7
Cit9CisgICAgCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmaWxsUmVwZWF0VG9DU1NWYWx1ZShFRmls
bFJlcGVhdCB4UmVwZWF0LCBFRmlsbFJlcGVhdCB5UmVwZWF0KQogewogICAgIC8vIEZvciBiYWNr
d2FyZHMgY29tcGF0aWJpbGl0eSwgaWYgYm90aCB2YWx1ZXMgYXJlIGVxdWFsLCBqdXN0IHJldHVy
biBvbmUgb2YgdGhlbS4gQW5kCkBAIC0zMDE4LDYgKzMwMzUsOCBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHN0eWxlLT5icmVha0JlZm9yZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJyZWFrSW5zaWRlOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzdHlsZS0+YnJlYWtJbnNpZGUoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlIYW5n
aW5nUHVuY3R1YXRpb246CisgICAgICAgICAgICByZXR1cm4gaGFuZ2luZ1B1bmN0dWF0aW9uVG9D
U1NWYWx1ZShzdHlsZS0+aGFuZ2luZ1B1bmN0dWF0aW9uKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5UG9zaXRpb246CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLT5wb3NpdGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE5NjAyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDg3LDYgKzMw
ODcsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlECiAgICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBD
U1NQcm9wZXJ0eUhhbmdpbmdQdW5jdHVhdGlvbjoKKyAgICAgICAgcmV0dXJuIHBhcnNlSGFuZ2lu
Z1B1bmN0dWF0aW9uKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVC
b3hDb250YWluOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTA1MTEsNiArMTA1MTMsNTAgQEAgUmVmUHRyPENT
U1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVGV4dEluZAogICAgIHJldHVybiBsaXN0LnJlbGVhc2Uo
KTsKIH0KIAorYm9vbCBDU1NQYXJzZXI6OnBhcnNlSGFuZ2luZ1B1bmN0dWF0aW9uKGJvb2wgaW1w
b3J0YW50KQoreworICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJy
ZW50KCk7CisgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pZCA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlIYW5naW5nUHVuY3R1YXRpb24sIENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSksIGlt
cG9ydGFudCk7CisgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGJvb2wgaXNWYWxpZCA9IHRydWU7
CisgICAgc3RkOjpiaXRzZXQ8bnVtQ1NTVmFsdWVLZXl3b3Jkcz4gc2VlblZhbHVlczsKKyAgICB3
aGlsZSAoaXNWYWxpZCAmJiB2YWx1ZSkgeworICAgICAgICBpZiAoc2VlblZhbHVlc1t2YWx1ZS0+
aWRdCisgICAgICAgICAgICB8fCAodmFsdWUtPmlkID09IENTU1ZhbHVlQWxsb3dFbmQgJiYgc2Vl
blZhbHVlc1tDU1NWYWx1ZUZvcmNlRW5kXSkKKyAgICAgICAgICAgIHx8ICh2YWx1ZS0+aWQgPT0g
Q1NTVmFsdWVGb3JjZUVuZCAmJiBzZWVuVmFsdWVzW0NTU1ZhbHVlQWxsb3dFbmRdKSkgeworICAg
ICAgICAgICAgaXNWYWxpZCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgc3dpdGNoICh2YWx1ZS0+aWQpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVB
bGxvd0VuZDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVGaXJzdDoKKyAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVGb3JjZUVuZDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXN0OgorICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZS0+aWQpKTsKKyAgICAgICAgICAgICAgICBzZWVuVmFsdWVz
LnNldCh2YWx1ZS0+aWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzVmFsaWQpCisgICAgICAgICAgICB2YWx1
ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgfQorICAgIAorICAgIC8vIFZhbHVlcyBhcmUg
ZWl0aGVyIHZhbGlkIG9yIGluIHNob3J0aGFuZCBzY29wZS4KKyAgICBpZiAobGlzdC0+bGVuZ3Ro
KCkgJiYgaXNWYWxpZCkgeworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUhhbmdpbmdQ
dW5jdHVhdGlvbiwgbGlzdC5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUxpbmVCb3hDb250YWluKGJvb2wgaW1wb3J0YW50KQogewogICAgIExpbmVCb3hDb250
YWluIGxpbmVCb3hDb250YWluID0gTGluZUJveENvbnRhaW5Ob25lOwpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuaAkocmV2aXNpb24gMTk2MDIzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNiArMzM3LDggQEAgcHVibGljOgogCiAgICAg
UmVmUHRyPENTU1ZhbHVlPiBwYXJzZVRleHRJbmRlbnQoKTsKICAgICAKKyAgICBib29sIHBhcnNl
SGFuZ2luZ1B1bmN0dWF0aW9uKGJvb2wgaW1wb3J0YW50KTsKKwogICAgIGJvb2wgcGFyc2VMaW5l
Qm94Q29udGFpbihib29sIGltcG9ydGFudCk7CiAgICAgUmVmUHRyPENTU0NhbGNWYWx1ZT4gcGFy
c2VDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVS
YW5nZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaAkocmV2aXNpb24gMTk2MDIzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyNiw2ICsxNjI2LDI5
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKICAgICB9CiB9CiAK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBIYW5naW5nUHVu
Y3R1YXRpb24oKSBjb25zdAoreworICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CisgICAgCisgICAg
c3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Cisg
ICAgICAgICAgICByZXR1cm4gTm9IYW5naW5nUHVuY3R1YXRpb247CisgICAgICAgIGNhc2UgQ1NT
VmFsdWVGaXJzdDoKKyAgICAgICAgICAgIHJldHVybiBGaXJzdEhhbmdpbmdQdW5jdHVhdGlvbjsK
KyAgICAgICAgY2FzZSBDU1NWYWx1ZUxhc3Q6CisgICAgICAgICAgICByZXR1cm4gTGFzdEhhbmdp
bmdQdW5jdHVhdGlvbjsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUFsbG93RW5kOgorICAgICAgICAg
ICAgcmV0dXJuIEFsbG93RW5kSGFuZ2luZ1B1bmN0dWF0aW9uOworICAgICAgICBjYXNlIENTU1Zh
bHVlRm9yY2VFbmQ6CisgICAgICAgICAgICByZXR1cm4gRm9yY2VFbmRIYW5naW5nUHVuY3R1YXRp
b247CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5vSGFuZ2luZ1B1bmN0dWF0aW9u
OworfQorCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGlu
ZUJyZWFrKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlzaW9uIDE5NjAyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYs
NiArMjM2LDcgQEAgZm9udC12YXJpYW50IFtJbmhlcml0ZWQsIExvbmdoYW5kcz1mb250LQogZm9u
dC1zdHJldGNoIFtTa2lwQnVpbGRlcl0KIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgW0lu
aGVyaXRlZCwgU1ZHLCBDb252ZXJ0ZXI9R2x5cGhPcmllbnRhdGlvbl0KIGdseXBoLW9yaWVudGF0
aW9uLXZlcnRpY2FsIFtJbmhlcml0ZWQsIFNWRywgQ29udmVydGVyPUdseXBoT3JpZW50YXRpb25P
ckF1dG9dCitoYW5naW5nLXB1bmN0dWF0aW9uIFtJbmhlcml0ZWQsIENvbnZlcnRlcj1IYW5naW5n
UHVuY3R1YXRpb25dCiBoZWlnaHQgW0luaXRpYWw9aW5pdGlhbFNpemUsIENvbnZlcnRlcj1MZW5n
dGhTaXppbmddCiAjaWYgZGVmaW5lZChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAmJiBF
TkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OCiBpbWFnZS1vcmllbnRhdGlvbiBbSW5oZXJpdGVk
XQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDE5
NjAyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTkxLDMgKzExOTEsOSBAQCBjb250ZW50cwogLy8gdG91Y2gtYWN0aW9uCiBt
YW5pcHVsYXRpb24KICNlbmRpZgorCisvLyBoYW5naW5nLXB1bmN0dWF0aW9uCithbGxvdy1lbmQK
K2ZpcnN0Citmb3JjZS1lbmQKK2xhc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmgJKHJldmlzaW9uIDE5NjAyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDYgKzEzNSw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRSZWdpb25CcmVha0Jl
dHdlZW4oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEJyZWFrSW5zaWRl
IGNvbnZlcnRSZWdpb25CcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICNl
bmRpZgorICAgIAorICAgIHN0YXRpYyBIYW5naW5nUHVuY3R1YXRpb24gY29udmVydEhhbmdpbmdQ
dW5jdHVhdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyQ3VzdG9tOwpAQCAtMTI3OSw2ICsxMjgxLDE2IEBAIGlu
bGluZSBCcmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIKIH0KICNlbmRpZgogCitpbmxp
bmUgSGFuZ2luZ1B1bmN0dWF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdp
bmdQdW5jdHVhdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIEhh
bmdpbmdQdW5jdHVhdGlvbiByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEhhbmdpbmdQdW5j
dHVhdGlvbigpOworICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgeworICAgICAgICBm
b3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQor
ICAgICAgICAgICAgcmVzdWx0IHw9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50
VmFsdWUuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXJfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZp
c2lvbiAxOTYwMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTIsNiArNjEyLDcgQEAgYm9vbCBSZW5kZXJTdHls
ZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogI2VuZGlmCiAgICAgICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+bV9saW5lU25hcCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5l
U25hcAogICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUFsaWduICE9IG90
aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVBbGlnbgorICAgICAgICAgICAgfHwgcmFyZUlu
aGVyaXRlZERhdGEtPm1faGFuZ2luZ1B1bmN0dWF0aW9uICE9IG90aGVyLnJhcmVJbmhlcml0ZWRE
YXRhLT5tX2hhbmdpbmdQdW5jdHVhdGlvbgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxP
V19TQ1JPTExJTkcpCiAgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hP
dmVyZmxvd1Njcm9sbGluZyAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVy
Zmxvd1Njcm9sbGluZwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTk2MDIzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3OSw2ICs4
NzksOCBAQCBwdWJsaWM6CiAgICAgQnJlYWtJbnNpZGUgYnJlYWtJbnNpZGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxCcmVha0luc2lkZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYnJl
YWtJbnNpZGUpOyB9CiAgICAgQnJlYWtCZXR3ZWVuIGJyZWFrQmVmb3JlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3ZWVuPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVh
a0JlZm9yZSk7IH0KICAgICBCcmVha0JldHdlZW4gYnJlYWtBZnRlcigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEJyZWFrQmV0d2Vlbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYnJlYWtB
ZnRlcik7IH0KKyAgICAKKyAgICBIYW5naW5nUHVuY3R1YXRpb24gaGFuZ2luZ1B1bmN0dWF0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SGFuZ2luZ1B1bmN0dWF0aW9uPihyYXJlSW5o
ZXJpdGVkRGF0YS0+bV9oYW5naW5nUHVuY3R1YXRpb24pOyB9CiAKICAgICBmbG9hdCBvdXRsaW5l
T2Zmc2V0KCkgY29uc3QKICAgICB7CkBAIC0xNjIyLDYgKzE2MjQsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRCcmVha0JlZm9yZShCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JyZWFrQmVmb3JlLCBicmVha0JlaGF2aW9yKTsgfQog
ICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JyZWFrQWZ0ZXIsIGJyZWFrQmVoYXZpb3IpOyB9
CiAgICAgdm9pZCBzZXRCcmVha0luc2lkZShCcmVha0luc2lkZSBicmVha0JlaGF2aW9yKSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYnJlYWtJbnNpZGUsIGJyZWFrQmVoYXZpb3Ip
OyB9CisgICAgCisgICAgdm9pZCBzZXRIYW5naW5nUHVuY3R1YXRpb24oSGFuZ2luZ1B1bmN0dWF0
aW9uIHB1bmN0dWF0aW9uKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFuZ2luZ1B1
bmN0dWF0aW9uLCBwdW5jdHVhdGlvbik7IH0KIAogICAgIC8vIEVuZCBDU1MzIFNldHRlcnMKIApA
QCAtMTg4MSw2ICsxODg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBFRmxvYXQgaW5pdGlhbEZs
b2F0aW5nKCkgeyByZXR1cm4gTm9GbG9hdDsgfQogICAgIHN0YXRpYyBCcmVha0JldHdlZW4gaW5p
dGlhbEJyZWFrQmV0d2VlbigpIHsgcmV0dXJuIEF1dG9CcmVha0JldHdlZW47IH0KICAgICBzdGF0
aWMgQnJlYWtJbnNpZGUgaW5pdGlhbEJyZWFrSW5zaWRlKCkgeyByZXR1cm4gQXV0b0JyZWFrSW5z
aWRlOyB9CisgICAgc3RhdGljIEhhbmdpbmdQdW5jdHVhdGlvbiBpbml0aWFsSGFuZ2luZ1B1bmN0
dWF0aW9uKCkgeyByZXR1cm4gTm9IYW5naW5nUHVuY3R1YXRpb247IH0KICAgICBzdGF0aWMgRVRh
YmxlTGF5b3V0IGluaXRpYWxUYWJsZUxheW91dCgpIHsgcmV0dXJuIFRBVVRPOyB9CiAgICAgc3Rh
dGljIEVCb3JkZXJDb2xsYXBzZSBpbml0aWFsQm9yZGVyQ29sbGFwc2UoKSB7IHJldHVybiBCU0VQ
QVJBVEU7IH0KICAgICBzdGF0aWMgRUJvcmRlclN0eWxlIGluaXRpYWxCb3JkZXJTdHlsZSgpIHsg
cmV0dXJuIEJOT05FOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNpb24gMTk2MDIzKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4Myw3ICs0ODMsMTcgQEAgYm9vbCBhbHdheXNQYWdlQnJlYWsoQnJlYWtC
ZXR3ZWVuKTsKIGVudW0gQnJlYWtJbnNpZGUgewogICAgIEF1dG9CcmVha0luc2lkZSwgQXZvaWRC
cmVha0luc2lkZSwgQXZvaWRDb2x1bW5CcmVha0luc2lkZSwgQXZvaWRQYWdlQnJlYWtJbnNpZGUs
IEF2b2lkUmVnaW9uQnJlYWtJbnNpZGUKIH07Ci0gICAgCisKK2VudW0gSGFuZ2luZ1B1bmN0dWF0
aW9uIHsKKyAgICBOb0hhbmdpbmdQdW5jdHVhdGlvbiA9IDAsCisgICAgRmlyc3RIYW5naW5nUHVu
Y3R1YXRpb24gPSAxIDw8IDAsCisgICAgTGFzdEhhbmdpbmdQdW5jdHVhdGlvbiA9IDEgPDwgMSwK
KyAgICBBbGxvd0VuZEhhbmdpbmdQdW5jdHVhdGlvbiA9IDEgPDwgMiwKKyAgICBGb3JjZUVuZEhh
bmdpbmdQdW5jdHVhdGlvbiA9IDEgPDwgMworfTsKK2lubGluZSBIYW5naW5nUHVuY3R1YXRpb24g
b3BlcmF0b3J8IChIYW5naW5nUHVuY3R1YXRpb24gYSwgSGFuZ2luZ1B1bmN0dWF0aW9uIGIpIHsg
cmV0dXJuIEhhbmdpbmdQdW5jdHVhdGlvbihpbnQoYSkgfCBpbnQoYikpOyB9CitpbmxpbmUgSGFu
Z2luZ1B1bmN0dWF0aW9uJiBvcGVyYXRvcnw9IChIYW5naW5nUHVuY3R1YXRpb24mIGEsIEhhbmdp
bmdQdW5jdHVhdGlvbiBiKSB7IHJldHVybiBhID0gYSB8IGI7IH0KKwogZW51bSBFRW1wdHlDZWxs
IHsKICAgICBTSE9XLCBISURFCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24g
MTk2MDIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVy
aXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdf
V09SRCkKICAgICAsIHRyYWlsaW5nV29yZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5
bGU6OmluaXRpYWxUcmFpbGluZ1dvcmQoKSkpCiAjZW5kaWYKKyAgICAsIG1faGFuZ2luZ1B1bmN0
dWF0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCkpCiAgICAgLCBo
eXBoZW5hdGlvbkxpbWl0QmVmb3JlKC0xKQogICAgICwgaHlwaGVuYXRpb25MaW1pdEFmdGVyKC0x
KQogICAgICwgaHlwaGVuYXRpb25MaW1pdExpbmVzKC0xKQpAQCAtMjA3LDYgKzIwOCw3IEBAIGlu
bGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmUKICNpZiBFTkFCTEUoQ1NTX1RS
QUlMSU5HX1dPUkQpCiAgICAgLCB0cmFpbGluZ1dvcmQoby50cmFpbGluZ1dvcmQpCiAjZW5kaWYK
KyAgICAsIG1faGFuZ2luZ1B1bmN0dWF0aW9uKG8ubV9oYW5naW5nUHVuY3R1YXRpb24pCiAgICAg
LCBoeXBoZW5hdGlvblN0cmluZyhvLmh5cGhlbmF0aW9uU3RyaW5nKQogICAgICwgaHlwaGVuYXRp
b25MaW1pdEJlZm9yZShvLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUpCiAgICAgLCBoeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIoby5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIpCkBAIC0zMTMsNiArMzE1LDcgQEAg
Ym9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KAogI2lmIEVOQUJMRShDU1Nf
VFJBSUxJTkdfV09SRCkKICAgICAgICAgJiYgdHJhaWxpbmdXb3JkID09IG8udHJhaWxpbmdXb3Jk
CiAjZW5kaWYKKyAgICAgICAgJiYgbV9oYW5naW5nUHVuY3R1YXRpb24gPT0gby5tX2hhbmdpbmdQ
dW5jdHVhdGlvbgogICAgICAgICAmJiBtX2N1c3RvbVByb3BlcnRpZXMgPT0gby5tX2N1c3RvbVBy
b3BlcnRpZXMKICAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShsaXN0U3R5bGVJbWFn
ZSwgby5saXN0U3R5bGVJbWFnZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDE5
NjAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsOCBAQCBwdWJsaWM6CiAgICAg
dW5zaWduZWQgdHJhaWxpbmdXb3JkIDogMTsKICNlbmRpZgogCisgICAgdW5zaWduZWQgbV9oYW5n
aW5nUHVuY3R1YXRpb24gOiA0OworCiAgICAgQXRvbWljU3RyaW5nIGh5cGhlbmF0aW9uU3RyaW5n
OwogICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRCZWZvcmU7CiAgICAgc2hvcnQgaHlwaGVuYXRp
b25MaW1pdEFmdGVyOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2MDcyKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDItMDMgIERh
dmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGhhbmdpbmct
cHVuY3R1YXRpb24gcHJvcGVydHkgcGFyc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTA5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MvcGFyc2luZy1oYW5naW5nLXB1bmN0dWF0
aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcGFyc2luZy1oYW5n
aW5nLXB1bmN0dWF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3Jlc291cmNl
cy9wYXJzaW5nLWhhbmdpbmctcHVuY3R1YXRpb24uanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6
CisKIDIwMTYtMDItMDMgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2tpcCBmYXN0L2Zvcm1zL2lucHV0LXVzZXItaW5wdXQtc2FuaXRpemF0aW9uLmh0bWwg
b24gaW9zLXNpbXVsYXRvcgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1oYW5n
aW5nLXB1bmN0dWF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wYXJzaW5nLWhhbmdpbmctcHVuY3R1YXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1oYW5naW5nLXB1bmN0dWF0aW9u
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACitUaGlzIHRlc3Rz
IGNoZWNrcyB0aGF0IGFsbCBvZiB0aGUgaW5wdXQgdmFsdWVzIGZvciBoYW5naW5nLXB1bmN0dWF0
aW9uIHBhcnNlIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgdGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogbm9uZTsiKSBpcyAibm9uZSIKK1BBU1MgdGVz
dCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogZmlyc3Q7IikgaXMgImZpcnN0IgorUEFTUyB0ZXN0KCJo
YW5naW5nLXB1bmN0dWF0aW9uOiBsYXN0OyIpIGlzICJsYXN0IgorUEFTUyB0ZXN0KCJoYW5naW5n
LXB1bmN0dWF0aW9uOiBhbGxvdy1lbmQ7IikgaXMgImFsbG93LWVuZCIKK1BBU1MgdGVzdCgiaGFu
Z2luZy1wdW5jdHVhdGlvbjogZm9yY2UtZW5kOyIpIGlzICJmb3JjZS1lbmQiCitQQVNTIHRlc3Qo
ImhhbmdpbmctcHVuY3R1YXRpb246IGZpcnN0IGxhc3Q7IikgaXMgImZpcnN0IGxhc3QiCitQQVNT
IHRlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IGxhc3QgZmlyc3Q7IikgaXMgImxhc3QgZmlyc3Qi
CitQQVNTIHRlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IGZpcnN0IGFsbG93LWVuZDsiKSBpcyAi
Zmlyc3QgYWxsb3ctZW5kIgorUEFTUyB0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBmaXJzdCBm
b3JjZS1lbmQ7IikgaXMgImZpcnN0IGZvcmNlLWVuZCIKK1BBU1MgdGVzdCgiaGFuZ2luZy1wdW5j
dHVhdGlvbjogZmlyc3QgYWxsb3ctZW5kIGxhc3Q7IikgaXMgImZpcnN0IGFsbG93LWVuZCBsYXN0
IgorUEFTUyB0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBsYXN0IGFsbG93LWVuZDsiKSBpcyAi
bGFzdCBhbGxvdy1lbmQiCitQQVNTIHRlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IGZpcnN0IGZp
cnN0OyIpIGlzICIiCitQQVNTIHRlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IG5vbnNlbnNlOyIp
IGlzICIiCitQQVNTIHRlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IGFsbG93LWVuZCBmb3JjZS1l
bmQ7IikgaXMgIiIKK1BBU1MgdGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogZm9yY2UtZW5kIGFs
bG93LWVuZDsiKSBpcyAiIgorUEFTUyB0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBsYXN0IGxh
c3Q7IikgaXMgIiIKK1BBU1MgdGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogMjBweDsiKSBpcyAi
IgorUEFTUyB0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBmaXJzdCBhbGxvdy1lbmQgZm9yY2Ut
ZW5kIGxhc3Q7IikgaXMgIiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWhhbmdpbmct
cHVuY3R1YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJz
aW5nLWhhbmdpbmctcHVuY3R1YXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3BhcnNpbmctaGFuZ2luZy1wdW5jdHVhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9wYXJzaW5nLWhhbmdpbmctcHVuY3R1YXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVzb3VyY2VzL3BhcnNpbmct
aGFuZ2luZy1wdW5jdHVhdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9yZXNvdXJjZXMvcGFyc2luZy1oYW5naW5nLXB1bmN0dWF0aW9uLmpzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVzb3VyY2VzL3BhcnNpbmctaGFuZ2luZy1wdW5jdHVh
dGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyBjaGVja3MgdGhhdCBhbGwgb2YgdGhlIGlucHV0IHZhbHVlcyBmb3IgaGFuZ2luZy1w
dW5jdHVhdGlvbiBwYXJzZSBjb3JyZWN0bHkuIik7CisKK2Z1bmN0aW9uIHRlc3QodmFsdWUpCit7
CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5z
ZXRBdHRyaWJ1dGUoInN0eWxlIiwgdmFsdWUpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZGl2KTsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0gZGl2LnN0eWxlLmdldFByb3BlcnR5VmFs
dWUoImhhbmdpbmctcHVuY3R1YXRpb24iKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KGRpdik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc2hvdWxkQmUoJ3Rlc3QoImhhbmdpbmct
cHVuY3R1YXRpb246IG5vbmU7IiknLCAnIm5vbmUiJyk7CitzaG91bGRCZSgndGVzdCgiaGFuZ2lu
Zy1wdW5jdHVhdGlvbjogZmlyc3Q7IiknLCAnImZpcnN0IicpOworc2hvdWxkQmUoJ3Rlc3QoImhh
bmdpbmctcHVuY3R1YXRpb246IGxhc3Q7IiknLCAnImxhc3QiJyk7CitzaG91bGRCZSgndGVzdCgi
aGFuZ2luZy1wdW5jdHVhdGlvbjogYWxsb3ctZW5kOyIpJywgJyJhbGxvdy1lbmQiJyk7CitzaG91
bGRCZSgndGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogZm9yY2UtZW5kOyIpJywgJyJmb3JjZS1l
bmQiJyk7CitzaG91bGRCZSgndGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogZmlyc3QgbGFzdDsi
KScsICciZmlyc3QgbGFzdCInKTsKK3Nob3VsZEJlKCd0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9u
OiBsYXN0IGZpcnN0OyIpJywgJyJsYXN0IGZpcnN0IicpOworc2hvdWxkQmUoJ3Rlc3QoImhhbmdp
bmctcHVuY3R1YXRpb246IGZpcnN0IGFsbG93LWVuZDsiKScsICciZmlyc3QgYWxsb3ctZW5kIicp
Oworc2hvdWxkQmUoJ3Rlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IGZpcnN0IGZvcmNlLWVuZDsi
KScsICciZmlyc3QgZm9yY2UtZW5kIicpOworc2hvdWxkQmUoJ3Rlc3QoImhhbmdpbmctcHVuY3R1
YXRpb246IGZpcnN0IGFsbG93LWVuZCBsYXN0OyIpJywgJyJmaXJzdCBhbGxvdy1lbmQgbGFzdCIn
KTsKK3Nob3VsZEJlKCd0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBsYXN0IGFsbG93LWVuZDsi
KScsICcibGFzdCBhbGxvdy1lbmQiJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdCgi
aGFuZ2luZy1wdW5jdHVhdGlvbjogZmlyc3QgZmlyc3Q7IiknLCAnJyk7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ3Rlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IG5vbnNlbnNlOyIpJywgJycpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBhbGxvdy1l
bmQgZm9yY2UtZW5kOyIpJywgJycpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0KCJoYW5n
aW5nLXB1bmN0dWF0aW9uOiBmb3JjZS1lbmQgYWxsb3ctZW5kOyIpJywgJycpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCd0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBsYXN0IGxhc3Q7IiknLCAn
Jyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IDIw
cHg7IiknLCAnJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3QoImhhbmdpbmctcHVuY3R1
YXRpb246IGZpcnN0IGFsbG93LWVuZCBmb3JjZS1lbmQgbGFzdDsiKScsICcnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270595</attachid>
            <date>2016-02-03 12:14:19 -0800</date>
            <delta_ts>2017-03-19 15:41:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20252</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjA3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE2LTAyLTAzICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBoYW5naW5nLXB1bmN0
dWF0aW9uIHByb3BlcnR5IHBhcnNpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODEwOS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBwYXJzaW5nIHRlc3QgaW4gZmFzdC9jc3MuCisKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlbmRlckVtcGhhc2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6aGFuZ2luZ1B1bmN0dWF0aW9uVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpm
aWxsUmVwZWF0VG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlVGV4dEluZGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlSGFuZ2luZ1B1bmN0dWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cGFyc2VMaW5lQm94Q29udGFpbik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAg
ICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEhhbmdpbmdQdW5jdHVhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGluZUJyZWFrKToKKyAg
ICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0lu
c2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRI
YW5naW5nUHVuY3R1YXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlv
dXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2ViQ29y
ZTo6b3BlcmF0b3J8ICk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcnw9ICk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorCiAy
MDE2LTAyLTAzICBKZXNzaWUgQmVybGluICA8amJlcmxpbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxOTYwMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY5NSw2ICsxNjk1LDIzIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhhc2lzUG9z
aXQKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCitzdGF0aWMgUmVmPENT
U1ZhbHVlPiBoYW5naW5nUHVuY3R1YXRpb25Ub0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBo
YW5naW5nUHVuY3R1YXRpb24pCit7CisgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGlmIChoYW5naW5nUHVuY3R1YXRp
b24gJiBGaXJzdEhhbmdpbmdQdW5jdHVhdGlvbikKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVGaXJzdCkpOworICAgIGlmICho
YW5naW5nUHVuY3R1YXRpb24gJiBBbGxvd0VuZEhhbmdpbmdQdW5jdHVhdGlvbikKKyAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
bGxvd0VuZCkpOworICAgIGlmIChoYW5naW5nUHVuY3R1YXRpb24gJiBGb3JjZUVuZEhhbmdpbmdQ
dW5jdHVhdGlvbikKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVGb3JjZUVuZCkpOworICAgIGlmIChoYW5naW5nUHVuY3R1YXRp
b24gJiBMYXN0SGFuZ2luZ1B1bmN0dWF0aW9uKQorICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxhc3QpKTsKKyAgICBpZiAoIWxp
c3QtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOworICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25OdWxsKCk7
Cit9CisgICAgCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmaWxsUmVwZWF0VG9DU1NWYWx1ZShFRmls
bFJlcGVhdCB4UmVwZWF0LCBFRmlsbFJlcGVhdCB5UmVwZWF0KQogewogICAgIC8vIEZvciBiYWNr
d2FyZHMgY29tcGF0aWJpbGl0eSwgaWYgYm90aCB2YWx1ZXMgYXJlIGVxdWFsLCBqdXN0IHJldHVy
biBvbmUgb2YgdGhlbS4gQW5kCkBAIC0zMDE4LDYgKzMwMzUsOCBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHN0eWxlLT5icmVha0JlZm9yZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJyZWFrSW5zaWRlOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzdHlsZS0+YnJlYWtJbnNpZGUoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlIYW5n
aW5nUHVuY3R1YXRpb246CisgICAgICAgICAgICByZXR1cm4gaGFuZ2luZ1B1bmN0dWF0aW9uVG9D
U1NWYWx1ZShzdHlsZS0+aGFuZ2luZ1B1bmN0dWF0aW9uKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5UG9zaXRpb246CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLT5wb3NpdGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE5NjAyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDg3LDYgKzMw
ODcsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlECiAgICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBD
U1NQcm9wZXJ0eUhhbmdpbmdQdW5jdHVhdGlvbjoKKyAgICAgICAgcmV0dXJuIHBhcnNlSGFuZ2lu
Z1B1bmN0dWF0aW9uKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVC
b3hDb250YWluOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTA1MTEsNiArMTA1MTMsNTAgQEAgUmVmUHRyPENT
U1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVGV4dEluZAogICAgIHJldHVybiBsaXN0LnJlbGVhc2Uo
KTsKIH0KIAorYm9vbCBDU1NQYXJzZXI6OnBhcnNlSGFuZ2luZ1B1bmN0dWF0aW9uKGJvb2wgaW1w
b3J0YW50KQoreworICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJy
ZW50KCk7CisgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pZCA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlIYW5naW5nUHVuY3R1YXRpb24sIENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSksIGlt
cG9ydGFudCk7CisgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGJvb2wgaXNWYWxpZCA9IHRydWU7
CisgICAgc3RkOjpiaXRzZXQ8bnVtQ1NTVmFsdWVLZXl3b3Jkcz4gc2VlblZhbHVlczsKKyAgICB3
aGlsZSAoaXNWYWxpZCAmJiB2YWx1ZSkgeworICAgICAgICBpZiAoc2VlblZhbHVlc1t2YWx1ZS0+
aWRdCisgICAgICAgICAgICB8fCAodmFsdWUtPmlkID09IENTU1ZhbHVlQWxsb3dFbmQgJiYgc2Vl
blZhbHVlc1tDU1NWYWx1ZUZvcmNlRW5kXSkKKyAgICAgICAgICAgIHx8ICh2YWx1ZS0+aWQgPT0g
Q1NTVmFsdWVGb3JjZUVuZCAmJiBzZWVuVmFsdWVzW0NTU1ZhbHVlQWxsb3dFbmRdKSkgeworICAg
ICAgICAgICAgaXNWYWxpZCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgc3dpdGNoICh2YWx1ZS0+aWQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUFsbG93
RW5kOgorICAgICAgICBjYXNlIENTU1ZhbHVlRmlyc3Q6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVG
b3JjZUVuZDoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxhc3Q6CisgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFs
dWUtPmlkKSk7CisgICAgICAgICAgICBzZWVuVmFsdWVzLnNldCh2YWx1ZS0+aWQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpc1ZhbGlkID0gZmFs
c2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNWYWxpZCkK
KyAgICAgICAgICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICB9CisgICAgCisg
ICAgLy8gVmFsdWVzIGFyZSBlaXRoZXIgdmFsaWQgb3IgaW4gc2hvcnRoYW5kIHNjb3BlLgorICAg
IGlmIChsaXN0LT5sZW5ndGgoKSAmJiBpc1ZhbGlkKSB7CisgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5SGFuZ2luZ1B1bmN0dWF0aW9uLCBsaXN0LnJlbGVhc2UoKSwgaW1wb3J0YW50KTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30K
KwogYm9vbCBDU1NQYXJzZXI6OnBhcnNlTGluZUJveENvbnRhaW4oYm9vbCBpbXBvcnRhbnQpCiB7
CiAgICAgTGluZUJveENvbnRhaW4gbGluZUJveENvbnRhaW4gPSBMaW5lQm94Q29udGFpbk5vbmU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiAxOTYwMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNyw2ICszMzcsOCBA
QCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlVGV4dEluZGVudCgpOwogICAg
IAorICAgIGJvb2wgcGFyc2VIYW5naW5nUHVuY3R1YXRpb24oYm9vbCBpbXBvcnRhbnQpOworCiAg
ICAgYm9vbCBwYXJzZUxpbmVCb3hDb250YWluKGJvb2wgaW1wb3J0YW50KTsKICAgICBSZWZQdHI8
Q1NTQ2FsY1ZhbHVlPiBwYXJzZUNhbGN1bGF0aW9uKENTU1BhcnNlclZhbHVlJiwgQ2FsY3VsYXRp
b25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAxOTYwMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjI2LDYgKzE2MjYsMjkgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTUwogICAgIH0KIH0KIAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIEhhbmdpbmdQdW5jdHVhdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVmFsdWVJ
RCgpKTsKKyAgICAKKyAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgeworICAgIGNhc2UgQ1NT
VmFsdWVOb25lOgorICAgICAgICByZXR1cm4gTm9IYW5naW5nUHVuY3R1YXRpb247CisgICAgY2Fz
ZSBDU1NWYWx1ZUZpcnN0OgorICAgICAgICByZXR1cm4gRmlyc3RIYW5naW5nUHVuY3R1YXRpb247
CisgICAgY2FzZSBDU1NWYWx1ZUxhc3Q6CisgICAgICAgIHJldHVybiBMYXN0SGFuZ2luZ1B1bmN0
dWF0aW9uOworICAgIGNhc2UgQ1NTVmFsdWVBbGxvd0VuZDoKKyAgICAgICAgcmV0dXJuIEFsbG93
RW5kSGFuZ2luZ1B1bmN0dWF0aW9uOworICAgIGNhc2UgQ1NTVmFsdWVGb3JjZUVuZDoKKyAgICAg
ICAgcmV0dXJuIEZvcmNlRW5kSGFuZ2luZ1B1bmN0dWF0aW9uOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gTm9IYW5naW5nUHVuY3R1YXRpb247Cit9CisKIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQnJlYWsoKSBjb25zdAogewogICAgIEFTU0VSVChp
c1ZhbHVlSUQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgko
cmV2aXNpb24gMTk2MDIzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTIzNiw2ICsyMzYsNyBAQCBmb250LXZhcmlhbnQgW0luaGVy
aXRlZCwgTG9uZ2hhbmRzPWZvbnQtCiBmb250LXN0cmV0Y2ggW1NraXBCdWlsZGVyXQogZ2x5cGgt
b3JpZW50YXRpb24taG9yaXpvbnRhbCBbSW5oZXJpdGVkLCBTVkcsIENvbnZlcnRlcj1HbHlwaE9y
aWVudGF0aW9uXQogZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgW0luaGVyaXRlZCwgU1ZHLCBD
b252ZXJ0ZXI9R2x5cGhPcmllbnRhdGlvbk9yQXV0b10KK2hhbmdpbmctcHVuY3R1YXRpb24gW0lu
aGVyaXRlZCwgQ29udmVydGVyPUhhbmdpbmdQdW5jdHVhdGlvbl0KIGhlaWdodCBbSW5pdGlhbD1p
bml0aWFsU2l6ZSwgQ29udmVydGVyPUxlbmd0aFNpemluZ10KICNpZiBkZWZpbmVkKEVOQUJMRV9D
U1NfSU1BR0VfT1JJRU5UQVRJT04pICYmIEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04KIGlt
YWdlLW9yaWVudGF0aW9uIFtJbmhlcml0ZWRdCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbgkocmV2aXNpb24gMTk2MDIzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExOTEsMyArMTE5MSw5IEBAIGNv
bnRlbnRzCiAvLyB0b3VjaC1hY3Rpb24KIG1hbmlwdWxhdGlvbgogI2VuZGlmCisKKy8vIGhhbmdp
bmctcHVuY3R1YXRpb24KK2FsbG93LWVuZAorZmlyc3QKK2ZvcmNlLWVuZAorbGFzdApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkocmV2aXNpb24gMTk2
MDIzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBCcmVha0Jl
dHdlZW4gY29udmVydFJlZ2lvbkJyZWFrQmV0d2VlbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
KTsKICAgICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVydFJlZ2lvbkJyZWFrSW5zaWRlKFN0eWxl
UmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogI2VuZGlmCisgICAgCisgICAgc3RhdGljIEhhbmdpbmdQ
dW5jdHVhdGlvbiBjb252ZXJ0SGFuZ2luZ1B1bmN0dWF0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NW
YWx1ZSYpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXJDdXN0b207
CkBAIC0xMjc5LDYgKzEyODEsMTYgQEAgaW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRlckNv
bnZlcnRlcgogfQogI2VuZGlmCiAKK2lubGluZSBIYW5naW5nUHVuY3R1YXRpb24gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0SGFuZ2luZ1B1bmN0dWF0aW9uKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYgdmFsdWUpCit7CisgICAgSGFuZ2luZ1B1bmN0dWF0aW9uIHJlc3VsdCA9IFJlbmRl
clN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCk7CisgICAgaWYgKGlzPENTU1ZhbHVl
TGlzdD4odmFsdWUpKSB7CisgICAgICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNh
c3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCisgICAgICAgICAgICByZXN1bHQgfD0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7CisgICAgfQorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFN0eWxl
QnVpbGRlckNvbnZlcnRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDE5NjAyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMiw2
ICs2MTIsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAjZW5k
aWYKICAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVTbmFwICE9IG90aGVy
LnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVTbmFwCiAgICAgICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+bV9saW5lQWxpZ24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUFs
aWduCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9oYW5naW5nUHVuY3R1YXRp
b24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faGFuZ2luZ1B1bmN0dWF0aW9uCiAjaWYg
RU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICAgICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAx
OTYwMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAko
d29ya2luZyBjb3B5KQpAQCAtODc5LDYgKzg3OSw4IEBAIHB1YmxpYzoKICAgICBCcmVha0luc2lk
ZSBicmVha0luc2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrSW5zaWRlPihy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0luc2lkZSk7IH0KICAgICBCcmVha0JldHdlZW4g
YnJlYWtCZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0JldHdlZW4+KHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2JyZWFrQmVmb3JlKTsgfQogICAgIEJyZWFrQmV0d2VlbiBi
cmVha0FmdGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3ZWVuPihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0FmdGVyKTsgfQorICAgIAorICAgIEhhbmdpbmdQdW5j
dHVhdGlvbiBoYW5naW5nUHVuY3R1YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxI
YW5naW5nUHVuY3R1YXRpb24+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2hhbmdpbmdQdW5jdHVhdGlv
bik7IH0KIAogICAgIGZsb2F0IG91dGxpbmVPZmZzZXQoKSBjb25zdAogICAgIHsKQEAgLTE2MjIs
NiArMTYyNCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2Vl
biBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYnJlYWtC
ZWZvcmUsIGJyZWFrQmVoYXZpb3IpOyB9CiAgICAgdm9pZCBzZXRCcmVha0FmdGVyKEJyZWFrQmV0
d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYnJl
YWtBZnRlciwgYnJlYWtCZWhhdmlvcik7IH0KICAgICB2b2lkIHNldEJyZWFrSW5zaWRlKEJyZWFr
SW5zaWRlIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9i
cmVha0luc2lkZSwgYnJlYWtCZWhhdmlvcik7IH0KKyAgICAKKyAgICB2b2lkIHNldEhhbmdpbmdQ
dW5jdHVhdGlvbihIYW5naW5nUHVuY3R1YXRpb24gcHVuY3R1YXRpb24pIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgbV9oYW5naW5nUHVuY3R1YXRpb24sIHB1bmN0dWF0aW9uKTsgfQogCiAg
ICAgLy8gRW5kIENTUzMgU2V0dGVycwogCkBAIC0xODgxLDYgKzE4ODUsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEVGbG9hdCBpbml0aWFsRmxvYXRpbmcoKSB7IHJldHVybiBOb0Zsb2F0OyB9CiAg
ICAgc3RhdGljIEJyZWFrQmV0d2VlbiBpbml0aWFsQnJlYWtCZXR3ZWVuKCkgeyByZXR1cm4gQXV0
b0JyZWFrQmV0d2VlbjsgfQogICAgIHN0YXRpYyBCcmVha0luc2lkZSBpbml0aWFsQnJlYWtJbnNp
ZGUoKSB7IHJldHVybiBBdXRvQnJlYWtJbnNpZGU7IH0KKyAgICBzdGF0aWMgSGFuZ2luZ1B1bmN0
dWF0aW9uIGluaXRpYWxIYW5naW5nUHVuY3R1YXRpb24oKSB7IHJldHVybiBOb0hhbmdpbmdQdW5j
dHVhdGlvbjsgfQogICAgIHN0YXRpYyBFVGFibGVMYXlvdXQgaW5pdGlhbFRhYmxlTGF5b3V0KCkg
eyByZXR1cm4gVEFVVE87IH0KICAgICBzdGF0aWMgRUJvcmRlckNvbGxhcHNlIGluaXRpYWxCb3Jk
ZXJDb2xsYXBzZSgpIHsgcmV0dXJuIEJTRVBBUkFURTsgfQogICAgIHN0YXRpYyBFQm9yZGVyU3R5
bGUgaW5pdGlhbEJvcmRlclN0eWxlKCkgeyByZXR1cm4gQk5PTkU7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5o
CShyZXZpc2lvbiAxOTYwMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDcgKzQ4MywxNyBAQCBi
b29sIGFsd2F5c1BhZ2VCcmVhayhCcmVha0JldHdlZW4pOwogZW51bSBCcmVha0luc2lkZSB7CiAg
ICAgQXV0b0JyZWFrSW5zaWRlLCBBdm9pZEJyZWFrSW5zaWRlLCBBdm9pZENvbHVtbkJyZWFrSW5z
aWRlLCBBdm9pZFBhZ2VCcmVha0luc2lkZSwgQXZvaWRSZWdpb25CcmVha0luc2lkZQogfTsKLSAg
ICAKKworZW51bSBIYW5naW5nUHVuY3R1YXRpb24geworICAgIE5vSGFuZ2luZ1B1bmN0dWF0aW9u
ID0gMCwKKyAgICBGaXJzdEhhbmdpbmdQdW5jdHVhdGlvbiA9IDEgPDwgMCwKKyAgICBMYXN0SGFu
Z2luZ1B1bmN0dWF0aW9uID0gMSA8PCAxLAorICAgIEFsbG93RW5kSGFuZ2luZ1B1bmN0dWF0aW9u
ID0gMSA8PCAyLAorICAgIEZvcmNlRW5kSGFuZ2luZ1B1bmN0dWF0aW9uID0gMSA8PCAzCit9Owor
aW5saW5lIEhhbmdpbmdQdW5jdHVhdGlvbiBvcGVyYXRvcnwgKEhhbmdpbmdQdW5jdHVhdGlvbiBh
LCBIYW5naW5nUHVuY3R1YXRpb24gYikgeyByZXR1cm4gSGFuZ2luZ1B1bmN0dWF0aW9uKGludChh
KSB8IGludChiKSk7IH0KK2lubGluZSBIYW5naW5nUHVuY3R1YXRpb24mIG9wZXJhdG9yfD0gKEhh
bmdpbmdQdW5jdHVhdGlvbiYgYSwgSGFuZ2luZ1B1bmN0dWF0aW9uIGIpIHsgcmV0dXJuIGEgPSBh
IHwgYjsgfQorCiBlbnVtIEVFbXB0eUNlbGwgewogICAgIFNIT1csIEhJREUKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuY3BwCShyZXZpc2lvbiAxOTYwMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNSw2ICsxMjUsNyBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0
CiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICwgdHJhaWxpbmdXb3JkKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYWlsaW5nV29yZCgpKSkKICNl
bmRpZgorICAgICwgbV9oYW5naW5nUHVuY3R1YXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxIYW5n
aW5nUHVuY3R1YXRpb24oKSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUoLTEpCiAgICAg
LCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoLTEpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0TGluZXMo
LTEpCkBAIC0yMDcsNiArMjA4LDcgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0
eWxlUmFyZQogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09SRCkKICAgICAsIHRyYWlsaW5nV29y
ZChvLnRyYWlsaW5nV29yZCkKICNlbmRpZgorICAgICwgbV9oYW5naW5nUHVuY3R1YXRpb24oby5t
X2hhbmdpbmdQdW5jdHVhdGlvbikKICAgICAsIGh5cGhlbmF0aW9uU3RyaW5nKG8uaHlwaGVuYXRp
b25TdHJpbmcpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0QmVmb3JlKG8uaHlwaGVuYXRpb25MaW1p
dEJlZm9yZSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRBZnRlcihvLmh5cGhlbmF0aW9uTGltaXRB
ZnRlcikKQEAgLTMxMyw2ICszMTUsNyBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9w
ZXJhdG9yPT0oCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICAgICAmJiB0cmFp
bGluZ1dvcmQgPT0gby50cmFpbGluZ1dvcmQKICNlbmRpZgorICAgICAgICAmJiBtX2hhbmdpbmdQ
dW5jdHVhdGlvbiA9PSBvLm1faGFuZ2luZ1B1bmN0dWF0aW9uCiAgICAgICAgICYmIG1fY3VzdG9t
UHJvcGVydGllcyA9PSBvLm1fY3VzdG9tUHJvcGVydGllcwogICAgICAgICAmJiBhcmVQb2ludGlu
Z1RvRXF1YWxEYXRhKGxpc3RTdHlsZUltYWdlLCBvLmxpc3RTdHlsZUltYWdlKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuaAkocmV2aXNpb24gMTk2MDIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3
LDYgKzEzNyw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB0cmFpbGluZ1dvcmQgOiAxOwogI2Vu
ZGlmCiAKKyAgICB1bnNpZ25lZCBtX2hhbmdpbmdQdW5jdHVhdGlvbiA6IDQ7CisKICAgICBBdG9t
aWNTdHJpbmcgaHlwaGVuYXRpb25TdHJpbmc7CiAgICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdEJl
Zm9yZTsKICAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXI7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxOTYwNzIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxNi0wMi0wMyAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgaGFuZ2luZy1wdW5jdHVhdGlvbiBwcm9wZXJ0eSBwYXJzaW5nLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMDkuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nz
cy9wYXJzaW5nLWhhbmdpbmctcHVuY3R1YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy9wYXJzaW5nLWhhbmdpbmctcHVuY3R1YXRpb24uaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jc3MvcmVzb3VyY2VzL3BhcnNpbmctaGFuZ2luZy1wdW5jdHVhdGlvbi5q
czogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKwogMjAxNi0wMi0wMyAgUnlhbiBIYWRkYWQgIDxy
eWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lwIGZhc3QvZm9ybXMvaW5wdXQtdXNl
ci1pbnB1dC1zYW5pdGl6YXRpb24uaHRtbCBvbiBpb3Mtc2ltdWxhdG9yCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLWhhbmdpbmctcHVuY3R1YXRpb24tZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctaGFuZ2luZy1wdW5jdHVh
dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9w
YXJzaW5nLWhhbmdpbmctcHVuY3R1YXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjcgQEAKK1RoaXMgdGVzdHMgY2hlY2tzIHRoYXQgYWxsIG9mIHRoZSBpbnB1dCB2
YWx1ZXMgZm9yIGhhbmdpbmctcHVuY3R1YXRpb24gcGFyc2UgY29ycmVjdGx5LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBu
b25lOyIpIGlzICJub25lIgorUEFTUyB0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBmaXJzdDsi
KSBpcyAiZmlyc3QiCitQQVNTIHRlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IGxhc3Q7IikgaXMg
Imxhc3QiCitQQVNTIHRlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IGFsbG93LWVuZDsiKSBpcyAi
YWxsb3ctZW5kIgorUEFTUyB0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBmb3JjZS1lbmQ7Iikg
aXMgImZvcmNlLWVuZCIKK1BBU1MgdGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogZmlyc3QgbGFz
dDsiKSBpcyAiZmlyc3QgbGFzdCIKK1BBU1MgdGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogbGFz
dCBmaXJzdDsiKSBpcyAibGFzdCBmaXJzdCIKK1BBU1MgdGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlv
bjogZmlyc3QgYWxsb3ctZW5kOyIpIGlzICJmaXJzdCBhbGxvdy1lbmQiCitQQVNTIHRlc3QoImhh
bmdpbmctcHVuY3R1YXRpb246IGZpcnN0IGZvcmNlLWVuZDsiKSBpcyAiZmlyc3QgZm9yY2UtZW5k
IgorUEFTUyB0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBmaXJzdCBhbGxvdy1lbmQgbGFzdDsi
KSBpcyAiZmlyc3QgYWxsb3ctZW5kIGxhc3QiCitQQVNTIHRlc3QoImhhbmdpbmctcHVuY3R1YXRp
b246IGxhc3QgYWxsb3ctZW5kOyIpIGlzICJsYXN0IGFsbG93LWVuZCIKK1BBU1MgdGVzdCgiaGFu
Z2luZy1wdW5jdHVhdGlvbjogZmlyc3QgZmlyc3Q7IikgaXMgIiIKK1BBU1MgdGVzdCgiaGFuZ2lu
Zy1wdW5jdHVhdGlvbjogbm9uc2Vuc2U7IikgaXMgIiIKK1BBU1MgdGVzdCgiaGFuZ2luZy1wdW5j
dHVhdGlvbjogYWxsb3ctZW5kIGZvcmNlLWVuZDsiKSBpcyAiIgorUEFTUyB0ZXN0KCJoYW5naW5n
LXB1bmN0dWF0aW9uOiBmb3JjZS1lbmQgYWxsb3ctZW5kOyIpIGlzICIiCitQQVNTIHRlc3QoImhh
bmdpbmctcHVuY3R1YXRpb246IGxhc3QgbGFzdDsiKSBpcyAiIgorUEFTUyB0ZXN0KCJoYW5naW5n
LXB1bmN0dWF0aW9uOiAyMHB4OyIpIGlzICIiCitQQVNTIHRlc3QoImhhbmdpbmctcHVuY3R1YXRp
b246IGZpcnN0IGFsbG93LWVuZCBmb3JjZS1lbmQgbGFzdDsiKSBpcyAiIgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL3BhcnNpbmctaGFuZ2luZy1wdW5jdHVhdGlvbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctaGFuZ2luZy1wdW5jdHVhdGlvbi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1oYW5naW5nLXB1bmN0
dWF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BhcnNpbmctaGFuZ2luZy1wdW5jdHVh
dGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9yZXNvdXJjZXMvcGFyc2luZy1oYW5naW5nLXB1bmN0dWF0aW9uLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc291cmNlcy9wYXJzaW5nLWhhbmdpbmctcHVu
Y3R1YXRpb24uanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNvdXJj
ZXMvcGFyc2luZy1oYW5naW5nLXB1bmN0dWF0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzIgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGNoZWNrcyB0aGF0IGFsbCBvZiB0aGUg
aW5wdXQgdmFsdWVzIGZvciBoYW5naW5nLXB1bmN0dWF0aW9uIHBhcnNlIGNvcnJlY3RseS4iKTsK
KworZnVuY3Rpb24gdGVzdCh2YWx1ZSkKK3sKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgic3R5bGUiLCB2YWx1ZSk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworICAgIAorICAgIHZhciByZXN1bHQg
PSBkaXYuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiaGFuZ2luZy1wdW5jdHVhdGlvbiIpOworICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitzaG91bGRCZSgndGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogbm9uZTsiKScsICcibm9uZSIn
KTsKK3Nob3VsZEJlKCd0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBmaXJzdDsiKScsICciZmly
c3QiJyk7CitzaG91bGRCZSgndGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogbGFzdDsiKScsICci
bGFzdCInKTsKK3Nob3VsZEJlKCd0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBhbGxvdy1lbmQ7
IiknLCAnImFsbG93LWVuZCInKTsKK3Nob3VsZEJlKCd0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9u
OiBmb3JjZS1lbmQ7IiknLCAnImZvcmNlLWVuZCInKTsKK3Nob3VsZEJlKCd0ZXN0KCJoYW5naW5n
LXB1bmN0dWF0aW9uOiBmaXJzdCBsYXN0OyIpJywgJyJmaXJzdCBsYXN0IicpOworc2hvdWxkQmUo
J3Rlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IGxhc3QgZmlyc3Q7IiknLCAnImxhc3QgZmlyc3Qi
Jyk7CitzaG91bGRCZSgndGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogZmlyc3QgYWxsb3ctZW5k
OyIpJywgJyJmaXJzdCBhbGxvdy1lbmQiJyk7CitzaG91bGRCZSgndGVzdCgiaGFuZ2luZy1wdW5j
dHVhdGlvbjogZmlyc3QgZm9yY2UtZW5kOyIpJywgJyJmaXJzdCBmb3JjZS1lbmQiJyk7CitzaG91
bGRCZSgndGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogZmlyc3QgYWxsb3ctZW5kIGxhc3Q7Iikn
LCAnImZpcnN0IGFsbG93LWVuZCBsYXN0IicpOworc2hvdWxkQmUoJ3Rlc3QoImhhbmdpbmctcHVu
Y3R1YXRpb246IGxhc3QgYWxsb3ctZW5kOyIpJywgJyJsYXN0IGFsbG93LWVuZCInKTsKKworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0KCJoYW5naW5nLXB1bmN0dWF0aW9uOiBmaXJzdCBmaXJz
dDsiKScsICcnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndGVzdCgiaGFuZ2luZy1wdW5jdHVh
dGlvbjogbm9uc2Vuc2U7IiknLCAnJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3QoImhh
bmdpbmctcHVuY3R1YXRpb246IGFsbG93LWVuZCBmb3JjZS1lbmQ7IiknLCAnJyk7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3Rlc3QoImhhbmdpbmctcHVuY3R1YXRpb246IGZvcmNlLWVuZCBhbGxv
dy1lbmQ7IiknLCAnJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3QoImhhbmdpbmctcHVu
Y3R1YXRpb246IGxhc3QgbGFzdDsiKScsICcnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndGVz
dCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogMjBweDsiKScsICcnKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygndGVzdCgiaGFuZ2luZy1wdW5jdHVhdGlvbjogZmlyc3QgYWxsb3ctZW5kIGZvcmNlLWVu
ZCBsYXN0OyIpJywgJycpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>