<?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>96228</bug_id>
          
          <creation_ts>2012-09-09 22:41:36 -0700</creation_ts>
          <short_desc>Simplify WebKit2 XPC service backend now that I know it doesn&apos;t need to soft link WebKit2.framework</short_desc>
          <delta_ts>2012-09-10 00:04:57 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>715725</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-09-09 22:41:36 -0700</bug_when>
    <thetext>Simplify WebKit2 XPC service backend now that I know it doesn&apos;t need to soft link WebKit2.framework</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715729</commentid>
    <comment_count>1</comment_count>
      <attachid>163042</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-09-09 22:55:33 -0700</bug_when>
    <thetext>Created attachment 163042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715733</commentid>
    <comment_count>2</comment_count>
      <attachid>163043</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-09-09 23:03:35 -0700</bug_when>
    <thetext>Created attachment 163043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715734</commentid>
    <comment_count>3</comment_count>
      <attachid>163043</attachid>
    <who name="">mitz</who>
    <bug_when>2012-09-09 23:13:25 -0700</bug_when>
    <thetext>Comment on attachment 163043
Patch

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

&gt; Source/WebKit2/WebProcess/mac/WebProcessXPCServiceMain.mm:52
&gt; +            assert(type == XPC_TYPE_DICTIONARY);

Now that this is in the framework, I think you can use ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715760</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-09-10 00:04:57 -0700</bug_when>
    <thetext>Committed r128021: &lt;http://trac.webkit.org/changeset/128021&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163042</attachid>
            <date>2012-09-09 22:55:33 -0700</date>
            <delta_ts>2012-09-09 23:03:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96228-20120909225511.patch</filename>
            <type>text/plain</type>
            <size>27973</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODAxNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA5LTA5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGxpZnkgV2ViS2l0MiBYUEMgc2Vy
