<?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>130743</bug_id>
          
          <creation_ts>2014-03-25 15:09:47 -0700</creation_ts>
          <short_desc>WebCore portion to tell if audio is playing in a plugin process</short_desc>
          <delta_ts>2014-03-28 18:21:14 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>130746</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephanie Lewis">slewis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994360</commentid>
    <comment_count>0</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2014-03-25 15:09:47 -0700</bug_when>
    <thetext>Listen to a CoreAudio property to tell if audio hardware is playing audio in the current process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994361</commentid>
    <comment_count>1</comment_count>
      <attachid>227804</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2014-03-25 15:12:26 -0700</bug_when>
    <thetext>Created attachment 227804
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994364</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-25 15:13:56 -0700</bug_when>
    <thetext>Attachment 227804 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:4:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/WebCore/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp:34:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp:49:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp:50:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp:55:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/audio/AudioHardwareListener.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 7 in 7 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>994403</commentid>
    <comment_count>3</comment_count>
      <attachid>227804</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-03-25 15:35:29 -0700</bug_when>
    <thetext>Comment on attachment 227804
patch

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

&gt; Source/WebCore/platform/audio/AudioHardwareListener.h:47
&gt; +    static bool audioHardwareListenerIsSupported();

Is there a reason this needs to be a static method?  Here&apos;s an alternative idea:

&gt; Source/WebCore/platform/audio/AudioHardwareListener.h:48
&gt; +    bool isHardwareActive() const { return m_active; }

Consider this instead:

enum HardwareActivityType {
    Unknown,
    IsActive,
    IsInactive,
};
HardwareActivityType hardwareActivity() const { return m_activity; }

&gt; Source/WebCore/platform/audio/AudioHardwareListener.h:54
&gt; +    bool m_active;

...and:

HardwareActivityType m_activity;

&gt; Source/WebCore/platform/audio/AudioHardwareListener.cpp:46
&gt; +    , m_active(false)

...and:

    , m_active(Unknown)

This way, we don&apos;t neeed audioHardwareListenerIsSupported(), but instead `listener-&gt;hardwareActivity()` will return `Unknown` when hardware activity listening is unavailable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995532</commentid>
    <comment_count>4</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2014-03-28 18:21:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/166442</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227804</attachid>
            <date>2014-03-25 15:12:26 -0700</date>
            <delta_ts>2014-03-25 15:35:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Notification-handler-for-telling-if-audio-hardware-i.patch</filename>
            <type>text/plain</type>
            <size>22730</size>
            <attacher name="Stephanie Lewis">slewis</attacher>
            
              <data encoding="base64">RnJvbSBlYTkwNTM5ZmY2NjI2M2Y1MDViZjJmOTcwYzg5M2RkY2JkNjZhM2ZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVwaGFuaWUgTGV3aXMgPHNsZXdpc0BhcHBsZS5jb20+CkRh
