<?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>159624</bug_id>
          
          <creation_ts>2016-07-11 07:19:12 -0700</creation_ts>
          <short_desc>Move parsing of mfrac attributes into a MathMLFractionElementClass</short_desc>
          <delta_ts>2016-07-18 04:43:05 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>156792</dependson>
          <blocked>156536</blocked>
    
    <blocked>159876</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>alex</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rego</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209638</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-11 07:19:12 -0700</bug_when>
    <thetext>This is bug 156536 for the following attributes:

- linethickness (MathMLLength, see bug 156792)
- numalign
- denomalign</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211401</commentid>
    <comment_count>1</comment_count>
      <attachid>283758</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-15 06:31:04 -0700</bug_when>
    <thetext>Created attachment 283758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211426</commentid>
    <comment_count>2</comment_count>
      <attachid>283758</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-15 09:22:44 -0700</bug_when>
    <thetext>Comment on attachment 283758
Patch

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

It&apos;s great to see the style modifications being removed from the rendering code! However, it looks like some debase lining is needed. R- to correct the test cases, but otherwise this looks great!

&gt; Source/WebCore/ChangeLog:13
&gt; +        nearest valid value, which is zero.

There probably isn&apos;t room here to explain properly, but what is the functional difference between an ignored line thickness, and a line thickness of zero? Is there some padding or other rendering effect that happens with zero-thickness that doesn&apos;t happen with &apos;ignored&apos; render elements?

&gt; Source/WebCore/ChangeLog:15
&gt; +        No new tests, already covered by existing tests.

It seems like some rebaselining is needed!

