<?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>43097</bug_id>
          
          <creation_ts>2010-07-27 18:26:34 -0700</creation_ts>
          <short_desc>Make all objects in the WebKit2 API inherit from a single base class</short_desc>
          <delta_ts>2010-07-28 14:42:49 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>256969</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-27 18:26:34 -0700</bug_when>
    <thetext>We should make all WK objects in the WebKit2 API inherit from a single base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256976</commentid>
    <comment_count>1</comment_count>
      <attachid>62783</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-27 18:38:06 -0700</bug_when>
    <thetext>Created attachment 62783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256978</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-27 18:40:07 -0700</bug_when>
    <thetext>Attachment 62783 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/API/C/WKAPICast.h:59:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:60:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:73:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:120:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 4 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257316</commentid>
    <comment_count>3</comment_count>
      <attachid>62783</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-28 12:59:49 -0700</bug_when>
    <thetext>Comment on attachment 62783
Patch

Patch says what it does, but not why.

Why is inheriting from a single base class better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257319</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-28 13:04:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 62783 [details])
&gt; Patch says what it does, but not why.
&gt; 
&gt; Why is inheriting from a single base class better?

The intent is to allow for a CF-style base type (CFTypeRef) so that our message passing API can be defined as something like WKContextPostMessageToInjectedBundle(WKStringRef name, WKTypeRef message);

Then you could send a message which is either a WKStringRef or a WKArrayRef or a WKPageRef event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257365</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-28 14:42:49 -0700</bug_when>
    <thetext>Landed in r64232.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62783</attachid>
            <date>2010-07-27 18:38:06 -0700</date>
            <delta_ts>2010-07-28 14:04:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>apiObject.diff</filename>
            <type>text/plain</type>
            <size>38618</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDE4NCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTI5IEBACisyMDEwLTA3LTI3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2gg