dGU6IEZyaSwgMjEgTWFyIDIwMTQgMTc6MTc6MTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBOb3Rp
ZmljYXRpb24gaGFuZGxlciBmb3IgdGVsbGluZyBpZiBhdWRpbyBoYXJkd2FyZSBpcyBhY3RpdmUu
CiAJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDc0MwoKUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpOb3Qgd2ViLWV4cG9zZWQgc28gbm8gZWFzeSB3YXkgdG8g
dGVzdC4KCglMaXN0ZW4gdG8gQ29yZUF1ZGlvIHRvIHNlZSBpZiBhdWRpbyBoYXJkd2FyZSBpcyBh
Y3RpdmUgaW4gdGhlIGN1cnJlbnQgcHJvY2Vzcy4KCiogV2ViQ29yZS5leHAuaW46CiogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgoqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvSGFyZHdh
cmVMaXN0ZW5lci5jcHA6IEFkZGVkLgooV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpj
cmVhdGUpOgooV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpBdWRpb0hhcmR3YXJlTGlz
dGVuZXIpOgoqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oOiBBZGRlZC4K
KFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6Q2xpZW50Ojp+Q2xpZW50KToKKFdlYkNv
cmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6fkF1ZGlvSGFyZHdhcmVMaXN0ZW5lcik6CihXZWJD
b3JlOjpBdWRpb0hhcmR3YXJlTGlzdGVuZXI6OmlzSGFyZHdhcmVBY3RpdmUpOgoqIHBsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMuY3BwOiBBZGRlZC4KKFdlYkNvcmU6
OmlzQXVkaW9IYXJkd2FyZVByb2Nlc3NSdW5uaW5nKToKKFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVM
aXN0ZW5lcjo6Y3JlYXRlKToKKFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYzo6Y3Jl
YXRlKToKKFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYzo6QXVkaW9IYXJkd2FyZUxp
c3RlbmVyTWFjKToKKFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYzo6fkF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lck1hYyk6CihXZWJDb3JlOjpBdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWM6OnNl
dEhhcmR3YXJlQWN0aXZlKToKKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyTWFjLmg6IEFkZGVkLgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgIDI5ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAxNiArKysKIC4uLi9wbGF0Zm9ybS9hdWRpby9B
dWRpb0hhcmR3YXJlTGlzdGVuZXIuY3BwICAgICAgIHwgIDUxICsrKysrKysrCiAuLi4vV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCB8ICA1OSArKysrKysrKysK
IC4uLi9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcCAgICAgICAgIHwgMTM1
ICsrKysrKysrKysrKysrKysrKysrKwogLi4uL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0hhcmR3
YXJlTGlzdGVuZXJNYWMuaCAgfCAgNTQgKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDM0NiBp
bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvSGFyZHdh
cmVMaXN0ZW5lck1hYy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmgKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTcwNzIyYy4uOTI5YWZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE0LTAzLTI1
ICBTdGVwaGFuaWUgTGV3aXMgIDxzbGV3aXNAYXBwbGUuY29tPgorCisgICAgICAgIE5vdGlmaWNh
dGlvbiBoYW5kbGVyIGZvciB0ZWxsaW5nIGlmIGF1ZGlvIGhhcmR3YXJlIGlzIGFjdGl2ZS4KKwlo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzQzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm90IHdlYi1leHBvc2VkIHNv
IG5vIGVhc3kgd2F5IHRvIHRlc3QuCisKKwlMaXN0ZW4gdG8gQ29yZUF1ZGlvIHRvIHNlZSBpZiBh
dWRpbyBoYXJkd2FyZSBpcyBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgcHJvY2Vzcy4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0hhcmR3YXJlTGlzdGVuZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6QXVkaW9IYXJk
d2FyZUxpc3RlbmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0hhcmR3YXJlTGlz
dGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0hhcmR3YXJlTGlzdGVuZXI6
OkNsaWVudDo6fkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0hhcmR3YXJlTGlzdGVu
ZXI6On5BdWRpb0hhcmR3YXJlTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9IYXJk
d2FyZUxpc3RlbmVyOjppc0hhcmR3YXJlQWN0aXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjppc0F1ZGlvSGFyZHdhcmVQcm9jZXNzUnVubmluZyk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0hhcmR3YXJlTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0hh
cmR3YXJlTGlzdGVuZXJNYWM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0hhcmR3
YXJlTGlzdGVuZXJNYWM6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWM6On5BdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjOjpzZXRIYXJkd2Fy
ZUFjdGl2ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1hYy5oOiBBZGRlZC4KKwogMjAxNC0wMy0yNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXph
Y2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb246IEFYOiBEb24ndCBleHBvc2Ugcm9s
ZSBvciBub3RpZmljYXRpb25zIGZvciBpbnZhbGlkIG1lbnVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDFkMWY3ZDUuLjNmOGMzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04NDcsNiArODQ3
LDggQEAgX19aTjdXZWJDb3JlMjBtYWtlUkdCQTMyRnJvbUZsb2F0c0VmZmZmCiBfX1pON1dlYkNv
cmUyMHByZXZpb3VzTGluZVBvc2l0aW9uRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FaU5TXzEyRWRp
dGFibGVUeXBlRQogX19aTjdXZWJDb3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTIwdG9VSW50MzJFbmZvcmNlUmFuZ2VFUE4zSlNDOUV4ZWNTdGF0
ZUVOUzBfN0pTVmFsdWVFCitfX1pON1dlYkNvcmUyMUF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjMyYXVk
aW9IYXJkd2FyZUxpc3RlbmVySXNTdXBwb3J0ZWRFdgorX19aTjdXZWJDb3JlMjFBdWRpb0hhcmR3
YXJlTGlzdGVuZXI2Y3JlYXRlRVJOUzBfNkNsaWVudEUKIF9fWk43V2ViQ29yZTIxQmFja0Zvcndh
cmRDb250cm9sbGVyMTFpdGVtQXRJbmRleEVpCiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29u
dHJvbGxlcjZnb0JhY2tFdgogX19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXI5Z29G
b3J3YXJkRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA1YjFjNzM1Li5jMWMyNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NTA1LDYgKzU1MDUsMTAgQEAK
IAkJQ0QxRTczNDcxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUU3MzQ2
MTY3QkM3OEUwMDlBODg1RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAgKi87IH07CiAJ
CUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFMjE0NTc2NzU4
MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRDI3RjZFNzE0NTc3
MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRp
YUNvbnRyb2xsZXIuY3BwICovOyB9OworCQlDRDJGNEEyMzE4RDg5RjcwMDA2Mzc0NkQgLyogQXVk
aW9IYXJkd2FyZUxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMkY0QTIxMThEODlGNzAwMDYzNzQ2RCAvKiBBdWRpb0hhcmR3YXJlTGlz
dGVuZXIuY3BwICovOyB9OworCQlDRDJGNEEyNDE4RDg5RjcwMDA2Mzc0NkQgLyogQXVkaW9IYXJk
d2FyZUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDJGNEEyMjE4RDg5RjcwMDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QyRjRB
MjcxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDJGNEEyNTE4RDhBMzQ5
MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcCAqLzsgfTsKKwkJQ0QyRjRB
MjgxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyRjRBMjYxOEQ4QTM0OTAw
NjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oICovOyB9OwogCQlDRDMzNkY2MTE3
RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzM2RjVGMTdGOUY2NDcwMERE
RENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tICovOyB9OwogCQlDRDMzNkY2MjE3
RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZGNjAxN0Y5RjY0NzAwRERE
Q0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCAqLzsgfTsKIAkJQ0QzMzZGNjQxN0ZB
MEE0RDAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2MzE3RkEwQTREMDBERERDRDAgLyog
VmlkZW9UcmFja1ByaXZhdGVBVkYuaCAqLzsgfTsKQEAgLTEyODAxLDYgKzEyODA1LDEwIEBACiAJ
CUNEMjdGNkUzMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhQ29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI3RjZFNjE0NTc3MEQzMDA3ODIw
N0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lZGlhQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMkY0QTIxMThEODlGNzAwMDYzNzQ2RCAvKiBBdWRpb0hhcmR3YXJlTGlzdGVuZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9IYXJkd2FyZUxpc3RlbmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyRjRBMjIxOEQ4OUY3MDAwNjM3
NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0QyRjRBMjUxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1h
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb0hhcmR3YXJl
TGlzdGVuZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDJGNEEyNjE4
RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDMyQTE4OTE4NEVCNDZBMDAyOUIxQkIgLyogbWVkaWFD
b250cm9sc2lPUy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IG1l
ZGlhQ29udHJvbHNpT1MuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMzM2RjVG
MTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzMzZGNjAxN0Y5RjY0NzAwRERE
Q0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjI3MTcsNiArMjI3MjUsOCBAQAogCQkJCUZEMzE2MDc5MTJCMDI2Rjcw
MEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggKi8sCiAJCQkJRkQ1MzczNTAxMzdCNjUxODAwMDA4RENF
IC8qIFplcm9Qb2xlLmNwcCAqLywKIAkJCQlGRDUzNzM1MTEzN0I2NTE4MDAwMDhEQ0UgLyogWmVy
b1BvbGUuaCAqLywKKwkJCQlDRDJGNEEyMTE4RDg5RjcwMDA2Mzc0NkQgLyogQXVkaW9IYXJkd2Fy
ZUxpc3RlbmVyLmNwcCAqLywKKwkJCQlDRDJGNEEyMjE4RDg5RjcwMDA2Mzc0NkQgLyogQXVkaW9I
YXJkd2FyZUxpc3RlbmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGF1ZGlvOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIyNzMyLDYgKzIyNzQyLDggQEAKIAkJCQlDRDU0REU0OTE3
NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCAqLywKIAkJCQlGRDMxNjBCQTEy
QjAyNzJBMDBDMUEzNTkgLyogRkZURnJhbWVNYWMuY3BwICovLAogCQkJCUNENTRERTQ1MTc0NjhC
NkYwMDVFNUIzNiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLywKKwkJCQlDRDJGNEEy
NTE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcCAqLywKKwkJ
CQlDRDJGNEEyNjE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0yMjg0MCw2ICsyMjg1Miw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMkY0QTI0MThEODlGNzAwMDYzNzQ2
RCAvKiBBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVF
MTZEMkMzNzQwMDAyNkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkU0QUFERUYxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50QmFj
a2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFi
c3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI1OTA3LDYgKzI1OTIwLDcgQEAKIAkJ
CQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjFBRDRFNzQxM0ExMkE0NjAwODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QjVBNDkxODBFMTM4QjAwOEI4RTY1IC8qIFRleHRUcmFja01l
ZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDJGNEEyODE4RDhBMzQ5MDA2Mzc0NkQg
LyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTg3NzBG
MTEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNjU4
RkYwRUE5MjQ4QTAwN0U0NTMzIC8qIFRoZW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEM5OTE5
RjBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMjY4OTUs
NiArMjY5MDksNyBAQAogCQkJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUEzRDU4RTEwMUMxNTJE
MDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZEMDZERkE1MTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyRjRBMjcxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTY3RUJGNTEwMjk2
MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFGNENFRTkxOEJDMzUwMTAwQkMyRDM0IC8qIERlZmF1bHRWaXNpdGVkTGlu
a1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDJCMTJCMDI2NzYwMEMxQTM1OSAv
KiBEZWxheURTUEtlcm5lbC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NjE3LDYgKzI3NjMyLDcg
QEAKIAkJCQlBNTg0RkUzODE4NjREQUMxMDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3RD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGOUI2RTAwQkEwRkI3MjAwODU0MDY0IC8q
IEpTQ29tbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OUFDOTIxODEwOTk0NUM4MDAyMTI2
NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMkY0QTIz
MThEODlGNzAwMDYzNzQ2RCAvKiBBdWRpb0hhcmR3YXJlTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkRBMTVFQkQxMkIwM0YwQjAwM0E1ODNBIC8qIEpTQ29udm9sdmVyTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRTZGRDQ4RDBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGlu
YXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA3MDVEODA5RTBDOUI3MDBCMTdGRTQgLyog
SlNDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOGEwNjk1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lci5jcHAKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRp
b0hhcmR3YXJlTGlzdGVuZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgIVBMQVRG
T1JNKE1BQykKK1Bhc3NSZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBBdWRpb0hhcmR3YXJl
TGlzdGVuZXI6OmNyZWF0ZShDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcihjbGllbnQpKTsKK30KKyAgICAKK2Jvb2wgQXVkaW9I
YXJkd2FyZUxpc3RlbmVyOjphdWRpb0hhcmR3YXJlTGlzdGVuZXJJc1N1cHBvcnRlZCgpCit7Cisg
ICAgcmV0dXJuIGZhbHNlOworfTsKKworI2VuZGlmCisKK0F1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6
QXVkaW9IYXJkd2FyZUxpc3RlbmVyKENsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xp
ZW50KQorICAgICwgbV9hY3RpdmUoZmFsc2UpCit7CisgICAgCit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVjNGIyNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lci5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lcl9oCisjZGVmaW5lIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcl9oCisKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQXVkaW9IYXJkd2FyZUxpc3RlbmVyIDogcHVibGljIFJlZkNvdW50
ZWQ8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiB7CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgYXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpID0gMDsKKyAgICB9Owor
CisgICAgCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBjcmVh
dGUoQ2xpZW50Jik7CisgICAgdmlydHVhbCB+QXVkaW9IYXJkd2FyZUxpc3RlbmVyKCkgeyB9Cisg
ICAgCisgICAgc3RhdGljIGJvb2wgYXVkaW9IYXJkd2FyZUxpc3RlbmVySXNTdXBwb3J0ZWQoKTsK
KyAgICBib29sIGlzSGFyZHdhcmVBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZTsgfQor
Citwcm90ZWN0ZWQ6CisgICAgQXVkaW9IYXJkd2FyZUxpc3RlbmVyKENsaWVudCYpOworCisgICAg
Q2xpZW50JiBtX2NsaWVudDsKKyAgICBib29sIG1fYWN0aXZlOworfTsKKworfQorCisjZW5kaWYg
Ly8gQXVkaW9IYXJkd2FyZUxpc3RlbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk0NDUyOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0hhcmR3YXJlTGlzdGVu
ZXJNYWMuY3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oIgorCisjaWYgUExBVEZP
Uk0oTUFDKQorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCitlbnVtIHsKKyAgICBrQXVkaW9IYXJk
d2FyZVByb3BlcnR5UHJvY2Vzc0lzUnVubmluZyA9ICdwcnVuJworfTsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgYm9vbCBpc0F1ZGlvSGFyZHdhcmVQcm9jZXNzUnVubmluZygpCit7
CisgICAgaWYgKCFBdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWM6OmF1ZGlvSGFyZHdhcmVMaXN0ZW5l
cklzU3VwcG9ydGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBBdWRpb09i
amVjdFByb3BlcnR5QWRkcmVzcyBwcm9wZXJ0eUFkZHJlc3MgPSB7CisgICAgICAgIGtBdWRpb0hh
cmR3YXJlUHJvcGVydHlQcm9jZXNzSXNSdW5uaW5nLAorICAgICAgICBrQXVkaW9PYmplY3RQcm9w
ZXJ0eVNjb3BlR2xvYmFsLAorICAgICAgICBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0
ZXIKKyAgICB9OworCVVJbnQzMiByZXN1bHQgPSAwOworCVVJbnQzMiByZXN1bHRTaXplID0gc2l6
ZW9mKFVJbnQzMik7CisKKyAgICBpZiAoQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoa0F1ZGlv
T2JqZWN0U3lzdGVtT2JqZWN0LCAmcHJvcGVydHlBZGRyZXNzLCAwLCAwLCAmcmVzdWx0U2l6ZSwg
JnJlc3VsdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworCXJldHVybiByZXN1bHQ7Cit9Cisg
ICAgCitQYXNzUmVmUHRyPEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcj4gQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIEF1ZGlvSGFyZHdhcmVM
aXN0ZW5lck1hYzo6Y3JlYXRlKGNsaWVudCk7Cit9CisKK2Jvb2wgQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyOjphdWRpb0hhcmR3YXJlTGlzdGVuZXJJc1N1cHBvcnRlZCgpCit7CisgICAgcmV0dXJuIEF1
ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYzo6YXVkaW9IYXJkd2FyZUxpc3RlbmVySXNTdXBwb3J0ZWQo
KTsKK30KKworUGFzc1JlZlB0cjxBdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWM+IEF1ZGlvSGFyZHdh
cmVMaXN0ZW5lck1hYzo6Y3JlYXRlKENsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjKGNsaWVudCkpOworfQorCitBdWRpb0hh
cmR3YXJlTGlzdGVuZXJNYWM6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYyhDbGllbnQmIGNsaWVu
dCkKKyAgICA6IEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcihjbGllbnQpCit7CisgICAgbV9hY3RpdmUg
PSBpc0F1ZGlvSGFyZHdhcmVQcm9jZXNzUnVubmluZygpOworICAgIGlmICghYXVkaW9IYXJkd2Fy
ZUxpc3RlbmVySXNTdXBwb3J0ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQXVkaW9PYmpl
Y3RQcm9wZXJ0eUFkZHJlc3MgcHJvcGVydHlBZGRyZXNzID0geworICAgICAgICBrQXVkaW9IYXJk
d2FyZVByb3BlcnR5UHJvY2Vzc0lzUnVubmluZywKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVy
dHlTY29wZUdsb2JhbCwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVy
CisgICAgfTsKKworICAgIG1fYmxvY2sgPSBCbG9ja19jb3B5KF4oVUludDMyLCBjb25zdCBBdWRp
b09iamVjdFByb3BlcnR5QWRkcmVzc1tdKSB7CisgICAgICAgIHNldEhhcmR3YXJlQWN0aXZlKGlz
QXVkaW9IYXJkd2FyZVByb2Nlc3NSdW5uaW5nKCkpOworICAgIH0pOworCisgICAgQXVkaW9PYmpl
Y3RBZGRQcm9wZXJ0eUxpc3RlbmVyQmxvY2soa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmcHJv
cGVydHlBZGRyZXNzLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtX2Jsb2NrKTsKK30KKwor
QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjOjp+QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjKCkKK3sK
KyAgICBpZiAoIWF1ZGlvSGFyZHdhcmVMaXN0ZW5lcklzU3VwcG9ydGVkKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBwcm9wZXJ0eUFkZHJl
c3MgPSB7CisgICAgICAgIGtBdWRpb0hhcmR3YXJlUHJvcGVydHlQcm9jZXNzSXNSdW5uaW5nLAor
ICAgICAgICBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLAorICAgICAgICBrQXVkaW9P
YmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIKKyAgICB9OworCisgICAgQXVkaW9PYmplY3RBZGRQ
cm9wZXJ0eUxpc3RlbmVyQmxvY2soa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmcHJvcGVydHlB
ZGRyZXNzLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtX2Jsb2NrKTsKKworICAgIEJsb2Nr
X3JlbGVhc2UobV9ibG9jayk7Cit9CisKK2Jvb2wgQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjOjph
dWRpb0hhcmR3YXJlTGlzdGVuZXJJc1N1cHBvcnRlZCgpCit7CisgICAgQXVkaW9PYmplY3RQcm9w
ZXJ0eUFkZHJlc3MgcHJvcGVydHlBZGRyZXNzID0geworICAgICAgICBrQXVkaW9IYXJkd2FyZVBy
b3BlcnR5UHJvY2Vzc0lzUnVubmluZywKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29w
ZUdsb2JhbCwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyCisgICAg
fTsKKyAgICAKKyAgICByZXR1cm4gQXVkaW9PYmplY3RIYXNQcm9wZXJ0eShrQXVkaW9PYmplY3RT
eXN0ZW1PYmplY3QsICZwcm9wZXJ0eUFkZHJlc3MpOworfQorCit2b2lkIEF1ZGlvSGFyZHdhcmVM
aXN0ZW5lck1hYzo6c2V0SGFyZHdhcmVBY3RpdmUoYm9vbCBhY3RpdmUpCit7CisgICAgaWYgKGFj
dGl2ZSA9PSBtX2FjdGl2ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYWN0aXZlID0gYWN0aXZl
OworICAgIAorCisgICAgaWYgKGFjdGl2ZSkKKyAgICAgICAgbV9jbGllbnQuYXVkaW9IYXJkd2Fy
ZURpZEJlY29tZUFjdGl2ZSgpOworICAgIGVsc2UKKyAgICAgICAgbV9jbGllbnQuYXVkaW9IYXJk
d2FyZURpZEJlY29tZUluYWN0aXZlKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNjMjA3ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0hh
cmR3YXJlTGlzdGVuZXJNYWMuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBBdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWNfaAorI2RlZmluZSBBdWRpb0hhcmR3YXJlTGlzdGVu
ZXJNYWNfaAorCisjaW5jbHVkZSAiQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmgiCisKKyNpZiBQTEFU
Rk9STShNQUMpCisKKyNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYyA6IHB1Ymxp
YyBBdWRpb0hhcmR3YXJlTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXVEY6OlBhc3NS
ZWZQdHI8QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjPiBjcmVhdGUoQ2xpZW50Jik7CisgICAgc3Rh
dGljIGJvb2wgYXVkaW9IYXJkd2FyZUxpc3RlbmVySXNTdXBwb3J0ZWQoKTsKKworcHJvdGVjdGVk
OgorICAgIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYyhDbGllbnQmKTsKKyAgICB2aXJ0dWFsIH5B
dWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMoKTsKKworICAgIHZvaWQgc2V0SGFyZHdhcmVBY3RpdmUo
Ym9vbCk7CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUxpc3RlbmVyQmxvY2sgbV9ibG9jazsKK307
CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2VuZGlmIC8vIEF1ZGlvSGFyZHdh
cmVMaXN0ZW5lck1hY19oCi0tIAoxLjguNS4yIChBcHBsZSBHaXQtNDgpCgo=
</data>
<flag name="review"
          id="252042"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
      

    </bug>

</bugzilla>