<?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>33561</bug_id>
          
          <creation_ts>2010-01-12 16:58:43 -0800</creation_ts>
          <short_desc>[Android] JavaClass uses JSC-specific types</short_desc>
          <delta_ts>2010-01-19 13:54:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Android</rep_platform>
          <op_sys>Android</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>33819</dependson>
          <blocked>32154</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>android-webkit-unforking</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>180040</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-12 16:58:43 -0800</bug_when>
    <thetext>JavaClass, defined in WebCore/bridge/jni/jni_class.h, uses JSC-specific types. This causes problems on Android, where we can build with JSC or V8. See
Bug 32154, which this bug blocks.

The JSC-specific version of JavaClass should be moved a different location, so that the other common code can be used for both JSC and V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180046</commentid>
    <comment_count>1</comment_count>
      <attachid>46415</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-12 17:15:24 -0800</bug_when>
    <thetext>Created attachment 46415
Patch 1 for Bug 33561

A later patch will add a version of JavaClass for V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181863</commentid>
    <comment_count>2</comment_count>
      <attachid>46819</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-18 06:41:02 -0800</bug_when>
    <thetext>Created attachment 46819
Patch 2 for Bug 33561

Corrects naming of JavaClassJSC.[cpp|h]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181864</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-18 06:45:38 -0800</bug_when>
    <thetext>Attachment 46819 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
he left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:127:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:128:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:128:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:129:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:129:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:130:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:130:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:131:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:131:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:132:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:137:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bridge/jni/jsc/JavaClassJSC.cpp:142:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bridge/jni/jsc/JavaClassJSC.h:40:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bridge/jni/jsc/JavaClassJSC.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bridge/jni/jsc/JavaClassJSC.h:52:  _fields is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/bridge/jni/jsc/JavaClassJSC.h:53:  _methods is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Skipping input &apos;WebCore/bridge/jni/jni_class.h&apos;: Can&apos;t open for reading
Skipping input &apos;WebCore/bridge/jni/jni_class.cpp&apos;: Can&apos;t open for reading
Total errors found: 25


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181865</commentid>
    <comment_count>4</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-18 06:47:23 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 46819 [details] did not pass style-queue:
Will fix style in moved code in a separate patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181907</commentid>
    <comment_count>5</comment_count>
      <attachid>46819</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-18 09:57:45 -0800</bug_when>
    <thetext>Comment on attachment 46819
Patch 2 for Bug 33561

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182055</commentid>
    <comment_count>6</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-18 17:23:33 -0800</bug_when>
    <thetext>Landed manually in http://trac.webkit.org/changeset/53443

Have opened Bug 33819 to fix style in moved code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182437</commentid>
    <comment_count>7</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-19 13:54:34 -0800</bug_when>
    <thetext>Style is now fixed

Closing bug as resolved.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46415</attachid>
            <date>2010-01-12 17:15:24 -0800</date>
            <delta_ts>2010-01-18 06:41:02 -0800</delta_ts>
            <desc>Patch 1 for Bug 33561</desc>
            <filename>jniClass.txt</filename>
            <type>text/plain</type>
            <size>26235</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzE2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDEtMTIgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVzIEpTQy1zcGVjaWZpYyB2ZXJzaW9uIG9mIEphdmFDbGFzcyBmcm9tIGJyaWRnZS9qbmkv