Zm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzA5NworICAgICAg
ICBNYWtlIGFsbCBvYmplY3RzIGluIHRoZSBXZWJLaXQyIEFQSSBpbmhlcml0IGZyb20gYSBzaW5n
bGUgYmFzZSBjbGFzcworCisgICAgICAgIC0gQWRkcyBhbiBBUElPYmplY3QgYmFzZSBjbGFzcyBm
b3IgYWxsIG9iamVjdHMgd2hpY2ggY2FuIGdldCB2ZW5kZXIgdGhyb3VnaAorICAgICAgICAgIHRo
ZSBDIEFQSSB0byBpbmhlcml0IGZyb20uCisgICAgICAgIC0gQWRkcyBhIFdlYlN0cmluZyBjbGFz
cyB3aGljaCB3cmFwcyBXZWJDb3JlOjpTdHJpbmcgZm9yIG5vdy4gSSBhbSBub3QgdG9vIGZvbmQg
b2YKKyAgICAgICAgICB0aGlzIHNvbHV0aW9uLCBzbyB3ZSBjb250aW51ZSBzaG91bGQgaXRlcmF0
ZSBvbiBpdC4KKworICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OkFQSU9iamVjdDo6QVBJT2JqZWN0KToKKyAgICAgICAgQmFzZSBjbGFzcyBmb3Ig
QVBJIG9iamVjdHMuCisKKyAgICAgICAgKiBTaGFyZWQvSW1tdXRhYmxlQXJyYXkuaDoKKyAgICAg
ICAgTWFrZSBpbmhlcml0IGZyb20gQVBJT2JqZWN0LgorCisgICAgICAgICogU2hhcmVkL1dlYlN0
cmluZy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU3RyaW5nOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTdHJpbmc6OmlzTnVsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0
cmluZzo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0cmluZzo6c3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3RyaW5nOjpXZWJTdHJpbmcpOgorICAgICAgICBXcmFwcyBhIFdl
YkNvcmU6OlN0cmluZyBzbyB0aGF0IGl0IGNhbiBiZSBwYXNzZWQgb3V0IHRvIHRoZSBBUEkKKyAg
ICAgICAgYW5kIHN0aWxsIGluaGVyaXQgZnJvbSBBUElPYmplY3QuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlN0cmluZ0FkYXB0
b3I6OldlYlN0cmluZ0FkYXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdHJpbmdBZGFwdG9y
OjpvcGVyYXRvciBXS1N0cmluZ1JlZik6CisgICAgICAgIChXZWJLaXQ6OldlYlN0cmluZ0FkYXB0
b3I6Om9wZXJhdG9yIFdLVVJMUmVmKToKKyAgICAgICAgVXBkYXRlIGNvbnZlcnNpb24gbWV0aG9k
cyB0byBkZWFsIGluIHRlcm1zIG9mIFdlYlN0cmluZ3MuIEFkZGVkIFdlYlN0cmluZ0FkYXB0b3IK
KyAgICAgICAgdG8gZWFzZSBwYXNzaW5nIHN0cmluZ3MgdG8gY2xpZW50IGZ1bmN0aW9ucy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250
ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChXS0NvbnRleHRQb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoX1dLQ29udGV4dFNldEFkZGl0aW9u
YWxQbHVnaW5QYXRoKToKKyAgICAgICAgKF9XS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzRW1w
dHlEb2N1bWVudCk6IAorICAgICAgICBHZXQgdGhlIFdlYkNvcmU6OlN0cmluZyBmcm9tIHRoZSBX
ZWJTdHJpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAg
ICAgKFdLUGFnZUxvYWRVUkwpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0cmluZ0lzRW1wdHkpOgorICAgICAg
ICBJbXBsZW1lbnQgaW4gdGVybXMgb2YgV2ViU3RyaW5nLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLVVJMLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvY2YvV0tTdHJpbmdD
Ri5jcHA6CisgICAgICAgIChXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyk6CisgICAgICAgIChX
S1N0cmluZ0NvcHlDRlN0cmluZyk6CisgICAgICAgIERpdHRvLgorICAgIAorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9jZi9XS1VSTENGLmNwcDoKKyAgICAgICAgKFdLVVJMQ3JlYXRlV2l0aENG
VVJMKToKKyAgICAgICAgKFdLVVJMQ29weUNGVVJMKToKKyAgICAgICAgRGl0dG8uCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIE1ha2UgaW5oZXJp
dCBmcm9tIEFQSU9iamVjdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmg6CisgICAgICAgIERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBvc3RNZXNz
YWdlVG9JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KToKKyAgICAgICAgVXNlIFN0cmluZyBpbnN0ZWFk
IG9mIFN0cmluZ0ltcGwgdG8gYmUgY29uc2lzdGVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0Lmg6CisgICAgICAgIE1ha2UgaW5oZXJpdCBmcm9tIEFQSU9iamVjdC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAg
RGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICBE
aXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uRGF0YS5oOgorICAgICAg
ICBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmg6CisgICAg
ICAgIERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAg
ICBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgSW1w
bGVtZW50IGluIHRlcm1zIG9mIFdlYlN0cmluZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy93aW4v
V2ViVmlldy5oOgorICAgICAgICBNYWtlIGluaGVyaXQgZnJvbSBBUElPYmplY3QuCisKKyAgICAg
ICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcg
ZmlsZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUG9zdE1lc3NhZ2UpOgorICAgICAgICBHZXQgdGhl
IFdlYkNvcmU6OlN0cmluZyBmcm9tIHRoZSBXZWJTdHJpbmcuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwOgorICAgICAgICAoV0tC
dW5kbGVGcmFtZVBhdXNlQW5pbWF0aW9uT25FbGVtZW50V2l0aElkKToKKyAgICAgICAgRGl0dG8u
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RNZXNzYWdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisgICAgICAg
IFVzZSBTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdJbXBsIHRvIGJlIGNvbnNpc3RlbnQuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgTWFrZSBpbmhl
cml0IGZyb20gQVBJT2JqZWN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgTWFrZSBpbmhlcml0IGZyb20gQVBJT2JqZWN0LgorCisgICAgICAgICog
d2luL1dlYktpdDIudmNwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCiAyMDEwLTA3LTI3
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IFdp
bmRvd3MgYnVpbGQuCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBBUElPYmplY3RfaAorI2RlZmluZSBBUElPYmplY3RfaAorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEFQSU9i
amVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFQSU9iamVjdD4geworcHJvdGVjdGVkOgorICAgIEFQ
SU9iamVjdCgpCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gQVBJT2JqZWN0X2gKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuaAkocmV2aXNp
b24gNjQxODEpCisrKyBXZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxNCArMjYsMTQgQEAKICNpZm5kZWYgSW1tdXRhYmxlQXJyYXlfaAogI2RlZmlu
ZSBJbW11dGFibGVBcnJheV9oCiAKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiAvLyBJbW11dGFibGVBcnJheSAtIEFuIGltbXV0YWJsZSBhcnJheSB0eXBl
IHN1aXRhYmxlIGZvciB2ZW5kaW5nIHRvIGFuIEFQSS4KIAotY2xhc3MgSW1tdXRhYmxlQXJyYXkg
OiBwdWJsaWMgUmVmQ291bnRlZDxJbW11dGFibGVBcnJheT4geworY2xhc3MgSW1tdXRhYmxlQXJy
YXkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSW1tdXRhYmxlQXJy
YXlDYWxsYmFja3MgewogICAgICAgICB0eXBlZGVmIHZvaWQgKCpJbW11dGFibGVBcnJheUNhbGxi
YWNrKShjb25zdCB2b2lkKik7CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJTdHJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJTdHJpbmcuaAkocmV2aXNpb24gMCkKKysrIFdl
YktpdDIvU2hhcmVkL1dlYlN0cmluZy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJTdHJpbmdfaAorI2RlZmluZSBXZWJTdHJpbmdfaAorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisv
LyBXZWJTdHJpbmcgLSBBbiBzdHJpbmcgYXJyYXkgdHlwZSBzdWl0YWJsZSBmb3IgdmVuZGluZyB0
byBhbiBBUEkuCisKK2NsYXNzIFdlYlN0cmluZyA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlN0cmluZz4gY3JlYXRlKFdlYkNvcmU6OlN0cmlu
ZyBzdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlN0cmluZyhz
dHJpbmcpKTsKKyAgICB9CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmlzTnVsbCgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcuaXNFbXB0eSgpOyB9CisKKyAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHN0cmluZygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisKK3ByaXZhdGU6CisgICAgV2ViU3RyaW5nKFdlYkNv
cmU6OlN0cmluZyBzdHJpbmcpCisgICAgICAgIDogbV9zdHJpbmcoc3RyaW5nKQorICAgIHsKKyAg
ICB9CisKKyAgICBXZWJDb3JlOjpTdHJpbmcgbV9zdHJpbmc7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlN0cmluZ19oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuaAkocmV2aXNpb24gNjQxODEpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDEyIEBA
CiAjaWZuZGVmIFdlYkJhY2tGb3J3YXJkTGlzdF9oCiAjZGVmaW5lIFdlYkJhY2tGb3J3YXJkTGlz
dF9oCiAKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbW11dGFibGVBcnJheS5o
IgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDUs
NyArNDUsNyBAQCB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0CiAgKiAg
ICAgIEJhY2sgICAgICAgIEZvcndhcmQKICAqLwogCi1jbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJCYWNrRm9yd2FyZExpc3Q+IHsKK2NsYXNzIFdlYkJhY2tG
b3J3YXJkTGlzdCA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdD4gY3JlYXRlKFdlYlBhZ2VQcm94eSogcGFnZSkKICAg
ICB7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCShy
ZXZpc2lvbiA2NDE4MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDE1IEBACiAjaWZuZGVmIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW1faAogI2RlZmluZSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtX2gKIAorI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKLWNsYXNzIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJCYWNrRm9yd2FyZExp
c3RJdGVtPiB7CitjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSU9iamVj
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRl
bT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYgdXJsLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlLCB1aW50NjRfdCBp
dGVtSUQpCiAgICAgewpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDY0
MTgxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1MiwxNyArMTUyLDE3IEBAIHZvaWQgV2ViQ29udGV4dDo6cHJlZmVyZW5jZXNEaWRDaGFu
Z2UoKQogCiAvLyBJbmplY3RlZEJ1bmRsZSBjbGllbnQKIAotdm9pZCBXZWJDb250ZXh0OjpkaWRS
ZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG1l
c3NhZ2UpCit2b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50
LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRoaXMsIG1lc3NhZ2UpOwogfQog
Ci12b2lkIFdlYkNvbnRleHQ6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShXZWJDb3JlOjpT
dHJpbmdJbXBsKiBtZXNzYWdlKQordm9pZCBXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0
ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICghbV9wcm9jZXNzKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoV2ViUHJvY2Vzc01lc3NhZ2U6
OlBvc3RNZXNzYWdlLCAwLCBDb3JlSVBDOjpJbihTdHJpbmcobWVzc2FnZSkpKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoV2ViUHJvY2Vzc01lc3NhZ2U6OlBvc3RNZXNzYWdlLCAwLCBDb3JlSVBDOjpJ
bihtZXNzYWdlKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6Z2V0U3RhdGlzdGljcyhXS0NvbnRl
eHRTdGF0aXN0aWNzKiBzdGF0aXN0aWNzKQpAQCAtMTgzLDExICsxODMsMTEgQEAgdm9pZCBXZWJD
b250ZXh0OjpzZXRBZGRpdGlvbmFsUGx1Z2luUGF0aAogICAgIG1fcGx1Z2luSW5mb1N0b3JlLnNl
dEFkZGl0aW9uYWxQbHVnaW5QYXRocyhwbHVnaW5QYXRocyk7CiB9CiAKLXZvaWQgV2ViQ29udGV4
dDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoV2ViQ29yZTo6U3RyaW5nSW1wbCog
dXJsU2NoZW1lKQordm9pZCBXZWJDb250ZXh0OjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1
bWVudChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAgICBlbnN1cmVXZWJQcm9jZXNzKCk7
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoV2ViUHJvY2Vzc01lc3NhZ2U6OlJlZ2lzdGVyVVJMU2No
ZW1lQXNFbXB0eURvY3VtZW50LCAwLCBDb3JlSVBDOjpJbihTdHJpbmcodXJsU2NoZW1lKSkpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6UmVnaXN0ZXJVUkxTY2hlbWVB
c0VtcHR5RG9jdW1lbnQsIDAsIENvcmVJUEM6OkluKHVybFNjaGVtZSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHJldmlzaW9uIDY0MTgx
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYkNvbnRleHRfaAogI2RlZmluZSBXZWJDb250ZXh0X2gK
IAorI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgog
I2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRJbmplY3RlZEJ1
bmRsZUNsaWVudC5oIgpAQCAtMzMsNyArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBz
dHJ1Y3QgV0tDb250ZXh0U3RhdGlzdGljczsKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgV2ViUGFn
ZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAK
LWNsYXNzIFdlYkNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb250ZXh0PiB7CitjbGFz
cyBXZWJDb250ZXh0IDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdl
YkNvbnRleHQqIHNoYXJlZFByb2Nlc3NDb250ZXh0KCk7CiAgICAgc3RhdGljIFdlYkNvbnRleHQq
IHNoYXJlZFRocmVhZENvbnRleHQoKTsKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIC8v
IEluamVjdGVkQnVuZGxlIGNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAKLSAgICB2b2lkIHBvc3RNZXNz
YWdlVG9JbmplY3RlZEJ1bmRsZShXZWJDb3JlOjpTdHJpbmdJbXBsKik7CisgICAgdm9pZCBwb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAKICAgICB2
b2lkIGdldFN0YXRpc3RpY3MoV0tDb250ZXh0U3RhdGlzdGljcyogc3RhdGlzdGljcyk7CiAgICAg
dm9pZCBzZXRBZGRpdGlvbmFsUGx1Z2luUGF0aChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKQEAg
LTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIFBsdWdpbkluZm9TdG9yZSogcGx1Z2luSW5mb1N0
b3JlKCkgeyByZXR1cm4gJm1fcGx1Z2luSW5mb1N0b3JlOyB9CiAgICAgV2ViQ29yZTo6U3RyaW5n
IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICAKLSAgICB2b2lkIHJlZ2lzdGVyVVJM
U2NoZW1lQXNFbXB0eURvY3VtZW50KFdlYkNvcmU6OlN0cmluZ0ltcGwqKTsKKyAgICB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwog
CiBwcml2YXRlOgogICAgIFdlYkNvbnRleHQoUHJvY2Vzc01vZGVsLCBjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaAkocmV2aXNpb24gNjQxODEpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMTYgKzI2LDE2IEBACiAjaWZuZGVmIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eV9oCiAjZGVmaW5lIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eV9oCiAKKyNpbmNsdWRlICJB
UElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJh
bWVQcm94eTsKIAotY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5IDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiB7CitjbGFzcyBXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGNyZWF0ZShXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCkKICAgICB7CkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oCShyZXZpc2lvbiA2NDE4MSkKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDExIEBACiAjaWZu
ZGVmIFdlYkZyYW1lUHJveHlfaAogI2RlZmluZSBXZWJGcmFtZVByb3h5X2gKIAorI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1
bWVudERlY29kZXI7CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJQYWdlUHJveHk7CiAKLWNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJGcmFtZVByb3h5PiB7CitjbGFzcyBXZWJGcmFtZVByb3h5IDogcHVibGljIEFQSU9iamVj
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnJhbWVQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSogcGFnZSwgdWludDY0X3QgZnJhbWVJRCkKICAgICB7CkluZGV4OiBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL1dlYk5hdmlnYXRpb25EYXRhLmgJKHJldmlzaW9uIDY0MTgxKQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMg
KzI2LDEzIEBACiAjaWZuZGVmIFdlYk5hdmlnYXRpb25EYXRhX2gKICNkZWZpbmUgV2ViTmF2aWdh
dGlvbkRhdGFfaAogCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdh
dGlvbkRhdGFTdG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYk5hdmln
YXRpb25EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTmF2aWdhdGlvbkRhdGE+IHsKK2NsYXNz
IFdlYk5hdmlnYXRpb25EYXRhIDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViTmF2aWdhdGlvbkRhdGE+IGNyZWF0ZShjb25zdCBXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlJiBzdG9yZSkKICAgICB7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlTmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5h
bWVzcGFjZS5oCShyZXZpc2lvbiA2NDE4MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VO
YW1lc3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2lmbmRlZiBXZWJQ
YWdlTmFtZXNwYWNlX2gKICNkZWZpbmUgV2ViUGFnZU5hbWVzcGFjZV9oCiAKKyNpbmNsdWRlICJB
UElPYmplY3QuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7CkBAIC0zNyw3ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDb250ZXh0OwogCi1jbGFzcyBXZWJQYWdlTmFt
ZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGFnZU5hbWVzcGFjZT4geworY2xhc3MgV2Vi
UGFnZU5hbWVzcGFjZSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlBhZ2VOYW1lc3BhY2U+IGNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQog
ICAgIHsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA2NDE4MSkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjaWZuZGVmIFdlYlBhZ2VQcm94eV9oCiAjZGVmaW5lIFdlYlBhZ2VQcm94eV9o
CiAKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5Lmgi
CiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCkBAIC00
MSw3ICs0Miw2IEBACiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMg
ewpAQCAtNzAsMTAgKzcwLDEwIEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYldo
ZWVsRXZlbnQ7CiBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIAotdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8V0tTdHJpbmdSZWY+IFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
Q2FsbGJhY2s7Ci10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxXS1N0cmluZ1JlZj4gU2NyaXB0UmV0
dXJuVmFsdWVDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLU3RyaW5nUmVmLCBX
ZWJDb3JlOjpTdHJpbmdJbXBsKj4gUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxs
YmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLU3RyaW5nUmVmLCBXZWJDb3JlOjpTdHJp
bmdJbXBsKj4gU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjazsKIAotY2xhc3MgV2ViUGFnZVByb3h5
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGFnZVByb3h5PiB7CitjbGFzcyBXZWJQYWdlUHJveHkg
OiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQ
YWdlUHJveHk+IGNyZWF0ZShXZWJQYWdlTmFtZXNwYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKICAg
ICB+V2ViUGFnZVByb3h5KCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgJKHJl
dmlzaW9uIDY0MTgxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsMTcgKzI2LDE3IEBACiAjaWZuZGVmIFdlYlByZWZlcmVuY2VzX2gK
ICNkZWZpbmUgV2ViUHJlZmVyZW5jZXNfaAogCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YkNvbnRleHQ7CiAKLWNsYXNzIFdlYlByZWZlcmVuY2VzIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
UHJlZmVyZW5jZXM+IHsKK2NsYXNzIFdlYlByZWZlcmVuY2VzIDogcHVibGljIEFQSU9iamVjdCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlByZWZlcmVuY2VzKiBzaGFyZWQoKTsKIApJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcAkocmV2aXNpb24gNjQxODEpCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDEyICs5MSwxMiBA
QCBTdHJpbmcgV2ViVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoCiAgICAgaWYgKCFtX3Bh
Z2VVSUNsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKLSAgICBTdHJpbmdJbXBsKiBpbXBsID0gdG9XSyhtX3BhZ2VVSUNsaWVudC5ydW5KYXZhU2Ny
aXB0UHJvbXB0KHRvUmVmKHBhZ2UpLCB0b1JlZihtZXNzYWdlLmltcGwoKSksIHRvUmVmKGRlZmF1
bHRWYWx1ZS5pbXBsKCkpLCB0b1JlZihmcmFtZSksIG1fcGFnZVVJQ2xpZW50LmNsaWVudEluZm8p
KTsKLSAgICBpZiAoIWltcGwpCisgICAgV2ViU3RyaW5nKiBzdHJpbmcgPSB0b1dLKG1fcGFnZVVJ
Q2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQodG9SZWYocGFnZSksIHRvUmVmKG1lc3NhZ2UuaW1w
bCgpKSwgdG9SZWYoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvUmVmKGZyYW1lKSwgbV9wYWdlVUlD
bGllbnQuY2xpZW50SW5mbykpOworICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKLSAgICBTdHJpbmcgcmVzdWx0ID0gaW1wbDsKLSAgICBpbXBsLT5kZXJlZigpOwor
ICAgIFN0cmluZyByZXN1bHQgPSBzdHJpbmctPnN0cmluZygpOworICAgIHN0cmluZy0+ZGVyZWYo
KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAkocmV2aXNpb24gNjQxODEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiV0tC
YXNlLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybVN0cmluZy5oPgogCiAjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpCiAj
aW5jbHVkZSAiV0tBUElDYXN0V2luLmgiCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIFdlYk5hdmln
YXRpb25EYXRhOwogY2xhc3MgV2ViUGFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IGNsYXNzIFdlYlByZWZlcmVuY2VzOworY2xhc3MgV2ViU3RyaW5nOwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBUElUeXBlPiBzdHJ1Y3QgQVBJVHlwZUluZm8geyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QVBJVHlwZUluZm88V0tGcmFtZVJlZj4gICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBX
ZWJGcmFtZVByb3h5KiBJbXBsVHlwZTsgfTsKQEAgLTU1LDggKzU2LDggQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQVBJVHlwZUluZm88V0tDb250ZXh0UgogdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUlu
Zm88V0tQYWdlTmFtZXNwYWNlUmVmPiAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXZWJQYWdlTmFt
ZXNwYWNlKiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclJlZj4gICAgICAgICB7IHR5cGVkZWYgV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5KiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdL
UHJlZmVyZW5jZXNSZWY+ICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV2ViUHJlZmVyZW5jZXMq
IEltcGxUeXBlOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tTdHJpbmdSZWY+
ICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXZWJDb3JlOjpTdHJpbmdJbXBsKiBJbXBs
VHlwZTsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdLVVJMUmVmPiAgICAgICAg
ICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV2ViQ29yZTo6U3RyaW5nSW1wbCogSW1wbFR5cGU7
IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBUElUeXBlSW5mbzxXS1N0cmluZ1JlZj4gICAgICAgICAg
ICAgICAgICAgICAgeyB0eXBlZGVmIFdlYktpdDo6V2ViU3RyaW5nKiBJbXBsVHlwZTsgfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdLVVJMUmVmPiAgICAgICAgICAgICAgICAgICAg
ICAgICB7IHR5cGVkZWYgV2ViS2l0OjpXZWJTdHJpbmcqIEltcGxUeXBlOyB9OwogdGVtcGxhdGU8
PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tOYXZpZ2F0aW9uRGF0YVJlZj4gICAgICAgICAgICAgIHsg
dHlwZWRlZiBXZWJOYXZpZ2F0aW9uRGF0YSogSW1wbFR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBUElUeXBlSW5mbzxXS0FycmF5UmVmPiAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlZGVm
IEltbXV0YWJsZUFycmF5KiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJ
bmZvPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gICAgICAgICB7IHR5cGVkZWYgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSogSW1wbFR5cGU7IH07CkBAIC02OSwxMiArNzAsMjYgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYkNvbnRleAogdGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5
cGVJbmZvPFdlYlBhZ2VOYW1lc3BhY2UqPiAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXS1BhZ2VO
YW1lc3BhY2VSZWYgQVBJVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5mbzxX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqPiAgICB7IHR5cGVkZWYgV0tGcmFtZVBvbGljeUxp
c3RlbmVyUmVmIEFQSVR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88V2Vi
UHJlZmVyZW5jZXMqPiAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLUHJlZmVyZW5jZXNSZWYg
QVBJVHlwZTsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5mbzxXZWJDb3JlOjpTdHJp
bmdJbXBsKj4gICAgICAgICAgICB7IHR5cGVkZWYgV0tTdHJpbmdSZWYgQVBJVHlwZTsgfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5mbzxXZWJTdHJpbmcqPiAgICAgICAgICAgICAgICAg
ICAgICB7IHR5cGVkZWYgV0tTdHJpbmdSZWYgQVBJVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0
IEltcGxUeXBlSW5mbzxXZWJOYXZpZ2F0aW9uRGF0YSo+ICAgICAgICAgICAgICB7IHR5cGVkZWYg
V0tOYXZpZ2F0aW9uRGF0YVJlZiBBUElUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5
cGVJbmZvPEltbXV0YWJsZUFycmF5Kj4gICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0FycmF5
UmVmIEFQSVR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88V2ViQmFja0Zv
cndhcmRMaXN0SXRlbSo+ICAgICAgICAgeyB0eXBlZGVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJl
ZiBBUElUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYkJhY2tGb3J3
YXJkTGlzdCo+ICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0JhY2tGb3J3YXJkTGlzdFJlZiBBUElU
eXBlOyB9OwogCitjbGFzcyBXZWJTdHJpbmdBZGFwdG9yIHsKK3B1YmxpYzoKKyAgICBXZWJTdHJp
bmdBZGFwdG9yKFBhc3NSZWZQdHI8V2ViU3RyaW5nPiBpbXBsKQorICAgICAgICA6IG1faW1wbChp
bXBsKQorICAgIHsKKyAgICB9CisKKyAgICBvcGVyYXRvciBXS1N0cmluZ1JlZigpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KG1faW1wbC5nZXQoKSk7IH0KKyAgICBvcGVy
YXRvciBXS1VSTFJlZigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tVUkxSZWY+KG1faW1w
bC5nZXQoKSk7IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2ViU3RyaW5nPiBtX2ltcGw7Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogLyogT3BhcXVlIHR5cGluZyBjb252ZW5pZW5j
ZSBtZXRob2RzICovCkBAIC05MywzMCArMTA4LDMwIEBAIGlubGluZSB0eXBlbmFtZSBXZWJLaXQ6
OkltcGxUeXBlSW5mbzxUPjoKIAogLyogU3BlY2lhbCBjYXNlcy4gKi8KIAotaW5saW5lIFdLU3Ry
aW5nUmVmIHRvUmVmKFdlYkNvcmU6OlN0cmluZ0ltcGwqIHN0cmluZykKK2lubGluZSBXZWJLaXQ6
OldlYlN0cmluZ0FkYXB0b3IgdG9SZWYoV2ViQ29yZTo6U3RyaW5nSW1wbCogc3RyaW5nKQogewog
ICAgIFdlYkNvcmU6OlN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmcgPyBzdHJpbmcgOiBXZWJDb3Jl
OjpTdHJpbmdJbXBsOjplbXB0eSgpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdLU3Ry
aW5nUmVmPihpbXBsKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJTdHJpbmdBZGFwdG9yKFdlYktp
dDo6V2ViU3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6U3RyaW5nKGltcGwpKSk7CiB9CiAKLWlubGlu
ZSBXS1VSTFJlZiB0b1VSTFJlZihXZWJDb3JlOjpTdHJpbmdJbXBsKiBzdHJpbmcpCitpbmxpbmUg
V2ViS2l0OjpXZWJTdHJpbmdBZGFwdG9yIHRvVVJMUmVmKFdlYkNvcmU6OlN0cmluZ0ltcGwqIHN0
cmluZykKIHsKICAgICBXZWJDb3JlOjpTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nID8gc3RyaW5n
IDogV2ViQ29yZTo6U3RyaW5nSW1wbDo6ZW1wdHkoKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXS1VSTFJlZj4oaW1wbCk7CisgICAgcmV0dXJuIFdlYktpdDo6V2ViU3RyaW5nQWRhcHRv
cihXZWJLaXQ6OldlYlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OlN0cmluZyhpbXBsKSkpICAgOwog
fQogCiBpbmxpbmUgV0tTdHJpbmdSZWYgdG9Db3BpZWRSZWYoY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgV2ViQ29yZTo6U3RyaW5nSW1wbCogaW1wbCA9IHN0cmluZy5pbXBs
KCkgPyBzdHJpbmcuaW1wbCgpIDogV2ViQ29yZTo6U3RyaW5nSW1wbDo6ZW1wdHkoKTsKLSAgICBp
bXBsLT5yZWYoKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1JlZj4oaW1w
bCk7CisgICAgUmVmUHRyPFdlYktpdDo6V2ViU3RyaW5nPiB3ZWJTdHJpbmcgPSBXZWJLaXQ6Oldl
YlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OlN0cmluZyhpbXBsKSk7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KHdlYlN0cmluZy5yZWxlYXNlKCkucmVsZWFzZVJlZigp
KTsKIH0KIAogaW5saW5lIFdLVVJMUmVmIHRvQ29waWVkVVJMUmVmKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYgc3RyaW5nKQogewogICAgIFdlYkNvcmU6OlN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmcu
aW1wbCgpID8gc3RyaW5nLmltcGwoKSA6IFdlYkNvcmU6OlN0cmluZ0ltcGw6OmVtcHR5KCk7Ci0g
ICAgaW1wbC0+cmVmKCk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tVUkxSZWY+KGlt
cGwpOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYlN0cmluZz4gd2ViU3RyaW5nID0gV2ViS2l0OjpX
ZWJTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpTdHJpbmcoaW1wbCkpOworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdLVVJMUmVmPih3ZWJTdHJpbmcucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7
CiB9CiAKIGlubGluZSBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgdG9XSyhXZWJDb3JlOjpOYXZpZ2F0
aW9uVHlwZSB0eXBlKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShy
ZXZpc2lvbiA2NDE4MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgV0tDb250ZXh0UmVmIFdLQ29udGV4dENy
ZWF0ZSgpCiAKIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQ
YXRoKFdLU3RyaW5nUmVmIHBhdGhSZWYpCiB7Ci0gICAgUmVmUHRyPFdlYkNvbnRleHQ+IGNvbnRl
eHQgPSBXZWJDb250ZXh0OjpjcmVhdGUodG9XSyhwYXRoUmVmKSk7CisgICAgUmVmUHRyPFdlYkNv
bnRleHQ+IGNvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUodG9XSyhwYXRoUmVmKS0+c3RyaW5n
KCkpOwogICAgIHJldHVybiB0b1JlZihjb250ZXh0LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOwog
fQogCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQoV0sKIAogdm9pZCBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VSZWYpCiB7Ci0gICAgdG9XSyhj
b250ZXh0UmVmKS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKHRvV0sobWVzc2FnZVJlZikp
OworICAgIHRvV0soY29udGV4dFJlZiktPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSh0b1dL
KG1lc3NhZ2VSZWYpLT5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGlj
cyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tDb250ZXh0U3RhdGlzdGljcyogc3RhdGlzdGlj
cykKQEAgLTk2LDEwICs5NiwxMCBAQCB2b2lkIFdLQ29udGV4dFJlbGVhc2UoV0tDb250ZXh0UmVm
IGNvbnRlCiAKIHZvaWQgX1dLQ29udGV4dFNldEFkZGl0aW9uYWxQbHVnaW5QYXRoKFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBwbHVnaW5QYXRoKQogewotICAgIHRvV0soY29u
dGV4dFJlZiktPnNldEFkZGl0aW9uYWxQbHVnaW5QYXRoKHRvV0socGx1Z2luUGF0aCkpOworICAg
IHRvV0soY29udGV4dFJlZiktPnNldEFkZGl0aW9uYWxQbHVnaW5QYXRoKHRvV0socGx1Z2luUGF0
aCktPnN0cmluZygpKTsKIH0KIAogdm9pZCBfV0tDb250ZXh0UmVnaXN0ZXJVUkxTY2hlbWVBc0Vt
cHR5RG9jdW1lbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHVybFNjaGVt
ZSkKIHsKLSAgICB0b1dLKGNvbnRleHRSZWYpLT5yZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1
bWVudCh0b1dLKHVybFNjaGVtZSkpOworICAgIHRvV0soY29udGV4dFJlZiktPnJlZ2lzdGVyVVJM
U2NoZW1lQXNFbXB0eURvY3VtZW50KHRvV0sodXJsU2NoZW1lKS0+c3RyaW5nKCkpOwogfQpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiA2NDE4MSkKKysrIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQz
LDcgQEAgV0tQYWdlTmFtZXNwYWNlUmVmIFdLUGFnZUdldFBhZ2VOYW1lc3BhYwogCiB2b2lkIFdL
UGFnZUxvYWRVUkwoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZikKIHsKLSAgICB0
b1dLKHBhZ2VSZWYpLT5sb2FkVVJMKHRvV0soVVJMUmVmKSk7CisgICAgdG9XSyhwYWdlUmVmKS0+
bG9hZFVSTCh0b1dLKFVSTFJlZiktPnN0cmluZygpKTsKIH0KIAogdm9pZCBXS1BhZ2VTdG9wTG9h
ZGluZyhXS1BhZ2VSZWYgcGFnZVJlZikKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
U3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1N0cmlu
Zy5jcHAJKHJldmlzaW9uIDY0MTgxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTdHJp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU3RyaW5n
SW1wbC5oPgogCiBXS1N0cmluZ1JlZiBXS1N0cmluZ1JldGFpbihXS1N0cmluZ1JlZiBzdHJpbmdS
ZWYpCiB7CkBAIC00MSw1ICs0MCw1IEBAIHZvaWQgV0tTdHJpbmdSZWxlYXNlKFdLU3RyaW5nUmVm
IHN0cmluZ1IKIAogYm9vbCBXS1N0cmluZ0lzRW1wdHkoV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQog
ewotICAgIHJldHVybiAhdG9XSyhzdHJpbmdSZWYpLT5sZW5ndGgoKTsKKyAgICByZXR1cm4gdG9X
SyhzdHJpbmdSZWYpLT5pc0VtcHR5KCk7CiB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVUkwu
Y3BwCShyZXZpc2lvbiA2NDE4MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVVJMLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIldLVVJMLmgiCiAK
ICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1N0cmluZ0ltcGwuaD4K
IAogV0tVUkxSZWYgV0tVUkxSZXRhaW4oV0tVUkxSZWYgVVJMUmVmKQogewpJbmRleDogV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvY2YvV0tTdHJpbmdDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvY2YvV0tTdHJpbmdDRi5jcHAJKHJldmlzaW9uIDY0MTgxKQorKysg
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2YvV0tTdHJpbmdDRi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEzICszMywxNCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdLU3RyaW5nUmVm
IFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5nUmVmIGNmU3RyaW5nKQogewogICAg
IFN0cmluZyBzdHJpbmcoY2ZTdHJpbmcpOwotICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBzdHJpbmdJ
bXBsID0gc3RyaW5nLmltcGwoKTsKLSAgICByZXR1cm4gdG9SZWYoc3RyaW5nSW1wbC5yZWxlYXNl
KCkucmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4gdG9Db3BpZWRSZWYoc3RyaW5nKTsKIH0KIAog
Q0ZTdHJpbmdSZWYgV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9y
UmVmLCBXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7CisgICAgQVNTRVJUKCF0b1dLKHN0cmluZ1Jl
ZiktPnN0cmluZygpLmlzTnVsbCgpKTsKKwogICAgIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgdXNl
IFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkgc2luY2UgdGhhdCBmdW5jdGlvbgogICAgIC8v
IGV4cGVjdHMgdG8gYmUgY2FsbGVkIG9uIHRoZSB0aHJlYWQgcnVubmluZyBXZWJDb3JlLgotICAg
IHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGFsbG9jYXRvclJlZiwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4odG9XSyhzdHJpbmdSZWYpLT5jaGFyYWN0ZXJzKCkp
LCB0b1dLKHN0cmluZ1JlZiktPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycyhhbGxvY2F0b3JSZWYsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hh
cio+KHRvV0soc3RyaW5nUmVmKS0+c3RyaW5nKCkuY2hhcmFjdGVycygpKSwgdG9XSyhzdHJpbmdS
ZWYpLT5zdHJpbmcoKS5sZW5ndGgoKSk7CiB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9jZi9XS1VSTENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9j
Zi9XS1VSTENGLmNwcAkocmV2aXNpb24gNjQxODEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9jZi9XS1VSTENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTYgKzM3LDE3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiBXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhDRlVSTChDRlVSTFJl
ZiBjZlVSTCkKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nKENGVVJMR2V0U3RyaW5nKGNmVVJMKSk7
Ci0gICAgUmVmUHRyPFN0cmluZ0ltcGw+IHVybFN0cmluZ0ltcGwgPSB1cmxTdHJpbmcuaW1wbCgp
OwotICAgIHJldHVybiB0b1VSTFJlZih1cmxTdHJpbmdJbXBsLnJlbGVhc2UoKS5yZWxlYXNlUmVm
KCkpOworICAgIHJldHVybiB0b0NvcGllZFVSTFJlZih1cmxTdHJpbmcpOwogfQogCiBDRlVSTFJl
ZiBXS1VSTENvcHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVS
TFJlZikKIHsKKyAgICBBU1NFUlQoIXRvV0soVVJMUmVmKS0+c3RyaW5nKCkuaXNOdWxsKCkpOwor
CiAgICAgLy8gV2UgZmlyc3QgY3JlYXRlIGEgQ0ZTdHJpbmcgYW5kIHRoZW4gY3JlYXRlIHRoZSBD
RlVSTCBmcm9tIGl0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIENGVVJMIGlzIHN0b3JlZCBp
biAKICAgICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktp
dCBjbGllbnRzIG1pZ2h0IGV4cGVjdC4KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0
cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGtDRkFsbG9j
YXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KHRvV0soVVJMUmVm
KS0+Y2hhcmFjdGVycygpKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvV0soVVJMUmVmKS0+
bGVuZ3RoKCksIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHVybFN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGtD
RkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KHRvV0so
VVJMUmVmKS0+c3RyaW5nKCkuY2hhcmFjdGVycygpKSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRvV0soVVJMUmVmKS0+c3RyaW5nKCkubGVuZ3RoKCksIGtDRkFsbG9jYXRvck51bGwpKTsKIAog
ICAgIHJldHVybiBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoYWxsb2NhdG9yUmVmLCB1cmxTdHJpbmcu
Z2V0KCksIDApOwogfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCShyZXZpc2lvbiA2NDE4
MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDExICsyNiwxMSBAQAogI2lmbmRlZiBXZWJWaWV3X2gKICNkZWZpbmUgV2ViVmlld19oCiAK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlTGlzdGVu
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRHJhd2luZ0FyZWFQcm94
eTsKIGNsYXNzIFdlYlBhZ2VOYW1lc3BhY2U7CiAKLWNsYXNzIFdlYlZpZXcgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJWaWV3PiwgcHVibGljIFBhZ2VDbGllbnQsIFdlYkNvcmU6OldpbmRvd01lc3Nh
Z2VMaXN0ZW5lciB7CitjbGFzcyBXZWJWaWV3IDogcHVibGljIEFQSU9iamVjdCwgcHVibGljIFBh
Z2VDbGllbnQsIFdlYkNvcmU6OldpbmRvd01lc3NhZ2VMaXN0ZW5lciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViVmlldz4gY3JlYXRlKFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVz
cGFjZSogcGFnZU5hbWVzcGFjZSwgSFdORCBob3N0V2luZG93KQogICAgIHsKSW5kZXg6IFdlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NDE4MSkKKysr
IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC01NDMsNiArNTQzLDggQEAKIAkJQkNFRTk4Q0IxMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFn
ZU5hbWVzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VOYW1l
c3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGMDQ5RTQxMUZFMjBGNjAw
Rjg2QTU4IC8qIFdLQnVuZGxlRnJhbWVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQnVuZGxlRnJhbWVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDRjA0OUU1MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZVByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRjA0QzhDMTFGRjlCN0QwMEY4NkE1OCAvKiBBUElPYmpl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRjA0QzhFMTFGRjlGNkUwMEY4NkE1OCAvKiBXZWJT
dHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3RyaW5nLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRjY5Rjg0MTE3NkNENkYwMDQ3MUE1MiAvKiBX
ZWJIaXN0b3J5Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkhpc3RvcnlDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Y2
OUY4NTExNzZDRDZGMDA0NzFBNTIgLyogV2ViSGlzdG9yeUNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJIaXN0b3J5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRjY5Rjk4MTE3NkNFRDYwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0
YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5hdmlnYXRpb25E
YXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczOSw2ICs3NDEsOCBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkMxMTFCNUYxMTJGNjM1RTAwMzM3QkFCIC8qIENvcmVJ
UENTdXBwb3J0ICovLAogCQkJCUJDMTExQjVBMTEyRjYyODIwMDMzN0JBQiAvKiBtYWMgKi8sCisJ
CQkJQkNGMDRDOEMxMUZGOUI3RDAwRjg2QTU4IC8qIEFQSU9iamVjdC5oICovLAorCQkJCUJDRjA0
QzhFMTFGRjlGNkUwMEY4NkE1OCAvKiBXZWJTdHJpbmcuaCAqLywKIAkJCQkxQTZGOUY4RTExRTEz
RUZDMDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLywKIAkJCQlCQzY0Njk2RDExREJFNjAzMDA2
NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuY3BwICovLAogCQkJCUJDNjQ2OTZFMTFEQkU2MDMwMDY0
NTVCMCAvKiBJbW11dGFibGVBcnJheS5oICovLApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiA2NDE4
MSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDkgKzU1LDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6
aW5pdGlhbGl6ZUNsaWVudChXSwogICAgICAgICBtZW1zZXQoJm1fY2xpZW50LCAwLCBzaXplb2Yo
bV9jbGllbnQpKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdE1lc3NhZ2UoU3RyaW5n
SW1wbCogbWVzc2FnZSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmQoV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZTo6UG9zdE1lc3NhZ2UsIDAsIENvcmVJUEM6Oklu
KFN0cmluZyhtZXNzYWdlKSkpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZChXZWJQcm9jZXNzUHJveHlNZXNzYWdlOjpQb3N0TWVzc2FnZSwgMCwgQ29yZUlQQzo6
SW4obWVzc2FnZSkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTaG91bGRUcmFja1Zp
c2l0ZWRMaW5rcyhib29sIHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKQpJbmRleDogV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHJldmlz
aW9uIDY0MTgxKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gQVBJCiAgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KFdLQnVuZGxlQ2xpZW50Kik7Ci0gICAg
dm9pZCBwb3N0TWVzc2FnZShXZWJDb3JlOjpTdHJpbmdJbXBsKik7CisgICAgdm9pZCBwb3N0TWVz
c2FnZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICB2b2lkIHNldFNob3VsZFRyYWNrVmlz
aXRlZExpbmtzKGJvb2wpOwogICAgIHZvaWQgcmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CiAKSW5k
ZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcAkocmV2aXNpb24gNjQxODEpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBAIHZvaWQgV0tCdW5kbGVTZXRDbGllbnQoV0tCdW5kbGVSZWYgYnVuZGwKIAogdm9pZCBXS0J1
bmRsZVBvc3RNZXNzYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZVJlZikKIHsKLSAgICB0b1dLKGJ1bmRsZVJlZiktPnBvc3RNZXNzYWdlKHRvV0sobWVzc2FnZVJl
ZikpOworICAgIHRvV0soYnVuZGxlUmVmKS0+cG9zdE1lc3NhZ2UodG9XSyhtZXNzYWdlUmVmKS0+
c3RyaW5nKCkpOwogfQogCiB2b2lkIFdLQnVuZGxlU2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3Mo
V0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBib29sIHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKQpJbmRl
eDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUZyYW1lLmNwcAkocmV2aXNpb24gNjQxODEpCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDcgQEAgdW5zaWduZWQgV0tCdW5kbGVGcmFtZUdldE51bWJlck9mQWN0aXZl
QQogCiBib29sIFdLQnVuZGxlRnJhbWVQYXVzZUFuaW1hdGlvbk9uRWxlbWVudFdpdGhJZChXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1N0cmluZ1JlZiBuYW1lLCBXS1N0cmluZ1JlZiBlbGVt
ZW50SUQsIGRvdWJsZSB0aW1lKQogewotICAgIHJldHVybiB0b1dLKGZyYW1lUmVmKS0+cGF1c2VB
bmltYXRpb25PbkVsZW1lbnRXaXRoSWQodG9XSyhuYW1lKSwgdG9XSyhlbGVtZW50SUQpLCB0aW1l
KTsKKyAgICByZXR1cm4gdG9XSyhmcmFtZVJlZiktPnBhdXNlQW5pbWF0aW9uT25FbGVtZW50V2l0
aElkKHRvV0sobmFtZSktPnN0cmluZygpLCB0b1dLKGVsZW1lbnRJRCktPnN0cmluZygpLCB0aW1l
KTsKIH0KIAogSlNHbG9iYWxDb250ZXh0UmVmIFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29u
dGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCShyZXZpc2lvbiA2NDE4MSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5k
ZWYgV2ViRnJhbWVfaAogI2RlZmluZSBXZWJGcmFtZV9oCiAKKyNpbmNsdWRlICJBUElPYmplY3Qu
aCIKICNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CkBAIC0zMyw3ICsz
NCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJG
cmFtZT4geworY2xhc3MgV2ViRnJhbWUgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGcmFtZT4gY3JlYXRlTWFpbkZyYW1lKFdlYlBhZ2UqKTsK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGcmFtZT4gY3JlYXRlU3ViZnJhbWUoV2ViUGFnZSos
IGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25l
ckVsZW1lbnQqKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDY0MTgxKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYlBhZ2VfaAogI2RlZmluZSBX
ZWJQYWdlX2gKIAorI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgiCkBAIC0zNSw3ICszNiw2IEBACiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMgewpAQCAtNjEsNyArNjEsNyBA
QCBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViV2hlZWxFdmVudDsKIHN0cnVjdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlOwogCi1jbGFzcyBXZWJQYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
UGFnZT4geworY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2U+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwg
RHJhd2luZ0FyZWE6OlR5cGUpOwogICAgIH5XZWJQYWdlKCk7CkluZGV4OiBXZWJLaXQyL3dpbi9X
ZWJLaXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagko
cmV2aXNpb24gNjQxODEpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2luZyBj
b3B5KQpAQCAtMzkzLDYgKzM5MywxMCBAQAogCQkJTmFtZT0iU2hhcmVkIg0KIAkJCT4NCiAJCQk8
RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElPYmplY3QuaCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxJbW11
dGFibGVBcnJheS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtNDMyLDYgKzQzNiwxMCBA
QAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYlByZWZlcmVuY2VzU3RvcmUuaCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJl
ZFxXZWJTdHJpbmcuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5h
bWU9IkNvcmVJUENTdXBwb3J0Ig0KIAkJCQk+DQo=
</data>
<flag name="review"
          id="51030"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>