dmljZSBiYWNrZW5kIG5vdyB0aGF0IEkga25vdyBpdCBkb2Vzbid0IG5lZWQgdG8gc29mdCBsaW5r
IFdlYktpdDIuZnJhbWV3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjIyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlIHNvZnQgbGluayB0aGUgbm9uLVhQQyBzZXJ2aWNlIFdlYlByb2Nlc3MgYmFj
a2VuZCB0byB0aGUgV2ViS2l0MiBmcmFtZXdvcmsgdG8KKyAgICAgICAgZW5zdXJlIHRoYXQgd2Ug
Y2FuIGNsb3NlIGFsbCB0aGUgbmVjZXNzYXJ5IGZpbGUgZGVzY3JpcHRvcnMgYXQgbGF1bmNoLCB3
aXRob3V0CisgICAgICAgIGZlYXIgdGhhdCB3ZSB3aWxsIGJlIGNsb3Npbmcgb25lIHdlIG9wZW4g
d2hpbGUgaW5pdGlhbGl6aW5nIFdlYktpdDIgb3Igb25lIG9mIGl0cworICAgICAgICBkZXBlbmRl
bmNpZXMuIFNpbmNlIHdlIGRvbid0IG5lZWQgdG8gY2xvc2UgZmlsZSBkZXNjcmlwdG9ycyBpbiB0
aGUgWFBDIHNlcnZpY2UgCisgICAgICAgIGJhY2tlbmQsIHdlIGRvbid0IG5lZWQgdG8gc29mdCBs
aW5rISBXaGlsZSBoZXJlLCBhbHNvIGRvIHNvbWUgY2xlYW51cCBhbmQgY29kZQorICAgICAgICBz
aGFyaW5nLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViS2l0MlNlcnZpY2UueGNjb25m
aWc6CisgICAgICAgIExpbmsgdGhlIFhQQyBzZXJ2aWNlIGRpcmVjdGx5IHRvIHRoZSBXZWJLaXQy
IGZyYW1ld29yay4KKworICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xh
dW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpsYXVuY2hYUENTZXJ2aWNlKToKKyAgICAg
ICAgV2UgZG9uJ3QgbmVlZCB0byBzZW5kIHRoZSBmcmFtZXdvcmsgZXhlY3V0YWJsZSBwYXRoIGFu
eW1vcmUgKGl0IHdhcyB1c2VkIGZvciB0aGUKKyAgICAgICAgc29mdCBsaW5raW5nKSwgYnV0IHdl
IGRvIG5lZWQgdGhlIGNsaWVudCBpZGVudGlmaWVyLgorICAgICAgICAKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuIFJl
bW92ZSB0aGUgZXhwbGljaXQgbGlua2luZyBzdGFnZSBmcm9tIHRoZSBXZWJLaXQyU2VydmljZSB0
YXJnZXQsCisgICAgICAgIGFzIHdlIG5vdyBkbyBpdCBmcm9tIHRoZSB4Y2NvbmZpZyBmaWxlLgor
CisgICAgICAgICogV2ViS2l0MlNlcnZpY2UvTWFpbk1hY1NlcnZpY2UubW06CisgICAgICAgIE5v
dyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gc29mdCBsaW5rLCBqdXN0IG1ha2UgdGhpcyBhIHN0dWIg
dGhhdCBjYWxscyBpbW1lZGlhdGVseQorICAgICAgICBpbnRvIHRoZSBXZWJLaXQyIGZyYW1ld29y
ay4KKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxp
emF0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0
aWFsaXphdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKyAgICAgICAgTW92ZSBpbml0aWFsaXphdGlvbiB0aGF0IGlzIGNvbW1vbiBiZXR3ZWVu
IHRoZSBYUEMgYW5kIG5vbi1YUEMgYmFja2VuZHMgaGVyZS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvbWFjL1dlYlByb2Nlc3NNYWluTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
TWFpbik6CisgICAgICAgIFJlbW92ZSBYUEMgYmFja2VuZCByZWxhdGVkIGNvZGUuIFVzZSBuZXcg
c2hhcmVkIEluaXRpYWxpemVXZWJQcm9jZXNzIGZ1bmN0aW9uLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9tYWMvV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLmg6IEFkZGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5tbTogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYktpdDJTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYlByb2Nl
c3NYUENTZXJ2aWNlTWFpbik6CisgICAgICAgIE1vdmUgWFBDIHNlcnZpY2UgYmFja2VuZCBpbml0
aWFsaXphdGlvbiBoZXJlLgorCiAyMDEyLTA5LTA5ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVjdC9nZXRQaXhlbFNuYXBwZWRS
ZWN0IGFuZCByZW1vdmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdApJbmRleDogU291cmNlL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0MlNlcnZpY2UueGNjb25maWcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0MlNlcnZpY2UueGNjb25maWcJKHJl
dmlzaW9uIDEyODAwMikKKysrIFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDJT
ZXJ2aWNlLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwzICszOCw1IEBAIEVYQ0xVREVE
X1NPVVJDRV9GSUxFX05BTUVTX1Byb2R1Y3Rpb24gPSAKIAogV1JBUFBFUl9FWFRFTlNJT04gPSB4
cGM7CiBNQUNIX09fVFlQRSA9IG1oX2V4ZWN1dGU7CisKK09USEVSX0xERkxBR1MgPSAtZnJhbWV3
b3JrIFdlYktpdDIgJChPVEhFUl9MREZMQUdTKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
CShyZXZpc2lvbiAxMjgwMDMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDEwICsxMDUs
MTMgQEAgc3RhdGljIHZvaWQgbGF1bmNoWFBDU2VydmljZShjb25zdCBQcm9jZQogICAgIC8vIElu
c2VydCBhIHNlbmQgcmlnaHQgc28gd2UgY2FuIHNlbmQgdG8gaXQuCiAgICAgbWFjaF9wb3J0X2lu
c2VydF9yaWdodChtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQb3J0LCBsaXN0ZW5pbmdQb3J0
LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CiAKKyAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRp
ZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CisgICAgQ1N0
cmluZyBjbGllbnRJZGVudGlmaWVyID0gYnVuZGxlSWRlbnRpZmllciA/IFN0cmluZyhbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKS51dGY4KCkgOiAqX05TR2V0UHJvZ25h
bWUoKTsKKwogICAgIHhwY19vYmplY3RfdCBib290U3RyYXBNZXNzYWdlID0geHBjX2RpY3Rpb25h
cnlfY3JlYXRlKDAsIDAsIDApOwogICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcoYm9vdFN0
cmFwTWVzc2FnZSwgIm1lc3NhZ2UtbmFtZSIsICJib290c3RyYXAiKTsKLSAgICB4cGNfZGljdGlv
bmFyeV9zZXRfc3RyaW5nKGJvb3RTdHJhcE1lc3NhZ2UsICJmcmFtZXdvcmstZXhlY3V0YWJsZS1w
YXRoIiwgW1tbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0
MiJdIGV4ZWN1dGFibGVQYXRoXSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dKTsKICAgICB4cGNf
ZGljdGlvbmFyeV9zZXRfbWFjaF9zZW5kKGJvb3RTdHJhcE1lc3NhZ2UsICJzZXJ2ZXItcG9ydCIs
IGxpc3RlbmluZ1BvcnQpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcoYm9vdFN0cmFw
TWVzc2FnZSwgImNsaWVudC1pZGVudGlmaWVyIiwgY2xpZW50SWRlbnRpZmllci5kYXRhKCkpOwog
CiAgICAgdGhhdC0+cmVmKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyODAwMikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNTgxLDcgKzU4MSw2IEBACiAJCUJDMzNERDY4MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1i
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzNE
RDY3MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCAqLzsgfTsKIAkJQkMzM0UwRDExMjQw
OEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzNFMENGMTI0MDhFODYwMDM2MEYz
RiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmggKi87IH07CiAJCUJDMzNFMEQyMTI0MDhF
ODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzNFMEQwMTI0MDhFODYwMDM2MEYz
RiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCAqLzsgfTsKLQkJQkMzREU0NjkxNUE5
MTc2MzAwOEQyNkZDIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzREU0NjgxNUE5MTc2MzAwOEQyNkZDIC8q
IEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQlCQzNERTQ3MjE1QTkxNzY0MDA4RDI2RkMg
LyogTWFpbk1hY1NlcnZpY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzNERTQ3MTE1QTkxNzY0MDA4RDI2RkMgLyogTWFpbk1hY1NlcnZpY2UubW0g
Ki87IH07CiAJCUJDNDA3NUYzMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0FycmF5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDA3NUQ3MTI0RkYwMjcw
MDY4RjIwQSAvKiBXS0FycmF5LmNwcCAqLzsgfTsKIAkJQkM0MDc1RjQxMjRGRjAyNzAwNjhGMjBB
IC8qIFdLQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDNDA3NUQ4MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0FycmF5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc5Niw2ICs3OTUsMTAgQEAKIAkJ
QkNENTk4QUMxMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzU3RvcmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDU5OEFBMTEyQjdGREYw
MEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggKi87IH07CiAJCUJDRDU5OEFEMTEyQjdG
REYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDU5OEFCMTEyQjdGREYwMEVDOEMyMyAvKiBX
ZWJQcmVmZXJlbmNlc1N0b3JlLmNwcCAqLzsgfTsKIAkJQkNEQjg2QzExMjAwRkI5NzAwNzI1NEJF
IC8qIFdlYlVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNEQjg2QzAxMjAwRkI5NzAwNzI1NEJFIC8qIFdlYlVSTC5oICovOyB9OworCQlCQ0RDMzA4
NzE1RkQ2QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEQzMwODUxNUZENkE4QjAw
NkI2Njk1IC8qIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbSAqLzsgfTsKKwkJQkNEQzMwODgx
NUZENkE4QjAwNkI2Njk1IC8qIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEQzMwODYxNUZENkE4QjAwNkI2
Njk1IC8qIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5oICovOyB9OworCQlCQ0RDMzA4QjE1RkQ2
Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEQzMwODkxNUZENkNEMTAwNkI2Njk1
IC8qIFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5tbSAqLzsgfTsKKwkJQkNEQzMwOEMxNUZENkNE
MTAwNkI2Njk1IC8qIFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEQzMwOEExNUZENkNEMTAwNkI2Njk1IC8q
IFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5oICovOyB9OwogCQlCQ0REQjMxNzEyNEVCRDEzMDA0
OEQxM0MgLyogV0tCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0REQjMxNjEyNEVCRDEzMDA0OEQxM0MgLyogV0tCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQ0REQjMyQjEyNEVDMkFCMDA0
OEQxM0MgLyogV0tTaGFyZWRBUElDYXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0REQjMyQTEyNEVDMkFCMDA0OEQxM0MgLyogV0tTaGFyZWRBUElD
YXN0LmggKi87IH07CiAJCUJDRERCMzJEMTI0RUMyRTEwMDQ4RDEzQyAvKiBXS0FQSUNhc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRERCMzJDMTI0
RUMyRTEwMDQ4RDEzQyAvKiBXS0FQSUNhc3QuaCAqLzsgfTsKQEAgLTE4NzMsNiArMTg3NiwxMCBA
QAogCQlCQ0Q1OThBQTExMkI3RkRGMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcmVmZXJlbmNlc1N0b3JlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDU5OEFCMTEyQjdGREYwMEVDOEMyMyAvKiBX
ZWJQcmVmZXJlbmNlc1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlByZWZlcmVuY2VzU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0RCODZDMDEyMDBGQjk3MDA3MjU0QkUgLyogV2ViVVJMLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
Q0RDMzA4NTE1RkQ2QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0luaXRpYWxp
emF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0RDMzA4NjE1RkQ2QThC
MDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0RDMzA4OTE1RkQ2Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vzc1hQ
Q1NlcnZpY2VNYWluLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQ0RDMzA4QTE1RkQ2Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFp
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0REQjMxNjEyNEVCRDEzMDA0OEQx
M0MgLyogV0tCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0REQjMyQTEyNEVDMkFCMDA0OEQxM0Mg
LyogV0tTaGFyZWRBUElDYXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
U2hhcmVkQVBJQ2FzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0REQjMyQzEy
NEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLQVBJQ2FzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2Mywx
NCArMjA3MCw2IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07Ci0JCUJDM0RFNDYzMTVBOTE3NjMwMDhEMjZGQyAvKiBGcmFtZXdvcmtzICov
ID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJQkMzREU0NjkxNUE5MTc2MzAwOEQy
NkZDIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAvKiBFbmQgUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhHcm91cCBzZWN0
aW9uICovCkBAIC0yMjY0LDEwICsyMjYzLDE0IEBACiAJCQkJNTEyREY2RDcxMzhDMTgxQTAwQTIy
RkM2IC8qIEtleWNoYWluSXRlbVNoaW1NZXRob2RzLm1tICovLAogCQkJCTUxMUY4QTdEMTM4QjQ2
RkUwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbU1ldGhvZHMuaCAqLywKIAkJCQk1MTFGOEE3RTEzOEI0
NkZFMDBBOTVGNDQgLyogU2VjSXRlbVNoaW1NZXRob2RzLm1tICovLAorCQkJCUJDREMzMDg2MTVG
RDZBOEIwMDZCNjY5NSAvKiBXZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaCAqLywKKwkJCQlCQ0RD
MzA4NTE1RkQ2QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tICovLAog
CQkJCUJDMzA2NUMzMTI1OTJGODkwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWFjLm1tICovLAogCQkJ
CTFBNkZBMDFEMTFFMTUyNjMwMERCMTM3MSAvKiBXZWJQcm9jZXNzTWFpbk1hYy5tbSAqLywKIAkJ
CQk1MTFGOEE3NzEzOEI0NjA5MDBBOTVGNDQgLyogV2ViUHJvY2Vzc1NoaW0uaCAqLywKIAkJCQk1
MTFGOEE3ODEzOEI0NjA5MDBBOTVGNDQgLyogV2ViUHJvY2Vzc1NoaW0ubW0gKi8sCisJCQkJQkNE
QzMwOEExNUZENkNEMTAwNkI2Njk1IC8qIFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5oICovLAor
CQkJCUJDREMzMDg5MTVGRDZDRDEwMDZCNjY5NSAvKiBXZWJQcm9jZXNzWFBDU2VydmljZU1haW4u
bW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC00MjM5LDYgKzQyNDIsOCBAQAogCQkJCTNGODdCOUJFMTU4OTQwMTkwMDkwRkY2MiAvKiBX
ZWJDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGODdCOUMwMTU4OTQwRDgwMDkw
RkY2MiAvKiBXZWJDb2xvckNob29zZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1OTU0
ODkxNUM3ODY4NTAwRkQxRTNFIC8qIFdlYktpdDIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDREMz
MDg4MTVGRDZBOEIwMDZCNjY5NSAvKiBXZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUJDREMzMDhDMTVGRDZDRDEwMDZCNjY5NSAvKiBXZWJQcm9jZXNzWFBDU2Vy
dmljZU1haW4uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDMzMSw3ICs0MzM2LDYgQEAKIAkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSBCQzNERTQ3NjE1QTkxNzY0MDA4RDI2RkMgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIldlYktpdDJTZXJ2aWNlIiAqLzsK
IAkJCWJ1aWxkUGhhc2VzID0gKAogCQkJCUJDM0RFNDYyMTVBOTE3NjMwMDhEMjZGQyAvKiBTb3Vy
Y2VzICovLAotCQkJCUJDM0RFNDYzMTVBOTE3NjMwMDhEMjZGQyAvKiBGcmFtZXdvcmtzICovLAog
CQkJCUJDM0RFNDY0MTVBOTE3NjMwMDhEMjZGQyAvKiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
YnVpbGRSdWxlcyA9ICgKQEAgLTUwMjksNiArNTAzMyw4IEBACiAJCQkJMUEyQTRCMEUxNTg2QTIy
NDAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJM0Y4N0I5
QkQxNTg5NDAxMjAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDRDY3RDMwRTE1QzA4RjlBMDA4NDNBREYgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNEQzMwODcxNUZENkE4
QjAwNkI2Njk1IC8qIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUJDREMzMDhCMTVGRDZDRDEwMDZCNjY5NSAvKiBXZWJQcm9jZXNzWFBDU2VydmljZU1haW4u
bW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDJTZXJ2aWNlL01h
aW5NYWNTZXJ2aWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJTZXJ2
aWNlL01haW5NYWNTZXJ2aWNlLm1tCShyZXZpc2lvbiAxMjgwMDIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyU2VydmljZS9NYWluTWFjU2VydmljZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMs
NjEgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2luY2x1ZGUgPEF2YWlsYWJpbGl0eU1hY3Jvcy5oPgorI2ltcG9ydCA8QXZhaWxhYmlsaXR5TWFj
cm9zLmg+CiAKICNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAKLSNp
bmNsdWRlIDxkbGZjbi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+
Ci0jaW5jbHVkZSA8eHBjL3hwYy5oPgotCi1leHRlcm4gIkMiIG1hY2hfcG9ydF90IHhwY19kaWN0
aW9uYXJ5X2NvcHlfbWFjaF9zZW5kKHhwY19vYmplY3RfdCwgY29uc3QgY2hhciopOwotCi1zdGF0
aWMgdm9pZCBXZWJLaXQyU2VydmljZUV2ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIp
Ci17Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihw
ZWVyLCBeKHhwY19vYmplY3RfdCBldmVudCkgewotICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4
cGNfZ2V0X3R5cGUoZXZlbnQpOwotICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9FUlJPUikg
ewotICAgICAgICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQg
fHwgZXZlbnQgPT0gWFBDX0VSUk9SX1RFUk1JTkFUSU9OX0lNTUlORU5UKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzIGNhc2UgbW9yZSBncmFjZWZ1bGx5LgotICAgICAg
ICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGFzc2VydCh0eXBlID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOwot
Ci0gICAgICAgICAgICBpZiAoIXN0cmNtcCh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50
LCAibWVzc2FnZS1uYW1lIiksICJib290c3RyYXAiKSkgewotICAgICAgICAgICAgICAgIHN0YXRp
YyB2b2lkKiBmcmFtZXdvcmtMaWJyYXJ5ID0gZGxvcGVuKHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcoZXZlbnQsICJmcmFtZXdvcmstZXhlY3V0YWJsZS1wYXRoIiksIFJUTERfTk9XKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWZyYW1ld29ya0xpYnJhcnkpIHsKLSAgICAgICAgICAgICAgICAgICAg
TlNMb2coQCJVbmFibGUgdG8gbG9hZCBXZWJLaXQyLmZyYW1ld29yazogJXNcbiIsIGRsZXJyb3Io
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0eXBlZGVmIGludCAoKldlYktpdE1haW5GdW5jdGlv
bikoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBtYWNoX3BvcnRfdCBzZXJ2ZXJQb3J0KTsK
LSAgICAgICAgICAgICAgICBXZWJLaXRNYWluRnVuY3Rpb24gd2ViS2l0TWFpblhQQyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViS2l0TWFpbkZ1bmN0aW9uPihkbHN5bShmcmFtZXdvcmtMaWJyYXJ5LCAi
V2ViS2l0TWFpblhQQyIpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXdlYktpdE1haW5YUEMpIHsK
LSAgICAgICAgICAgICAgICAgICAgTlNMb2coQCJVbmFibGUgdG8gZmluZCBlbnRyeSBwb2ludCBp
biBXZWJLaXQyLmZyYW1ld29yazogJXNcbiIsIGRsZXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICB4cGNfb2JqZWN0X3QgcmVwbHkgPSB4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkoZXZl
bnQpOwotICAgICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcocmVwbHksICJt
ZXNzYWdlLW5hbWUiLCAicHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKTsKLSAgICAgICAgICAg
ICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90
ZV9jb25uZWN0aW9uKGV2ZW50KSwgcmVwbHkpOwotICAgICAgICAgICAgICAgIHhwY19yZWxlYXNl
KHJlcGx5KTsKLQotICAgICAgICAgICAgICAgIHdlYktpdE1haW5YUEMocGVlciwgeHBjX2RpY3Rp
b25hcnlfY29weV9tYWNoX3NlbmQoZXZlbnQsICJzZXJ2ZXItcG9ydCIpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKHBlZXIp
OwotfQorI2ltcG9ydCAiV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLmgiCiAKIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKIHsKLSAgICB4cGNfbWFpbihXZWJLaXQyU2VydmljZUV2ZW50
SGFuZGxlcik7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdlYlByb2Nlc3NYUENTZXJ2aWNl
TWFpbihhcmdjLCBhcmd2KTsKIH0KIAogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRp
YWxpemF0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbl9oCisjZGVmaW5lIFdlYlByb2Nlc3NJbml0
aWFsaXphdGlvbl9oCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIEluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYgY2xpZW50SWRl
bnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRp
Zmllcik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUHJvY2Vzc0lu
aXRpYWxpemF0aW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlBy
b2Nlc3NJbml0aWFsaXphdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0JKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5oIgorCisjaW1wb3J0ICJX
ZWJQcm9jZXNzLmgiCisjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvUnVuTG9vcC5oPgorI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1w
b3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
Kwordm9pZCBJbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZp
ZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
Cit7CisgICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFs
bG9jXSBpbml0XTsKKworICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCk7CisgICAgSlND
Ojppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgp
OworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuaW5pdGlhbGl6ZVNoaW0oKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5p
bml0aWFsaXplU2FuZGJveChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5pbml0aWFsaXplKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBSdW5Mb29wOjptYWluKCkpOwor
CisgICAgV0tBWFJlZ2lzdGVyUmVtb3RlQXBwKCk7CisKKyAgICBbcG9vbCBkcmFpbl07Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9t
YWMvV2ViUHJvY2Vzc01haW5NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01haW5NYWMubW0JKHJldmlzaW9uIDEyODAwMykKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWluTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSwyNiArMzEsMjAgQEAKICNpbXBvcnQgIkVudmlyb25tZW50VmFyaWFibGVz
LmgiCiAjaW1wb3J0ICJTdHJpbmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIK
LSNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc0luaXRp
YWxpemF0aW9uLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbXBvcnQgPFdlYktp
dFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8bWFjaC9tYWNoX2Vycm9yLmg+CiAjaW1wb3J0
IDxvYmpjL29iamMtYXV0by5oPgotI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
Lmg+CiAjaW1wb3J0IDxzZXJ2ZXJzL2Jvb3RzdHJhcC5oPgogI2ltcG9ydCA8c2lnbmFsLmg+CiAj
aW1wb3J0IDxzcGF3bi5oPgogI2ltcG9ydCA8c3RkaW8uaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+
CiAjaW1wb3J0IDx1bmlzdGQuaD4KLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW1wb3J0
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLSNpZiBIQVZFKFhQQykKLSNpbXBvcnQgPHhw
Yy94cGMuaD4KLSNlbmRpZgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIGV4dGVybiAiQyIga2Vybl9y
ZXR1cm5fdCBib290c3RyYXBfcmVnaXN0ZXIyKG1hY2hfcG9ydF90LCBuYW1lX3QsIG1hY2hfcG9y
dF90LCB1aW50NjRfdCk7CkBAIC02Niw0NyArNjAsNyBAQCAtKHZvaWQpX2luc3RhbGxBdXRvcmVs
ZWFzZVBvb2xzT25DdXJyZW50CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgSEFW
RShYUEMpCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWludCBXZWJQcm9jZXNzTWFpblhQQyh4cGNfY29u
bmVjdGlvbl90IHhwY0Nvbm5lY3Rpb24sIG1hY2hfcG9ydF90IHNlcnZlclBvcnQpOwotfQotCi1l
eHRlcm4gIkMiIFdLX0VYUE9SVCBpbnQgV2ViS2l0TWFpblhQQyh4cGNfY29ubmVjdGlvbl90IHhw
Y0Nvbm5lY3Rpb24sIG1hY2hfcG9ydF90IHNlcnZlclBvcnQpOwotCi1pbnQgV2ViS2l0TWFpblhQ
Qyh4cGNfY29ubmVjdGlvbl90IHhwY0Nvbm5lY3Rpb24sIG1hY2hfcG9ydF90IHNlcnZlclBvcnQp
Ci17Ci0gICAgQVNTRVJUKCFvYmpjX2NvbGxlY3RpbmdFbmFibGVkKCkpOwotCi0gICAgcmV0dXJu
IFdlYktpdDo6V2ViUHJvY2Vzc01haW5YUEMoeHBjQ29ubmVjdGlvbiwgc2VydmVyUG9ydCk7Ci19
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZiBIQVZFKFhQQykKLQotaW50IFdl
YlByb2Nlc3NNYWluWFBDKHhwY19jb25uZWN0aW9uX3QgeHBjQ29ubmVjdGlvbiwgbWFjaF9wb3J0
X3Qgc2VydmVyUG9ydCkKLXsKLSAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRv
cmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwotCi0gICAgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UoKTsKLSAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkKCk7Ci0gICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0K
LSAgICAvLyBGSVhNRTogTWFrZSB0aGUgc2hpbSB3b3JrLgotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmluaXRpYWxpemVTaGltKCk7Ci0gICAgLy8gRklYTUU6IFBhc3MgdGhlIGNsaWVudCBpZGVu
dGlmaWVyIGhlcmUuCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZVNhbmRib3go
U3RyaW5nKCkpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29yZUlQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0LCB4cGNDb25uZWN0aW9uKSwgUnVuTG9v
cDo6bWFpbigpKTsKLQotICAgIFdLQVhSZWdpc3RlclJlbW90ZUFwcCgpOwotCi0gICAgW3Bvb2wg
ZHJhaW5dOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKIAogaW50IFdlYlByb2Nlc3NNYWlu
KGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKIHsKQEAgLTIxMSw2ICsxNjUsOCBAQCBp
bnQgV2ViUHJvY2Vzc01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvCiAgICAgaWYgKGNmTG9jYWxp
emF0aW9uKQogICAgICAgICBXS1NldERlZmF1bHRMb2NhbGl6YXRpb24oY2ZMb2NhbGl6YXRpb24u
Z2V0KCkpOwogCisgICAgW3Bvb2wgZHJhaW5dOworCiAjaWYgIVNIT1dfQ1JBU0hfUkVQT1JURVIK
ICAgICAvLyBJbnN0YWxscyBzaWduYWwgaGFuZGxlcnMgdGhhdCBleGl0IG9uIGEgY3Jhc2ggc28g
dGhhdCBDcmFzaFJlcG9ydGVyIGRvZXMgbm90IHNob3cgdXAuCiAgICAgc2lnbmFsKFNJR0lMTCwg
X2V4aXQpOwpAQCAtMjE5LDExICsxNzUsNiBAQCBpbnQgV2ViUHJvY2Vzc01haW4oY29uc3QgQ29t
bWFuZExpbmUmIGNvCiAgICAgc2lnbmFsKFNJR1NFR1YsIF9leGl0KTsKICNlbmRpZgogCi0gICAg
SW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKLSAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRp
bmcoKTsKLSAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgUnVuTG9vcDo6aW5p
dGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0KICNpZiBVU0UoQVBQS0lUKQogICAgICAvLyBJbml0aWFs
aXplIEFwcEtpdC4KICAgICBbTlNBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl07CkBAIC0y
MzMsMTMgKzE4NCw3IEBAIGludCBXZWJQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY28K
ICAgICBbW05TQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dIF9pbnN0YWxsQXV0b3JlbGVh
c2VQb29sc09uQ3VycmVudFRocmVhZElmTmVjZXNzYXJ5XTsKICNlbmRpZgogCi0gICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZVNoaW0oKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5pbml0aWFsaXplU2FuZGJveChjbGllbnRJZGVudGlmaWVyKTsKLSAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5pbml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoc2VydmVy
UG9ydCksIFJ1bkxvb3A6Om1haW4oKSk7Ci0KLSAgICBXS0FYUmVnaXN0ZXJSZW1vdGVBcHAoKTsK
LQotICAgIFtwb29sIGRyYWluXTsKKyAgICBJbml0aWFsaXplV2ViUHJvY2VzcyhjbGllbnRJZGVu
dGlmaWVyLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKHNlcnZlclBvcnQpKTsKIAog
ICAgIFJ1bkxvb3A6OnJ1bigpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21h
Yy9XZWJQcm9jZXNzWFBDU2VydmljZU1haW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzWFBDU2VydmljZU1haW4uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NYUENTZXJ2aWNlTWFp
bi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJQcm9jZXNzWFBDU2VydmljZU1haW5faAorI2RlZmluZSBXZWJQcm9jZXNzWFBDU2VydmljZU1h
aW5faAorCisjaWYgSEFWRShYUEMpCisKKyNpbmNsdWRlICJXS0Jhc2UuaCIKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgaW50IFdlYlByb2Nl
c3NYUENTZXJ2aWNlTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK307IC8vIGV4dGVybiAiQyIKKyNlbmRpZgorCisjZW5kaWYgLy8gSEFWRShYUEMpCisK
KyNlbmRpZiAvLyBXZWJQcm9jZXNzWFBDU2VydmljZU1haW5faApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NYUENTZXJ2aWNlTWFp
bi5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlBy
b2Nlc3NYUENTZXJ2aWNlTWFpbi5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1hQQ1NlcnZp
Y2VNYWluLmgiCisKKyNpZiBIQVZFKFhQQykKKworI2ltcG9ydCAiRW52aXJvbm1lbnRVdGlsaXRp
ZXMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5oIgorI2ltcG9ydCA8c3Rk
aW8uaD4KKyNpbXBvcnQgPHN0ZGxpYi5oPgorI2ltcG9ydCA8eHBjL3hwYy5oPgorCitleHRlcm4g
IkMiIG1hY2hfcG9ydF90IHhwY19kaWN0aW9uYXJ5X2NvcHlfbWFjaF9zZW5kKHhwY19vYmplY3Rf
dCwgY29uc3QgY2hhciopOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgV2Vi
S2l0MlNlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2Nvbm5lY3Rpb25fdCBwZWVyKQoreworICAgIHhw
Y19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUocGVlciwgZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIocGVlciwgXih4cGNf
b2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgeHBjX3R5cGVfdCB0eXBlID0geHBjX2dldF90eXBl
KGV2ZW50KTsKKyAgICAgICAgaWYgKHR5cGUgPT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAg
ICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIHx8IGV2ZW50ID09
IFhQQ19FUlJPUl9URVJNSU5BVElPTl9JTU1JTkVOVCkgeworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgdGhpcyBjYXNlIG1vcmUgZ3JhY2VmdWxseS4KKyAgICAgICAgICAgICAgICBl
eGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBhc3NlcnQodHlwZSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKKworICAgICAgICAg
ICAgaWYgKCFzdHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2Ut
bmFtZSIpLCAiYm9vdHN0cmFwIikpIHsKKyAgICAgICAgICAgICAgICB4cGNfb2JqZWN0X3QgcmVw
bHkgPSB4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkoZXZlbnQpOworICAgICAgICAgICAgICAg
IHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcocmVwbHksICJtZXNzYWdlLW5hbWUiLCAicHJvY2Vz
cy1maW5pc2hlZC1sYXVuY2hpbmciKTsKKyAgICAgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9z
ZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKGV2ZW50KSwg
cmVwbHkpOworICAgICAgICAgICAgICAgIHhwY19yZWxlYXNlKHJlcGx5KTsKKworICAgICAgICAg
ICAgICAgIEluaXRpYWxpemVXZWJQcm9jZXNzKFN0cmluZyh4cGNfZGljdGlvbmFyeV9nZXRfc3Ry
aW5nKGV2ZW50LCAiY2xpZW50LWlkZW50aWZpZXIiKSksIENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIoeHBjX2RpY3Rpb25hcnlfY29weV9tYWNoX3NlbmQoZXZlbnQsICJzZXJ2ZXItcG9y
dCIpLCBwZWVyKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHhw
Y19jb25uZWN0aW9uX3Jlc3VtZShwZWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
K2ludCBXZWJQcm9jZXNzWFBDU2VydmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorewor
ICAgIC8vIFJlbW92ZSB0aGUgV2ViUHJvY2VzcyBzaGltIGZyb20gdGhlIERZTERfSU5TRVJUX0xJ
QlJBUklFUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBhbnkgcHJvY2Vzc2VzIHNwYXduZWQgYnkK
KyAgICAvLyB0aGUgV2ViUHJvY2VzcyBkb24ndCB0cnkgdG8gaW5zZXJ0IHRoZSBzaGltIGFuZCBj
cmFzaC4KKyAgICBXZWJLaXQ6OkVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGlu
Z1dpdGhTdHJpbmcoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIsICIvV2ViUHJvY2Vzc1NoaW0uZHls
aWIiKTsKKworICAgIHhwY19tYWluKFdlYktpdDo6V2ViS2l0MlNlcnZpY2VFdmVudEhhbmRsZXIp
OworICAgIHJldHVybiAwOworfQorCisjZW5kaWYgLy8gSEFWRShYUEMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163043</attachid>
            <date>2012-09-09 23:03:35 -0700</date>
            <delta_ts>2012-09-09 23:13:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96228-20120909230313.patch</filename>
            <type>text/plain</type>
            <size>27579</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODAxNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA5LTA5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGxpZnkgV2ViS2l0MiBYUEMgc2Vy