am5pX2NsYXNzIHRvIGJyaWRnZS9qbmkvanNjL2puaV9jbGFzc19qc2MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTYxCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCByZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICogQW5kcm9pZC5qc2NiaW5kaW5n
cy5tazogTW9kaWZpZWQuIFJlbW92ZWQgam5pX2NsYXNzLmNwcCBhbmQgYWRkZWQgam5pX2NsYXNz
X2pzYy5jcHAKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IE1v
ZGlmaWVkLiBSZW1vdmVkIGpuaV9jbGFzcy5bY3BwfGhdIGFuZCBhZGRlZCBqbmlfY2xhc3NfanNj
LltjcHB8aF0KKyAgICAgICAgKiBicmlkZ2Uvam5pL2puaV9jbGFzcy5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogYnJpZGdlL2puaS9qbmlfY2xhc3MuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBicmlk
Z2Uvam5pL2puaV9pbnN0YW5jZS5jcHA6IE1vZGlmaWVkLiBJbmNsdWRlcyBqbmlfY2xhc3NfanNj
LmgKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9qbmlfY2xhc3NfanNjLmNwcDogQWRkZWQuCisg
ICAgICAgIChKYXZhQ2xhc3M6OkphdmFDbGFzcyk6CisgICAgICAgIChKYXZhQ2xhc3M6On5KYXZh
Q2xhc3MpOgorICAgICAgICAoSmF2YUNsYXNzOjptZXRob2RzTmFtZWQpOgorICAgICAgICAoSmF2
YUNsYXNzOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKEphdmFDbGFzczo6aXNOdW1iZXJDbGFzcyk6
CisgICAgICAgIChKYXZhQ2xhc3M6OmlzQm9vbGVhbkNsYXNzKToKKyAgICAgICAgKEphdmFDbGFz
czo6aXNTdHJpbmdDbGFzcyk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2Mvam5pX2NsYXNzX2pz
Yy5oOiBBZGRlZC4KKwogMjAxMC0wMS0xMiAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KSW5kZXg6IFdlYkNv
cmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQu
anNjYmluZGluZ3MubWsJKHJldmlzaW9uIDUzMTY1KQorKysgV2ViQ29yZS9BbmRyb2lkLmpzY2Jp
bmRpbmdzLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMTAgKzE4MywxMCBAQCBMT0NBTF9TUkNf
RklMRVMgKz0gXAogCWJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwIFwKIAlicmlkZ2UvYy9jX3J1bnRp
bWUuY3BwIFwKIAlicmlkZ2UvYy9jX3V0aWxpdHkuY3BwIFwKLQlicmlkZ2Uvam5pL2puaV9jbGFz
cy5jcHAgXAogCWJyaWRnZS9qbmkvam5pX2luc3RhbmNlLmNwcCBcCiAJYnJpZGdlL2puaS9qbmlf
cnVudGltZS5jcHAgXAogCWJyaWRnZS9qbmkvam5pX3V0aWxpdHkuY3BwIFwKKwlicmlkZ2Uvam5p
L2pzYy9qbmlfY2xhc3NfanNjLmNwcCBcCiAJYnJpZGdlL2puaS9qc2Mvam5pX3V0aWxpdHlfcHJp
dmF0ZS5jcHAgXAogCWJyaWRnZS9ucHJ1bnRpbWUuY3BwIFwKIAlicmlkZ2UvcnVudGltZS5jcHAg
XApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDUzMTY1KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTMwMyw4ICszMDMsNiBAQAogCQkxQTU2OUNGQzBEN0UyQjgyMDA3
QzM5ODMgLyogY19ydW50aW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTU2OUNDQjBEN0UyQjgyMDA3QzM5ODMgLyogY19ydW50aW1lLmggKi87IH07
CiAJCTFBNTY5Q0ZEMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDQ0MwRDdFMkI4MjAwN0Mz
OTgzIC8qIGNfdXRpbGl0eS5jcHAgKi87IH07CiAJCTFBNTY5Q0ZFMEQ3RTJCODIwMDdDMzk4MyAv
KiBjX3V0aWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBNTY5Q0NEMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuaCAqLzsgfTsKLQkJMUE1
NjlDRkYwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9jbGFzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNDRjBEN0UyQjgyMDA3QzM5ODMgLyog
am5pX2NsYXNzLmNwcCAqLzsgfTsKLQkJMUE1NjlEMDAwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9j
bGFzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1
NjlDRDAwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9jbGFzcy5oICovOyB9OwogCQkxQTU2OUQwMTBE
N0UyQjgyMDA3QzM5ODMgLyogam5pX2luc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0QxMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlf
aW5zdGFuY2UuY3BwICovOyB9OwogCQkxQTU2OUQwMjBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2lu
c3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTU2OUNEMjBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2luc3RhbmNlLmggKi87IH07CiAJCTFBNTY5
RDAzMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfanNvYmplY3QubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNEMzBEN0UyQjgyMDA3QzM5ODMgLyog
am5pX2pzb2JqZWN0Lm1tICovOyB9OwpAQCAtMTExMyw2ICsxMTExLDggQEAKIAkJNTRDNTBGN0Iw
RTgwMURGMzAwOTgzMkEwIC8qIFhNTFRva2VuaXplckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEw
IC8qIFhNTFRva2VuaXplckxpYnhtbDIuY3BwICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJD
ODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU5NDM1NkEwMTBGRDUwRkEwMDcwMDVDRCAv
KiBqbmlfY2xhc3NfanNjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1OTQzNTY5RjEwRkQ1MEZBMDA3MDA1Q0QgLyogam5pX2NsYXNzX2pzYy5oICovOyB9
OworCQk1OTQzNTZBMjEwRkQ1MTExMDA3MDA1Q0QgLyogam5pX2NsYXNzX2pzYy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTQzNTZBMTEwRkQ1MTEx
MDA3MDA1Q0QgLyogam5pX2NsYXNzX2pzYy5jcHAgKi87IH07CiAJCTU5OUQxRTMyMTBDOTdENkUw
MEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OUQxRTMwMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlf
dXRpbGl0eV9wcml2YXRlLmNwcCAqLzsgfTsKIAkJNTk5RDFFMzMxMEM5N0Q2RTAwRTBFRjEyIC8q
IGpuaV91dGlsaXR5X3ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU5OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2
YXRlLmggKi87IH07CiAJCTU5Qzc3RjJBMTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNl
cnZpY2VNb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU5Qzc3RjI4MTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNw
cCAqLzsgfTsKQEAgLTU1NDEsOCArNTU0MSw2IEBACiAJCTFBNTY5Q0NCMEQ3RTJCODIwMDdDMzk4
MyAvKiBjX3J1bnRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY19ydW50
aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNTY5Q0NDMEQ3RTJCODIwMDdD
Mzk4MyAvKiBjX3V0aWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gY191dGlsaXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1NjlDQ0Qw
RDdFMkI4MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBjX3V0aWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE1NjlD
Q0YwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9jbGFzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBqbmlfY2xhc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQTU2OUNEMDBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2NsYXNzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGpuaV9jbGFzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTU2OUNEMTBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2luc3RhbmNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGpuaV9pbnN0YW5jZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNTY5Q0QyMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlf
aW5zdGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gam5pX2luc3RhbmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNTY5Q0QzMEQ3RTJCODIwMDdDMzk4
MyAvKiBqbmlfanNvYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBqbmlfanNvYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDU2
LDYgKzY0NTQsOCBAQAogCQk1NEM1MEY3QTBFODAxREYzMDA5ODMyQTAgLyogWE1MVG9rZW5pemVy
TGlieG1sMi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUb2tl
bml6ZXJMaWJ4bWwyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1
NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk1
OTQzNTY5RjEwRkQ1MEZBMDA3MDA1Q0QgLyogam5pX2NsYXNzX2pzYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBqbmlfY2xhc3NfanNjLmg7IHBhdGggPSBqc2Mvam5pX2NsYXNz
X2pzYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OTQzNTZBMTEwRkQ1MTExMDA3
MDA1Q0QgLyogam5pX2NsYXNzX2pzYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBqbmlfY2xhc3NfanNjLmNwcDsgcGF0aCA9IGpzYy9qbmlfY2xhc3NfanNjLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk5RDFFMzAxMEM5N0Q2RTAwRTBFRjEyIC8q
IGpuaV91dGlsaXR5X3ByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHA7IHBhdGggPSBqc2Mvam5pX3V0aWxpdHlfcHJp
dmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5OUQxRTMxMTBDOTdENkUw
MEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IGpuaV91dGlsaXR5X3ByaXZhdGUuaDsgcGF0aCA9IGpzYy9qbmlfdXRpbGl0eV9w
cml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5Qzc3RjI4MTA1NDVCM0Iw
MDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwOyBwYXRoID0gbW9j
ay9HZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEwMzI3LDggKzEwMzI3LDYgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJNTk5RDFFMkYxMEM5N0Q0QzAwRTBFRjEyIC8qIGpzYyAqLywKLQkJCQkxQTU2OUND
RjBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2NsYXNzLmNwcCAqLywKLQkJCQkxQTU2OUNEMDBEN0Uy
QjgyMDA3QzM5ODMgLyogam5pX2NsYXNzLmggKi8sCiAJCQkJMUE1NjlDRDEwRDdFMkI4MjAwN0Mz
OTgzIC8qIGpuaV9pbnN0YW5jZS5jcHAgKi8sCiAJCQkJMUE1NjlDRDIwRDdFMkI4MjAwN0MzOTgz
IC8qIGpuaV9pbnN0YW5jZS5oICovLAogCQkJCTFBNTY5Q0Q0MEQ3RTJCODIwMDdDMzk4MyAvKiBq
bmlfanNvYmplY3QuaCAqLywKQEAgLTExMDM4LDYgKzExMDM2LDggQEAKIAkJNTk5RDFFMkYxMEM5
N0Q0QzAwRTBFRjEyIC8qIGpzYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNTk0MzU2QTExMEZENTExMTAwNzAwNUNEIC8qIGpuaV9jbGFzc19qc2MuY3Bw
ICovLAorCQkJCTU5NDM1NjlGMTBGRDUwRkEwMDcwMDVDRCAvKiBqbmlfY2xhc3NfanNjLmggKi8s
CiAJCQkJNTk5RDFFMzAxMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuY3Bw
ICovLAogCQkJCTU5OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRl
LmggKi8sCiAJCQkpOwpAQCAtMTcxMjAsNyArMTcxMjAsNiBAQAogCQkJCTFDODFCQTBFMEU5NzM0
ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDODFCQTAxMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUM4MUI5RkYwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxl
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUE1NjlEMDAwRDdFMkI4MjAwN0MzOTgzIC8qIGpu
aV9jbGFzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMDIwRDdFMkI4MjAwN0MzOTgzIC8q
IGpuaV9pbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMDQwRDdFMkI4MjAwN0Mz
OTgzIC8qIGpuaV9qc29iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMDcwRDdFMkI4
MjAwN0MzOTgzIC8qIGpuaV9ydW50aW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTE4MzI1LDYgKzE4
MzI0LDcgQEAKIAkJCQkwRjVCN0E1NTEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNEMwMEU2MTBGNkY3QzEwMENBMzhGNSAvKiBI
VE1MTm9TY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODdEOTdCRjEwRkI4RDc3
MDBDMDA4NzQgLyogSlNTVkdQT0RMaXN0Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OTQz
NTZBMDEwRkQ1MEZBMDA3MDA1Q0QgLyogam5pX2NsYXNzX2pzYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0xOTI4OSw3ICsxOTI4OSw2IEBACiAJCQkJMUM4MUJBMEQwRTk3MzQ4MzAwMjY2RTA3IC8qIEph
dmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzgxQkEwMjBFOTcz
M0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUM4MUJBMDAwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQkxQTU2OUNGRjBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2NsYXNzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDAxMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfaW5z
dGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMDMwRDdFMkI4MjAwN0MzOTgzIC8q
IGpuaV9qc29iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDA1MEQ3RTJCODIwMDdD
Mzk4MyAvKiBqbmlfb2JqYy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjA0ODUsNiArMjA0ODQsNyBA
QAogCQkJCTUxMTIyNDc4MTBDRkI4RjQwMDgwOTlENyAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVCN0E1NDEwRjY1RDdBMDAzNzYz
MDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U0QzAw
RTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTk0MzU2QTIxMEZENTExMTAwNzAwNUNEIC8qIGpuaV9jbGFzc19qc2MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2NsYXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2NsYXNzLmNwcAkocmV2aXNpb24gNTMx
NjUpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgImpuaV9jbGFzcy5oIgotCi0jaWYgRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkK
LQotI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVy
Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlICJqbmlfdXRpbGl0eS5o
IgotI2luY2x1ZGUgImpuaV9ydW50aW1lLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRp
bmdzOwotCi1KYXZhQ2xhc3M6OkphdmFDbGFzcyhqb2JqZWN0IGFuSW5zdGFuY2UpCi17Ci0gICAg
am9iamVjdCBhQ2xhc3MgPSBjYWxsSk5JTWV0aG9kPGpvYmplY3Q+KGFuSW5zdGFuY2UsICJnZXRD
bGFzcyIsICIoKUxqYXZhL2xhbmcvQ2xhc3M7Iik7Ci0gICAgCi0gICAgaWYgKCFhQ2xhc3MpIHsK
LSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogIHVuYWJsZSB0byBjYWxsIGdldENsYXNzIG9u
IGluc3RhbmNlICVwXG4iLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBhbkluc3RhbmNlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBqc3RyaW5nIGNsYXNzTmFtZSA9IChqc3RyaW5n
KWNhbGxKTklNZXRob2Q8am9iamVjdD4oYUNsYXNzLCAiZ2V0TmFtZSIsICIoKUxqYXZhL2xhbmcv
U3RyaW5nOyIpOwotICAgIGNvbnN0IGNoYXIgKmNsYXNzTmFtZUMgPSBnZXRDaGFyYWN0ZXJzRnJv
bUpTdHJpbmcoY2xhc3NOYW1lKTsKLSAgICBfbmFtZSA9IHN0cmR1cChjbGFzc05hbWVDKTsKLSAg
ICByZWxlYXNlQ2hhcmFjdGVyc0ZvckpTdHJpbmcoY2xhc3NOYW1lLCBjbGFzc05hbWVDKTsKLQot
ICAgIGludCBpOwotICAgIEpOSUVudiAqZW52ID0gZ2V0Sk5JRW52KCk7Ci0KLSAgICAvLyBHZXQg
dGhlIGZpZWxkcwotICAgIGphcnJheSBmaWVsZHMgPSAoamFycmF5KWNhbGxKTklNZXRob2Q8am9i
amVjdD4oYUNsYXNzLCAiZ2V0RmllbGRzIiwgIigpW0xqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsi
KTsKLSAgICBpbnQgbnVtRmllbGRzID0gZW52LT5HZXRBcnJheUxlbmd0aChmaWVsZHMpOyAgICAK
LSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtRmllbGRzOyBpKyspIHsKLSAgICAgICAgam9iamVjdCBh
SkZpZWxkID0gZW52LT5HZXRPYmplY3RBcnJheUVsZW1lbnQoKGpvYmplY3RBcnJheSlmaWVsZHMs
IGkpOwotICAgICAgICBKYXZhRmllbGQgKmFGaWVsZCA9IG5ldyBKYXZhRmllbGQoZW52LCBhSkZp
ZWxkKTsgLy8gZGVsZXRlZCBpbiB0aGUgSmF2YUNsYXNzIGRlc3RydWN0b3IKLSAgICAgICAgewot
ICAgICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICAgICAg
ICAgIF9maWVsZHMuc2V0KGFGaWVsZC0+bmFtZSgpLCBhRmllbGQpOwotICAgICAgICB9Ci0gICAg
ICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoYUpGaWVsZCk7Ci0gICAgfQotCi0gICAgLy8gR2V0IHRo
ZSBtZXRob2RzCi0gICAgamFycmF5IG1ldGhvZHMgPSAoamFycmF5KWNhbGxKTklNZXRob2Q8am9i
amVjdD4oYUNsYXNzLCAiZ2V0TWV0aG9kcyIsICIoKVtMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9k
OyIpOwotICAgIGludCBudW1NZXRob2RzID0gZW52LT5HZXRBcnJheUxlbmd0aChtZXRob2RzKTsK
LSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtTWV0aG9kczsgaSsrKSB7Ci0gICAgICAgIGpvYmplY3Qg
YUpNZXRob2QgPSBlbnYtPkdldE9iamVjdEFycmF5RWxlbWVudCgoam9iamVjdEFycmF5KW1ldGhv
ZHMsIGkpOwotICAgICAgICBKYXZhTWV0aG9kICphTWV0aG9kID0gbmV3IEphdmFNZXRob2QoZW52
LCBhSk1ldGhvZCk7IC8vIGRlbGV0ZWQgaW4gdGhlIEphdmFDbGFzcyBkZXN0cnVjdG9yCi0gICAg
ICAgIE1ldGhvZExpc3QqIG1ldGhvZExpc3Q7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICAgICAgICAgIG1ldGhvZExpc3Qg
PSBfbWV0aG9kcy5nZXQoYU1ldGhvZC0+bmFtZSgpKTsKLSAgICAgICAgICAgIGlmICghbWV0aG9k
TGlzdCkgewotICAgICAgICAgICAgICAgIG1ldGhvZExpc3QgPSBuZXcgTWV0aG9kTGlzdCgpOwot
ICAgICAgICAgICAgICAgIF9tZXRob2RzLnNldChhTWV0aG9kLT5uYW1lKCksIG1ldGhvZExpc3Qp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1ldGhvZExpc3QtPmFwcGVuZChh
TWV0aG9kKTsKLSAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihhSk1ldGhvZCk7Ci0gICAgfSAg
ICAKLQotICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoZmllbGRzKTsKLSAgICBlbnYtPkRlbGV0ZUxv
Y2FsUmVmKG1ldGhvZHMpOwotICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoYUNsYXNzKTsKLX0KLQot
SmF2YUNsYXNzOjp+SmF2YUNsYXNzKCkgewotICAgIGZyZWUoKHZvaWQgKilfbmFtZSk7Ci0KLSAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAgZGVsZXRlQWxsVmFs
dWVzKF9maWVsZHMpOwotICAgIF9maWVsZHMuY2xlYXIoKTsKLQotICAgIE1ldGhvZExpc3RNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IF9tZXRob2RzLmVuZCgpOwotICAgIGZvciAoTWV0aG9kTGlz
dE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBfbWV0aG9kcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgY29uc3QgTWV0aG9kTGlzdCogbWV0aG9kTGlzdCA9IGl0LT5zZWNvbmQ7
Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcygqbWV0aG9kTGlzdCk7Ci0gICAgICAgIGRlbGV0ZSBt
ZXRob2RMaXN0OwotICAgIH0KLSAgICBfbWV0aG9kcy5jbGVhcigpOwotfQotCi1NZXRob2RMaXN0
IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIElu
c3RhbmNlKikgY29uc3QKLXsKLSAgICBNZXRob2RMaXN0ICptZXRob2RMaXN0ID0gX21ldGhvZHMu
Z2V0KGlkZW50aWZpZXIudXN0cmluZygpLnJlcCgpKTsKLSAgICAKLSAgICBpZiAobWV0aG9kTGlz
dCkKLSAgICAgICAgcmV0dXJuICptZXRob2RMaXN0OwotICAgIHJldHVybiBNZXRob2RMaXN0KCk7
Ci19Ci0KLUZpZWxkICpKYXZhQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAotewotICAgIHJldHVybiBfZmllbGRzLmdldChpZGVu
dGlmaWVyLnVzdHJpbmcoKS5yZXAoKSk7Ci19Ci0KLWJvb2wgSmF2YUNsYXNzOjppc051bWJlckNs
YXNzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKChzdHJjbXAoX25hbWUsICJqYXZhLmxhbmcuQnl0
ZSIpID09IDAgfHwKLSAgICAgICAgICAgICBzdHJjbXAoX25hbWUsICJqYXZhLmxhbmcuU2hvcnQi
KSA9PSAwIHx8Ci0gICAgICAgICAgICAgc3RyY21wKF9uYW1lLCAiamF2YS5sYW5nLkludGVnZXIi
KSA9PSAwIHx8Ci0gICAgICAgICAgICAgc3RyY21wKF9uYW1lLCAiamF2YS5sYW5nLkxvbmciKSA9
PSAwIHx8Ci0gICAgICAgICAgICAgc3RyY21wKF9uYW1lLCAiamF2YS5sYW5nLkZsb2F0IikgPT0g
MCB8fAotICAgICAgICAgICAgIHN0cmNtcChfbmFtZSwgImphdmEubGFuZy5Eb3VibGUiKSA9PSAw
KSApOwotfQotCi1ib29sIEphdmFDbGFzczo6aXNCb29sZWFuQ2xhc3MoKSBjb25zdAotewotICAg
IHJldHVybiBzdHJjbXAoX25hbWUsICJqYXZhLmxhbmcuQm9vbGVhbiIpID09IDA7Ci19Ci0KLWJv
b2wgSmF2YUNsYXNzOjppc1N0cmluZ0NsYXNzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RyY21w
KF9uYW1lLCAiamF2YS5sYW5nLlN0cmluZyIpID09IDA7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
TUFDX0pBVkFfQlJJREdFKQpJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9jbGFzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfY2xhc3MuaAkocmV2aXNpb24gNTMx
NjUpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2NsYXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBKTklfQ0xBU1NfSF8K
LSNkZWZpbmUgSk5JX0NMQVNTX0hfCi0KLSNpZiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQotCi0j
aW5jbHVkZSA8am5pX3J1bnRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1l
c3BhY2UgSlNDIHsKLQotbmFtZXNwYWNlIEJpbmRpbmdzIHsKLQotY2xhc3MgSmF2YUNsYXNzIDog
cHVibGljIENsYXNzIHsKLXB1YmxpYzoKLSAgICBKYXZhQ2xhc3MgKGpvYmplY3QgYW5JbnN0YW5j
ZSk7Ci0gICAgfkphdmFDbGFzcyAoKTsKLQotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2Rz
TmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3Q7ICAgIAot
ICAgIHZpcnR1YWwgRmllbGQgKmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNl
KiBpbnN0YW5jZSkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBpc051bWJlckNsYXNzKCkgY29uc3Q7
Ci0gICAgYm9vbCBpc0Jvb2xlYW5DbGFzcygpIGNvbnN0OwotICAgIGJvb2wgaXNTdHJpbmdDbGFz
cygpIGNvbnN0OwotICAgIAotcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyICpfbmFtZTsKLSAgICBG
aWVsZE1hcCBfZmllbGRzOwotICAgIE1ldGhvZExpc3RNYXAgX21ldGhvZHM7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBCaW5kaW5ncwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVO
QUJMRShNQUNfSkFWQV9CUklER0UpCi0KLSNlbmRpZiAvLyBKTklfQ0xBU1NfSF8KSW5kZXg6IFdl
YkNvcmUvYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiA1MzE2NSkKKysrIFdlYkNvcmUv
YnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQogCi0jaW5jbHVkZSAiam5pX2NsYXNz
LmgiCisjaW5jbHVkZSAiam5pX2NsYXNzX2pzYy5oIgogI2luY2x1ZGUgImpuaV9ydW50aW1lLmgi
CiAjaW5jbHVkZSAiam5pX3V0aWxpdHkuaCIKICNpbmNsdWRlICJqbmlfdXRpbGl0eV9wcml2YXRl
LmgiCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL2puaV9jbGFzc19qc2MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qc2Mvam5pX2NsYXNzX2pzYy5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL2puaV9jbGFzc19qc2MuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiam5pX2NsYXNzX2pzYy5oIgorCisjaWYgRU5BQkxFKE1BQ19K
QVZBX0JSSURHRSkKKworI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiam5pX3J1
bnRpbWUuaCIKKyNpbmNsdWRlICJqbmlfdXRpbGl0eS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M6OkJpbmRpbmdzOworCitKYXZhQ2xhc3M6OkphdmFDbGFzcyhqb2JqZWN0IGFuSW5zdGFu
Y2UpCit7CisgICAgam9iamVjdCBhQ2xhc3MgPSBjYWxsSk5JTWV0aG9kPGpvYmplY3Q+KGFuSW5z
dGFuY2UsICJnZXRDbGFzcyIsICIoKUxqYXZhL2xhbmcvQ2xhc3M7Iik7CisKKyAgICBpZiAoIWFD
bGFzcykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiAgdW5hYmxlIHRvIGNhbGwgZ2V0
Q2xhc3Mgb24gaW5zdGFuY2UgJXBcbiIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIGFuSW5zdGFuY2Up
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAganN0cmluZyBjbGFzc05hbWUgPSAoanN0
cmluZyljYWxsSk5JTWV0aG9kPGpvYmplY3Q+KGFDbGFzcywgImdldE5hbWUiLCAiKClMamF2YS9s
YW5nL1N0cmluZzsiKTsKKyAgICBjb25zdCBjaGFyKiBjbGFzc05hbWVDID0gZ2V0Q2hhcmFjdGVy
c0Zyb21KU3RyaW5nKGNsYXNzTmFtZSk7CisgICAgbV9uYW1lID0gc3RyZHVwKGNsYXNzTmFtZUMp
OworICAgIHJlbGVhc2VDaGFyYWN0ZXJzRm9ySlN0cmluZyhjbGFzc05hbWUsIGNsYXNzTmFtZUMp
OworCisgICAgaW50IGk7CisgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKKworICAgIC8v
IEdldCB0aGUgZmllbGRzCisgICAgamFycmF5IGZpZWxkcyA9IChqYXJyYXkpY2FsbEpOSU1ldGhv
ZDxqb2JqZWN0PihhQ2xhc3MsICJnZXRGaWVsZHMiLCAiKClbTGphdmEvbGFuZy9yZWZsZWN0L0Zp
ZWxkOyIpOworICAgIGludCBudW1GaWVsZHMgPSBlbnYtPkdldEFycmF5TGVuZ3RoKGZpZWxkcyk7
CisgICAgZm9yIChpID0gMDsgaSA8IG51bUZpZWxkczsgaSsrKSB7CisgICAgICAgIGpvYmplY3Qg
YUpGaWVsZCA9IGVudi0+R2V0T2JqZWN0QXJyYXlFbGVtZW50KChqb2JqZWN0QXJyYXkpZmllbGRz
LCBpKTsKKyAgICAgICAgSmF2YUZpZWxkKiBhRmllbGQgPSBuZXcgSmF2YUZpZWxkKGVudiwgYUpG
aWVsZCk7IC8vIGRlbGV0ZWQgaW4gdGhlIEphdmFDbGFzcyBkZXN0cnVjdG9yCisgICAgICAgIHsK
KyAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgICAg
ICAgICBtX2ZpZWxkcy5zZXQoYUZpZWxkLT5uYW1lKCksIGFGaWVsZCk7CisgICAgICAgIH0KKyAg
ICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihhSkZpZWxkKTsKKyAgICB9CisKKyAgICAvLyBHZXQg
dGhlIG1ldGhvZHMKKyAgICBqYXJyYXkgbWV0aG9kcyA9IChqYXJyYXkpY2FsbEpOSU1ldGhvZDxq
b2JqZWN0PihhQ2xhc3MsICJnZXRNZXRob2RzIiwgIigpW0xqYXZhL2xhbmcvcmVmbGVjdC9NZXRo
b2Q7Iik7CisgICAgaW50IG51bU1ldGhvZHMgPSBlbnYtPkdldEFycmF5TGVuZ3RoKG1ldGhvZHMp
OworICAgIGZvciAoaSA9IDA7IGkgPCBudW1NZXRob2RzOyBpKyspIHsKKyAgICAgICAgam9iamVj
dCBhSk1ldGhvZCA9IGVudi0+R2V0T2JqZWN0QXJyYXlFbGVtZW50KChqb2JqZWN0QXJyYXkpbWV0
aG9kcywgaSk7CisgICAgICAgIEphdmFNZXRob2QqIGFNZXRob2QgPSBuZXcgSmF2YU1ldGhvZChl
bnYsIGFKTWV0aG9kKTsgLy8gZGVsZXRlZCBpbiB0aGUgSmF2YUNsYXNzIGRlc3RydWN0b3IKKyAg
ICAgICAgTWV0aG9kTGlzdCogbWV0aG9kTGlzdDsKKyAgICAgICAgeworICAgICAgICAgICAgSlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgICAgICAgICAgbWV0aG9kTGlz
dCA9IG1fbWV0aG9kcy5nZXQoYU1ldGhvZC0+bmFtZSgpKTsKKyAgICAgICAgICAgIGlmICghbWV0
aG9kTGlzdCkgeworICAgICAgICAgICAgICAgIG1ldGhvZExpc3QgPSBuZXcgTWV0aG9kTGlzdCgp
OworICAgICAgICAgICAgICAgIG1fbWV0aG9kcy5zZXQoYU1ldGhvZC0+bmFtZSgpLCBtZXRob2RM
aXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtZXRob2RMaXN0LT5hcHBl
bmQoYU1ldGhvZCk7CisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoYUpNZXRob2QpOworICAg
IH0KKworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoZmllbGRzKTsKKyAgICBlbnYtPkRlbGV0ZUxv
Y2FsUmVmKG1ldGhvZHMpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoYUNsYXNzKTsKK30KKwor
SmF2YUNsYXNzOjp+SmF2YUNsYXNzKCkKK3sKKyAgICBmcmVlKCh2b2lkKiltX25hbWUpOworCisg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIGRlbGV0ZUFsbFZh
bHVlcyhtX2ZpZWxkcyk7CisgICAgbV9maWVsZHMuY2xlYXIoKTsKKworICAgIE1ldGhvZExpc3RN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbWV0aG9kcy5lbmQoKTsKKyAgICBmb3IgKE1ldGhv
ZExpc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9tZXRob2RzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICBjb25zdCBNZXRob2RMaXN0KiBtZXRob2RMaXN0ID0gaXQtPnNl
Y29uZDsKKyAgICAgICAgZGVsZXRlQWxsVmFsdWVzKCptZXRob2RMaXN0KTsKKyAgICAgICAgZGVs
ZXRlIG1ldGhvZExpc3Q7CisgICAgfQorICAgIG1fbWV0aG9kcy5jbGVhcigpOworfQorCitNZXRo
b2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIsIEluc3RhbmNlKikgY29uc3QKK3sKKyAgICBNZXRob2RMaXN0KiBtZXRob2RMaXN0ID0gbV9t
ZXRob2RzLmdldChpZGVudGlmaWVyLnVzdHJpbmcoKS5yZXAoKSk7CisKKyAgICBpZiAobWV0aG9k
TGlzdCkKKyAgICAgICAgcmV0dXJuKiBtZXRob2RMaXN0OworICAgIHJldHVybiBNZXRob2RMaXN0
KCk7Cit9CisKK0ZpZWxkKiBKYXZhQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAoreworICAgIHJldHVybiBtX2ZpZWxkcy5nZXQo
aWRlbnRpZmllci51c3RyaW5nKCkucmVwKCkpOworfQorCitib29sIEphdmFDbGFzczo6aXNOdW1i
ZXJDbGFzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuICghc3RyY21wKG1fbmFtZSwgImphdmEubGFu
Zy5CeXRlIikKKyAgICAgICAgfHwgIXN0cmNtcChtX25hbWUsICJqYXZhLmxhbmcuU2hvcnQiKQor
ICAgICAgICB8fCAhc3RyY21wKG1fbmFtZSwgImphdmEubGFuZy5JbnRlZ2VyIikKKyAgICAgICAg
fHwgIXN0cmNtcChtX25hbWUsICJqYXZhLmxhbmcuTG9uZyIpCisgICAgICAgIHx8ICFzdHJjbXAo
bV9uYW1lLCAiamF2YS5sYW5nLkZsb2F0IikKKyAgICAgICAgfHwgIXN0cmNtcChtX25hbWUsICJq
YXZhLmxhbmcuRG91YmxlIikpOworfQorCitib29sIEphdmFDbGFzczo6aXNCb29sZWFuQ2xhc3Mo
KSBjb25zdAoreworICAgIHJldHVybiAhc3RyY21wKG1fbmFtZSwgImphdmEubGFuZy5Cb29sZWFu
Iik7Cit9CisKK2Jvb2wgSmF2YUNsYXNzOjppc1N0cmluZ0NsYXNzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIXN0cmNtcChtX25hbWUsICJqYXZhLmxhbmcuU3RyaW5nIik7Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQpJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9q
bmlfY2xhc3NfanNjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9qbmlf
Y2xhc3NfanNjLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL2puaV9j
bGFzc19qc2MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIGpuaV9jbGFzc19qc2NfaAorI2RlZmluZSBqbmlfY2xhc3NfanNjX2gKKwor
I2lmIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCisKKyNpbmNsdWRlICJqbmlfcnVudGltZS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2Ug
QmluZGluZ3MgeworCitjbGFzcyBKYXZhQ2xhc3MgOiBwdWJsaWMgQ2xhc3MgeworcHVibGljOgor
ICAgIEphdmFDbGFzcyhqb2JqZWN0IGFuSW5zdGFuY2UpOworICAgIH5KYXZhQ2xhc3MoKTsKKwor
ICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIElu
c3RhbmNlKiBpbnN0YW5jZSkgY29uc3Q7CisgICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChj
b25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdDsKKworICAgIGJvb2wg
aXNOdW1iZXJDbGFzcygpIGNvbnN0OworICAgIGJvb2wgaXNCb29sZWFuQ2xhc3MoKSBjb25zdDsK
KyAgICBib29sIGlzU3RyaW5nQ2xhc3MoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdCBj
aGFyKiBtX25hbWU7CisgICAgRmllbGRNYXAgbV9maWVsZHM7CisgICAgTWV0aG9kTGlzdE1hcCBt
X21ldGhvZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCisKKyNlbmRpZiAvLyBq
bmlfY2xhc3NfanNjX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46819</attachid>
            <date>2010-01-18 06:41:02 -0800</date>
            <delta_ts>2010-01-18 09:57:45 -0800</delta_ts>
            <desc>Patch 2 for Bug 33561</desc>
            <filename>javaClass2.txt</filename>
            <type>text/plain</type>
            <size>28089</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDEtMTggIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVzIEpTQy1zcGVjaWZpYyB2ZXJzaW9uIG9mIEphdmFDbGFzcyBmcm9tIGJyaWRnZS9qbmkv