&gt; Source/WebCore/mathml/MathMLFractionElement.cpp:53
&gt; +    if (m_lineThickness.dirty) {

I think this might be easier to follow if you did an early return here:

If (!m_lineThickness.dirty)
    Return m_lineThickness;

I would also do this early return above the comments.

&gt; Source/WebCore/mathml/MathMLFractionElement.cpp:73
&gt; +    if (alignment.dirty) {

Again, I think an early return before doing the work of handling left/right, etc., is easier to follow.

&gt; Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp:-55
&gt; -

Good!

&gt; Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp:-150
&gt; -    updateFromElement();

Good!

&gt; Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp:-197
&gt; -

Good!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211442</commentid>
    <comment_count>3</comment_count>
      <attachid>283758</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-15 09:47:07 -0700</bug_when>
    <thetext>Comment on attachment 283758
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        nearest valid value, which is zero.
&gt; 
&gt; There probably isn&apos;t room here to explain properly, but what is the functional difference between an ignored line thickness, and a line thickness of zero? Is there some padding or other rendering effect that happens with zero-thickness that doesn&apos;t happen with &apos;ignored&apos; render elements?

So actually the *attribute* is ignored which means that the default value (generally nonzero) is used. I&apos;ll reword to clarify this. That&apos;s not really important anyway...

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        No new tests, already covered by existing tests.
&gt; 
&gt; It seems like some rebaselining is needed!

Actually, the failures were due to having forgotten the change to the XCode project file (that&apos;s why I cancelled the review request). Normally no rebaseline is needed as the only change is how negative values are treated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211449</commentid>
    <comment_count>4</comment_count>
      <attachid>283768</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-15 09:51:02 -0700</bug_when>
    <thetext>Created attachment 283768
Patch

Let&apos;s see the results with the changes to XCode project file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211453</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 09:55:39 -0700</bug_when>
    <thetext>Attachment 283768 did not pass style-queue:


ERROR: Source/WebCore/mathml/MathMLFractionElement.cpp:74:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 12 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>1211463</commentid>
    <comment_count>6</comment_count>
      <attachid>283768</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-15 10:26:16 -0700</bug_when>
    <thetext>Comment on attachment 283768
Patch

Note about the style error: I have to fix the extra whitespace I added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211482</commentid>
    <comment_count>7</comment_count>
      <attachid>283768</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-15 11:13:14 -0700</bug_when>
    <thetext>Comment on attachment 283768
Patch

Please fix the style error. Otherwise, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211490</commentid>
    <comment_count>8</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-15 11:25:43 -0700</bug_when>
    <thetext>Committed r203285: &lt;http://trac.webkit.org/changeset/203285&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283758</attachid>
            <date>2016-07-15 06:31:04 -0700</date>
            <delta_ts>2016-07-15 09:51:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Bug-159624-Move-parsing-of-mfrac-attributes-into-a-M.patch</filename>
            <type>text/plain</type>
            <size>25414</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSBhYmY1ZjQ4NjhiMGJiOTdjNjA3ZGJmYjQ0MjgzYWZiY2Q3OWFhMTk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogRnJpLCAxNSBKdWwgMjAxNiAxNDo1OToxNCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAx
NTk2MjQgLSBNb3ZlIHBhcnNpbmcgb2YgbWZyYWMgYXR0cmlidXRlcyBpbnRvIGEKIE1hdGhNTEZy
YWN0aW9uRWxlbWVudENsYXNzCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDEzICsrKwogLi4uL21mcmFjLWxpbmV0aGlja25lc3MyLWV4
cGVjdGVkLmh0bWwgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9tYXRobWwvcHJlc2VudGF0aW9u
L21mcmFjLWxpbmV0aGlja25lc3MyLmh0bWwgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0OCArKysrKysrKysKIFNvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxBbGxJbk9uZS5jcHAgICAgICAgICAgIHwgICAxICsKIFNv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwICAgIHwgMTE2ICsr
KysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9u
RWxlbWVudC5oICAgICAgfCAgNjMgKysrKysrKysrKysKIC4uLi9tYXRobWwvTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudC5jcHAgICAgICAgIHwgICAzIC0KIFNvdXJjZS9XZWJDb3JlL21hdGht
bC9tYXRodGFncy5pbiAgICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi4vcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgICAgICB8ICA2MSArKystLS0tLS0tLQogLi4u
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCAgICAgICAgfCAgMTggKy0t
LQogMTIgZmlsZXMgY2hhbmdlZCwgMjYyIGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVs
ZW1lbnQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TEZyYWN0aW9uRWxlbWVudC5oCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQyYTExMDguLjU0NTE1OTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxOCBAQAogMjAxNi0wNy0xNSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+
CiAKKyAgICAgICAgTW92ZSBwYXJzaW5nIG9mIG1mcmFjIGF0dHJpYnV0ZXMgaW50byBhIE1hdGhN
TEZyYWN0aW9uRWxlbWVudENsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTk2MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZSB1cGRhdGUgdGhlIGV4cGVjdGF0aW9uIGZvciBuZWdhdGl2ZSBsaW5l
dGhpY2tuZXNzLiBBcyBpbmRpY2F0ZWQgaW4gdGhlIE1hdGhNTAorICAgICAgICByZWNvbW1lbmRh
dGlvbiwgaXQgc2hvdWxkIGJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgdmFsaWQgdmFsdWUs
IHdoaWNoIGlzIDAuCisKKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL21mcmFjLWxpbmV0
aGlja25lc3MyLmh0bWw6IFVwZGF0ZSB0aGUgY29tbWVudCB0byByZWZsZWN0IHRoZSBuZXcgYmVo
YXZpb3IuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9tZnJhYy1saW5ldGhpY2tuZXNz
Mi1leHBlY3RlZC5odG1sOiBVc2UgMHB4IGFzIHRoZSByZWZlcmVuY2UgZm9yIG5lZ2F0aXZlIHZh
bHVlcy4KKworMjAxNi0wNy0xNSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CisK
ICAgICAgICAgSW1wb3J0IG1vcmUgdGVzdHMgZnJvbSB0aGUgTWF0aE1MIGluIEhUTUw1IHRlc3Qg
c3VpdGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
OTcxNQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21mcmFj
LWxpbmV0aGlja25lc3MyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9tYXRobWwvcHJlc2Vu
dGF0aW9uL21mcmFjLWxpbmV0aGlja25lc3MyLWV4cGVjdGVkLmh0bWwKaW5kZXggMmY2NmQ2Zi4u
ZThmMjJkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tZnJh
Yy1saW5ldGhpY2tuZXNzMi1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL21hdGhtbC9w
cmVzZW50YXRpb24vbWZyYWMtbGluZXRoaWNrbmVzczItZXhwZWN0ZWQuaHRtbApAQCAtNiw3ICs2
LDcgQEAKICAgPGJvZHk+CiAKICAgPG1hdGg+Ci0gICAgPG1mcmFjPgorICAgIDxtZnJhYyBsaW5l
dGhpY2tuZXNzPSIwcHgiPgogICAgICAgPG1pPng8L21pPgogICAgICAgPG1pPnk8L21pPgogICAg
IDwvbWZyYWM+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21m
cmFjLWxpbmV0aGlja25lc3MyLmh0bWwgYi9MYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9u
L21mcmFjLWxpbmV0aGlja25lc3MyLmh0bWwKaW5kZXggMDVlYTk3Yy4uNDQ1OGViNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tZnJhYy1saW5ldGhpY2tuZXNz
Mi5odG1sCisrKyBiL0xheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbWZyYWMtbGluZXRo
aWNrbmVzczIuaHRtbApAQCAtNSw3ICs1LDcgQEAKICAgPC9oZWFkPgogICA8Ym9keT4KIAotICA8
IS0tIFRoZSBsaW5ldGhpY2tuZXNzIHNob3VsZCBiZSBpZ25vcmVkIC0tPgorICA8IS0tIE5lZ2F0
aXZlIHZhbHVlcyBhcmUgbm90IGFjY2VwdGVkLiBXZSB0cmVhdCB0aGVtIGFzIHplcm8uICAtLT4K
ICAgPG1hdGg+CiAgICAgPG1mcmFjIGxpbmV0aGlja25lc3M9Ii0xLjIzZW0iPgogICAgICAgPG1p
Png8L21pPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxMTI5ZGVlLi4zNDcyYzFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTk4NSw2ICsxOTg1LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIGxvYWRlci9pY29uL1BhZ2VVUkxSZWNvcmQuY3BwCiAKICAgICBtYXRobWwvTWF0aE1MRWxl
bWVudC5jcHAKKyAgICBtYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcAogICAgIG1hdGht
bC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxNYXRo
RWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGMxNWEwZjEuLjVjMWQxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1MyBAQAogMjAx
Ni0wNy0xNSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKKyAgICAgICAgTW92
ZSBwYXJzaW5nIG9mIG1mcmFjIGF0dHJpYnV0ZXMgaW50byBhIE1hdGhNTEZyYWN0aW9uRWxlbWVu
dCBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2UgbW92ZSB0aGUgcGFyc2luZyBvZiBtZnJhYyBhdHRyaWJ1dGVzIHRvIGEgTWF0aE1MRnJhY3Rp
b25FbGVtZW50IGNsYXNzLiBUaGlzIGFsbG93cyB0bworICAgICAgICBtaW5pbWl6ZSB0aGUgdXBk
YXRlcyBpbiBSZW5kZXJNYXRoTUxGcmFjdGlvbiBhbmQgdG8gcmVtb3ZlIHRoZSBhbGlnbm1lbnQg
bWVtYmVycy4gTWFueSBvZgorICAgICAgICB0aGUgbWVtYmVycyBpbiB1cGRhdGVMYXlvdXRQYXJh
bWV0ZXJzIGFyZSBhY3R1YWxseSBvbmx5IHVzZWQgaW4gbGF5b3V0QmxvY2sgYW5kIGNvdWxkIGJl
CisgICAgICAgIHJlbW92ZWQgaW4gYSBmb2xsb3ctdXAgcGF0Y2guIFdlIGFsc28gaW1wcm92ZSB0
aGUgcmVzb2x1dGlvbiBvZiBuZWdhdGl2ZSBsaW5ldGhpY2tuZXNzIHZhbHVlCisgICAgICAgIHNp
bmNlIHRoZSBNYXRoTUwgcmVjb21tZW5kYXRpb24gc2F5cyB0aGV5IHNob3VsZCBub3QgYmUgaWdu
b3JlZCBidXQgcm91bmRlZCB1cCB0byB0aGUKKyAgICAgICAgbmVhcmVzdCB2YWxpZCB2YWx1ZSwg
d2hpY2ggaXMgemVyby4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVhZHkgY292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTWF0aE1M
RnJhY3Rpb25FbGVtZW50LgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxBbGxJbk9uZS5jcHA6IERp
dHRvLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEZyYWN0aW9uRWxlbWVudDo6TWF0aE1MRnJhY3Rpb25F
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEZyYWN0aW9uRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEZyYWN0aW9uRWxlbWVudDo6bGluZVRoaWNrbmVz
cyk6IFJldHVybiB0aGUgY2FjaGVkIGxpbmV0aGlja25lc3MgbGVuZ3RoLAorICAgICAgICBwYXJz
aW5nIGl0IGFnYWluIGlmIGl0IGlzIGRpcnR5LiBUaGlzIGhhbmRsZXMgdGhlIHNwZWNpYWwgdmFs
dWVzICJ0aGluIiwgIm1lZGl1bSIgYW5kICJ0aGljayIKKyAgICAgICAgb3IgZmFsbGJhY2sgdG8g
dGhlIGdlbmVyYWwgcGFyc2VNYXRoTUxMZW5ndGggZm9yIE1hdGhNTCBsZW5ndGhzLgorICAgICAg
ICAoV2ViQ29yZTo6TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVu
dCk6IFJldHVybiB0aGUgY2FjaGVkIGFsaWdubWVudCB2YWx1ZSwKKyAgICAgICAgcGFyc2luZyBp
dCBhZ2FpbiBpZiBpdCBpcyBkaXJ0eS4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEZyYWN0aW9u
RWxlbWVudDo6bnVtZXJhdG9yQWxpZ25tZW50KTogUmV0dXJuIHRoZSBjYWNoZWQgYWxpZ25tZW50
LgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpkZW5vbWluYXRvckFs
aWdubWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRnJhY3Rpb25FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6IE1ha2UgYXR0cmlidXRlcyBkaXJ0eS4KKyAgICAgICAgKFdlYkNv
cmU6Ok1hdGhNTEZyYWN0aW9uRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKTogQ3JlYXRl
IGEgUmVuZGVyTWF0aE1MRnJhY3Rpb24uCisgICAgICAgICogbWF0aG1sL01hdGhNTEZyYWN0aW9u
RWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudC5jcHA6IFdlIG5vIGxvbmdlciBuZWVkIHRvIGhhbmRsZSBmcmFjdGlvbiBoZXJlLgor
ICAgICAgICAoV2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvbWF0aHRhZ3MuaW46IFVzZSBNYXRoTUxG
cmFjdGlvbkVsZW1lbnQgZm9yIG1mcmFjLgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRnJh
Y3Rpb246OnVwZGF0ZUxheW91dFBhcmFtZXRlcnMpOiBOZXcgaGVscGVyIGZ1bmN0aW9uIHRvIHNl
dCB0aGUKKyAgICAgICAgbGF5b3V0IHBhcmFtZXRlcnMsIHJlcGxhY2luZyB1cGRhdGVGcm9tRWxl
bWVudC4gV2Ugbm8gbG9uZ2VyIHBhcnNlIGFuZCBzdG9yZSB0aGUgYWxpZ25tZW50CisgICAgICAg
IHZhbHVlcyBoZXJlLiBXZSBhbHNvIGNoYW5nZSB0aGUgcmVzb2x1dGlvbiBvZiBuZWdhdGl2ZSB2
YWx1ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6aG9yaXpvbnRh
bE9mZnNldCk6IFVzZSB0aGUgZW51bSBmcm9tIE1hdGhNTEZyYWN0aW9uRWxlbWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpsYXlvdXRCbG9jayk6IFdlIGNhbGwg
dXBkYXRlTGF5b3V0UGFyYW1ldGVycyBpbnN0ZWFkIG9mCisgICAgICAgIHVwZGF0ZUZyb21FbGVt
ZW50LiBUaGUgbnVtZXJhdG9yIGFuZCBkZW5vbWluYXRvciBhbGlnbm1lbnRzIGFyZSByZXNvbHZl
ZCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhcnNlQWxp
Z25tZW50QXR0cmlidXRlKTogRGVsZXRlZC4gUGFyc2luZyBvZiBhbGlnbm1lbnQKKyAgICAgICAg
YXR0cmlidXRlIGlzIG5vdyBoYW5kbGVkIGluIE1hdGhNTEZyYWN0aW9uRWxlbWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCk6IERl
bGV0ZWQuIEF0dHJpYnV0ZSBjaGFuZ2VzIGFyZSBub3cKKyAgICAgICAgaGFuZGxlZCBpbiBNYXRo
TUxGcmFjdGlvbkVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlv
bjo6c3R5bGVEaWRDaGFuZ2UpOiBEZWxldGVkLiBGb250IGNoYW5nZXMgYXJlIHByb3Blcmx5IGhh
bmRsZWQuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5o
OiBVcGRhdGUgZGVjbGFyYXRpb25zLgorCisyMDE2LTA3LTE1ICBGcmVkZXJpYyBXYW5nICA8Zndh
bmdAaWdhbGlhLmNvbT4KKwogICAgICAgICBBZGQgRGVqYVZ1IE1hdGggVGVYIEd5cmUgdG8gdGhl
IGxpc3Qgb2YgbWF0aCBmb250cy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1OTgwNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFsbEluT25l
LmNwcAppbmRleCBjOWNlYTcxLi45MjY4YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxBbGxJbk9uZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIC8vIFRoaXMgYWxsLWluLW9uZSBjcHAg
ZmlsZSBjdXRzIGRvd24gb24gdGVtcGxhdGUgYmxvYXQgdG8gYWxsb3cgdXMgdG8gYnVpbGQgb3Vy
IFdpbmRvd3MgcmVsZWFzZSBidWlsZC4KIAogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuY3BwIgor
I2luY2x1ZGUgIk1hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiTWF0aE1MTWF0aEVsZW1lbnQuY3Bw
IgogI2luY2x1ZGUgIk1hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmE5YzM2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShNQVRITUwpCisjaW5jbHVkZSAiTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgiCisKKyNpbmNsdWRl
ICJSZW5kZXJNYXRoTUxGcmFjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5n
IG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworaW5saW5lIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6
TWF0aE1MRnJhY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKKyAgICA6IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCit7Cit9CisKK1JlZjxNYXRoTUxGcmFjdGlvbkVsZW1lbnQ+IE1hdGhNTEZy
YWN0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxGcmFjdGlv
bkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKK30KKworY29uc3QgTWF0aE1MRWxlbWVudDo6
TGVuZ3RoJiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmxpbmVUaGlja25lc3MoKQoreworICAgIC8v
IFRoZSBNYXRoTUwzIHJlY29tbWVuZGF0aW9uIHN0YXRlcyB0aGF0ICJtZWRpdW0iIGlzIHRoZSBk
ZWZhdWx0IHRoaWNrbmVzcy4KKyAgICAvLyBIb3dldmVyLCBpdCBvbmx5IHN0YXRlcyB0aGF0ICJ0
aGluIiBhbmQgInRoaWNrIiBhcmUgcmVzcGVjdGl2ZWx5IHRoaW5lciBhbmQgdGhpY2tlci4KKyAg
ICAvLyBUaGUgTWF0aE1MIGluIEhUTUw1IGltcGxlbWVudGF0aW9uIG5vdGUgc3VnZ2VzdHMgNTAl
IGFuZCAyMDAlIGFuZCB0aGVzZSB2YWx1ZXMgYXJlIGFsc28gdXNlZCBpbiBHZWNrby4KKyAgICBp
ZiAobV9saW5lVGhpY2tuZXNzLmRpcnR5KSB7CisgICAgICAgIFN0cmluZyB0aGlja25lc3MgPSBm
YXN0R2V0QXR0cmlidXRlKGxpbmV0aGlja25lc3NBdHRyKTsKKyAgICAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRoaWNrbmVzcywgInRoaW4iKSkgeworICAgICAgICAgICAg
bV9saW5lVGhpY2tuZXNzLnR5cGUgPSBMZW5ndGhUeXBlOjpVbml0TGVzczsKKyAgICAgICAgICAg
IG1fbGluZVRoaWNrbmVzcy52YWx1ZSA9IC41OworICAgICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRoaWNrbmVzcywgIm1lZGl1bSIpKSB7CisgICAgICAgICAg
ICBtX2xpbmVUaGlja25lc3MudHlwZSA9IExlbmd0aFR5cGU6OlVuaXRMZXNzOworICAgICAgICAg
ICAgbV9saW5lVGhpY2tuZXNzLnZhbHVlID0gMTsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0aGlja25lc3MsICJ0aGljayIpKSB7CisgICAgICAgICAg
ICBtX2xpbmVUaGlja25lc3MudHlwZSA9IExlbmd0aFR5cGU6OlVuaXRMZXNzOworICAgICAgICAg
ICAgbV9saW5lVGhpY2tuZXNzLnZhbHVlID0gMjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBtX2xpbmVUaGlja25lc3MgPSBwYXJzZU1hdGhNTExlbmd0aCh0aGlja25lc3MpOworICAgICAg
ICBtX2xpbmVUaGlja25lc3MuZGlydHkgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIG1fbGlu
ZVRoaWNrbmVzczsKK30KKworTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpGcmFjdGlvbkFsaWdubWVu
dCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIEZyYWN0aW9uQWxpZ25tZW50QXR0cmlidXRlJiBhbGlnbm1lbnQp
Cit7CisgICAgaWYgKGFsaWdubWVudC5kaXJ0eSkgeworICAgICAgICBTdHJpbmcgdmFsdWUgPSBm
YXN0R2V0QXR0cmlidXRlKG5hbWUpOworICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodmFsdWUsICJsZWZ0IikpCisgICAgICAgICAgICBhbGlnbm1lbnQudmFsdWUgPSBG
cmFjdGlvbkFsaWdubWVudExlZnQ7CisgICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHZhbHVlLCAicmlnaHQiKSkKKyAgICAgICAgICAgIGFsaWdubWVudC52YWx1
ZSA9IEZyYWN0aW9uQWxpZ25tZW50UmlnaHQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFs
aWdubWVudC52YWx1ZSA9IEZyYWN0aW9uQWxpZ25tZW50Q2VudGVyOworICAgICAgICBhbGlnbm1l
bnQuZGlydHkgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGFsaWdubWVudC52YWx1ZTsKK30K
KworTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpGcmFjdGlvbkFsaWdubWVudCBNYXRoTUxGcmFjdGlv
bkVsZW1lbnQ6Om51bWVyYXRvckFsaWdubWVudCgpCit7CisgICAgcmV0dXJuIGNhY2hlZEZyYWN0
aW9uQWxpZ25tZW50KG51bWFsaWduQXR0ciwgbV9udW1lcmF0b3JBbGlnbm1lbnQpOworfQorCitN
YXRoTUxGcmFjdGlvbkVsZW1lbnQ6OkZyYWN0aW9uQWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxl
bWVudDo6ZGVub21pbmF0b3JBbGlnbm1lbnQoKQoreworICAgIHJldHVybiBjYWNoZWRGcmFjdGlv
bkFsaWdubWVudChkZW5vbWFsaWduQXR0ciwgbV9kZW5vbWluYXRvckFsaWdubWVudCk7Cit9CisK
K3ZvaWQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQoreworICAgIGlmIChuYW1l
ID09IGxpbmV0aGlja25lc3NBdHRyKQorICAgICAgICBtX2xpbmVUaGlja25lc3MuZGlydHkgPSB0
cnVlOworICAgIGVsc2UgaWYgKG5hbWUgPT0gbnVtYWxpZ25BdHRyKQorICAgICAgICBtX251bWVy
YXRvckFsaWdubWVudC5kaXJ0eSA9IHRydWU7CisgICAgZWxzZSBpZiAobmFtZSA9PSBkZW5vbWFs
aWduQXR0cikKKyAgICAgICAgbV9kZW5vbWluYXRvckFsaWdubWVudC5kaXJ0eSA9IHRydWU7CisK
KyAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Cit9CisKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KQoreworICAgIEFTU0VSVChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptZnJhY1RhZykpOworICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxGcmFjdGlvbj4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44MmIwMTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1BVEhNTCkK
KyNpbmNsdWRlICJNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWF0aE1MRnJhY3Rpb25FbGVtZW50IGZpbmFsIDogcHVibGljIE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TWF0
aE1MRnJhY3Rpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmKTsKKyAgICBjb25zdCBMZW5ndGgmIGxpbmVUaGlja25lc3MoKTsKKyAgICBlbnVt
IEZyYWN0aW9uQWxpZ25tZW50IHsKKyAgICAgICAgRnJhY3Rpb25BbGlnbm1lbnRDZW50ZXIsCisg
ICAgICAgIEZyYWN0aW9uQWxpZ25tZW50TGVmdCwKKyAgICAgICAgRnJhY3Rpb25BbGlnbm1lbnRS
aWdodAorICAgIH07CisgICAgRnJhY3Rpb25BbGlnbm1lbnQgbnVtZXJhdG9yQWxpZ25tZW50KCk7
CisgICAgRnJhY3Rpb25BbGlnbm1lbnQgZGVub21pbmF0b3JBbGlnbm1lbnQoKTsKKworcHJpdmF0
ZToKKyAgICBNYXRoTUxGcmFjdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFs
OworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIGZpbmFsOworCisgICAgc3RydWN0IEZyYWN0aW9uQWxpZ25tZW50QXR0cmli
dXRlIHsKKyAgICAgICAgRnJhY3Rpb25BbGlnbm1lbnQgdmFsdWUgeyBGcmFjdGlvbkFsaWdubWVu
dENlbnRlciB9OworICAgICAgICBib29sIGRpcnR5IHsgdHJ1ZSB9OworICAgIH07CisgICAgRnJh
Y3Rpb25BbGlnbm1lbnQgY2FjaGVkRnJhY3Rpb25BbGlnbm1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIEZyYWN0aW9uQWxpZ25tZW50QXR0cmlidXRlJik7CisKKyAgICBMZW5ndGggbV9saW5lVGhp
Y2tuZXNzOworICAgIEZyYWN0aW9uQWxpZ25tZW50QXR0cmlidXRlIG1fbnVtZXJhdG9yQWxpZ25t
ZW50OworICAgIEZyYWN0aW9uQWxpZ25tZW50QXR0cmlidXRlIG1fZGVub21pbmF0b3JBbGlnbm1l
bnQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCmluZGV4
IGJkYjU3ODAuLjU0ZGNjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNs
dWRlICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJsb2NrLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTWF0aE1MRmVuY2VkLmgiCi0jaW5jbHVkZSAiUmVuZGVyTWF0aE1MRnJhY3Rp
b24uaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxNZW5jbG9zZS5oIgogI2luY2x1ZGUgIlJlbmRl
ck1hdGhNTFJvb3QuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxSb3cuaCIKQEAgLTcxLDggKzcw
LDYgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW4KICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlck1hdGhNTFNjcmlwdHM+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgaWYg
KGhhc1RhZ05hbWUobW92ZXJUYWcpIHx8IGhhc1RhZ05hbWUobXVuZGVyVGFnKSB8fCBoYXNUYWdO
YW1lKG11bmRlcm92ZXJUYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
TWF0aE1MVW5kZXJPdmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwotICAgIGlmIChoYXNUYWdO
YW1lKG1mcmFjVGFnKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhN
TEZyYWN0aW9uPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIGlmIChoYXNUYWdOYW1lKG1z
cXJ0VGFnKSB8fCBoYXNUYWdOYW1lKG1yb290VGFnKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlck1hdGhNTFJvb3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgaWYg
KGhhc1RhZ05hbWUobWZlbmNlZFRhZykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvbWF0aHRhZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4KaW5kZXgg
ZmI2NDgyNS4uODJjOGVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0
YWdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgpAQCAtNyw3ICs3
LDcgQEAgYW5ub3RhdGlvbiBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50CiBhbm5vdGF0
aW9uLXhtbCBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKIG1hY3Rp
b24gaW50ZXJmYWNlTmFtZT1NYXRoTUxTZWxlY3RFbGVtZW50CiBtYXRoCi1tZnJhYyBpbnRlcmZh
Y2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKK21mcmFjIGludGVyZmFjZU5hbWU9
TWF0aE1MRnJhY3Rpb25FbGVtZW50CiBtZmVuY2VkIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudAogbXN1YnN1cCBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQKIG1lcnJvciBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggOTc5YWMxZi4uZjU5ZDIwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlv
bi5jcHAKQEAgLTQ0LDE1ICs0NCw2IEBAIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRo
TUxGcmFjdGlvbihNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50CiB7CiB9CiAK
LVJlbmRlck1hdGhNTEZyYWN0aW9uOjpGcmFjdGlvbkFsaWdubWVudCBSZW5kZXJNYXRoTUxGcmFj
dGlvbjo6cGFyc2VBbGlnbm1lbnRBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJsZWZ0IikpCi0gICAg
ICAgIHJldHVybiBGcmFjdGlvbkFsaWdubWVudExlZnQ7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicmlnaHQiKSkKLSAgICAgICAgcmV0dXJuIEZyYWN0aW9u
QWxpZ25tZW50UmlnaHQ7Ci0gICAgcmV0dXJuIEZyYWN0aW9uQWxpZ25tZW50Q2VudGVyOwotfQot
CiBib29sIFJlbmRlck1hdGhNTEZyYWN0aW9uOjppc1ZhbGlkKCkgY29uc3QKIHsKICAgICAvLyBW
ZXJpZnkgd2hldGhlciB0aGUgbGlzdCBvZiBjaGlsZHJlbiBpcyB2YWxpZDoKQEAgLTc2LDExICs2
Nyw4IEBAIFJlbmRlckJveCYgUmVuZGVyTWF0aE1MRnJhY3Rpb246OmRlbm9taW5hdG9yKCkgY29u
c3QKICAgICByZXR1cm4gKmZpcnN0Q2hpbGRCb3goKS0+bmV4dFNpYmxpbmdCb3goKTsKIH0KIAot
dm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6dXBkYXRlRnJvbUVsZW1lbnQoKQordm9pZCBSZW5k
ZXJNYXRoTUxGcmFjdGlvbjo6dXBkYXRlTGF5b3V0UGFyYW1ldGVycygpCiB7Ci0gICAgaWYgKGlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gV2UgdHJ5IGFuZCByZWFkIGNvbnN0
YW50cyB0byBkcmF3IHRoZSBmcmFjdGlvbiBmcm9tIHRoZSBPcGVuVHlwZSBNQVRIIGFuZCB1c2Ug
ZmFsbGJhY2sgdmFsdWVzIG90aGVyd2lzZS4KICAgICAvLyBXZSBhbHNvIHBhcnNlIHByZXNlbnRh
dGlvbiBhdHRyaWJ1dGVzIG9mIHRoZSA8bWZyYWM+IGVsZW1lbnQuCiAKQEAgLTkyLDIyICs4MCwx
MCBAQCB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAg
ZWxzZQogICAgICAgICBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzID0gcnVsZVRoaWNrbmVzc0ZhbGxi
YWNrKCk7CiAKLSAgICAvLyBOZXh0LCB3ZSBwYXJzZSB0aGUgbGluZXRoaWNrbmVzcyBhdHRyaWJ1
dGUuCi0gICAgLy8gVGhlIE1hdGhNTDMgcmVjb21tZW5kYXRpb24gc3RhdGVzIHRoYXQgIm1lZGl1
bSIgaXMgdGhlIGRlZmF1bHQgdGhpY2tuZXNzLgotICAgIC8vIEhvd2V2ZXIsIGl0IG9ubHkgc3Rh
dGVzIHRoYXQgInRoaW4iIGFuZCAidGhpY2siIGFyZSByZXNwZWN0aXZlbHkgdGhpbmVyIGFuZCB0
aGlja2VyLgotICAgIC8vIFRoZSBNYXRoTUwgaW4gSFRNTDUgaW1wbGVtZW50YXRpb24gbm90ZSBz
dWdnZXN0cyA1MCUgYW5kIDIwMCUgYW5kIHRoZXNlIHZhbHVlcyBhcmUgYWxzbyB1c2VkIGluIEdl
Y2tvLgotICAgIFN0cmluZyB0aGlja25lc3MgPSBlbGVtZW50KCkuZ2V0QXR0cmlidXRlKE1hdGhN
TE5hbWVzOjpsaW5ldGhpY2tuZXNzQXR0cik7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHRoaWNrbmVzcywgInRoaW4iKSkKLSAgICAgICAgbV9saW5lVGhpY2tuZXNzID0g
bV9kZWZhdWx0TGluZVRoaWNrbmVzcyAvIDI7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UodGhpY2tuZXNzLCAibWVkaXVtIikpCi0gICAgICAgIG1fbGluZVRoaWNr
bmVzcyA9IG1fZGVmYXVsdExpbmVUaGlja25lc3M7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodGhpY2tuZXNzLCAidGhpY2siKSkKLSAgICAgICAgbV9saW5lVGhp
Y2tuZXNzID0gbV9kZWZhdWx0TGluZVRoaWNrbmVzcyAqIDI7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IC8vIFBhcnNlIHRoZSB0aGlja25lc3MgdXNpbmcgbV9kZWZhdWx0TGluZVRoaWNrbmVzcyBhcyB0
aGUgZGVmYXVsdCB2YWx1ZS4KLSAgICAgICAgbV9saW5lVGhpY2tuZXNzID0gbV9kZWZhdWx0TGlu
ZVRoaWNrbmVzczsKLSAgICAgICAgcGFyc2VNYXRoTUxMZW5ndGgodGhpY2tuZXNzLCBtX2xpbmVU
aGlja25lc3MsICZzdHlsZSgpLCBmYWxzZSk7Ci0gICAgfQorICAgIC8vIFJlc29sdmUgdGhlIHRo
aWNrbmVzcyB1c2luZyBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzIGFzIHRoZSBkZWZhdWx0IHZhbHVl
LgorICAgIG1fbGluZVRoaWNrbmVzcyA9IHRvVXNlclVuaXRzKGVsZW1lbnQoKS5saW5lVGhpY2tu
ZXNzKCksIHN0eWxlKCksIG1fZGVmYXVsdExpbmVUaGlja25lc3MpOworICAgIGlmIChtX2xpbmVU
aGlja25lc3MgPCAwKQorICAgICAgICBtX2xpbmVUaGlja25lc3MgPSAwOwogCiAgICAgLy8gV2Ug
bm93IGtub3cgd2hldGhlciB3ZSBzaG91bGQgbGF5b3V0IGFzIGEgbm9ybWFsIGZyYWN0aW9uIG9y
IGFzIGEgc3RhY2sgKGZyYWN0aW9uIHdpdGhvdXQgYmFyKSBhbmQgc28gZGV0ZXJtaW5lIHRoZSBy
ZWxldmFudCBjb25zdGFudHMuCiAgICAgYm9vbCBkaXNwbGF5ID0gbWF0aE1MU3R5bGUoKS0+ZGlz
cGxheVN0eWxlKCk7CkBAIC0xMzcsMTcgKzExMyw2IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rp
b246OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAgIG1fbnVtZXJhdG9yTWluU2hpZnRV
cCA9IG1fZGVub21pbmF0b3JNaW5TaGlmdERvd24gPSAwOwogICAgICAgICB9CiAgICAgfQotCi0g
ICAgLy8gUGFyc2UgYWxpZ25tZW50IGF0dHJpYnV0ZXMuCi0gICAgbV9udW1lcmF0b3JBbGlnbiA9
IHBhcnNlQWxpZ25tZW50QXR0cmlidXRlKGVsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFt
ZXM6Om51bWFsaWduQXR0cikpOwotICAgIG1fZGVub21pbmF0b3JBbGlnbiA9IHBhcnNlQWxpZ25t
ZW50QXR0cmlidXRlKGVsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmRlbm9tYWxp
Z25BdHRyKSk7Ci19Ci0KLXZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCi17Ci0g
ICAgUmVuZGVyTWF0aE1MQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKLQot
ICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKIFJlbmRlck1hdGhNTE9wZXJhdG9yKiBSZW5k
ZXJNYXRoTUxGcmFjdGlvbjo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkKQEAgLTE3MywxNCArMTM4
LDE0IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKCkKICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwogfQog
Ci1MYXlvdXRVbml0IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpob3Jpem9udGFsT2Zmc2V0KFJlbmRl
ckJveCYgY2hpbGQsIEZyYWN0aW9uQWxpZ25tZW50IGFsaWduKQorTGF5b3V0VW5pdCBSZW5kZXJN
YXRoTUxGcmFjdGlvbjo6aG9yaXpvbnRhbE9mZnNldChSZW5kZXJCb3gmIGNoaWxkLCBNYXRoTUxG
cmFjdGlvbkVsZW1lbnQ6OkZyYWN0aW9uQWxpZ25tZW50IGFsaWduKQogewogICAgIHN3aXRjaCAo
YWxpZ24pIHsKLSAgICBjYXNlIEZyYWN0aW9uQWxpZ25tZW50UmlnaHQ6CisgICAgY2FzZSBNYXRo
TUxGcmFjdGlvbkVsZW1lbnQ6OkZyYWN0aW9uQWxpZ25tZW50UmlnaHQ6CiAgICAgICAgIHJldHVy
biBMYXlvdXRVbml0KGxvZ2ljYWxXaWR0aCgpIC0gY2hpbGQubG9naWNhbFdpZHRoKCkpOwotICAg
IGNhc2UgRnJhY3Rpb25BbGlnbm1lbnRDZW50ZXI6CisgICAgY2FzZSBNYXRoTUxGcmFjdGlvbkVs
ZW1lbnQ6OkZyYWN0aW9uQWxpZ25tZW50Q2VudGVyOgogICAgICAgICByZXR1cm4gTGF5b3V0VW5p
dCgobG9naWNhbFdpZHRoKCkgLSBjaGlsZC5sb2dpY2FsV2lkdGgoKSkgLyAyKTsKLSAgICBjYXNl
IEZyYWN0aW9uQWxpZ25tZW50TGVmdDoKKyAgICBjYXNlIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6
RnJhY3Rpb25BbGlnbm1lbnRMZWZ0OgogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCgwKTsKICAg
ICB9CiAKQEAgLTE5Miw5ICsxNTcsNiBAQCB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpsYXlv
dXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiB7CiAgICAgQVNTRVJU
KG5lZWRzTGF5b3V0KCkpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHJl
bW92ZSB0aGlzLgotICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7Ci0KICAgICBpZiAoIXJlbGF5b3V0
Q2hpbGRyZW4gJiYgc2ltcGxpZmllZExheW91dCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIx
MCw4ICsxNzIsOSBAQCB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpsYXlvdXRCbG9jayhib29s
IHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAKICAgICBzZXRMb2dpY2FsV2lkdGgoc3Rk
OjptYXgobnVtZXJhdG9yKCkubG9naWNhbFdpZHRoKCksIGRlbm9taW5hdG9yKCkubG9naWNhbFdp
ZHRoKCkpKTsKIAorICAgIHVwZGF0ZUxheW91dFBhcmFtZXRlcnMoKTsKICAgICBMYXlvdXRVbml0
IHZlcnRpY2FsT2Zmc2V0ID0gMDsgLy8gVGhpcyBpcyB0aGUgdG9wIG9mIHRoZSByZW5kZXJlci4K
LSAgICBMYXlvdXRQb2ludCBudW1lcmF0b3JMb2NhdGlvbihob3Jpem9udGFsT2Zmc2V0KG51bWVy
YXRvcigpLCBtX251bWVyYXRvckFsaWduKSwgdmVydGljYWxPZmZzZXQpOworICAgIExheW91dFBv
aW50IG51bWVyYXRvckxvY2F0aW9uKGhvcml6b250YWxPZmZzZXQobnVtZXJhdG9yKCksIGVsZW1l
bnQoKS5udW1lcmF0b3JBbGlnbm1lbnQoKSksIHZlcnRpY2FsT2Zmc2V0KTsKICAgICBudW1lcmF0
b3IoKS5zZXRMb2NhdGlvbihudW1lcmF0b3JMb2NhdGlvbik7CiAKICAgICBMYXlvdXRVbml0IG51
bWVyYXRvckFzY2VudCA9IGFzY2VudEZvckNoaWxkKG51bWVyYXRvcigpKTsKQEAgLTIzNyw3ICsy
MDAsNyBAQCB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ICs9IHN0ZDo6
bWF4KG1fbGluZVRoaWNrbmVzcyAvIDIgKyBtX2Rlbm9taW5hdG9yR2FwTWluLCBtX2Rlbm9taW5h
dG9yTWluU2hpZnREb3duIC0gZGVub21pbmF0b3JBc2NlbnQpOwogICAgIH0KIAotICAgIExheW91
dFBvaW50IGRlbm9taW5hdG9yTG9jYXRpb24oaG9yaXpvbnRhbE9mZnNldChkZW5vbWluYXRvcigp
LCBtX2Rlbm9taW5hdG9yQWxpZ24pLCB2ZXJ0aWNhbE9mZnNldCk7CisgICAgTGF5b3V0UG9pbnQg
ZGVub21pbmF0b3JMb2NhdGlvbihob3Jpem9udGFsT2Zmc2V0KGRlbm9taW5hdG9yKCksIGVsZW1l
bnQoKS5kZW5vbWluYXRvckFsaWdubWVudCgpKSwgdmVydGljYWxPZmZzZXQpOwogICAgIGRlbm9t
aW5hdG9yKCkuc2V0TG9jYXRpb24oZGVub21pbmF0b3JMb2NhdGlvbik7CiAKICAgICB2ZXJ0aWNh
bE9mZnNldCA9IHN0ZDo6bWF4KHZlcnRpY2FsT2Zmc2V0ICsgZGVub21pbmF0b3IoKS5sb2dpY2Fs
SGVpZ2h0KCksIG1fYXNjZW50ICsgZGVub21pbmF0b3JEZXNjZW50KTsgLy8gVGhpcyBpcyB0aGUg
Ym90dG9tIG9mIG91ciByZW5kZXJlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCBiNTRkYTg3Li44ZjRmNWQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoTUFUSE1MKQog
CisjaW5jbHVkZSAiTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJsb2NrLmgiCiAK
QEAgLTM4LDExICszOSw4IEBAIGNsYXNzIFJlbmRlck1hdGhNTEZyYWN0aW9uIGZpbmFsIDogcHVi
bGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxGcmFjdGlv
bihNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKLSAgICBN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7
IH0KICAgICBmbG9hdCByZWxhdGl2ZUxpbmVUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX2Rl
ZmF1bHRMaW5lVGhpY2tuZXNzID8gbV9saW5lVGhpY2tuZXNzIC8gbV9kZWZhdWx0TGluZVRoaWNr
bmVzcyA6IExheW91dFVuaXQoMCk7IH0KIAotICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBm
aW5hbDsKLQogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MRnJhY3Rpb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxGcmFjdGlvbiI7IH0KQEAgLTUyLDE5ICs1
MCwxNSBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
JikgZmluYWw7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRv
cigpIGZpbmFsOwotICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIGZpbmFsOworCisgICAgTWF0aE1MRnJhY3Rpb25FbGVt
ZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MRnJhY3Rpb25F
bGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiAgICAgYm9vbCBpc1N0YWNrKCkg
Y29uc3QgeyByZXR1cm4gIW1fbGluZVRoaWNrbmVzczsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0OwogICAgIFJlbmRlckJveCYgbnVtZXJhdG9yKCkgY29uc3Q7CiAgICAgUmVuZGVyQm94JiBk
ZW5vbWluYXRvcigpIGNvbnN0OwotICAgIGVudW0gRnJhY3Rpb25BbGlnbm1lbnQgewotICAgICAg
ICBGcmFjdGlvbkFsaWdubWVudENlbnRlciwKLSAgICAgICAgRnJhY3Rpb25BbGlnbm1lbnRMZWZ0
LAotICAgICAgICBGcmFjdGlvbkFsaWdubWVudFJpZ2h0Ci0gICAgfTsKLSAgICBGcmFjdGlvbkFs
aWdubWVudCBwYXJzZUFsaWdubWVudEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAg
ICBMYXlvdXRVbml0IGhvcml6b250YWxPZmZzZXQoUmVuZGVyQm94JiwgRnJhY3Rpb25BbGlnbm1l
bnQpOworICAgIExheW91dFVuaXQgaG9yaXpvbnRhbE9mZnNldChSZW5kZXJCb3gmLCBNYXRoTUxG
cmFjdGlvbkVsZW1lbnQ6OkZyYWN0aW9uQWxpZ25tZW50KTsKKyAgICB2b2lkIHVwZGF0ZUxheW91
dFBhcmFtZXRlcnMoKTsKIAogICAgIExheW91dFVuaXQgbV9hc2NlbnQ7CiAgICAgTGF5b3V0VW5p
dCBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzIHsgMSB9OwpAQCAtODIsOCArNzYsNiBAQCBwcml2YXRl
OgogICAgICAgICBMYXlvdXRVbml0IG1fZGVub21pbmF0b3JNaW5TaGlmdERvd247CiAgICAgICAg
IExheW91dFVuaXQgbV9ib3R0b21TaGlmdERvd247CiAgICAgfTsKLSAgICBGcmFjdGlvbkFsaWdu
bWVudCBtX251bWVyYXRvckFsaWduIHsgRnJhY3Rpb25BbGlnbm1lbnRDZW50ZXIgfTsKLSAgICBG
cmFjdGlvbkFsaWdubWVudCBtX2Rlbm9taW5hdG9yQWxpZ24geyBGcmFjdGlvbkFsaWdubWVudENl
bnRlciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotLSAKMi44LjEKCg==
</data>
<flag name="review"
          id="307422"
          type_id="1"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283768</attachid>
            <date>2016-07-15 09:51:02 -0700</date>
            <delta_ts>2016-07-15 11:13:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Bug-159624-Move-parsing-of-mfrac-attributes-into-a-M.patch</filename>
            <type>text/plain</type>
            <size>30276</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA0MDFkZTA0YTlhNDllMmRjOTM3MTMxOTRmOTNlM2Y0MThmOTQzM2U0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogRnJpLCAxNSBKdWwgMjAxNiAxNDo1OToxNCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAx
NTk2MjQgLSBNb3ZlIHBhcnNpbmcgb2YgbWZyYWMgYXR0cmlidXRlcyBpbnRvIGEKIE1hdGhNTEZy
YWN0aW9uRWxlbWVudENsYXNzCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDEzICsrKwogLi4uL21mcmFjLWxpbmV0aGlja25lc3MyLWV4
cGVjdGVkLmh0bWwgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9tYXRobWwvcHJlc2VudGF0aW9u
L21mcmFjLWxpbmV0aGlja25lc3MyLmh0bWwgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0OSArKysrKysrKysKIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgICA4ICsrCiBT
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MQWxsSW5PbmUuY3BwICAgICAgICAgICB8ICAgMSAr
CiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCAgICB8IDEx
OCArKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFj
dGlvbkVsZW1lbnQuaCAgICAgIHwgIDYzICsrKysrKysrKysrCiAuLi4vbWF0aG1sL01hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICAgICAgICB8ICAgMyAtCiBTb3VyY2UvV2ViQ29yZS9t
YXRobWwvbWF0aHRhZ3MuaW4gICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwICAgICAgfCAgNjEgKysrLS0tLS0tLS0K
IC4uLi9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmggICAgICAgIHwgIDE4
ICstLS0KIDEzIGZpbGVzIGNoYW5nZWQsIDI3MyBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rp
b25FbGVtZW50LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxGcmFjdGlvbkVsZW1lbnQuaAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMmExMTA4Li41NDUxNTkxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMTggQEAKIDIwMTYtMDctMTUgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEu
Y29tPgogCisgICAgICAgIE1vdmUgcGFyc2luZyBvZiBtZnJhYyBhdHRyaWJ1dGVzIGludG8gYSBN
YXRoTUxGcmFjdGlvbkVsZW1lbnRDbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgdXBkYXRlIHRoZSBleHBlY3RhdGlvbiBmb3IgbmVnYXRpdmUg
bGluZXRoaWNrbmVzcy4gQXMgaW5kaWNhdGVkIGluIHRoZSBNYXRoTUwKKyAgICAgICAgcmVjb21t
ZW5kYXRpb24sIGl0IHNob3VsZCBiZSByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0IHZhbGlkIHZh
bHVlLCB3aGljaCBpcyAwLgorCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9tZnJhYy1s
aW5ldGhpY2tuZXNzMi5odG1sOiBVcGRhdGUgdGhlIGNvbW1lbnQgdG8gcmVmbGVjdCB0aGUgbmV3
IGJlaGF2aW9yLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vbWZyYWMtbGluZXRoaWNr
bmVzczItZXhwZWN0ZWQuaHRtbDogVXNlIDBweCBhcyB0aGUgcmVmZXJlbmNlIGZvciBuZWdhdGl2
ZSB2YWx1ZXMuCisKKzIwMTYtMDctMTUgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29t
PgorCiAgICAgICAgIEltcG9ydCBtb3JlIHRlc3RzIGZyb20gdGhlIE1hdGhNTCBpbiBIVE1MNSB0
ZXN0IHN1aXRlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTk3MTUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9t
ZnJhYy1saW5ldGhpY2tuZXNzMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvbWF0aG1sL3By
ZXNlbnRhdGlvbi9tZnJhYy1saW5ldGhpY2tuZXNzMi1leHBlY3RlZC5odG1sCmluZGV4IDJmNjZk
NmYuLmU4ZjIyZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24v
bWZyYWMtbGluZXRoaWNrbmVzczItZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tYXRo
bWwvcHJlc2VudGF0aW9uL21mcmFjLWxpbmV0aGlja25lc3MyLWV4cGVjdGVkLmh0bWwKQEAgLTYs
NyArNiw3IEBACiAgIDxib2R5PgogCiAgIDxtYXRoPgotICAgIDxtZnJhYz4KKyAgICA8bWZyYWMg
bGluZXRoaWNrbmVzcz0iMHB4Ij4KICAgICAgIDxtaT54PC9taT4KICAgICAgIDxtaT55PC9taT4K
ICAgICA8L21mcmFjPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlv
bi9tZnJhYy1saW5ldGhpY2tuZXNzMi5odG1sIGIvTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRh
dGlvbi9tZnJhYy1saW5ldGhpY2tuZXNzMi5odG1sCmluZGV4IDA1ZWE5N2MuLjQ0NThlYjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbWZyYWMtbGluZXRoaWNr
bmVzczIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21mcmFjLWxp
bmV0aGlja25lc3MyLmh0bWwKQEAgLTUsNyArNSw3IEBACiAgIDwvaGVhZD4KICAgPGJvZHk+CiAK
LSAgPCEtLSBUaGUgbGluZXRoaWNrbmVzcyBzaG91bGQgYmUgaWdub3JlZCAtLT4KKyAgPCEtLSBO
ZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhY2NlcHRlZC4gV2UgdHJlYXQgdGhlbSBhcyB6ZXJvLiAg
LS0+CiAgIDxtYXRoPgogICAgIDxtZnJhYyBsaW5ldGhpY2tuZXNzPSItMS4yM2VtIj4KICAgICAg
IDxtaT54PC9taT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTEyOWRlZS4uMzQ3MmMxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTE5ODUsNiArMTk4NSw3IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBsb2FkZXIvaWNvbi9QYWdlVVJMUmVjb3JkLmNwcAogCiAgICAgbWF0aG1sL01hdGhN
TEVsZW1lbnQuY3BwCisgICAgbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHAKICAgICBt
YXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1M
TWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBjMTVhMGYxLi4yOWU5YWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTQgQEAK
IDIwMTYtMDctMTUgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCisgICAgICAg
IE1vdmUgcGFyc2luZyBvZiBtZnJhYyBhdHRyaWJ1dGVzIGludG8gYSBNYXRoTUxGcmFjdGlvbkVs
ZW1lbnQgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1OTYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIG1vdmUgdGhlIHBhcnNpbmcgb2YgbWZyYWMgYXR0cmlidXRlcyB0byBhIE1hdGhNTEZy
YWN0aW9uRWxlbWVudCBjbGFzcy4gVGhpcyBhbGxvd3MgdG8KKyAgICAgICAgbWluaW1pemUgdGhl
IHVwZGF0ZXMgaW4gUmVuZGVyTWF0aE1MRnJhY3Rpb24gYW5kIHRvIHJlbW92ZSB0aGUgYWxpZ25t
ZW50IG1lbWJlcnMuIE1hbnkgb2YKKyAgICAgICAgdGhlIG1lbWJlcnMgaW4gdXBkYXRlTGF5b3V0
UGFyYW1ldGVycyBhcmUgYWN0dWFsbHkgb25seSB1c2VkIGluIGxheW91dEJsb2NrIGFuZCBjb3Vs
ZCBiZQorICAgICAgICByZW1vdmVkIGluIGEgZm9sbG93LXVwIHBhdGNoLiBXZSBhbHNvIGltcHJv
dmUgdGhlIHJlc29sdXRpb24gb2YgbmVnYXRpdmUgbGluZSB0aGlja25lc3MgdmFsdWUKKyAgICAg
ICAgc2luY2UgdGhlIE1hdGhNTCByZWNvbW1lbmRhdGlvbiBzYXlzIGl0IHNob3VsZCBiZSByb3Vu
ZGVkIHVwIHRvIHRoZSBuZWFyZXN0IHZhbGlkCisgICAgICAgIHZhbHVlICh3aGljaCBpcyB6ZXJv
KSBpbnN0ZWFkIG9mIGlnbm9yaW5nIHRoZSBhdHRyaWJ1dGUgYW5kIHVzaW5nIHRoZSBsaW5lIHRo
aWNrbmVzcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVhZHkgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTWF0aE1MRnJhY3Rp
b25FbGVtZW50LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
RGl0dG8uCisgICAgICAgICogbWF0aG1sL01hdGhNTEFsbEluT25lLmNwcDogRGl0dG8uCisgICAg
ICAgICogbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpNYXRoTUxGcmFjdGlvbkVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpsaW5lVGhpY2tuZXNzKTogUmV0dXJu
IHRoZSBjYWNoZWQgbGluZXRoaWNrbmVzcyBsZW5ndGgsCisgICAgICAgIHBhcnNpbmcgaXQgYWdh
aW4gaWYgaXQgaXMgZGlydHkuIFRoaXMgaGFuZGxlcyB0aGUgc3BlY2lhbCB2YWx1ZXMgInRoaW4i
LCAibWVkaXVtIiBhbmQgInRoaWNrIgorICAgICAgICBvciBmYWxsYmFjayB0byB0aGUgZ2VuZXJh
bCBwYXJzZU1hdGhNTExlbmd0aCBmb3IgTWF0aE1MIGxlbmd0aHMuCisgICAgICAgIChXZWJDb3Jl
OjpNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KTogUmV0dXJu
IHRoZSBjYWNoZWQgYWxpZ25tZW50IHZhbHVlLAorICAgICAgICBwYXJzaW5nIGl0IGFnYWluIGlm
IGl0IGlzIGRpcnR5LgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRnJhY3Rpb25FbGVtZW50Ojpu
dW1lcmF0b3JBbGlnbm1lbnQpOiBSZXR1cm4gdGhlIGNhY2hlZCBhbGlnbm1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmRlbm9taW5hdG9yQWxpZ25tZW50KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKTogTWFrZSBhdHRyaWJ1dGVzIGRpcnR5LgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1M
RnJhY3Rpb25FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOiBDcmVhdGUgYSBSZW5kZXJN
YXRoTUxGcmFjdGlvbi4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50Lmg6
IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNw
cDogV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gaGFuZGxlIGZyYWN0aW9uIGhlcmUuCisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIG1hdGhtbC9tYXRodGFncy5pbjogVXNlIE1hdGhNTEZyYWN0aW9uRWxl
bWVudCBmb3IgbWZyYWMuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
cmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6dXBk
YXRlTGF5b3V0UGFyYW1ldGVycyk6IE5ldyBoZWxwZXIgZnVuY3Rpb24gdG8gc2V0IHRoZQorICAg
ICAgICBsYXlvdXQgcGFyYW1ldGVycywgcmVwbGFjaW5nIHVwZGF0ZUZyb21FbGVtZW50LiBXZSBu
byBsb25nZXIgcGFyc2UgYW5kIHN0b3JlIHRoZSBhbGlnbm1lbnQKKyAgICAgICAgdmFsdWVzIGhl
cmUuIFdlIGFsc28gY2hhbmdlIHRoZSByZXNvbHV0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpob3Jpem9udGFsT2Zmc2V0KTog
VXNlIHRoZSBlbnVtIGZyb20gTWF0aE1MRnJhY3Rpb25FbGVtZW50LgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OmxheW91dEJsb2NrKTogV2UgY2FsbCB1cGRhdGVMYXlv
dXRQYXJhbWV0ZXJzIGluc3RlYWQgb2YKKyAgICAgICAgdXBkYXRlRnJvbUVsZW1lbnQuIFRoZSBu
dW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIGFsaWdubWVudHMgYXJlIHJlc29sdmVkIGhlcmUuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFyc2VBbGlnbm1lbnRBdHRy
aWJ1dGUpOiBEZWxldGVkLiBQYXJzaW5nIG9mIGFsaWdubWVudAorICAgICAgICBhdHRyaWJ1dGUg
aXMgbm93IGhhbmRsZWQgaW4gTWF0aE1MRnJhY3Rpb25FbGVtZW50LgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnVwZGF0ZUZyb21FbGVtZW50KTogRGVsZXRlZC4gQXR0
cmlidXRlIGNoYW5nZXMgYXJlIG5vdworICAgICAgICBoYW5kbGVkIGluIE1hdGhNTEZyYWN0aW9u
RWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpzdHlsZURp
ZENoYW5nZSk6IERlbGV0ZWQuIEZvbnQgY2hhbmdlcyBhcmUgcHJvcGVybHkgaGFuZGxlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmg6IFVwZGF0ZSBk
ZWNsYXJhdGlvbnMuCisKKzIwMTYtMDctMTUgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEu
Y29tPgorCiAgICAgICAgIEFkZCBEZWphVnUgTWF0aCBUZVggR3lyZSB0byB0aGUgbGlzdCBvZiBt
YXRoIGZvbnRzLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5ODA1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5ZDQ5ZTBkLi41ZGMzMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02OTAzLDYgKzY5MDMsOCBA
QAogCQlGQTY1NEE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFC
RUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJGNDEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1M
RWxlbWVudC5jcHAgKi87IH07CiAJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
QUJFNzJFRTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovOyB9OworCQkwQkNG
ODNGNjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Y4M0VGMTA1OUMxRUIw
MEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwICovOyB9OworCQkwQkNGODNGNzEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNGODNGMDEwNTlDMUVCMDBEOTk5REQg
LyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmggKi87IH07CiAJCUZBQkU3MkY2MTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAv
KiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCAqLzsgfTsKIAkJRkFCRTcyRjcxMDU5
QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkYwMTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggKi87IH07CiAJCUZBQkU3MkY4
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxNYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJGMTEwNTlDMUVCMDBEOTk5REQg
LyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTUwNzQsNiArMTUwNzYsOCBAQAog
CQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAgLyogRE5TUmVzb2x2ZVF1ZXVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGQUJFNzJFRDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUUxMDU5QzFFQjAwRDk5
OUREIC8qIE1hdGhNTEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWF0aE1MRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwQkNGODNFRjEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBCQ0Y4M0YwMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRo
TUxGcmFjdGlvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0
aE1MRnJhY3Rpb25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3
MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTElubGluZUNvbnRhaW5l
ckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJGMDEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkYxMTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxNYXRoRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNYXRoTUxNYXRoRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NDg3MCw2ICsyNDg3NCw4IEBACiAJCQkJRkE2NTRBNjcxMTA4QUJFMjAwMjYxNUUwIC8qIG1hdGhh
dHRycy5pbiAqLywKIAkJCQlGQUJFNzJFRDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVu
dC5jcHAgKi8sCiAJCQkJRkFCRTcyRUUxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQu
aCAqLywKKwkJCQkwQkNGODNFRjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVt
ZW50LmNwcCAqLywKKwkJCQkwQkNGODNGMDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rp
b25FbGVtZW50LmggKi8sCiAJCQkJRkFCRTcyRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICovLAogCQkJCUZBQkU3MkYwMTA1OUMxRUIwMEQ5OTlE
RCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggKi8sCiAJCQkJRkFCRTcyRjExMDU5
QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhFbGVtZW50LmNwcCAqLywKQEAgLTI3NDE2LDYgKzI3
NDIyLDcgQEAKIAkJCQkwMEM2MEUzRjEzRDc2RDdFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVy
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjUxMDU5QzFFQjAwRDk5OUREIC8q
IE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0QTI4QUFDMTJERkI4QUMwMEFF
OTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEJDRjgz
RjcxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkFCRTcyRjcxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRhaW5l
ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBQkU3MkY5MTA1OUMxRUIwMEQ5OTlERCAv
KiBNYXRoTUxNYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUYxMkRGQjhC
RjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMjQwLDYgKzMx
MjQ3LDcgQEAKIAkJCQk5NzI4QzMxMzEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1h
dGhNTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkQxMDU5QzIxMTAwRDk5
OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBCQ0Y4
M0Y2MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkFCRTcyRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRjgxMDU5QzFFQjAwRDk5
OUREIC8qIE1hdGhNTE1hdGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA1RDkxM0NF
RUFCMkE2MDUzNDIxOEFDRiAvKiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MQWxsSW5PbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFsbEluT25lLmNwcAppbmRleCBjOWNlYTcx
Li45MjY4YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MQWxsSW5P
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxBbGxJbk9uZS5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKIC8vIFRoaXMgYWxsLWluLW9uZSBjcHAgZmlsZSBjdXRzIGRvd24gb24g
dGVtcGxhdGUgYmxvYXQgdG8gYWxsb3cgdXMgdG8gYnVpbGQgb3VyIFdpbmRvd3MgcmVsZWFzZSBi
dWlsZC4KIAogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuY3BwIgorI2luY2x1ZGUgIk1hdGhNTEZy
YWN0aW9uRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dC5jcHAiCiAjaW5jbHVkZSAiTWF0aE1MTWF0aEVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIk1hdGhN
TE1lbmNsb3NlRWxlbWVudC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxG
cmFjdGlvbkVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3
NThlODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJh
Y3Rpb25FbGVtZW50LmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVk
ZSAiTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgiCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxGcmFj
dGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxO
YW1lczsKKworaW5saW5lIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6TWF0aE1MRnJhY3Rpb25FbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKKyAg
ICA6IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCit7Cit9
CisKK1JlZjxNYXRoTUxGcmFjdGlvbkVsZW1lbnQ+IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxGcmFjdGlvbkVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKK30KKworY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxGcmFj
dGlvbkVsZW1lbnQ6OmxpbmVUaGlja25lc3MoKQoreworICAgIGlmICghbV9saW5lVGhpY2tuZXNz
LmRpcnR5KQorICAgICAgICByZXR1cm4gbV9saW5lVGhpY2tuZXNzOworCisgICAgLy8gVGhlIE1h
dGhNTDMgcmVjb21tZW5kYXRpb24gc3RhdGVzIHRoYXQgIm1lZGl1bSIgaXMgdGhlIGRlZmF1bHQg
dGhpY2tuZXNzLgorICAgIC8vIEhvd2V2ZXIsIGl0IG9ubHkgc3RhdGVzIHRoYXQgInRoaW4iIGFu
ZCAidGhpY2siIGFyZSByZXNwZWN0aXZlbHkgdGhpbmVyIGFuZCB0aGlja2VyLgorICAgIC8vIFRo
ZSBNYXRoTUwgaW4gSFRNTDUgaW1wbGVtZW50YXRpb24gbm90ZSBzdWdnZXN0cyA1MCUgYW5kIDIw
MCUgYW5kIHRoZXNlIHZhbHVlcyBhcmUgYWxzbyB1c2VkIGluIEdlY2tvLgorICAgIFN0cmluZyB0
aGlja25lc3MgPSBmYXN0R2V0QXR0cmlidXRlKGxpbmV0aGlja25lc3NBdHRyKTsKKyAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodGhpY2tuZXNzLCAidGhpbiIpKSB7CisgICAg
ICAgIG1fbGluZVRoaWNrbmVzcy50eXBlID0gTGVuZ3RoVHlwZTo6VW5pdExlc3M7CisgICAgICAg
IG1fbGluZVRoaWNrbmVzcy52YWx1ZSA9IC41OworICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodGhpY2tuZXNzLCAibWVkaXVtIikpIHsKKyAgICAgICAgbV9saW5l
VGhpY2tuZXNzLnR5cGUgPSBMZW5ndGhUeXBlOjpVbml0TGVzczsKKyAgICAgICAgbV9saW5lVGhp
Y2tuZXNzLnZhbHVlID0gMTsKKyAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHRoaWNrbmVzcywgInRoaWNrIikpIHsKKyAgICAgICAgbV9saW5lVGhpY2tuZXNzLnR5
cGUgPSBMZW5ndGhUeXBlOjpVbml0TGVzczsKKyAgICAgICAgbV9saW5lVGhpY2tuZXNzLnZhbHVl
ID0gMjsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9saW5lVGhpY2tuZXNzID0gcGFyc2VNYXRoTUxM
ZW5ndGgodGhpY2tuZXNzKTsKKyAgICBtX2xpbmVUaGlja25lc3MuZGlydHkgPSBmYWxzZTsKKyAg
ICByZXR1cm4gbV9saW5lVGhpY2tuZXNzOworfQorCitNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OkZy
YWN0aW9uQWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6Y2FjaGVkRnJhY3Rpb25BbGln
bm1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRnJhY3Rpb25BbGlnbm1lbnRBdHRyaWJ1
dGUmIGFsaWdubWVudCkKK3sKKyAgICBpZiAoIWFsaWdubWVudC5kaXJ0eSkKKyAgICAgICAgcmV0
dXJuIGFsaWdubWVudC52YWx1ZTsKKyAgICAgICAgCisgICAgU3RyaW5nIHZhbHVlID0gZmFzdEdl
dEF0dHJpYnV0ZShuYW1lKTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
dmFsdWUsICJsZWZ0IikpCisgICAgICAgIGFsaWdubWVudC52YWx1ZSA9IEZyYWN0aW9uQWxpZ25t
ZW50TGVmdDsKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgInJpZ2h0IikpCisgICAgICAgIGFsaWdubWVudC52YWx1ZSA9IEZyYWN0aW9uQWxpZ25tZW50
UmlnaHQ7CisgICAgZWxzZQorICAgICAgICBhbGlnbm1lbnQudmFsdWUgPSBGcmFjdGlvbkFsaWdu
bWVudENlbnRlcjsKKyAgICBhbGlnbm1lbnQuZGlydHkgPSBmYWxzZTsKKyAgICByZXR1cm4gYWxp
Z25tZW50LnZhbHVlOworfQorCitNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OkZyYWN0aW9uQWxpZ25t
ZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6bnVtZXJhdG9yQWxpZ25tZW50KCkKK3sKKyAgICBy
ZXR1cm4gY2FjaGVkRnJhY3Rpb25BbGlnbm1lbnQobnVtYWxpZ25BdHRyLCBtX251bWVyYXRvckFs
aWdubWVudCk7Cit9CisKK01hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQg
TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpkZW5vbWluYXRvckFsaWdubWVudCgpCit7CisgICAgcmV0
dXJuIGNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KGRlbm9tYWxpZ25BdHRyLCBtX2Rlbm9taW5hdG9y
QWxpZ25tZW50KTsKK30KKwordm9pZCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
Cit7CisgICAgaWYgKG5hbWUgPT0gbGluZXRoaWNrbmVzc0F0dHIpCisgICAgICAgIG1fbGluZVRo
aWNrbmVzcy5kaXJ0eSA9IHRydWU7CisgICAgZWxzZSBpZiAobmFtZSA9PSBudW1hbGlnbkF0dHIp
CisgICAgICAgIG1fbnVtZXJhdG9yQWxpZ25tZW50LmRpcnR5ID0gdHJ1ZTsKKyAgICBlbHNlIGlm
IChuYW1lID09IGRlbm9tYWxpZ25BdHRyKQorICAgICAgICBtX2Rlbm9taW5hdG9yQWxpZ25tZW50
LmRpcnR5ID0gdHJ1ZTsKKworICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKK30KKworUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTEZyYWN0aW9uRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCit7CisgICAgQVNTRVJUKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1mcmFjVGFnKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTEZyYWN0
aW9uPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
TUFUSE1MKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9u
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYjAxOTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYXRoTUxGcmFjdGlvbkVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxNYXRoTUxGcmFjdGlvbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIGNvbnN0IExlbmd0aCYgbGluZVRoaWNr
bmVzcygpOworICAgIGVudW0gRnJhY3Rpb25BbGlnbm1lbnQgeworICAgICAgICBGcmFjdGlvbkFs
aWdubWVudENlbnRlciwKKyAgICAgICAgRnJhY3Rpb25BbGlnbm1lbnRMZWZ0LAorICAgICAgICBG
cmFjdGlvbkFsaWdubWVudFJpZ2h0CisgICAgfTsKKyAgICBGcmFjdGlvbkFsaWdubWVudCBudW1l
cmF0b3JBbGlnbm1lbnQoKTsKKyAgICBGcmFjdGlvbkFsaWdubWVudCBkZW5vbWluYXRvckFsaWdu
bWVudCgpOworCitwcml2YXRlOgorICAgIE1hdGhNTEZyYWN0aW9uRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisKKyAgICBzdHJ1Y3QgRnJhY3Rp
b25BbGlnbm1lbnRBdHRyaWJ1dGUgeworICAgICAgICBGcmFjdGlvbkFsaWdubWVudCB2YWx1ZSB7
IEZyYWN0aW9uQWxpZ25tZW50Q2VudGVyIH07CisgICAgICAgIGJvb2wgZGlydHkgeyB0cnVlIH07
CisgICAgfTsKKyAgICBGcmFjdGlvbkFsaWdubWVudCBjYWNoZWRGcmFjdGlvbkFsaWdubWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRnJhY3Rpb25BbGlnbm1lbnRBdHRyaWJ1dGUmKTsKKworICAg
IExlbmd0aCBtX2xpbmVUaGlja25lc3M7CisgICAgRnJhY3Rpb25BbGlnbm1lbnRBdHRyaWJ1dGUg
bV9udW1lcmF0b3JBbGlnbm1lbnQ7CisgICAgRnJhY3Rpb25BbGlnbm1lbnRBdHRyaWJ1dGUgbV9k
ZW5vbWluYXRvckFsaWdubWVudDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRITUwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudC5jcHAKaW5kZXggYmRiNTc4MC4uNTRkY2MzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcApAQCAtMzMs
NyArMzMsNiBAQAogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0
aE1MQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxGZW5jZWQuaCIKLSNpbmNsdWRlICJS
ZW5kZXJNYXRoTUxGcmFjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTE1lbmNsb3NlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MUm9vdC5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTFJv
dy5oIgpAQCAtNzEsOCArNzAsNiBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbgogICAgICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MU2NyaXB0cz4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKICAgICBpZiAoaGFzVGFnTmFtZShtb3ZlclRhZykgfHwgaGFzVGFnTmFtZShtdW5k
ZXJUYWcpIHx8IGhhc1RhZ05hbWUobXVuZGVyb3ZlclRhZykpCiAgICAgICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxVbmRlck92ZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
Ci0gICAgaWYgKGhhc1RhZ05hbWUobWZyYWNUYWcpKQotICAgICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyTWF0aE1MRnJhY3Rpb24+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAg
aWYgKGhhc1RhZ05hbWUobXNxcnRUYWcpIHx8IGhhc1RhZ05hbWUobXJvb3RUYWcpKQogICAgICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUm9vdD4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKICAgICBpZiAoaGFzVGFnTmFtZShtZmVuY2VkVGFnKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbiBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9t
YXRodGFncy5pbgppbmRleCBmYjY0ODI1Li44MmM4ZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvbWF0aHRhZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0
YWdzLmluCkBAIC03LDcgKzcsNyBAQCBhbm5vdGF0aW9uIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4
dEVsZW1lbnQKIGFubm90YXRpb24teG1sIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudAogbWFjdGlvbiBpbnRlcmZhY2VOYW1lPU1hdGhNTFNlbGVjdEVsZW1lbnQKIG1h
dGgKLW1mcmFjIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbWZy
YWMgaW50ZXJmYWNlTmFtZT1NYXRoTUxGcmFjdGlvbkVsZW1lbnQKIG1mZW5jZWQgaW50ZXJmYWNl
TmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtc3Vic3VwIGludGVyZmFjZU5hbWU9
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAogbWVycm9yIGludGVyZmFjZU5hbWU9TWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCA5NzlhYzFmLi5mNTlk
MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtNDQsMTUgKzQ0LDYgQEAgUmVuZGVyTWF0aE1MRnJh
Y3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQm
IGVsZW1lbnQKIHsKIH0KIAotUmVuZGVyTWF0aE1MRnJhY3Rpb246OkZyYWN0aW9uQWxpZ25tZW50
IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYXJzZUFsaWdubWVudEF0dHJpYnV0ZShjb25zdCBTdHJp
bmcmIHZhbHVlKQotewotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgImxlZnQiKSkKLSAgICAgICAgcmV0dXJuIEZyYWN0aW9uQWxpZ25tZW50TGVmdDsKLSAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJyaWdodCIpKQotICAgICAg
ICByZXR1cm4gRnJhY3Rpb25BbGlnbm1lbnRSaWdodDsKLSAgICByZXR1cm4gRnJhY3Rpb25BbGln
bm1lbnRDZW50ZXI7Ci19Ci0KIGJvb2wgUmVuZGVyTWF0aE1MRnJhY3Rpb246OmlzVmFsaWQoKSBj
b25zdAogewogICAgIC8vIFZlcmlmeSB3aGV0aGVyIHRoZSBsaXN0IG9mIGNoaWxkcmVuIGlzIHZh
bGlkOgpAQCAtNzYsMTEgKzY3LDggQEAgUmVuZGVyQm94JiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6
ZGVub21pbmF0b3IoKSBjb25zdAogICAgIHJldHVybiAqZmlyc3RDaGlsZEJveCgpLT5uZXh0U2li
bGluZ0JveCgpOwogfQogCi12b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxl
bWVudCgpCit2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVMYXlvdXRQYXJhbWV0ZXJz
KCkKIHsKLSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICAvLyBXZSB0
cnkgYW5kIHJlYWQgY29uc3RhbnRzIHRvIGRyYXcgdGhlIGZyYWN0aW9uIGZyb20gdGhlIE9wZW5U
eXBlIE1BVEggYW5kIHVzZSBmYWxsYmFjayB2YWx1ZXMgb3RoZXJ3aXNlLgogICAgIC8vIFdlIGFs
c28gcGFyc2UgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZXMgb2YgdGhlIDxtZnJhYz4gZWxlbWVudC4K
IApAQCAtOTIsMjIgKzgwLDEwIEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnVwZGF0ZUZy
b21FbGVtZW50KCkKICAgICBlbHNlCiAgICAgICAgIG1fZGVmYXVsdExpbmVUaGlja25lc3MgPSBy
dWxlVGhpY2tuZXNzRmFsbGJhY2soKTsKIAotICAgIC8vIE5leHQsIHdlIHBhcnNlIHRoZSBsaW5l
dGhpY2tuZXNzIGF0dHJpYnV0ZS4KLSAgICAvLyBUaGUgTWF0aE1MMyByZWNvbW1lbmRhdGlvbiBz
dGF0ZXMgdGhhdCAibWVkaXVtIiBpcyB0aGUgZGVmYXVsdCB0aGlja25lc3MuCi0gICAgLy8gSG93
ZXZlciwgaXQgb25seSBzdGF0ZXMgdGhhdCAidGhpbiIgYW5kICJ0aGljayIgYXJlIHJlc3BlY3Rp
dmVseSB0aGluZXIgYW5kIHRoaWNrZXIuCi0gICAgLy8gVGhlIE1hdGhNTCBpbiBIVE1MNSBpbXBs
ZW1lbnRhdGlvbiBub3RlIHN1Z2dlc3RzIDUwJSBhbmQgMjAwJSBhbmQgdGhlc2UgdmFsdWVzIGFy
ZSBhbHNvIHVzZWQgaW4gR2Vja28uCi0gICAgU3RyaW5nIHRoaWNrbmVzcyA9IGVsZW1lbnQoKS5n
ZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmxpbmV0aGlja25lc3NBdHRyKTsKLSAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodGhpY2tuZXNzLCAidGhpbiIpKQotICAgICAgICBt
X2xpbmVUaGlja25lc3MgPSBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzIC8gMjsKLSAgICBlbHNlIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0aGlja25lc3MsICJtZWRpdW0iKSkKLSAg
ICAgICAgbV9saW5lVGhpY2tuZXNzID0gbV9kZWZhdWx0TGluZVRoaWNrbmVzczsKLSAgICBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0aGlja25lc3MsICJ0aGljayIpKQot
ICAgICAgICBtX2xpbmVUaGlja25lc3MgPSBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzICogMjsKLSAg
ICBlbHNlIHsKLSAgICAgICAgLy8gUGFyc2UgdGhlIHRoaWNrbmVzcyB1c2luZyBtX2RlZmF1bHRM
aW5lVGhpY2tuZXNzIGFzIHRoZSBkZWZhdWx0IHZhbHVlLgotICAgICAgICBtX2xpbmVUaGlja25l
c3MgPSBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzOwotICAgICAgICBwYXJzZU1hdGhNTExlbmd0aCh0
aGlja25lc3MsIG1fbGluZVRoaWNrbmVzcywgJnN0eWxlKCksIGZhbHNlKTsKLSAgICB9CisgICAg
Ly8gUmVzb2x2ZSB0aGUgdGhpY2tuZXNzIHVzaW5nIG1fZGVmYXVsdExpbmVUaGlja25lc3MgYXMg
dGhlIGRlZmF1bHQgdmFsdWUuCisgICAgbV9saW5lVGhpY2tuZXNzID0gdG9Vc2VyVW5pdHMoZWxl
bWVudCgpLmxpbmVUaGlja25lc3MoKSwgc3R5bGUoKSwgbV9kZWZhdWx0TGluZVRoaWNrbmVzcyk7
CisgICAgaWYgKG1fbGluZVRoaWNrbmVzcyA8IDApCisgICAgICAgIG1fbGluZVRoaWNrbmVzcyA9
IDA7CiAKICAgICAvLyBXZSBub3cga25vdyB3aGV0aGVyIHdlIHNob3VsZCBsYXlvdXQgYXMgYSBu
b3JtYWwgZnJhY3Rpb24gb3IgYXMgYSBzdGFjayAoZnJhY3Rpb24gd2l0aG91dCBiYXIpIGFuZCBz
byBkZXRlcm1pbmUgdGhlIHJlbGV2YW50IGNvbnN0YW50cy4KICAgICBib29sIGRpc3BsYXkgPSBt
YXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKTsKQEAgLTEzNywxNyArMTEzLDYgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxGcmFjdGlvbjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICAgICAgbV9u
dW1lcmF0b3JNaW5TaGlmdFVwID0gbV9kZW5vbWluYXRvck1pblNoaWZ0RG93biA9IDA7CiAgICAg
ICAgIH0KICAgICB9Ci0KLSAgICAvLyBQYXJzZSBhbGlnbm1lbnQgYXR0cmlidXRlcy4KLSAgICBt
X251bWVyYXRvckFsaWduID0gcGFyc2VBbGlnbm1lbnRBdHRyaWJ1dGUoZWxlbWVudCgpLmdldEF0
dHJpYnV0ZShNYXRoTUxOYW1lczo6bnVtYWxpZ25BdHRyKSk7Ci0gICAgbV9kZW5vbWluYXRvckFs
aWduID0gcGFyc2VBbGlnbm1lbnRBdHRyaWJ1dGUoZWxlbWVudCgpLmdldEF0dHJpYnV0ZShNYXRo
TUxOYW1lczo6ZGVub21hbGlnbkF0dHIpKTsKLX0KLQotdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlv
bjo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkKLXsKLSAgICBSZW5kZXJNYXRoTUxCbG9jazo6c3R5bGVEaWRDaGFuZ2UoZGlm
Ziwgb2xkU3R5bGUpOwotCi0gICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIAogUmVuZGVyTWF0
aE1MT3BlcmF0b3IqIFJlbmRlck1hdGhNTEZyYWN0aW9uOjp1bmVtYmVsbGlzaGVkT3BlcmF0b3Io
KQpAQCAtMTczLDE0ICsxMzgsMTQgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNE
aXJ0eShmYWxzZSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyTWF0aE1MRnJhY3Rpb246Omhvcml6
b250YWxPZmZzZXQoUmVuZGVyQm94JiBjaGlsZCwgRnJhY3Rpb25BbGlnbm1lbnQgYWxpZ24pCitM
YXlvdXRVbml0IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpob3Jpem9udGFsT2Zmc2V0KFJlbmRlckJv
eCYgY2hpbGQsIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQgYWxpZ24p
CiB7CiAgICAgc3dpdGNoIChhbGlnbikgewotICAgIGNhc2UgRnJhY3Rpb25BbGlnbm1lbnRSaWdo
dDoKKyAgICBjYXNlIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnRSaWdo
dDoKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQobG9naWNhbFdpZHRoKCkgLSBjaGlsZC5sb2dp
Y2FsV2lkdGgoKSk7Ci0gICAgY2FzZSBGcmFjdGlvbkFsaWdubWVudENlbnRlcjoKKyAgICBjYXNl
IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnRDZW50ZXI6CiAgICAgICAg
IHJldHVybiBMYXlvdXRVbml0KChsb2dpY2FsV2lkdGgoKSAtIGNoaWxkLmxvZ2ljYWxXaWR0aCgp
KSAvIDIpOwotICAgIGNhc2UgRnJhY3Rpb25BbGlnbm1lbnRMZWZ0OgorICAgIGNhc2UgTWF0aE1M
RnJhY3Rpb25FbGVtZW50OjpGcmFjdGlvbkFsaWdubWVudExlZnQ6CiAgICAgICAgIHJldHVybiBM
YXlvdXRVbml0KDApOwogICAgIH0KIApAQCAtMTkyLDkgKzE1Nyw2IEBAIHZvaWQgUmVuZGVyTWF0
aE1MRnJhY3Rpb246OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGJlIGFibGUgdG8gcmVtb3ZlIHRoaXMuCi0gICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKLQog
ICAgIGlmICghcmVsYXlvdXRDaGlsZHJlbiAmJiBzaW1wbGlmaWVkTGF5b3V0KCkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMjEwLDggKzE3Miw5IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246
OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKIAogICAgIHNl
dExvZ2ljYWxXaWR0aChzdGQ6Om1heChudW1lcmF0b3IoKS5sb2dpY2FsV2lkdGgoKSwgZGVub21p
bmF0b3IoKS5sb2dpY2FsV2lkdGgoKSkpOwogCisgICAgdXBkYXRlTGF5b3V0UGFyYW1ldGVycygp
OwogICAgIExheW91dFVuaXQgdmVydGljYWxPZmZzZXQgPSAwOyAvLyBUaGlzIGlzIHRoZSB0b3Ag
b2YgdGhlIHJlbmRlcmVyLgotICAgIExheW91dFBvaW50IG51bWVyYXRvckxvY2F0aW9uKGhvcml6
b250YWxPZmZzZXQobnVtZXJhdG9yKCksIG1fbnVtZXJhdG9yQWxpZ24pLCB2ZXJ0aWNhbE9mZnNl
dCk7CisgICAgTGF5b3V0UG9pbnQgbnVtZXJhdG9yTG9jYXRpb24oaG9yaXpvbnRhbE9mZnNldChu
dW1lcmF0b3IoKSwgZWxlbWVudCgpLm51bWVyYXRvckFsaWdubWVudCgpKSwgdmVydGljYWxPZmZz
ZXQpOwogICAgIG51bWVyYXRvcigpLnNldExvY2F0aW9uKG51bWVyYXRvckxvY2F0aW9uKTsKIAog
ICAgIExheW91dFVuaXQgbnVtZXJhdG9yQXNjZW50ID0gYXNjZW50Rm9yQ2hpbGQobnVtZXJhdG9y
KCkpOwpAQCAtMjM3LDcgKzIwMCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OmxheW91
dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICAgICAgdmVydGlj
YWxPZmZzZXQgKz0gc3RkOjptYXgobV9saW5lVGhpY2tuZXNzIC8gMiArIG1fZGVub21pbmF0b3JH
YXBNaW4sIG1fZGVub21pbmF0b3JNaW5TaGlmdERvd24gLSBkZW5vbWluYXRvckFzY2VudCk7CiAg
ICAgfQogCi0gICAgTGF5b3V0UG9pbnQgZGVub21pbmF0b3JMb2NhdGlvbihob3Jpem9udGFsT2Zm
c2V0KGRlbm9taW5hdG9yKCksIG1fZGVub21pbmF0b3JBbGlnbiksIHZlcnRpY2FsT2Zmc2V0KTsK
KyAgICBMYXlvdXRQb2ludCBkZW5vbWluYXRvckxvY2F0aW9uKGhvcml6b250YWxPZmZzZXQoZGVu
b21pbmF0b3IoKSwgZWxlbWVudCgpLmRlbm9taW5hdG9yQWxpZ25tZW50KCkpLCB2ZXJ0aWNhbE9m
ZnNldCk7CiAgICAgZGVub21pbmF0b3IoKS5zZXRMb2NhdGlvbihkZW5vbWluYXRvckxvY2F0aW9u
KTsKIAogICAgIHZlcnRpY2FsT2Zmc2V0ID0gc3RkOjptYXgodmVydGljYWxPZmZzZXQgKyBkZW5v
bWluYXRvcigpLmxvZ2ljYWxIZWlnaHQoKSwgbV9hc2NlbnQgKyBkZW5vbWluYXRvckRlc2NlbnQp
OyAvLyBUaGlzIGlzIHRoZSBib3R0b20gb2Ygb3VyIHJlbmRlcmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCmluZGV4
IGI1NGRhODcuLjhmNGY1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lm
IEVOQUJMRShNQVRITUwpCiAKKyNpbmNsdWRlICJNYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVy
TWF0aE1MQmxvY2suaCIKIApAQCAtMzgsMTEgKzM5LDggQEAgY2xhc3MgUmVuZGVyTWF0aE1MRnJh
Y3Rpb24gZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgogICAgIFJl
bmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKIAotICAgIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Jj4obm9kZUZv
ck5vbkFub255bW91cygpKTsgfQogICAgIGZsb2F0IHJlbGF0aXZlTGluZVRoaWNrbmVzcygpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmYXVsdExpbmVUaGlja25lc3MgPyBtX2xpbmVUaGlja25lc3MgLyBt
X2RlZmF1bHRMaW5lVGhpY2tuZXNzIDogTGF5b3V0VW5pdCgwKTsgfQogCi0gICAgdm9pZCB1cGRh
dGVGcm9tRWxlbWVudCgpIGZpbmFsOwotCiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRo
TUxGcmFjdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTEZyYWN0aW9u
IjsgfQpAQCAtNTIsMTkgKzUwLDE1IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8aW50PiBmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBmaW5hbDsKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5l
bWJlbGxpc2hlZE9wZXJhdG9yKCkgZmluYWw7Ci0gICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgZmluYWw7CisKKyAgICBN
YXRoTUxGcmFjdGlvbkVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxNYXRoTUxGcmFjdGlvbkVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKICAg
ICBib29sIGlzU3RhY2soKSBjb25zdCB7IHJldHVybiAhbV9saW5lVGhpY2tuZXNzOyB9CiAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgUmVuZGVyQm94JiBudW1lcmF0b3IoKSBjb25zdDsK
ICAgICBSZW5kZXJCb3gmIGRlbm9taW5hdG9yKCkgY29uc3Q7Ci0gICAgZW51bSBGcmFjdGlvbkFs
aWdubWVudCB7Ci0gICAgICAgIEZyYWN0aW9uQWxpZ25tZW50Q2VudGVyLAotICAgICAgICBGcmFj
dGlvbkFsaWdubWVudExlZnQsCi0gICAgICAgIEZyYWN0aW9uQWxpZ25tZW50UmlnaHQKLSAgICB9
OwotICAgIEZyYWN0aW9uQWxpZ25tZW50IHBhcnNlQWxpZ25tZW50QXR0cmlidXRlKGNvbnN0IFN0
cmluZyYgdmFsdWUpOwotICAgIExheW91dFVuaXQgaG9yaXpvbnRhbE9mZnNldChSZW5kZXJCb3gm
LCBGcmFjdGlvbkFsaWdubWVudCk7CisgICAgTGF5b3V0VW5pdCBob3Jpem9udGFsT2Zmc2V0KFJl
bmRlckJveCYsIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQpOworICAg
IHZvaWQgdXBkYXRlTGF5b3V0UGFyYW1ldGVycygpOwogCiAgICAgTGF5b3V0VW5pdCBtX2FzY2Vu
dDsKICAgICBMYXlvdXRVbml0IG1fZGVmYXVsdExpbmVUaGlja25lc3MgeyAxIH07CkBAIC04Miw4
ICs3Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIExheW91dFVuaXQgbV9kZW5vbWluYXRvck1pblNo
aWZ0RG93bjsKICAgICAgICAgTGF5b3V0VW5pdCBtX2JvdHRvbVNoaWZ0RG93bjsKICAgICB9Owot
ICAgIEZyYWN0aW9uQWxpZ25tZW50IG1fbnVtZXJhdG9yQWxpZ24geyBGcmFjdGlvbkFsaWdubWVu
dENlbnRlciB9OwotICAgIEZyYWN0aW9uQWxpZ25tZW50IG1fZGVub21pbmF0b3JBbGlnbiB7IEZy
YWN0aW9uQWxpZ25tZW50Q2VudGVyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0t
IAoyLjguMQoK
</data>
<flag name="review"
          id="307432"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="307435"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>