dmljZSBiYWNrZW5kIG5vdyB0aGF0IEkga25vdyBpdCBkb2Vzbid0IG5lZWQgdG8gc29mdCBsaW5r
IFdlYktpdDIuZnJhbWV3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjIyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlIHNvZnQgbGluayB0aGUgbm9uLVhQQyBzZXJ2aWNlIFdlYlByb2Nlc3MgYmFj
a2VuZCB0byB0aGUgV2ViS2l0MiBmcmFtZXdvcmsgdG8KKyAgICAgICAgZW5zdXJlIHRoYXQgd2Ug
Y2FuIGNsb3NlIGFsbCB0aGUgbmVjZXNzYXJ5IGZpbGUgZGVzY3JpcHRvcnMgYXQgbGF1bmNoLCB3
aXRob3V0CisgICAgICAgIGZlYXIgdGhhdCB3ZSB3aWxsIGJlIGNsb3Npbmcgb25lIHdlIG9wZW4g
d2hpbGUgaW5pdGlhbGl6aW5nIFdlYktpdDIgb3Igb25lIG9mIGl0cworICAgICAgICBkZXBlbmRl
bmNpZXMuIFNpbmNlIHdlIGRvbid0IG5lZWQgdG8gY2xvc2UgZmlsZSBkZXNjcmlwdG9ycyBpbiB0
aGUgWFBDIHNlcnZpY2UgCisgICAgICAgIGJhY2tlbmQsIHdlIGRvbid0IG5lZWQgdG8gc29mdCBs
aW5rISBXaGlsZSBoZXJlLCBhbHNvIGRvIHNvbWUgY2xlYW51cCBhbmQgY29kZQorICAgICAgICBz
aGFyaW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNo
ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmxhdW5jaFhQQ1NlcnZpY2UpOgorICAgICAgICBX
ZSBkb24ndCBuZWVkIHRvIHNlbmQgdGhlIGZyYW1ld29yayBleGVjdXRhYmxlIHBhdGggYW55bW9y
ZSAoaXQgd2FzIHVzZWQgZm9yIHRoZQorICAgICAgICBzb2Z0IGxpbmtpbmcpLCBidXQgd2UgZG8g
bmVlZCB0aGUgY2xpZW50IGlkZW50aWZpZXIuCisgICAgICAgIAorICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4gTGluayB0
aGUgWFBDIHNlcnZpY2UgdG8gV2ViS2l0Mi5mcmFtZXdvcmsuCisKKyAgICAgICAgKiBXZWJLaXQy
U2VydmljZS9NYWluTWFjU2VydmljZS5tbToKKyAgICAgICAgTm93IHRoYXQgd2UgZG9uJ3QgaGF2
ZSB0byBzb2Z0IGxpbmssIGp1c3QgbWFrZSB0aGlzIGEgc3R1YiB0aGF0IGNhbGxzIGltbWVkaWF0
ZWx5CisgICAgICAgIGludG8gdGhlIFdlYktpdDIgZnJhbWV3b3JrLgorICAgICAgICAKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6SW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICBNb3Zl
IGluaXRpYWxpemF0aW9uIHRoYXQgaXMgY29tbW9uIGJldHdlZW4gdGhlIFhQQyBhbmQgbm9uLVhQ
QyBiYWNrZW5kcyBoZXJlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01h
aW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluKToKKyAgICAgICAgUmVt
b3ZlIFhQQyBiYWNrZW5kIHJlbGF0ZWQgY29kZS4gVXNlIG5ldyBzaGFyZWQgSW5pdGlhbGl6ZVdl
YlByb2Nlc3MgZnVuY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
WFBDU2VydmljZU1haW4uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc1hQQ1NlcnZpY2VNYWluLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlNl
cnZpY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluKToK
KyAgICAgICAgTW92ZSBYUEMgc2VydmljZSBiYWNrZW5kIGluaXRpYWxpemF0aW9uIGhlcmUuCisK
IDIwMTItMDktMDkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJlbmFtZSBOb2RlOjpnZXRSZWN0L2dldFBpeGVsU25hcHBlZFJlY3QgYW5kIHJlbW92ZSBDb250
YWluZXJOb2RlOjpnZXRSZWN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkocmV2aXNpb24g
MTI4MDAzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNz
TGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNSwxMCArMTA1LDEzIEBAIHN0YXRp
YyB2b2lkIGxhdW5jaFhQQ1NlcnZpY2UoY29uc3QgUHJvY2UKICAgICAvLyBJbnNlcnQgYSBzZW5k
IHJpZ2h0IHNvIHdlIGNhbiBzZW5kIHRvIGl0LgogICAgIG1hY2hfcG9ydF9pbnNlcnRfcmlnaHQo
bWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwgbGlzdGVuaW5nUG9ydCwgTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQpOwogCisgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOworICAgIENTdHJpbmcgY2xpZW50
SWRlbnRpZmllciA9IGJ1bmRsZUlkZW50aWZpZXIgPyBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBidW5kbGVJZGVudGlmaWVyXSkudXRmOCgpIDogKl9OU0dldFByb2duYW1lKCk7CisKICAg
ICB4cGNfb2JqZWN0X3QgYm9vdFN0cmFwTWVzc2FnZSA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZSgw
LCAwLCAwKTsKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKGJvb3RTdHJhcE1lc3NhZ2Us
ICJtZXNzYWdlLW5hbWUiLCAiYm9vdHN0cmFwIik7Ci0gICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0
cmluZyhib290U3RyYXBNZXNzYWdlLCAiZnJhbWV3b3JrLWV4ZWN1dGFibGUtcGF0aCIsIFtbW05T
QnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdDIiXSBleGVjdXRh
YmxlUGF0aF0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSk7CiAgICAgeHBjX2RpY3Rpb25hcnlf
c2V0X21hY2hfc2VuZChib290U3RyYXBNZXNzYWdlLCAic2VydmVyLXBvcnQiLCBsaXN0ZW5pbmdQ
b3J0KTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKGJvb3RTdHJhcE1lc3NhZ2UsICJj
bGllbnQtaWRlbnRpZmllciIsIGNsaWVudElkZW50aWZpZXIuZGF0YSgpKTsKIAogICAgIHRoYXQt
PnJlZigpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjgwMDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU4MSw3ICs1
ODEsNiBAQAogCQlCQzMzREQ2ODEyMzg0NjQ2MDAzNjBGM0YgLyogV2ViTnVtYmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMzREQ2NzEyMzg0NjQ2
MDAzNjBGM0YgLyogV2ViTnVtYmVyLmggKi87IH07CiAJCUJDMzNFMEQxMTI0MDhFODYwMDM2MEYz
RiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMzRTBDRjEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5oICovOyB9OwogCQlCQzMzRTBEMjEyNDA4RTg2MDAzNjBGM0Yg
LyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMzRTBEMDEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgKi87IH07Ci0JCUJDM0RFNDY5MTVBOTE3NjMwMDhEMjZG
QyAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDM0RFNDY4MTVBOTE3NjMwMDhEMjZGQyAvKiBGb3VuZGF0aW9u
LmZyYW1ld29yayAqLzsgfTsKIAkJQkMzREU0NzIxNUE5MTc2NDAwOEQyNkZDIC8qIE1haW5NYWNT
ZXJ2aWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMzREU0NzExNUE5MTc2NDAwOEQyNkZDIC8qIE1haW5NYWNTZXJ2aWNlLm1tICovOyB9OwogCQlC
QzQwNzVGMzEyNEZGMDI3MDA2OEYyMEEgLyogV0tBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQwNzVENzEyNEZGMDI3MDA2OEYyMEEgLyog
V0tBcnJheS5jcHAgKi87IH07CiAJCUJDNDA3NUY0MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0FycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQwNzVE
ODEyNEZGMDI3MDA2OEYyMEEgLyogV0tBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03OTYsNiArNzk1LDExIEBACiAJCUJDRDU5OEFDMTEy
QjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1OThBQTExMkI3RkRGMDBFQzhDMjMgLyog
V2ViUHJlZmVyZW5jZXNTdG9yZS5oICovOyB9OwogCQlCQ0Q1OThBRDExMkI3RkRGMDBFQzhDMjMg
LyogV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1OThBQjExMkI3RkRGMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5j
ZXNTdG9yZS5jcHAgKi87IH07CiAJCUJDREI4NkMxMTIwMEZCOTcwMDcyNTRCRSAvKiBXZWJVUkwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREI4NkMw
MTIwMEZCOTcwMDcyNTRCRSAvKiBXZWJVUkwuaCAqLzsgfTsKKwkJQkNEQzMwODcxNUZENkE4QjAw
NkI2Njk1IC8qIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREMzMDg1MTVGRDZBOEIwMDZCNjY5NSAvKiBX
ZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0gKi87IH07CisJCUJDREMzMDg4MTVGRDZBOEIwMDZC
NjY5NSAvKiBXZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREMzMDg2MTVGRDZBOEIwMDZCNjY5NSAvKiBXZWJQ
cm9jZXNzSW5pdGlhbGl6YXRpb24uaCAqLzsgfTsKKwkJQkNEQzMwOEIxNUZENkNEMTAwNkI2Njk1
IC8qIFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREMzMDg5MTVGRDZDRDEwMDZCNjY5NSAvKiBXZWJQcm9j
ZXNzWFBDU2VydmljZU1haW4ubW0gKi87IH07CisJCUJDREMzMDhDMTVGRDZDRDEwMDZCNjY5NSAv
KiBXZWJQcm9jZXNzWFBDU2VydmljZU1haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDREMzMDhBMTVGRDZDRDEwMDZCNjY5NSAvKiBXZWJQcm9jZXNz
WFBDU2VydmljZU1haW4uaCAqLzsgfTsKKwkJQkNEQzMwOEUxNUZEQjlBNzAwNkI2Njk1IC8qIFdl
YktpdDIuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOERDMkVGNUIwNDg2QTY5NDAwOThCMjE2IC8qIFdlYktpdDIuZnJhbWV3b3JrICov
OyB9OwogCQlCQ0REQjMxNzEyNEVCRDEzMDA0OEQxM0MgLyogV0tCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0REQjMxNjEyNEVCRDEzMDA0OEQx
M0MgLyogV0tCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwogCQlCQ0REQjMyQjEyNEVDMkFCMDA0OEQxM0MgLyogV0tTaGFyZWRBUElDYXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0REQjMyQTEyNEVD
MkFCMDA0OEQxM0MgLyogV0tTaGFyZWRBUElDYXN0LmggKi87IH07CiAJCUJDRERCMzJEMTI0RUMy
RTEwMDQ4RDEzQyAvKiBXS0FQSUNhc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRERCMzJDMTI0RUMyRTEwMDQ4RDEzQyAvKiBXS0FQSUNhc3QuaCAq
LzsgfTsKQEAgLTE4NzMsNiArMTg3NywxMCBAQAogCQlCQ0Q1OThBQTExMkI3RkRGMDBFQzhDMjMg
LyogV2ViUHJlZmVyZW5jZXNTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJQcmVmZXJlbmNlc1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
RDU5OEFCMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzU3RvcmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0RCODZDMDEyMDBGQjk3MDA3MjU0QkUgLyog
V2ViVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0RDMzA4NTE1RkQ2QThCMDA2QjY2OTUgLyogV2Vi
UHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQ0RDMzA4NjE1RkQ2QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxp
emF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NJbml0
aWFsaXphdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0RDMzA4OTE1RkQ2
Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0RDMzA4QTE1RkQ2Q0QxMDA2QjY2OTUgLyog
V2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0REQjMxNjEyNEVCRDEzMDA0OEQxM0MgLyogV0tCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0REQjMyQTEyNEVDMkFCMDA0OEQxM0MgLyogV0tTaGFyZWRBUElDYXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2hhcmVkQVBJQ2FzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQ0REQjMyQzEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQVBJQ2FzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjA2MywxMSArMjA3MSwxMSBAQAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwotCQlCQzNERTQ2MzE1QTkx
NzYzMDA4RDI2RkMgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJQkNEQzMwOEQxNUZEQjk5QTAwNkI2
Njk1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlC
QzNERTQ2OTE1QTkxNzYzMDA4RDI2RkMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLywKKwkJCQlCQ0RDMzA4RTE1RkRCOUE3MDA2QjY2OTUgLyogV2ViS2l0Mi5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNjQsMTAgKzIyNzIsMTQgQEAKIAkJCQk1MTJERjZE
NzEzOEMxODFBMDBBMjJGQzYgLyogS2V5Y2hhaW5JdGVtU2hpbU1ldGhvZHMubW0gKi8sCiAJCQkJ
NTExRjhBN0QxMzhCNDZGRTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTWV0aG9kcy5oICovLAogCQkJ
CTUxMUY4QTdFMTM4QjQ2RkUwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbU1ldGhvZHMubW0gKi8sCisJ
CQkJQkNEQzMwODYxNUZENkE4QjAwNkI2Njk1IC8qIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5o
ICovLAorCQkJCUJDREMzMDg1MTVGRDZBOEIwMDZCNjY5NSAvKiBXZWJQcm9jZXNzSW5pdGlhbGl6
YXRpb24ubW0gKi8sCiAJCQkJQkMzMDY1QzMxMjU5MkY4OTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NN
YWMubW0gKi8sCiAJCQkJMUE2RkEwMUQxMUUxNTI2MzAwREIxMzcxIC8qIFdlYlByb2Nlc3NNYWlu
TWFjLm1tICovLAogCQkJCTUxMUY4QTc3MTM4QjQ2MDkwMEE5NUY0NCAvKiBXZWJQcm9jZXNzU2hp
bS5oICovLAogCQkJCTUxMUY4QTc4MTM4QjQ2MDkwMEE5NUY0NCAvKiBXZWJQcm9jZXNzU2hpbS5t
bSAqLywKKwkJCQlCQ0RDMzA4QTE1RkQ2Q0QxMDA2QjY2OTUgLyogV2ViUHJvY2Vzc1hQQ1NlcnZp
Y2VNYWluLmggKi8sCisJCQkJQkNEQzMwODkxNUZENkNEMTAwNkI2Njk1IC8qIFdlYlByb2Nlc3NY
UENTZXJ2aWNlTWFpbi5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTQyMzksNiArNDI1MSw4IEBACiAJCQkJM0Y4N0I5QkUxNTg5NDAx
OTAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4N0I5
QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzU5NTQ4OTE1Qzc4Njg1MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNEQzMwODgxNUZENkE4QjAwNkI2Njk1IC8qIFdlYlByb2Nlc3NJbml0aWFsaXph
dGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNEQzMwOEMxNUZENkNEMTAwNkI2Njk1IC8qIFdl
YlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00MzMxLDcgKzQzNDUs
NyBAQAogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEJDM0RFNDc2MTVBOTE3NjQwMDhEMjZG
QyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiV2ViS2l0
MlNlcnZpY2UiICovOwogCQkJYnVpbGRQaGFzZXMgPSAoCiAJCQkJQkMzREU0NjIxNUE5MTc2MzAw
OEQyNkZDIC8qIFNvdXJjZXMgKi8sCi0JCQkJQkMzREU0NjMxNUE5MTc2MzAwOEQyNkZDIC8qIEZy
YW1ld29ya3MgKi8sCisJCQkJQkNEQzMwOEQxNUZEQjk5QTAwNkI2Njk1IC8qIEZyYW1ld29ya3Mg
Ki8sCiAJCQkJQkMzREU0NjQxNUE5MTc2MzAwOEQyNkZDIC8qIFJlc291cmNlcyAqLywKIAkJCSk7
CiAJCQlidWlsZFJ1bGVzID0gKApAQCAtNTAyOSw2ICs1MDQzLDggQEAKIAkJCQkxQTJBNEIwRTE1
ODZBMjI0MDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEubW0gaW4gU291cmNlcyAqLywKIAkJCQkz
Rjg3QjlCRDE1ODk0MDEyMDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNENjdEMzBFMTVDMDhGOUEwMDg0M0FERiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0RDMzA4NzE1
RkQ2QThCMDA2QjY2OTUgLyogV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQkNEQzMwOEIxNUZENkNEMTAwNkI2Njk1IC8qIFdlYlByb2Nlc3NYUENTZXJ2aWNl
TWFpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0MlNlcnZp
Y2UvTWFpbk1hY1NlcnZpY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0
MlNlcnZpY2UvTWFpbk1hY1NlcnZpY2UubW0JKHJldmlzaW9uIDEyODAwMikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDJTZXJ2aWNlL01haW5NYWNTZXJ2aWNlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw2MSArMjMsMTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaW5jbHVkZSA8QXZhaWxhYmlsaXR5TWFjcm9zLmg+CisjaW1wb3J0IDxBdmFpbGFiaWxp
dHlNYWNyb3MuaD4KIAogI2lmIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
IAotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRs
aWIuaD4KLSNpbmNsdWRlIDx4cGMveHBjLmg+Ci0KLWV4dGVybiAiQyIgbWFjaF9wb3J0X3QgeHBj
X2RpY3Rpb25hcnlfY29weV9tYWNoX3NlbmQoeHBjX29iamVjdF90LCBjb25zdCBjaGFyKik7Ci0K
LXN0YXRpYyB2b2lkIFdlYktpdDJTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jb25uZWN0aW9uX3Qg
cGVlcikKLXsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKHBlZXIsIGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCkpOwotICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5k
bGVyKHBlZXIsIF4oeHBjX29iamVjdF90IGV2ZW50KSB7Ci0gICAgICAgIHhwY190eXBlX3QgdHlw
ZSA9IHhwY19nZXRfdHlwZShldmVudCk7Ci0gICAgICAgIGlmICh0eXBlID09IFhQQ19UWVBFX0VS
Uk9SKSB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5W
QUxJRCB8fCBldmVudCA9PSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQpIHsKLSAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHRoaXMgY2FzZSBtb3JlIGdyYWNlZnVsbHkuCi0g
ICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgYXNzZXJ0KHR5cGUgPT0gWFBDX1RZUEVfRElDVElPTkFS
WSk7Ci0KLSAgICAgICAgICAgIGlmICghc3RyY21wKHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
ZXZlbnQsICJtZXNzYWdlLW5hbWUiKSwgImJvb3RzdHJhcCIpKSB7Ci0gICAgICAgICAgICAgICAg
c3RhdGljIHZvaWQqIGZyYW1ld29ya0xpYnJhcnkgPSBkbG9wZW4oeHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhldmVudCwgImZyYW1ld29yay1leGVjdXRhYmxlLXBhdGgiKSwgUlRMRF9OT1cpOwot
ICAgICAgICAgICAgICAgIGlmICghZnJhbWV3b3JrTGlicmFyeSkgewotICAgICAgICAgICAgICAg
ICAgICBOU0xvZyhAIlVuYWJsZSB0byBsb2FkIFdlYktpdDIuZnJhbWV3b3JrOiAlc1xuIiwgZGxl
cnJvcigpKTsKLSAgICAgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHR5cGVkZWYgaW50ICgqV2ViS2l0TWFpbkZ1
bmN0aW9uKSh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIG1hY2hfcG9ydF90IHNlcnZlclBv
cnQpOwotICAgICAgICAgICAgICAgIFdlYktpdE1haW5GdW5jdGlvbiB3ZWJLaXRNYWluWFBDID0g
cmVpbnRlcnByZXRfY2FzdDxXZWJLaXRNYWluRnVuY3Rpb24+KGRsc3ltKGZyYW1ld29ya0xpYnJh
cnksICJXZWJLaXRNYWluWFBDIikpOwotICAgICAgICAgICAgICAgIGlmICghd2ViS2l0TWFpblhQ
QykgewotICAgICAgICAgICAgICAgICAgICBOU0xvZyhAIlVuYWJsZSB0byBmaW5kIGVudHJ5IHBv
aW50IGluIFdlYktpdDIuZnJhbWV3b3JrOiAlc1xuIiwgZGxlcnJvcigpKTsKLSAgICAgICAgICAg
ICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIHhwY19vYmplY3RfdCByZXBseSA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBs
eShldmVudCk7Ci0gICAgICAgICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhyZXBs
eSwgIm1lc3NhZ2UtbmFtZSIsICJwcm9jZXNzLWZpbmlzaGVkLWxhdW5jaGluZyIpOwotICAgICAg
ICAgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSh4cGNfZGljdGlvbmFyeV9nZXRf
cmVtb3RlX2Nvbm5lY3Rpb24oZXZlbnQpLCByZXBseSk7Ci0gICAgICAgICAgICAgICAgeHBjX3Jl
bGVhc2UocmVwbHkpOwotCi0gICAgICAgICAgICAgICAgd2ViS2l0TWFpblhQQyhwZWVyLCB4cGNf
ZGljdGlvbmFyeV9jb3B5X21hY2hfc2VuZChldmVudCwgInNlcnZlci1wb3J0IikpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUo
cGVlcik7Ci19CisjaW1wb3J0ICJXZWJQcm9jZXNzWFBDU2VydmljZU1haW4uaCIKIAogaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewotICAgIHhwY19tYWluKFdlYktpdDJTZXJ2aWNl
RXZlbnRIYW5kbGVyKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViUHJvY2Vzc1hQQ1Nl
cnZpY2VNYWluKGFyZ2MsIGFyZ3YpOwogfQogCiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
SW5pdGlhbGl6YXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uX2gKKyNkZWZpbmUgV2ViUHJvY2Vz
c0luaXRpYWxpemF0aW9uX2gKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3ZvaWQgSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJiBjbGll
bnRJZGVudGlmaWVyLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQcm9j
ZXNzSW5pdGlhbGl6YXRpb25faApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMv
V2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbQkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlv
bi5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmgiCisKKyNpbXBv
cnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9y
dCA8V2ViQ29yZS9SdW5Mb29wLmg+CisjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
KyNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2ltcG9ydCA8d3RmL01h
aW5UaHJlYWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIEluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYgY2xpZW50SWRl
bnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRp
ZmllcikKK3sKKyAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBv
b2wgYWxsb2NdIGluaXRdOworCisgICAgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKKyAg
ICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplU2hpbSgpOworICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmluaXRpYWxpemVTYW5kYm94KGNsaWVudElkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmluaXRpYWxpemUoY29ubmVjdGlvbklkZW50aWZpZXIsIFJ1bkxvb3A6Om1haW4o
KSk7CisKKyAgICBXS0FYUmVnaXN0ZXJSZW1vdGVBcHAoKTsKKworICAgIFtwb29sIGRyYWluXTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQkocmV2aXNpb24gMTI4MDAzKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01haW5NYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMxLDI2ICszMSwyMCBAQAogI2ltcG9ydCAiRW52aXJvbm1lbnRWYXJp
YWJsZXMuaCIKICNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
cy5oIgotI2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNz
SW5pdGlhbGl6YXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2ltcG9ydCA8
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxtYWNoL21hY2hfZXJyb3IuaD4KICNp
bXBvcnQgPG9iamMvb2JqYy1hdXRvLmg+Ci0jaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuaD4KICNpbXBvcnQgPHNlcnZlcnMvYm9vdHN0cmFwLmg+CiAjaW1wb3J0IDxzaWduYWwu
aD4KICNpbXBvcnQgPHNwYXduLmg+CiAjaW1wb3J0IDxzdGRpby5oPgogI2ltcG9ydCA8c3lzZXhp
dHMuaD4KICNpbXBvcnQgPHVuaXN0ZC5oPgotI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNp
bXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotI2lmIEhBVkUoWFBDKQotI2ltcG9y
dCA8eHBjL3hwYy5oPgotI2VuZGlmCisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogZXh0ZXJuICJDIiBr
ZXJuX3JldHVybl90IGJvb3RzdHJhcF9yZWdpc3RlcjIobWFjaF9wb3J0X3QsIG5hbWVfdCwgbWFj
aF9wb3J0X3QsIHVpbnQ2NF90KTsKQEAgLTY2LDQ3ICs2MCw3IEBAIC0odm9pZClfaW5zdGFsbEF1
dG9yZWxlYXNlUG9vbHNPbkN1cnJlbnQKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNp
ZiBIQVZFKFhQQykKIG5hbWVzcGFjZSBXZWJLaXQgewotaW50IFdlYlByb2Nlc3NNYWluWFBDKHhw
Y19jb25uZWN0aW9uX3QgeHBjQ29ubmVjdGlvbiwgbWFjaF9wb3J0X3Qgc2VydmVyUG9ydCk7Ci19
Ci0KLWV4dGVybiAiQyIgV0tfRVhQT1JUIGludCBXZWJLaXRNYWluWFBDKHhwY19jb25uZWN0aW9u
X3QgeHBjQ29ubmVjdGlvbiwgbWFjaF9wb3J0X3Qgc2VydmVyUG9ydCk7Ci0KLWludCBXZWJLaXRN
YWluWFBDKHhwY19jb25uZWN0aW9uX3QgeHBjQ29ubmVjdGlvbiwgbWFjaF9wb3J0X3Qgc2VydmVy
UG9ydCkKLXsKLSAgICBBU1NFUlQoIW9iamNfY29sbGVjdGluZ0VuYWJsZWQoKSk7Ci0KLSAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJQcm9jZXNzTWFpblhQQyh4cGNDb25uZWN0aW9uLCBzZXJ2ZXJQb3J0
KTsKLX0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotI2lmIEhBVkUoWFBDKQotCi1p
bnQgV2ViUHJvY2Vzc01haW5YUEMoeHBjX2Nvbm5lY3Rpb25fdCB4cGNDb25uZWN0aW9uLCBtYWNo
X3BvcnRfdCBzZXJ2ZXJQb3J0KQotewotICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tO
U0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07Ci0KLSAgICBJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSgpOwotICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ao
KTsKLQotICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBzaGltIHdvcmsuCi0gICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuaW5pdGlhbGl6ZVNoaW0oKTsKLSAgICAvLyBGSVhNRTogUGFzcyB0aGUgY2xpZW50
IGlkZW50aWZpZXIgaGVyZS4KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplU2Fu
ZGJveChTdHJpbmcoKSk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShDb3Jl
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKHNlcnZlclBvcnQsIHhwY0Nvbm5lY3Rpb24pLCBS
dW5Mb29wOjptYWluKCkpOwotCi0gICAgV0tBWFJlZ2lzdGVyUmVtb3RlQXBwKCk7Ci0KLSAgICBb
cG9vbCBkcmFpbl07Ci0KLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgogCiBpbnQgV2ViUHJvY2Vz
c01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5lKQogewpAQCAtMjExLDYgKzE2NSw4
IEBAIGludCBXZWJQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY28KICAgICBpZiAoY2ZM
b2NhbGl6YXRpb24pCiAgICAgICAgIFdLU2V0RGVmYXVsdExvY2FsaXphdGlvbihjZkxvY2FsaXph
dGlvbi5nZXQoKSk7CiAKKyAgICBbcG9vbCBkcmFpbl07CisKICNpZiAhU0hPV19DUkFTSF9SRVBP
UlRFUgogICAgIC8vIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4aXQgb24gYSBjcmFz
aCBzbyB0aGF0IENyYXNoUmVwb3J0ZXIgZG9lcyBub3Qgc2hvdyB1cC4KICAgICBzaWduYWwoU0lH
SUxMLCBfZXhpdCk7CkBAIC0yMTksMTEgKzE3NSw2IEBAIGludCBXZWJQcm9jZXNzTWFpbihjb25z
dCBDb21tYW5kTGluZSYgY28KICAgICBzaWduYWwoU0lHU0VHViwgX2V4aXQpOwogI2VuZGlmCiAK
LSAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOwotICAgIEpTQzo6aW5pdGlhbGl6ZVRo
cmVhZGluZygpOwotICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICBSdW5Mb29w
Ojppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKLQogI2lmIFVTRShBUFBLSVQpCiAgICAgIC8vIElu
aXRpYWxpemUgQXBwS2l0LgogICAgIFtOU0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsK
QEAgLTIzMywxMyArMTg0LDcgQEAgaW50IFdlYlByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5l
JiBjbwogICAgIFtbTlNBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gX2luc3RhbGxBdXRv
cmVsZWFzZVBvb2xzT25DdXJyZW50VGhyZWFkSWZOZWNlc3NhcnldOwogI2VuZGlmCiAKLSAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplU2hpbSgpOwotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmluaXRpYWxpemVTYW5kYm94KGNsaWVudElkZW50aWZpZXIpOwotICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihz
ZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6bWFpbigpKTsKLQotICAgIFdLQVhSZWdpc3RlclJlbW90ZUFw
cCgpOwotCi0gICAgW3Bvb2wgZHJhaW5dOworICAgIEluaXRpYWxpemVXZWJQcm9jZXNzKGNsaWVu
dElkZW50aWZpZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoc2VydmVyUG9ydCkp
OwogCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvbWFjL1dlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbi5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1hQQ1NlcnZp
Y2VNYWluLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbl9oCisjZGVmaW5lIFdlYlByb2Nlc3NYUENTZXJ2
aWNlTWFpbl9oCisKKyNpZiBIQVZFKFhQQykKKworI2luY2x1ZGUgIldLQmFzZS5oIgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBpbnQgV2Vi
UHJvY2Vzc1hQQ1NlcnZpY2VNYWluKGludCBhcmdjLCBjaGFyKiogYXJndik7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfTsgLy8gZXh0ZXJuICJDIgorI2VuZGlmCisKKyNlbmRpZiAvLyBIQVZFKFhQ
QykKKworI2VuZGlmIC8vIFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbl9oCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzWFBDU2VydmljZU1haW4ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1hQQ1NlcnZp
Y2VNYWluLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMv
V2ViUHJvY2Vzc1hQQ1NlcnZpY2VNYWluLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzWFBD
U2VydmljZU1haW4uaCIKKworI2lmIEhBVkUoWFBDKQorCisjaW1wb3J0ICJFbnZpcm9ubWVudFV0
aWxpdGllcy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmgiCisjaW1wb3J0
IDxzdGRpby5oPgorI2ltcG9ydCA8c3RkbGliLmg+CisjaW1wb3J0IDx4cGMveHBjLmg+CisKK2V4
dGVybiAiQyIgbWFjaF9wb3J0X3QgeHBjX2RpY3Rpb25hcnlfY29weV9tYWNoX3NlbmQoeHBjX29i
amVjdF90LCBjb25zdCBjaGFyKik7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdm9p
ZCBXZWJLaXQyU2VydmljZUV2ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCit7Cisg
ICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwZWVyLCBe
KHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0
X3R5cGUoZXZlbnQpOworICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9FUlJPUikgeworICAg
ICAgICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgfHwgZXZl
bnQgPT0gWFBDX0VSUk9SX1RFUk1JTkFUSU9OX0lNTUlORU5UKSB7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSB0aGlzIGNhc2UgbW9yZSBncmFjZWZ1bGx5LgorICAgICAgICAgICAg
ICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGFzc2VydCh0eXBlID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOworCisgICAg
ICAgICAgICBpZiAoIXN0cmNtcCh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAibWVz
c2FnZS1uYW1lIiksICJib290c3RyYXAiKSkgeworICAgICAgICAgICAgICAgIHhwY19vYmplY3Rf
dCByZXBseSA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShldmVudCk7CisgICAgICAgICAg
ICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhyZXBseSwgIm1lc3NhZ2UtbmFtZSIsICJw
cm9jZXNzLWZpbmlzaGVkLWxhdW5jaGluZyIpOworICAgICAgICAgICAgICAgIHhwY19jb25uZWN0
aW9uX3NlbmRfbWVzc2FnZSh4cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24oZXZl
bnQpLCByZXBseSk7CisgICAgICAgICAgICAgICAgeHBjX3JlbGVhc2UocmVwbHkpOworCisgICAg
ICAgICAgICAgICAgSW5pdGlhbGl6ZVdlYlByb2Nlc3MoU3RyaW5nKHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcoZXZlbnQsICJjbGllbnQtaWRlbnRpZmllciIpKSwgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcih4cGNfZGljdGlvbmFyeV9jb3B5X21hY2hfc2VuZChldmVudCwgInNlcnZl
ci1wb3J0IiksIHBlZXIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKHBlZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworaW50IFdlYlByb2Nlc3NYUENTZXJ2aWNlTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
Cit7CisgICAgLy8gUmVtb3ZlIHRoZSBXZWJQcm9jZXNzIHNoaW0gZnJvbSB0aGUgRFlMRF9JTlNF
UlRfTElCUkFSSUVTIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIGFueSBwcm9jZXNzZXMgc3Bhd25l
ZCBieQorICAgIC8vIHRoZSBXZWJQcm9jZXNzIGRvbid0IHRyeSB0byBpbnNlcnQgdGhlIHNoaW0g
YW5kIGNyYXNoLgorICAgIFdlYktpdDo6RW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0cmlwVmFsdWVz
RW5kaW5nV2l0aFN0cmluZygiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgIi9XZWJQcm9jZXNzU2hp
bS5keWxpYiIpOworCisgICAgeHBjX21haW4oV2ViS2l0OjpXZWJLaXQyU2VydmljZUV2ZW50SGFu
ZGxlcik7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvLyBIQVZFKFhQQykK
</data>
<flag name="review"
          id="174347"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>