am5pX2NsYXNzIHRvIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM1NjEKKworICAgICAgICBObyBuZXcg
dGVzdHMsIHJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBBbmRyb2lkLmpzY2JpbmRpbmdz
Lm1rOiBNb2RpZmllZC4gUmVtb3ZlZCBqbmlfY2xhc3MuY3BwIGFuZCBhZGRlZCBKYXZhQ2xhc3NK
U0MuY3BwCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IE1vZGlmaWVkLiBSZW1vdmVkIGpuaV9j
bGFzcy5oIGFuZCBhZGRlZCBKYXZhQ2xhc3NKU0MuaAorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW9kaWZpZWQuIFJlbW92ZWQgam5pX2NsYXNzLltjcHB8aF0g
YW5kIGFkZGVkIEphdmFDbGFzc0pTQy5bY3BwfGhdCisgICAgICAgICogYnJpZGdlL2puaS9qbmlf
Y2xhc3MuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJyaWRnZS9qbmkvam5pX2NsYXNzLmg6IFJl
bW92ZWQuCisgICAgICAgICogYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwOiBNb2RpZmllZC4g
SW5jbHVkZXMgSmF2YUNsYXNzSlNDLmgKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhQ2xh
c3NKU0MuY3BwOiBDb3BpZWQgZnJvbSBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2NsYXNzLmNwcC4K
KyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuaDogQ29waWVkIGZyb20gV2Vi
Q29yZS9icmlkZ2Uvam5pL2puaV9jbGFzcy5oLgorCiAyMDEwLTAxLTE4ICBBbGV4YW5kZXIgUGF2
bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KSW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tawo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsJKHJldmlzaW9uIDUzMzk5KQorKysg
V2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdzLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMTAg
KzE4MywxMCBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJyaWRnZS9jL2NfaW5zdGFuY2UuY3Bw
IFwKIAlicmlkZ2UvYy9jX3J1bnRpbWUuY3BwIFwKIAlicmlkZ2UvYy9jX3V0aWxpdHkuY3BwIFwK
LQlicmlkZ2Uvam5pL2puaV9jbGFzcy5jcHAgXAogCWJyaWRnZS9qbmkvam5pX2luc3RhbmNlLmNw
cCBcCiAJYnJpZGdlL2puaS9qbmlfcnVudGltZS5jcHAgXAogCWJyaWRnZS9qbmkvam5pX3V0aWxp
dHkuY3BwIFwKKwlicmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3BwIFwKIAlicmlkZ2Uvam5p
L2pzYy9qbmlfdXRpbGl0eV9wcml2YXRlLmNwcCBcCiAJYnJpZGdlL25wcnVudGltZS5jcHAgXAog
CWJyaWRnZS9ydW50aW1lLmNwcCBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDUzMzk5KQorKysgV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTQsNiArMTQsNyBAQCB3ZWJj
b3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2JpbmRpbmdzL2pzIFwKIAkt
SSQoc3JjZGlyKS9XZWJDb3JlL2JyaWRnZSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9icmlkZ2Uv
YyBcCisJLUkkKHNyY2RpcikvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYyBcCiAJLUkkKHNyY2Rpcikv
V2ViQ29yZS9jc3MgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvZG9tIFwKIAktSSQoc3JjZGlyKS9X
ZWJDb3JlL2RvbS9kZWZhdWx0IFwKQEAgLTUwMiwxMSArNTAzLDExIEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaCBcCiAJV2ViQ29yZS9icmlkZ2Uv
Yy9jX3V0aWxpdHkuY3BwIFwKIAlXZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oIFwKLQlXZWJD
b3JlL2JyaWRnZS9qbmkvam5pX2NsYXNzLmggXAogCVdlYkNvcmUvYnJpZGdlL2puaS9qbmlfaW5z
dGFuY2UuaCBcCiAJV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5oIFwKIAlXZWJDb3Jl
L2JyaWRnZS9qbmkvam5pX3J1bnRpbWUuaCBcCiAJV2ViQ29yZS9icmlkZ2Uvam5pL2puaV91dGls
aXR5LmggXAorCVdlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmggXAogCVdlYkNv
cmUvYnJpZGdlL25wYXBpLmggXAogCVdlYkNvcmUvYnJpZGdlL25wcnVudGltZS5jcHAgXAogCVdl
YkNvcmUvYnJpZGdlL25wcnVudGltZS5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1MzM5OSkKKysrIFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMsOCArMzAzLDYg
QEAKIAkJMUE1NjlDRkMwRDdFMkI4MjAwN0MzOTgzIC8qIGNfcnVudGltZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDQ0IwRDdFMkI4MjAwN0Mz
OTgzIC8qIGNfcnVudGltZS5oICovOyB9OwogCQkxQTU2OUNGRDBEN0UyQjgyMDA3QzM5ODMgLyog
Y191dGlsaXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBNTY5Q0NDMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuY3BwICovOyB9OwogCQkx
QTU2OUNGRTBEN0UyQjgyMDA3QzM5ODMgLyogY191dGlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNDRDBEN0UyQjgyMDA3QzM5ODMgLyog
Y191dGlsaXR5LmggKi87IH07Ci0JCTFBNTY5Q0ZGMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfY2xh
c3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1
NjlDQ0YwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9jbGFzcy5jcHAgKi87IH07Ci0JCTFBNTY5RDAw
MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfY2xhc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0QwMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfY2xh
c3MuaCAqLzsgfTsKIAkJMUE1NjlEMDEwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9pbnN0YW5jZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNE
MTBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2luc3RhbmNlLmNwcCAqLzsgfTsKIAkJMUE1NjlEMDIw
RDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9pbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDRDIwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9p
bnN0YW5jZS5oICovOyB9OwogCQkxQTU2OUQwMzBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2pzb2Jq
ZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1
NjlDRDMwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9qc29iamVjdC5tbSAqLzsgfTsKQEAgLTExMTcs
NiArMTExNSw4IEBACiAJCTU5OUQxRTMzMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9w
cml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
OTlEMUUzMTEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5oICovOyB9Owog
CQk1OUM3N0YyQTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUM3N0YyODEw
NTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgKi87IH07CiAJCTU5
Qzc3RjJCMTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUM3N0YyOTEwNTQ1QjNC
MDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU5REM2QjMxMTEwNEE2QjcwMDc2MEVFRiAv
KiBKYXZhQ2xhc3NKU0MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5REM2QjMwMTEwNEE2QjcwMDc2MEVFRiAvKiBKYXZhQ2xhc3NKU0MuaCAqLzsgfTsK
KwkJNTlEQzZCMzMxMTA0QTZDMDAwNzYwRUVGIC8qIEphdmFDbGFzc0pTQy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OURDNkIzMjExMDRBNkMwMDA3
NjBFRUYgLyogSmF2YUNsYXNzSlNDLmNwcCAqLzsgfTsKIAkJNUQxNUUzQUIwRjlFNkFDMTAwOUUw
RTNGIC8qIFhNTFRva2VuaXplclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVEMTVFM0E5MEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxUb2tlbml6
ZXJTY29wZS5jcHAgKi87IH07CiAJCTVEMTVFM0FDMEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxUb2tl
bml6ZXJTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUQxNUUzQUEwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTFRva2VuaXplclNjb3BlLmggKi87IH07
CiAJCTVEODc0RjEzMEQxNjFEMzIwMDc5NkMzQiAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Uy
MjdERDBBRjU4OUFEMDBENDgzMjQgLyogTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwICov
OyB9OwpAQCAtNTU0OCw4ICs1NTQ4LDYgQEAKIAkJMUE1NjlDQ0IwRDdFMkI4MjAwN0MzOTgzIC8q
IGNfcnVudGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjX3J1bnRpbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1NjlDQ0MwRDdFMkI4MjAwN0MzOTgz
IC8qIGNfdXRpbGl0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBj
X3V0aWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTU2OUNDRDBEN0Uy
QjgyMDA3QzM5ODMgLyogY191dGlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IGNfdXRpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTU2OUNDRjBE
N0UyQjgyMDA3QzM5ODMgLyogam5pX2NsYXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IGpuaV9jbGFzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBNTY5Q0QwMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfY2xhc3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gam5pX2NsYXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBNTY5Q0QxMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfaW5zdGFuY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gam5pX2luc3RhbmNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1NjlDRDIwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9pbnN0
YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBqbmlfaW5zdGFuY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1NjlDRDMwRDdFMkI4MjAwN0MzOTgzIC8q
IGpuaV9qc29iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IGpuaV9qc29iamVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NjcsNiAr
NjQ2NSw4IEBACiAJCTU5OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGpuaV91dGlsaXR5X3ByaXZh
dGUuaDsgcGF0aCA9IGpzYy9qbmlfdXRpbGl0eV9wcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU5Qzc3RjI4MTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEdlb2xvY2F0
aW9uU2VydmljZU1vY2suY3BwOyBwYXRoID0gbW9jay9HZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlDNzdGMjkxMDU0NUIzQjAwNTA2MTA0
IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oOyBwYXRoID0gbW9jay9HZW9sb2NhdGlvblNl
cnZpY2VNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5REM2QjMwMTEwNEE2
QjcwMDc2MEVFRiAvKiBKYXZhQ2xhc3NKU0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSmF2YUNsYXNzSlNDLmg7IHBhdGggPSBqc2MvSmF2YUNsYXNzSlNDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5REM2QjMyMTEwNEE2QzAwMDc2MEVFRiAvKiBKYXZhQ2xh
c3NKU0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSmF2YUNsYXNz
SlNDLmNwcDsgcGF0aCA9IGpzYy9KYXZhQ2xhc3NKU0MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1RDE1RTNBOTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MVG9rZW5pemVyU2NvcGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MVG9rZW5pemVyU2Nv
cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDE1RTNBQTBGOUU2QUMxMDA5
RTBFM0YgLyogWE1MVG9rZW5pemVyU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gWE1MVG9rZW5pemVyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUQ5MjVCNjUwRjY0RDRERDAwQjg0N0YwIC8qIFNjcm9sbEJlaGF2aW9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbEJlaGF2aW9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzQxLDggKzEwMzQxLDYgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTk5RDFFMkYxMEM5N0Q0QzAwRTBFRjEyIC8qIGpz
YyAqLywKLQkJCQkxQTU2OUNDRjBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2NsYXNzLmNwcCAqLywK
LQkJCQkxQTU2OUNEMDBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2NsYXNzLmggKi8sCiAJCQkJMUE1
NjlDRDEwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9pbnN0YW5jZS5jcHAgKi8sCiAJCQkJMUE1NjlD
RDIwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9pbnN0YW5jZS5oICovLAogCQkJCTFBNTY5Q0Q0MEQ3
RTJCODIwMDdDMzk4MyAvKiBqbmlfanNvYmplY3QuaCAqLywKQEAgLTExMDU3LDYgKzExMDU1LDgg
QEAKIAkJNTk5RDFFMkYxMEM5N0Q0QzAwRTBFRjEyIC8qIGpzYyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTlEQzZCMzIxMTA0QTZDMDAwNzYwRUVGIC8q
IEphdmFDbGFzc0pTQy5jcHAgKi8sCisJCQkJNTlEQzZCMzAxMTA0QTZCNzAwNzYwRUVGIC8qIEph
dmFDbGFzc0pTQy5oICovLAogCQkJCTU5OUQxRTMwMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRp
bGl0eV9wcml2YXRlLmNwcCAqLywKIAkJCQk1OTlEMUUzMTEwQzk3RDZFMDBFMEVGMTIgLyogam5p
X3V0aWxpdHlfcHJpdmF0ZS5oICovLAogCQkJKTsKQEAgLTE3MTQxLDcgKzE3MTQxLDYgQEAKIAkJ
CQkxQzgxQkEwRTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQzgxQkEwMTBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFBy
b2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDODFCOUZGMEU5NzMzQ0IwMDI2NkUwNyAvKiBK
YXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBNTY5RDAwMEQ3RTJC
ODIwMDdDMzk4MyAvKiBqbmlfY2xhc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDAyMEQ3
RTJCODIwMDdDMzk4MyAvKiBqbmlfaW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5
RDA0MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfanNvYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNTY5RDA3MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfcnVudGltZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xODM0OSw2ICsxODM0OCw3IEBACiAJCQkJNkU0RTkxQUQxMEY3RkIzMTAwQTI3NzlDIC8q
IENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTRFOTFBRjEw
RjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNkVFOEE3NzMxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTlEQzZCMzExMTA0QTZCNzAwNzYwRUVGIC8qIEphdmFD
bGFzc0pTQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTMxNCw3ICsxOTMxNCw2IEBACiAJCQkJMUM4
MUJBMEQwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQzgxQkEwMjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMDAwRTk3MzNDQjAwMjY2RTA3IC8qIEph
dmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQTU2OUNGRjBEN0Uy
QjgyMDA3QzM5ODMgLyogam5pX2NsYXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDAx
MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfaW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE1NjlEMDMwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9qc29iamVjdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5RDA1MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfb2JqYy5tbSBpbiBTb3VyY2Vz
ICovLApAQCAtMjA1MTMsNiArMjA1MTIsNyBAQAogCQkJCTZFNEU5MUFDMTBGN0ZCMzEwMEEyNzc5
QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTRF
OTFBRTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU5REM2QjMzMTEwNEE2QzAwMDc2MEVF
RiAvKiBKYXZhQ2xhc3NKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JyaWRn
ZS9qbmkvam5pX2NsYXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qbmkvam5p
X2NsYXNzLmNwcAkocmV2aXNpb24gNTMzOTkpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2Ns
YXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwMyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImpuaV9jbGFzcy5oIgotCi0jaWYg
RU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKLQotI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5j
bHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4K
LSNpbmNsdWRlICJqbmlfdXRpbGl0eS5oIgotI2luY2x1ZGUgImpuaV9ydW50aW1lLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdzOwotCi1KYXZhQ2xhc3M6OkphdmFDbGFzcyhqb2Jq
ZWN0IGFuSW5zdGFuY2UpCi17Ci0gICAgam9iamVjdCBhQ2xhc3MgPSBjYWxsSk5JTWV0aG9kPGpv
YmplY3Q+KGFuSW5zdGFuY2UsICJnZXRDbGFzcyIsICIoKUxqYXZhL2xhbmcvQ2xhc3M7Iik7Ci0g
ICAgCi0gICAgaWYgKCFhQ2xhc3MpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogIHVu
YWJsZSB0byBjYWxsIGdldENsYXNzIG9uIGluc3RhbmNlICVwXG4iLCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCBhbkluc3RhbmNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBqc3Ry
aW5nIGNsYXNzTmFtZSA9IChqc3RyaW5nKWNhbGxKTklNZXRob2Q8am9iamVjdD4oYUNsYXNzLCAi
Z2V0TmFtZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIpOwotICAgIGNvbnN0IGNoYXIgKmNsYXNz
TmFtZUMgPSBnZXRDaGFyYWN0ZXJzRnJvbUpTdHJpbmcoY2xhc3NOYW1lKTsKLSAgICBfbmFtZSA9
IHN0cmR1cChjbGFzc05hbWVDKTsKLSAgICByZWxlYXNlQ2hhcmFjdGVyc0ZvckpTdHJpbmcoY2xh
c3NOYW1lLCBjbGFzc05hbWVDKTsKLQotICAgIGludCBpOwotICAgIEpOSUVudiAqZW52ID0gZ2V0
Sk5JRW52KCk7Ci0KLSAgICAvLyBHZXQgdGhlIGZpZWxkcwotICAgIGphcnJheSBmaWVsZHMgPSAo
amFycmF5KWNhbGxKTklNZXRob2Q8am9iamVjdD4oYUNsYXNzLCAiZ2V0RmllbGRzIiwgIigpW0xq
YXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsiKTsKLSAgICBpbnQgbnVtRmllbGRzID0gZW52LT5HZXRB
cnJheUxlbmd0aChmaWVsZHMpOyAgICAKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtRmllbGRzOyBp
KyspIHsKLSAgICAgICAgam9iamVjdCBhSkZpZWxkID0gZW52LT5HZXRPYmplY3RBcnJheUVsZW1l
bnQoKGpvYmplY3RBcnJheSlmaWVsZHMsIGkpOwotICAgICAgICBKYXZhRmllbGQgKmFGaWVsZCA9
IG5ldyBKYXZhRmllbGQoZW52LCBhSkZpZWxkKTsgLy8gZGVsZXRlZCBpbiB0aGUgSmF2YUNsYXNz
IGRlc3RydWN0b3IKLSAgICAgICAgewotICAgICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKLSAgICAgICAgICAgIF9maWVsZHMuc2V0KGFGaWVsZC0+bmFtZSgpLCBh
RmllbGQpOwotICAgICAgICB9Ci0gICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoYUpGaWVsZCk7
Ci0gICAgfQotCi0gICAgLy8gR2V0IHRoZSBtZXRob2RzCi0gICAgamFycmF5IG1ldGhvZHMgPSAo
amFycmF5KWNhbGxKTklNZXRob2Q8am9iamVjdD4oYUNsYXNzLCAiZ2V0TWV0aG9kcyIsICIoKVtM
amF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOyIpOwotICAgIGludCBudW1NZXRob2RzID0gZW52LT5H
ZXRBcnJheUxlbmd0aChtZXRob2RzKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtTWV0aG9kczsg
aSsrKSB7Ci0gICAgICAgIGpvYmplY3QgYUpNZXRob2QgPSBlbnYtPkdldE9iamVjdEFycmF5RWxl
bWVudCgoam9iamVjdEFycmF5KW1ldGhvZHMsIGkpOwotICAgICAgICBKYXZhTWV0aG9kICphTWV0
aG9kID0gbmV3IEphdmFNZXRob2QoZW52LCBhSk1ldGhvZCk7IC8vIGRlbGV0ZWQgaW4gdGhlIEph
dmFDbGFzcyBkZXN0cnVjdG9yCi0gICAgICAgIE1ldGhvZExpc3QqIG1ldGhvZExpc3Q7Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0K
LSAgICAgICAgICAgIG1ldGhvZExpc3QgPSBfbWV0aG9kcy5nZXQoYU1ldGhvZC0+bmFtZSgpKTsK
LSAgICAgICAgICAgIGlmICghbWV0aG9kTGlzdCkgewotICAgICAgICAgICAgICAgIG1ldGhvZExp
c3QgPSBuZXcgTWV0aG9kTGlzdCgpOwotICAgICAgICAgICAgICAgIF9tZXRob2RzLnNldChhTWV0
aG9kLT5uYW1lKCksIG1ldGhvZExpc3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIG1ldGhvZExpc3QtPmFwcGVuZChhTWV0aG9kKTsKLSAgICAgICAgZW52LT5EZWxldGVMb2Nh
bFJlZihhSk1ldGhvZCk7Ci0gICAgfSAgICAKLQotICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoZmll
bGRzKTsKLSAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKG1ldGhvZHMpOwotICAgIGVudi0+RGVsZXRl
TG9jYWxSZWYoYUNsYXNzKTsKLX0KLQotSmF2YUNsYXNzOjp+SmF2YUNsYXNzKCkgewotICAgIGZy
ZWUoKHZvaWQgKilfbmFtZSk7Ci0KLSAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09u
bHkpOwotCi0gICAgZGVsZXRlQWxsVmFsdWVzKF9maWVsZHMpOwotICAgIF9maWVsZHMuY2xlYXIo
KTsKLQotICAgIE1ldGhvZExpc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IF9tZXRob2RzLmVu
ZCgpOwotICAgIGZvciAoTWV0aG9kTGlzdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBfbWV0aG9k
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgY29uc3QgTWV0aG9kTGlzdCog
bWV0aG9kTGlzdCA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcygqbWV0aG9k
TGlzdCk7Ci0gICAgICAgIGRlbGV0ZSBtZXRob2RMaXN0OwotICAgIH0KLSAgICBfbWV0aG9kcy5j
bGVhcigpOwotfQotCi1NZXRob2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKLXsKLSAgICBNZXRob2RMaXN0
ICptZXRob2RMaXN0ID0gX21ldGhvZHMuZ2V0KGlkZW50aWZpZXIudXN0cmluZygpLnJlcCgpKTsK
LSAgICAKLSAgICBpZiAobWV0aG9kTGlzdCkKLSAgICAgICAgcmV0dXJuICptZXRob2RMaXN0Owot
ICAgIHJldHVybiBNZXRob2RMaXN0KCk7Ci19Ci0KLUZpZWxkICpKYXZhQ2xhc3M6OmZpZWxkTmFt
ZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAotewotICAg
IHJldHVybiBfZmllbGRzLmdldChpZGVudGlmaWVyLnVzdHJpbmcoKS5yZXAoKSk7Ci19Ci0KLWJv
b2wgSmF2YUNsYXNzOjppc051bWJlckNsYXNzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKChzdHJj
bXAoX25hbWUsICJqYXZhLmxhbmcuQnl0ZSIpID09IDAgfHwKLSAgICAgICAgICAgICBzdHJjbXAo
X25hbWUsICJqYXZhLmxhbmcuU2hvcnQiKSA9PSAwIHx8Ci0gICAgICAgICAgICAgc3RyY21wKF9u
YW1lLCAiamF2YS5sYW5nLkludGVnZXIiKSA9PSAwIHx8Ci0gICAgICAgICAgICAgc3RyY21wKF9u
YW1lLCAiamF2YS5sYW5nLkxvbmciKSA9PSAwIHx8Ci0gICAgICAgICAgICAgc3RyY21wKF9uYW1l
LCAiamF2YS5sYW5nLkZsb2F0IikgPT0gMCB8fAotICAgICAgICAgICAgIHN0cmNtcChfbmFtZSwg
ImphdmEubGFuZy5Eb3VibGUiKSA9PSAwKSApOwotfQotCi1ib29sIEphdmFDbGFzczo6aXNCb29s
ZWFuQ2xhc3MoKSBjb25zdAotewotICAgIHJldHVybiBzdHJjbXAoX25hbWUsICJqYXZhLmxhbmcu
Qm9vbGVhbiIpID09IDA7Ci19Ci0KLWJvb2wgSmF2YUNsYXNzOjppc1N0cmluZ0NsYXNzKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gc3RyY21wKF9uYW1lLCAiamF2YS5sYW5nLlN0cmluZyIpID09IDA7
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQpJbmRleDogV2ViQ29yZS9i
cmlkZ2Uvam5pL2puaV9jbGFzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9q
bmlfY2xhc3MuaAkocmV2aXNpb24gNTMzOTkpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2Ns
YXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwMyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBKTklfQ0xBU1NfSF8KLSNkZWZpbmUgSk5JX0NMQVNTX0hfCi0KLSNpZiBFTkFC
TEUoTUFDX0pBVkFfQlJJREdFKQotCi0jaW5jbHVkZSA8am5pX3J1bnRpbWUuaD4KLSNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotbmFtZXNwYWNlIEJpbmRpbmdz
IHsKLQotY2xhc3MgSmF2YUNsYXNzIDogcHVibGljIENsYXNzIHsKLXB1YmxpYzoKLSAgICBKYXZh
Q2xhc3MgKGpvYmplY3QgYW5JbnN0YW5jZSk7Ci0gICAgfkphdmFDbGFzcyAoKTsKLQotICAgIHZp
cnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNl
KiBpbnN0YW5jZSkgY29uc3Q7ICAgIAotICAgIHZpcnR1YWwgRmllbGQgKmZpZWxkTmFtZWQoY29u
c3QgSWRlbnRpZmllciYsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3Q7Ci0gICAgCi0gICAgYm9v
bCBpc051bWJlckNsYXNzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0Jvb2xlYW5DbGFzcygpIGNvbnN0
OwotICAgIGJvb2wgaXNTdHJpbmdDbGFzcygpIGNvbnN0OwotICAgIAotcHJpdmF0ZToKLSAgICBj
b25zdCBjaGFyICpfbmFtZTsKLSAgICBGaWVsZE1hcCBfZmllbGRzOwotICAgIE1ldGhvZExpc3RN
YXAgX21ldGhvZHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwotCi19IC8vIG5hbWVz
cGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCi0KLSNlbmRpZiAv
LyBKTklfQ0xBU1NfSF8KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwCShyZXZp
c2lvbiA1MzM5OSkKKysrIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUFDX0pBVkFfQlJJREdF
KQogCi0jaW5jbHVkZSAiam5pX2NsYXNzLmgiCisjaW5jbHVkZSAiSmF2YUNsYXNzSlNDLmgiCiAj
aW5jbHVkZSAiam5pX3J1bnRpbWUuaCIKICNpbmNsdWRlICJqbmlfdXRpbGl0eS5oIgogI2luY2x1
ZGUgImpuaV91dGlsaXR5X3ByaXZhdGUuaCIKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qc2Mv
SmF2YUNsYXNzSlNDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL0ph
dmFDbGFzc0pTQy5jcHAJKHJldmlzaW9uIDUzMzk5KQkoZnJvbSBXZWJDb3JlL2JyaWRnZS9qbmkv
am5pX2NsYXNzLmNwcDo1MzM5OSkKKysrIFdlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNz
SlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwMyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImpuaV9jbGFzcy5oIgorCisjaWYg
RU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKKworI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5j
bHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4K
KyNpbmNsdWRlICJqbmlfdXRpbGl0eS5oIgorI2luY2x1ZGUgImpuaV9ydW50aW1lLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdzOworCitKYXZhQ2xhc3M6OkphdmFDbGFzcyhqb2Jq
ZWN0IGFuSW5zdGFuY2UpCit7CisgICAgam9iamVjdCBhQ2xhc3MgPSBjYWxsSk5JTWV0aG9kPGpv
YmplY3Q+KGFuSW5zdGFuY2UsICJnZXRDbGFzcyIsICIoKUxqYXZhL2xhbmcvQ2xhc3M7Iik7Cisg
ICAgCisgICAgaWYgKCFhQ2xhc3MpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogIHVu
YWJsZSB0byBjYWxsIGdldENsYXNzIG9uIGluc3RhbmNlICVwXG4iLCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCBhbkluc3RhbmNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqc3Ry
aW5nIGNsYXNzTmFtZSA9IChqc3RyaW5nKWNhbGxKTklNZXRob2Q8am9iamVjdD4oYUNsYXNzLCAi
Z2V0TmFtZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIpOworICAgIGNvbnN0IGNoYXIgKmNsYXNz
TmFtZUMgPSBnZXRDaGFyYWN0ZXJzRnJvbUpTdHJpbmcoY2xhc3NOYW1lKTsKKyAgICBfbmFtZSA9
IHN0cmR1cChjbGFzc05hbWVDKTsKKyAgICByZWxlYXNlQ2hhcmFjdGVyc0ZvckpTdHJpbmcoY2xh
c3NOYW1lLCBjbGFzc05hbWVDKTsKKworICAgIGludCBpOworICAgIEpOSUVudiAqZW52ID0gZ2V0
Sk5JRW52KCk7CisKKyAgICAvLyBHZXQgdGhlIGZpZWxkcworICAgIGphcnJheSBmaWVsZHMgPSAo
amFycmF5KWNhbGxKTklNZXRob2Q8am9iamVjdD4oYUNsYXNzLCAiZ2V0RmllbGRzIiwgIigpW0xq
YXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsiKTsKKyAgICBpbnQgbnVtRmllbGRzID0gZW52LT5HZXRB
cnJheUxlbmd0aChmaWVsZHMpOyAgICAKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtRmllbGRzOyBp
KyspIHsKKyAgICAgICAgam9iamVjdCBhSkZpZWxkID0gZW52LT5HZXRPYmplY3RBcnJheUVsZW1l
bnQoKGpvYmplY3RBcnJheSlmaWVsZHMsIGkpOworICAgICAgICBKYXZhRmllbGQgKmFGaWVsZCA9
IG5ldyBKYXZhRmllbGQoZW52LCBhSkZpZWxkKTsgLy8gZGVsZXRlZCBpbiB0aGUgSmF2YUNsYXNz
IGRlc3RydWN0b3IKKyAgICAgICAgeworICAgICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKKyAgICAgICAgICAgIF9maWVsZHMuc2V0KGFGaWVsZC0+bmFtZSgpLCBh
RmllbGQpOworICAgICAgICB9CisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoYUpGaWVsZCk7
CisgICAgfQorCisgICAgLy8gR2V0IHRoZSBtZXRob2RzCisgICAgamFycmF5IG1ldGhvZHMgPSAo
amFycmF5KWNhbGxKTklNZXRob2Q8am9iamVjdD4oYUNsYXNzLCAiZ2V0TWV0aG9kcyIsICIoKVtM
amF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOyIpOworICAgIGludCBudW1NZXRob2RzID0gZW52LT5H
ZXRBcnJheUxlbmd0aChtZXRob2RzKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtTWV0aG9kczsg
aSsrKSB7CisgICAgICAgIGpvYmplY3QgYUpNZXRob2QgPSBlbnYtPkdldE9iamVjdEFycmF5RWxl
bWVudCgoam9iamVjdEFycmF5KW1ldGhvZHMsIGkpOworICAgICAgICBKYXZhTWV0aG9kICphTWV0
aG9kID0gbmV3IEphdmFNZXRob2QoZW52LCBhSk1ldGhvZCk7IC8vIGRlbGV0ZWQgaW4gdGhlIEph
dmFDbGFzcyBkZXN0cnVjdG9yCisgICAgICAgIE1ldGhvZExpc3QqIG1ldGhvZExpc3Q7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisK
KyAgICAgICAgICAgIG1ldGhvZExpc3QgPSBfbWV0aG9kcy5nZXQoYU1ldGhvZC0+bmFtZSgpKTsK
KyAgICAgICAgICAgIGlmICghbWV0aG9kTGlzdCkgeworICAgICAgICAgICAgICAgIG1ldGhvZExp
c3QgPSBuZXcgTWV0aG9kTGlzdCgpOworICAgICAgICAgICAgICAgIF9tZXRob2RzLnNldChhTWV0
aG9kLT5uYW1lKCksIG1ldGhvZExpc3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIG1ldGhvZExpc3QtPmFwcGVuZChhTWV0aG9kKTsKKyAgICAgICAgZW52LT5EZWxldGVMb2Nh
bFJlZihhSk1ldGhvZCk7CisgICAgfSAgICAKKworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoZmll
bGRzKTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKG1ldGhvZHMpOworICAgIGVudi0+RGVsZXRl
TG9jYWxSZWYoYUNsYXNzKTsKK30KKworSmF2YUNsYXNzOjp+SmF2YUNsYXNzKCkgeworICAgIGZy
ZWUoKHZvaWQgKilfbmFtZSk7CisKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09u
bHkpOworCisgICAgZGVsZXRlQWxsVmFsdWVzKF9maWVsZHMpOworICAgIF9maWVsZHMuY2xlYXIo
KTsKKworICAgIE1ldGhvZExpc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IF9tZXRob2RzLmVu
ZCgpOworICAgIGZvciAoTWV0aG9kTGlzdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBfbWV0aG9k
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgY29uc3QgTWV0aG9kTGlzdCog
bWV0aG9kTGlzdCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGRlbGV0ZUFsbFZhbHVlcygqbWV0aG9k
TGlzdCk7CisgICAgICAgIGRlbGV0ZSBtZXRob2RMaXN0OworICAgIH0KKyAgICBfbWV0aG9kcy5j
bGVhcigpOworfQorCitNZXRob2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKK3sKKyAgICBNZXRob2RMaXN0
ICptZXRob2RMaXN0ID0gX21ldGhvZHMuZ2V0KGlkZW50aWZpZXIudXN0cmluZygpLnJlcCgpKTsK
KyAgICAKKyAgICBpZiAobWV0aG9kTGlzdCkKKyAgICAgICAgcmV0dXJuICptZXRob2RMaXN0Owor
ICAgIHJldHVybiBNZXRob2RMaXN0KCk7Cit9CisKK0ZpZWxkICpKYXZhQ2xhc3M6OmZpZWxkTmFt
ZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAoreworICAg
IHJldHVybiBfZmllbGRzLmdldChpZGVudGlmaWVyLnVzdHJpbmcoKS5yZXAoKSk7Cit9CisKK2Jv
b2wgSmF2YUNsYXNzOjppc051bWJlckNsYXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKChzdHJj
bXAoX25hbWUsICJqYXZhLmxhbmcuQnl0ZSIpID09IDAgfHwKKyAgICAgICAgICAgICBzdHJjbXAo
X25hbWUsICJqYXZhLmxhbmcuU2hvcnQiKSA9PSAwIHx8CisgICAgICAgICAgICAgc3RyY21wKF9u
YW1lLCAiamF2YS5sYW5nLkludGVnZXIiKSA9PSAwIHx8CisgICAgICAgICAgICAgc3RyY21wKF9u
YW1lLCAiamF2YS5sYW5nLkxvbmciKSA9PSAwIHx8CisgICAgICAgICAgICAgc3RyY21wKF9uYW1l
LCAiamF2YS5sYW5nLkZsb2F0IikgPT0gMCB8fAorICAgICAgICAgICAgIHN0cmNtcChfbmFtZSwg
ImphdmEubGFuZy5Eb3VibGUiKSA9PSAwKSApOworfQorCitib29sIEphdmFDbGFzczo6aXNCb29s
ZWFuQ2xhc3MoKSBjb25zdAoreworICAgIHJldHVybiBzdHJjbXAoX25hbWUsICJqYXZhLmxhbmcu
Qm9vbGVhbiIpID09IDA7Cit9CisKK2Jvb2wgSmF2YUNsYXNzOjppc1N0cmluZ0NsYXNzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc3RyY21wKF9uYW1lLCAiamF2YS5sYW5nLlN0cmluZyIpID09IDA7
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQpJbmRleDogV2ViQ29yZS9i
cmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJp
ZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcAkocmV2aXNpb24gNTMzOTkpCisrKyBXZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcg
KzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiam5pX2NsYXNz
LmgiCisjaW5jbHVkZSAiSmF2YUNsYXNzSlNDLmgiCiAKICNpZiBFTkFCTEUoTUFDX0pBVkFfQlJJ
REdFKQogCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmgJKHJldmlzaW9u
IDUzMzk5KQkoZnJvbSBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2NsYXNzLmg6NTMzOTkpCisrKyBX
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSk5JX0NMQVNTX0hfCisj
ZGVmaW5lIEpOSV9DTEFTU19IXworCisjaWYgRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKKworI2lu
Y2x1ZGUgPGpuaV9ydW50aW1lLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK25hbWVzcGFjZSBCaW5kaW5ncyB7CisKK2NsYXNzIEphdmFDbGFzcyA6IHB1
YmxpYyBDbGFzcyB7CitwdWJsaWM6CisgICAgSmF2YUNsYXNzIChqb2JqZWN0IGFuSW5zdGFuY2Up
OworICAgIH5KYXZhQ2xhc3MgKCk7CisKKyAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05h
bWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0OyAgICAKKyAg
ICB2aXJ0dWFsIEZpZWxkICpmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSog
aW5zdGFuY2UpIGNvbnN0OworICAgIAorICAgIGJvb2wgaXNOdW1iZXJDbGFzcygpIGNvbnN0Owor
ICAgIGJvb2wgaXNCb29sZWFuQ2xhc3MoKSBjb25zdDsKKyAgICBib29sIGlzU3RyaW5nQ2xhc3Mo
KSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgY29uc3QgY2hhciAqX25hbWU7CisgICAgRmll
bGRNYXAgX2ZpZWxkczsKKyAgICBNZXRob2RMaXN0TWFwIF9tZXRob2RzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgQmluZGluZ3MKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFC
TEUoTUFDX0pBVkFfQlJJREdFKQorCisjZW5kaWYgLy8gSk5JX0NMQVNTX0hfCkluZGV4OiBXZWJD
b3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmgJKHJldmlzaW9uIDUzMzk5KQorKysgV2ViQ29y
ZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCAr
MjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBKTklfQ0xBU1NfSF8KLSNk
ZWZpbmUgSk5JX0NMQVNTX0hfCisjaWZuZGVmIEphdmFDbGFzc0pTQ19oCisjZGVmaW5lIEphdmFD
bGFzc0pTQ19oCiAKICNpZiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQogCkBAIC01OSw0ICs1OSw0
IEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQogCi0jZW5k
aWYgLy8gSk5JX0NMQVNTX0hfCisjZW5kaWYgLy8gSmF2YUNsYXNzSlNDX2gK
</data>
<flag name="review"
          id="29146"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>