<?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>80230</bug_id>
          
          <creation_ts>2012-03-04 18:38:15 -0800</creation_ts>
          <short_desc>WebKit2 lacks API for obtaining a representation of the render tree of a page, like WebRenderNode</short_desc>
          <delta_ts>2012-03-07 12:24:32 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>570343</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-03-04 18:38:15 -0800</bug_when>
    <thetext>WebKit2 lacks API for obtaining a representation of the render tree of a page, like WebRenderNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570344</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-03-04 18:38:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/10981890&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570345</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-03-04 18:40:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/8494396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570348</commentid>
    <comment_count>3</comment_count>
      <attachid>130041</attachid>
    <who name="">mitz</who>
    <bug_when>2012-03-04 18:52:25 -0800</bug_when>
    <thetext>Created attachment 130041
Add WKRenderObject and bundle API for getting the render tree of a page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570349</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-04 18:56:08 -0800</bug_when>
    <thetext>Attachment 130041 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/Shared/WebRenderObject.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/Shared/WebRenderObject.h:54:  The return type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570356</commentid>
    <comment_count>5</comment_count>
      <attachid>130041</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-04 19:13:54 -0800</bug_when>
    <thetext>Comment on attachment 130041
Add WKRenderObject and bundle API for getting the render tree of a page

Attachment 130041 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11801744</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570361</commentid>
    <comment_count>6</comment_count>
      <attachid>130044</attachid>
    <who name="">mitz</who>
    <bug_when>2012-03-04 19:24:25 -0800</bug_when>
    <thetext>Created attachment 130044
Add WKRenderObject and bundle API for getting the render tree of a page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570363</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-04 19:26:39 -0800</bug_when>
    <thetext>Attachment 130044 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/Shared/WebRenderObject.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/Shared/WebRenderObject.h:54:  The return type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 16 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>570380</commentid>
    <comment_count>8</comment_count>
      <attachid>130048</attachid>
    <who name="">mitz</who>
    <bug_when>2012-03-04 20:13:43 -0800</bug_when>
    <thetext>Created attachment 130048
Add WKRenderObject and bundle API for getting the render tree of a page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570381</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-04 20:15:58 -0800</bug_when>
    <thetext>Attachment 130048 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/Shared/WebRenderObject.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/Shared/WebRenderObject.h:54:  The return type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 16 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>573112</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-03-07 12:24:32 -0800</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/r110085&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130041</attachid>
            <date>2012-03-04 18:52:25 -0800</date>
            <delta_ts>2012-03-04 19:24:21 -0800</delta_ts>
            <desc>Add WKRenderObject and bundle API for getting the render tree of a page</desc>
            <filename>bug-80230-20120304185226.patch</filename>
            <type>text/plain</type>
            <size>26684</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTY5MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAzLTA0ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTQz
OTY+IFdlYktpdDIgbGFja3MgQVBJIGZvciBvYnRhaW5pbmcgYSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgcmVuZGVyIHRyZWUgb2YgYSBwYWdlLCBsaWtlIFdlYlJlbmRlck5vZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMjMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNl
Lmg6IEFkZGVkIGEgdHlwZSBkZWZpbml0aW9uIG9mIFdLUmVuZGVyT2JqZWN0UmVmLgorCisgICAg
ICAgICogU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChX
S1JlbmRlck9iamVjdEdldFR5cGVJRCk6IEFkZGVkLiBSZXR1cm5zIHRoZSBXS1JlbmRlck9iamVj
dCB0eXBlIElELgorICAgICAgICAoV0tSZW5kZXJPYmplY3RDb3B5TmFtZSk6IEFkZGVkIHRoaXMg
Z2V0dGVyIHdyYXBwZXIuCisgICAgICAgIChXS1JlbmRlck9iamVjdEdldEFic29sdXRlUG9zaXRp
b24pOiBEaXR0by4KKyAgICAgICAgKFdLUmVuZGVyT2JqZWN0R2V0RnJhbWVSZWN0KTogRGl0dG8u
CisgICAgICAgIChXS1JlbmRlck9iamVjdEdldENoaWxkcmVuKTogRGl0dG8uCisKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuaDogQWRkZWQuCisKKyAgICAgICAgKiBTaGFy
ZWQvQVBJT2JqZWN0Lmg6IEFkZGVkIFR5cGVSZW5kZXJPYmplY3QgdG8gdGhlIEFQSU9iamVjdDo6
VHlwZSBlbnVtLgorICAgICAgICAqIFNoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVzc2FnZUVuY29kZXI6OmJhc2VFbmNvZGUpOiBBZGRlZCBXZWJSZW5k
ZXJPYmplY3QgZW5jb2RpbmcuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlRGVjb2Rlcjo6
YmFzZURlY29kZSk6IEFkZGVkIFdlYlJlbmRlck9iamVjdCBkZWNvZGluZy4KKyAgICAgICAgKiBT
aGFyZWQvV2ViUmVuZGVyT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJl
bmRlck9iamVjdDo6Y3JlYXRlKTogQWRkZWQuIENyZWF0ZXMgYSBXZWJSZW5kZXJPYmplY3QgZm9y
IHRoZSBwYWdl4oCZcyBtYWluCisgICAgICAgIGZyYW1lIGNvbnRlbnQgcmVuZGVyZXIuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KTogQWRkZWQuIENv
bnN0cnVjdHMgYSBXZWJSZW5kZXJPYmplY3Qgd2l0aCB0aGUKKyAgICAgICAgbmFtZSwgbWV0cmlj
cyBhbmQgY2hpbGRyZW4gb2YgdGhlIGdpdmVuIFJlbmRlck9iamVjdCwgZm9sbG93aW5nIHRoZSBy
dWxlcyB1c2VkIGluIFdlYktpdDEKKyAgICAgICAgV2ViUmVuZGVyTm9kZS4gSW4gcGFydGljdWxh
ciwgYSBSZW5kZXJXaWRnZXQgcmVwcmVzZW50aW5nIGEgZnJhbWUgZ2V0cyB0aGUgZnJhbWXigJlz
IGNvbnRlbnQKKyAgICAgICAgcmVuZGVyZXIgYXMgYSBjaGlsZC4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJSZW5kZXJPYmplY3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9i
amVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVuZGVyT2JqZWN0OjpjaGlsZHJl
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9iamVjdDo6bmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlbmRlck9iamVjdDo6YWJzb2x1dGVQb3NpdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlbmRlck9iamVjdDo6ZnJhbWVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVu
ZGVyT2JqZWN0OjpXZWJSZW5kZXJPYmplY3QpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oOiBBZGRlZCBhIG1hcHBpbmcgYmV0d2VlbiBXS1JlbmRlck9iamVjdFJlZiBh
bmQgV2ViUmVuZGVyT2JqZWN0LgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGRlZCBXZWJSZW5kZXJPYmplY3Que2NwcCxofSBhbmQgV0tSZW5kZXJPYmpl
Y3Que2NwcC5ofS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZUNvcHlSZW5kZXJUcmVlKTog
QWRkZWQgdGhpcyBidW5kbGUgQVBJIGZvciBnZXR0aW5nIHRoZSByZW5kZXIgdHJlZS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0
ZS5oOgorCiAyMDEyLTAzLTAzICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBzdGF0aWNfbGlic19hc19zaGFyZWQgYnVpbGQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDEwOTY3NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVHcmFwaGljc0NvbnRleHQsCiAgICAgICAgIFR5cGVJ
bWFnZSwKICAgICAgICAgVHlwZVByb3RlY3Rpb25TcGFjZSwKKyAgICAgICAgVHlwZVJlbmRlck9i
amVjdCwKICAgICAgICAgVHlwZVNlY3VyaXR5T3JpZ2luLAogICAgICAgICBUeXBlU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLAogICAgICAgICBUeXBlU3RyaW5nLApJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmgJKHJldmlzaW9uIDEwOTY3NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViR2VvbWV0cnkuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5o
IgogI2luY2x1ZGUgIldlYk51bWJlci5oIgorI2luY2x1ZGUgIldlYlJlbmRlck9iamVjdC5oIgog
I2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgpAQCAtNTYsNiArNTcsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIC8vICAgLSBXZWJEYXRhIC0+IFdlYkRhdGEKIC8vICAgLSBXZWJEb3VibGUgLT4gV2Vi
RG91YmxlCiAvLyAgIC0gV2ViSW1hZ2UgLT4gV2ViSW1hZ2UKKy8vICAgLSBXZWJSZW5kZXJPYmpl
Y3QgLT4gV2ViUmVuZGVyT2JqZWN0CiAvLyAgIC0gV2ViVUludDY0IC0+IFdlYlVJbnQ2NAogLy8g
ICAtIFdlYlVSTCAtPiBXZWJVUkwKIC8vICAgLSBXZWJVUkxSZXF1ZXN0IC0+IFdlYlVSTFJlcXVl
c3QKQEAgLTEzOSw2ICsxNDEsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlKHJlY3RPYmplY3QtPnJlY3QoKS5zaXplLmhlaWdodCk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQorICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVJlbmRlck9iamVj
dDogeworICAgICAgICAgICAgV2ViUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSBzdGF0aWNf
Y2FzdDxXZWJSZW5kZXJPYmplY3QqPihtX3Jvb3QpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlKHJlbmRlck9iamVjdC0+bmFtZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShy
ZW5kZXJPYmplY3QtPmFic29sdXRlUG9zaXRpb24oKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5l
bmNvZGUocmVuZGVyT2JqZWN0LT5mcmFtZVJlY3QoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoT3duZXIocmVuZGVyT2JqZWN0LT5jaGlsZHJlbigpLmdldCgpKSk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVVS
TDogewogICAgICAgICAgICAgV2ViVVJMKiB1cmxPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJVUkwq
PihtX3Jvb3QpOwogICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHVybE9iamVjdC0+c3RyaW5n
KCkpOwpAQCAtMzM4LDYgKzM0OCwyNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb2Rlci5tX3Jv
b3QgPSBXZWJSZWN0OjpjcmVhdGUoV0tSZWN0TWFrZSh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlw
ZVJlbmRlck9iamVjdDogeworICAgICAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uOworICAgICAgICAgICAgV2ViQ29yZTo6
SW50UmVjdCBmcmFtZVJlY3Q7CisgICAgICAgICAgICBSZWZQdHI8QVBJT2JqZWN0PiBjaGlsZHJl
bjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobmFtZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoYWJzb2x1dGVQb3NpdGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZnJhbWVSZWN0KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBPd25lciBtZXNzYWdlQ29kZXIoY29k
ZXIsIGNoaWxkcmVuKTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc3NhZ2VD
b2RlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGNo
aWxkcmVuLT50eXBlKCkgIT0gQVBJT2JqZWN0OjpUeXBlQXJyYXkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29kZXIubV9yb290ID0gV2ViUmVuZGVyT2JqZWN0
OjpjcmVhdGUobmFtZSwgYWJzb2x1dGVQb3NpdGlvbiwgZnJhbWVSZWN0LCBXVEY6OnN0YXRpY19w
b2ludGVyX2Nhc3Q8TXV0YWJsZUFycmF5PihjaGlsZHJlbikpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVVUkw6IHsKICAgICAgICAg
ICAgIFN0cmluZyBzdHJpbmc7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzdHJp
bmcpKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJSZW5kZXJPYmplY3QuaCIKKworI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVGV4dC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyVmlldy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyV2lkZ2V0Lmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFz
c1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKFdlYlBhZ2Uq
IHBhZ2UpCit7CisgICAgRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAg
IGlmICghbWFpbkZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbWFpbkZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPmhhc0hUTUxWaWV3KCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgUmVuZGVyVmlldyogY29udGVudFJlbmRlcmVyID0gbWFpbkZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKTsKKyAgICBpZiAoIWNvbnRlbnRSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlJlbmRlck9iamVjdChjb250ZW50UmVuZGVyZXIp
KTsKK30KKworV2ViUmVuZGVyT2JqZWN0OjpXZWJSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKK3sKKyAgICBtX25hbWUgPSByZW5kZXJlci0+cmVuZGVyTmFtZSgpOworCisgICAg
Ly8gRklYTUU6IGJyb2tlbiB3aXRoIHRyYW5zZm9ybXMKKyAgICBtX2Fic29sdXRlUG9zaXRpb24g
PSBJbnRQb2ludChyZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSkpOworCisg
ICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpKQorICAgICAgICBtX2ZyYW1lUmVjdCA9IHRvUmVuZGVy
Qm94KHJlbmRlcmVyKS0+ZnJhbWVSZWN0KCk7CisgICAgZWxzZSBpZiAocmVuZGVyZXItPmlzVGV4
dCgpKSB7CisgICAgICAgIG1fZnJhbWVSZWN0ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKS0+bGlu
ZXNCb3VuZGluZ0JveCgpOworICAgICAgICBtX2ZyYW1lUmVjdC5zZXRYKHRvUmVuZGVyVGV4dChy
ZW5kZXJlciktPmZpcnN0UnVuWCgpKTsKKyAgICAgICAgbV9mcmFtZVJlY3Quc2V0WSh0b1JlbmRl
clRleHQocmVuZGVyZXIpLT5maXJzdFJ1blkoKSk7CisgICAgfSBlbHNlIGlmIChyZW5kZXJlci0+
aXNSZW5kZXJJbmxpbmUoKSkKKyAgICAgICAgbV9mcmFtZVJlY3QgPSB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KHJlbmRlcmVyKS0+Ym9yZGVyQm91bmRpbmdCb3goKTsKKworICAgIG1fY2hpbGRyZW4g
PSBNdXRhYmxlQXJyYXk6OmNyZWF0ZSgpOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjb3JlQ2hp
bGQgPSByZW5kZXJlci0+Zmlyc3RDaGlsZCgpOyBjb3JlQ2hpbGQ7IGNvcmVDaGlsZCA9IGNvcmVD
aGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBj
aGlsZCA9IGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29yZUNoaWxkKSk7CisgICAgICAg
IG1fY2hpbGRyZW4tPmFwcGVuZChjaGlsZC5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKCFyZW5k
ZXJlci0+aXNXaWRnZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2lkZ2V0KiB3aWRnZXQg
PSB0b1JlbmRlcldpZGdldChyZW5kZXJlciktPndpZGdldCgpOworICAgIGlmICghd2lkZ2V0IHx8
ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KTsKKyAgICBpZiAo
UmVuZGVyVmlldyogY29yZUNvbnRlbnRSZW5kZXJlciA9IGZyYW1lVmlldy0+ZnJhbWUoKS0+Y29u
dGVudFJlbmRlcmVyKCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gY29udGVu
dFJlbmRlcmVyID0gYWRvcHRSZWYobmV3IFdlYlJlbmRlck9iamVjdChjb3JlQ29udGVudFJlbmRl
cmVyKSk7CisgICAgICAgIG1fY2hpbGRyZW4tPmFwcGVuZChjb250ZW50UmVuZGVyZXIuZ2V0KCkp
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJSZW5kZXJPYmplY3RfaAorI2RlZmluZSBXZWJSZW5kZXJP
YmplY3RfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiTXV0YWJsZUFycmF5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBSZW5kZXJPYmplY3Q7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJSZW5k
ZXJPYmplY3QgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Qg
VHlwZSBBUElUeXBlID0gVHlwZVJlbmRlck9iamVjdDsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYlJlbmRlck9iamVjdD4gY3JlYXRlKFdlYlBhZ2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJSZW5kZXJPYmplY3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Oklu
dFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBQYXNz
UmVmUHRyPE11dGFibGVBcnJheT4gY2hpbGRyZW4pCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYlJlbmRlck9iamVjdChuYW1lLCBhYnNvbHV0ZVBvc2l0aW9uLCBmcmFtZVJl
Y3QsIGNoaWxkcmVuKSk7CisgICAgfQorCisgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBjaGls
ZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KKworICAgIGNvbnN0IFN0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIFdlYkNvcmU6OkludFBvaW50IGFi
c29sdXRlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlUG9zaXRpb247IH0KKyAg
ICBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0
OyB9CisKK3ByaXZhdGU6CisgICAgV2ViUmVuZGVyT2JqZWN0KFdlYkNvcmU6OlJlbmRlck9iamVj
dCopOworICAgIFdlYlJlbmRlck9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Oklu
dFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBQYXNz
UmVmUHRyPE11dGFibGVBcnJheT4gY2hpbGRyZW4pCisgICAgICAgIDogbV9jaGlsZHJlbihjaGls
ZHJlbikKKyAgICAgICAgLCBtX25hbWUobmFtZSkKKyAgICAgICAgLCBtX2Fic29sdXRlUG9zaXRp
b24oYWJzb2x1dGVQb3NpdGlvbikKKyAgICAgICAgLCBtX2ZyYW1lUmVjdChmcmFtZVJlY3QpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gQVBJVHlwZTsgfQorCisgICAgUmVmUHRyPE11dGFibGVBcnJheT4gbV9jaGlsZHJlbjsK
KworICAgIFN0cmluZyBtX25hbWU7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9hYnNvbHV0ZVBv
c2l0aW9uOworICAgIFdlYkNvcmU6OkludFJlY3QgbV9mcmFtZVJlY3Q7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJlbmRlck9iamVjdF9oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiAxMDk2NzYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5
LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tHcmFwaGljc0NvbgogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tJbWFnZSogV0tJbWFnZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLUG9pbnRSZWYqIFdLUG9pbnRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS1JlY3RSZWYqIFdLUmVjdFJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
UmVuZGVyT2JqZWN0KiBXS1JlbmRlck9iamVjdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLU2VjdXJpdHlPcmlnaW4qIFdLU2VjdXJpdHlPcmlnaW5SZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogV0tTZXJpYWxpemVkU2NyaXB0
VmFsdWVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NpemVSZWYqIFdLU2l6ZVJl
ZjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1JlbmRlck9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1JlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tSZW5kZXJPYmplY3QuaCIKKworI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlJlbmRlck9iamVjdC5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdL
UmVuZGVyT2JqZWN0R2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViUmVuZGVyT2Jq
ZWN0OjpBUElUeXBlKTsKK30KKworV0tTdHJpbmdSZWYgV0tSZW5kZXJPYmplY3RDb3B5TmFtZShX
S1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVk
QVBJKHRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5uYW1lKCkpOworfQorCitXS1BvaW50IFdLUmVu
ZGVyT2JqZWN0R2V0QWJzb2x1dGVQb3NpdGlvbihXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmpl
Y3RSZWYpCit7CisgICAgSW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbiA9IHRvSW1wbChyZW5kZXJP
YmplY3RSZWYpLT5hYnNvbHV0ZVBvc2l0aW9uKCk7CisgICAgcmV0dXJuIFdLUG9pbnRNYWtlKGFi
c29sdXRlUG9zaXRpb24ueCgpLCBhYnNvbHV0ZVBvc2l0aW9uLnkoKSk7Cit9CisKK1dLUmVjdCBX
S1JlbmRlck9iamVjdEdldEZyYW1lUmVjdChXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RS
ZWYpCit7CisgICAgSW50UmVjdCBmcmFtZVJlY3QgPSB0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+
ZnJhbWVSZWN0KCk7CisgICAgcmV0dXJuIFdLUmVjdE1ha2UoZnJhbWVSZWN0LngoKSwgZnJhbWVS
ZWN0LnkoKSwgZnJhbWVSZWN0LndpZHRoKCksIGZyYW1lUmVjdC5oZWlnaHQoKSk7Cit9CisKK1dL
QXJyYXlSZWYgV0tSZW5kZXJPYmplY3RHZXRDaGlsZHJlbihXS1JlbmRlck9iamVjdFJlZiByZW5k
ZXJPYmplY3RSZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChyZW5kZXJPYmplY3RSZWYp
LT5jaGlsZHJlbigpLmdldCgpKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdLUmVuZGVyT2JqZWN0X2gKKyNkZWZpbmUgV0tSZW5kZXJP
YmplY3RfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLR2VvbWV0cnkuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tSZW5kZXJPYmplY3RHZXRUeXBlSUQoKTsKKworV0tf
RVhQT1JUIFdLU3RyaW5nUmVmIFdLUmVuZGVyT2JqZWN0Q29weU5hbWUoV0tSZW5kZXJPYmplY3RS
ZWYgcmVuZGVyT2JqZWN0KTsKK1dLX0VYUE9SVCBXS1BvaW50IFdLUmVuZGVyT2JqZWN0R2V0QWJz
b2x1dGVQb3NpdGlvbihXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3QpOworV0tfRVhQT1JU
IFdLUmVjdCBXS1JlbmRlck9iamVjdEdldEZyYW1lUmVjdChXS1JlbmRlck9iamVjdFJlZiByZW5k
ZXJPYmplY3QpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tSZW5kZXJPYmplY3RHZXRDaGlsZHJl
bihXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3QpOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tSZW5kZXJPYmplY3RfaApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMTA5Njc2KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Myw2ICs4Myw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBsdWdpblNp
dGVEYXRhTWFuYWdlcjsKIGNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUHJvdGVjdGlv
blNwYWNlOworY2xhc3MgV2ViUmVuZGVyT2JqZWN0OwogY2xhc3MgV2ViVGV4dENoZWNrZXI7CiAK
IFdLX0FERF9BUElfTUFQUElORyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmLCBXZWJBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclByb3h5KQpAQCAtMTE5LDYgKzEyMCw3IEBAIFdLX0FERF9BUElf
TUFQUElORyhXS1BhZ2VSZWYsIFdlYlBhZ2VQcm8KIFdLX0FERF9BUElfTUFQUElORyhXS1BsdWdp
blNpdGVEYXRhTWFuYWdlclJlZiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCitXS19BRERf
QVBJX01BUFBJTkcoV0tSZW5kZXJPYmplY3RSZWYsIFdlYlJlbmRlck9iamVjdCkKIFdLX0FERF9B
UElfTUFQUElORyhXS1RleHRDaGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tlcikKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDk2NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw2
ICszMTYsMTAgQEAKIAkJMzNEM0EzQ0ExMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVN
YW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzNEM0EzQzYxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlh
Q2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkzM0QzQTNDQjEz
Mzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0QzQTNDNzEzMzk2
MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi87IH07
CiAJCTMzRjlENUI5MTMxMkYxRUUwMDBENjgzRiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNG
TmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMz
RjlENUI4MTMxMkYxRUUwMDBENjgzRiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNw
cCAqLzsgfTsKKwkJMzc2MDg4MUUxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzYwODgx
QzE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmNwcCAqLzsgfTsKKwkJMzc2MDg4
MUYxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc2MDg4MUQxNTA0MTNFOTAwRkM4MkM3IC8q
IFdlYlJlbmRlck9iamVjdC5oICovOyB9OworCQkzNzYwODgyMjE1MDQxNEY3MDBGQzgyQzcgLyog
V0tSZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc2MDg4MjAxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmNwcCAq
LzsgfTsKKwkJMzc2MDg4MjMxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzYwODgyMTE1MDQx
NEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzg4QTA1QzE0NzQzQzkwMDA2MzE5RTUgLyogV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc4OEEwNUIxNDc0M0M5MDAwNjMxOUU1IC8qIFdLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0M0RTlGNjEzMUM2RTdFMDAyOUJENUEgLyogY29u
ZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMzk2
RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi87IH07CiAJCTM3RjYyM0I4MTJBNTdC
NjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Y2MjNCNzEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMzI3LDYgKzEzMzEsMTAgQEAKIAkJMzNEM0EzQzYxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1l
ZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzRDNBM0M3MTMzOTYxNzkw
MDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzRjlENUI4MTMxMkYxRUUwMDBENjgz
RiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxl
RW5jb2RpbmcgPSA0OyBuYW1lID0gV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJDRk5ldC5jcHA7IHBh
dGggPSBSZXNvdXJjZUNhY2hlL2NmL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzYwODgxQzE1MDQxM0U5MDBGQzgyQzcgLyog
V2ViUmVuZGVyT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlJlbmRlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3NjA4
ODFEMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVuZGVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTM3NjA4ODIwMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1JlbmRlck9iamVjdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3NjA4ODIxMTUwNDE0RjcwMEZDODJDNyAv
KiBXS1JlbmRlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Jl
bmRlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzg4QTA1QjE0NzQz
QzkwMDA2MzE5RTUgLyogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQ
cml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RjYyM0I3MTJBNTdCNjIw
MEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLRmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMDMx
RjYxMzc5Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltLmR5bGliICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGli
IjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2ViUHJvY2Vzc1NoaW0uZHlsaWI7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0yNDE4LDYgKzI0MjYsOCBAQAogCQkJ
CUJDRDU5OEFBMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggKi8sCiAJ
CQkJQkMzMDY4MjMxMjVBNkI5NDAwRTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwICovLAogCQkJCUJDMzA2ODIyMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggKi8sCisJCQkJMzc2MDg4MUMxNTA0MTNFOTAwRkM4MkM3IC8qIFdl
YlJlbmRlck9iamVjdC5jcHAgKi8sCisJCQkJMzc2MDg4MUQxNTA0MTNFOTAwRkM4MkM3IC8qIFdl
YlJlbmRlck9iamVjdC5oICovLAogCQkJCUY2MzQ0NDU1MTJBODg1QzgwMDA2MTJEOCAvKiBXZWJT
ZWN1cml0eU9yaWdpbi5oICovLAogCQkJCUE3MkQ1RDdGMTIzNkNCQTgwMEE4OEIxNSAvKiBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCAqLywKIAkJCQlCQ0YwNEM4RTExRkY5RjZFMDBGODZBNTgg
LyogV2ViU3RyaW5nLmggKi8sCkBAIC0zNDk0LDYgKzM1MDQsOCBAQAogCQkJCUJDNDA3NUU1MTI0
RkYwMjcwMDY4RjIwQSAvKiBXS051bWJlci5jcHAgKi8sCiAJCQkJQkM0MDc1RTYxMjRGRjAyNzAw
NjhGMjBBIC8qIFdLTnVtYmVyLmggKi8sCiAJCQkJQkMyRDAyMTgxMkFDNDI2QzAwRTczMkEzIC8q
IFdLUGFnZUxvYWRUeXBlcy5oICovLAorCQkJCTM3NjA4ODIwMTUwNDE0RjcwMEZDODJDNyAvKiBX
S1JlbmRlck9iamVjdC5jcHAgKi8sCisJCQkJMzc2MDg4MjExNTA0MTRGNzAwRkM4MkM3IC8qIFdL
UmVuZGVyT2JqZWN0LmggKi8sCiAJCQkJRjYzNDQ0NUExMkE4ODVFOTAwMDYxMkQ4IC8qIFdLU2Vj
dXJpdHlPcmlnaW4uY3BwICovLAogCQkJCUY2MzQ0NDVCMTJBODg1RTkwMDA2MTJEOCAvKiBXS1Nl
Y3VyaXR5T3JpZ2luLmggKi8sCiAJCQkJQkM0MDc1RTcxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywKQEAgLTQxNTUsNiArNDE2Nyw4IEBACiAJCQkJRTE3
QkY5OTYxNEQwQTczRTAwQTVBMDY5IC8qIE5ldHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNFMDkzNzgxNEZCMTI4QzAwMTEzOEQ5IC8qIFJlbW90ZUxheWVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3Ry
aW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkzNzYwODgxRjE1MDQxM0U5MDBGQzgy
QzcgLyogV2ViUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkzNzYwODgyMzE1MDQx
NEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDg5NSw2
ICs0OTA5LDggQEAKIAkJCQlFMTdCRjk5ODE0RDBBQTgzMDBBNUEwNjkgLyogTmV0c2NhcGVTYW5k
Ym94RnVuY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFMDkzNzcxNEZCMTI4QzAwMTEz
OEQ5IC8qIFJlbW90ZUxheWVyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk2QkQ4NUUx
NTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTM3NjA4ODFFMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMzc2MDg4MjIxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkocmV2
aXNpb24gMTA5Njc2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5o
IgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJSZW5kZXJPYmplY3QuaCIKICNp
bmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCiAKQEAgLTMyOCw2
ICszMjksMTEgQEAgdWludDY0X3QgV0tCdW5kbGVQYWdlR2V0UmVuZGVyVHJlZVNpemUoVwogICAg
IHJldHVybiB0b0ltcGwocGFnZVJlZiktPnJlbmRlclRyZWVTaXplKCk7CiB9CiAKK1dLUmVuZGVy
T2JqZWN0UmVmIFdLQnVuZGxlUGFnZUNvcHlSZW5kZXJUcmVlKFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmKQoreworICAgIHJldHVybiB0b0FQSShXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZSh0b0ltcGwo
cGFnZVJlZikpLmxlYWtSZWYoKSk7Cit9CisKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UGFpbnRlZE9i
amVjdHNDb3VudGVyVGhyZXNob2xkKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCB1aW50NjRfdCB0aHJl
c2hvbGQpCiB7CiAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWludGVkT2JqZWN0c0NvdW50ZXJUaHJl
c2hvbGQodGhyZXNob2xkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJp
dmF0ZS5oCShyZXZpc2lvbiAxMDk2NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNiArNTUsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTaW11bGF0ZU1vdXNl
CiAKIFdLX0VYUE9SVCB1aW50NjRfdCBXS0J1bmRsZVBhZ2VHZXRSZW5kZXJUcmVlU2l6ZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSk7CiAKK1dLX0VYUE9SVCBXS1JlbmRlck9iamVjdFJlZiBXS0J1bmRs
ZVBhZ2VDb3B5UmVuZGVyVHJlZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CisKIC8vIEZJWE1FOiBU
aGlzIGlzIHRlbXBvcmFyeS4gVWx0aW1hdGVseSBXZWJLaXQgc2hvdWxkIGNob29zZSB0aGUgdGhy
ZXNob2xkIGl0c2VsZi4KIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFBhaW50ZWRPYmpl
Y3RzQ291bnRlclRocmVzaG9sZChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgdWludDY0X3QgdGhyZXNo
b2xkKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130044</attachid>
            <date>2012-03-04 19:24:25 -0800</date>
            <delta_ts>2012-03-04 20:13:38 -0800</delta_ts>
            <desc>Add WKRenderObject and bundle API for getting the render tree of a page</desc>
            <filename>bug-80230-20120304192426.patch</filename>
            <type>text/plain</type>
            <size>31255</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTY5NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAzLTA0ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTQz
OTY+IFdlYktpdDIgbGFja3MgQVBJIGZvciBvYnRhaW5pbmcgYSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgcmVuZGVyIHRyZWUgb2YgYSBwYWdlLCBsaWtlIFdlYlJlbmRlck5vZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMjMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2Uu
aDogQWRkZWQgYSB0eXBlIGRlZmluaXRpb24gb2YgV0tSZW5kZXJPYmplY3RSZWYuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdL
UmVuZGVyT2JqZWN0R2V0VHlwZUlEKTogQWRkZWQuIFJldHVybnMgdGhlIFdLUmVuZGVyT2JqZWN0
IHR5cGUgSUQuCisgICAgICAgIChXS1JlbmRlck9iamVjdENvcHlOYW1lKTogQWRkZWQgdGhpcyBn
ZXR0ZXIgd3JhcHBlci4KKyAgICAgICAgKFdLUmVuZGVyT2JqZWN0R2V0QWJzb2x1dGVQb3NpdGlv
bik6IERpdHRvLgorICAgICAgICAoV0tSZW5kZXJPYmplY3RHZXRGcmFtZVJlY3QpOiBEaXR0by4K
KyAgICAgICAgKFdLUmVuZGVyT2JqZWN0R2V0Q2hpbGRyZW4pOiBEaXR0by4KKworICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS1JlbmRlck9iamVjdC5oOiBBZGRlZC4KKworICAgICAgICAqIFNoYXJl
ZC9BUElPYmplY3QuaDogQWRkZWQgVHlwZVJlbmRlck9iamVjdCB0byB0aGUgQVBJT2JqZWN0OjpU
eXBlIGVudW0uCisgICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmg6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZXNzYWdlRW5jb2Rlcjo6YmFzZUVuY29kZSk6IEFkZGVkIFdlYlJlbmRl
ck9iamVjdCBlbmNvZGluZy4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2VEZWNvZGVyOjpi
YXNlRGVjb2RlKTogQWRkZWQgV2ViUmVuZGVyT2JqZWN0IGRlY29kaW5nLgorICAgICAgICAqIFNo
YXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVu
ZGVyT2JqZWN0OjpjcmVhdGUpOiBBZGRlZC4gQ3JlYXRlcyBhIFdlYlJlbmRlck9iamVjdCBmb3Ig
dGhlIHBhZ2XigJlzIG1haW4KKyAgICAgICAgZnJhbWUgY29udGVudCByZW5kZXJlci4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVuZGVyT2JqZWN0OjpXZWJSZW5kZXJPYmplY3QpOiBBZGRlZC4gQ29u
c3RydWN0cyBhIFdlYlJlbmRlck9iamVjdCB3aXRoIHRoZQorICAgICAgICBuYW1lLCBtZXRyaWNz
IGFuZCBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gUmVuZGVyT2JqZWN0LCBmb2xsb3dpbmcgdGhlIHJ1
bGVzIHVzZWQgaW4gV2ViS2l0MQorICAgICAgICBXZWJSZW5kZXJOb2RlLiBJbiBwYXJ0aWN1bGFy
LCBhIFJlbmRlcldpZGdldCByZXByZXNlbnRpbmcgYSBmcmFtZSBnZXRzIHRoZSBmcmFtZeKAmXMg
Y29udGVudAorICAgICAgICByZW5kZXJlciBhcyBhIGNoaWxkLgorCisgICAgICAgICogU2hhcmVk
L1dlYlJlbmRlck9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVuZGVyT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJPYmplY3Q6OmNoaWxkcmVu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVuZGVyT2JqZWN0OjpuYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVuZGVyT2JqZWN0OjpmcmFtZVJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5k
ZXJPYmplY3Q6OldlYlJlbmRlck9iamVjdCk6CisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOiBBZGRlZCBhIG1hcHBpbmcgYmV0
d2VlbiBXS1JlbmRlck9iamVjdFJlZiBhbmQgV2ViUmVuZGVyT2JqZWN0LgorCisgICAgICAgICog
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBXZWJSZW5kZXJPYmplY3Qu
e2NwcCxofSBhbmQgV0tSZW5kZXJPYmplY3Que2NwcC5ofS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlUGFnZUNvcHlSZW5kZXJUcmVlKTogQWRkZWQgdGhpcyBidW5kbGUgQVBJIGZvciBnZXR0aW5n
IHRoZSByZW5kZXIgdHJlZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oOgorCisgICAgICAgICogd2luL1dlYktpdDIudmNw
cm9qOgorCiAyMDEyLTAzLTA0ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lv
bi5tb2JpPgogCiAgICAgICAgIFtDTWFrZV0gTGlicmFyaWVzIGFyZSBpbnN0YWxsZWQgdG8gL3Vz
ci9saWIgYW5kIG5vdCAvdXNyL2xpYjY0IG9uIHg4Nl82NApJbmRleDogU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDEwOTY3NikKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAg
IFNoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUu
Y3BwCiAgICAgU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisgICAgU2hh
cmVkL1dlYlJlbmRlck9iamVjdC5jcHAKICAgICBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKICAg
ICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAKICAgICBTaGFyZWQvV2ViVVJMUmVzcG9uc2UuY3Bw
CkBAIC0xNzMsNiArMTc0LDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9BUEkv
Yy9XS011dGFibGVBcnJheS5jcHAKICAgICBTaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlvbmFy
eS5jcHAKICAgICBTaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwCisgICAgU2hhcmVkL0FQSS9jL1dL
UmVuZGVyT2JqZWN0LmNwcAogICAgIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luLmNwcAog
ICAgIFNoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKICAgICBTaGFyZWQv
QVBJL2MvV0tTdHJpbmcuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTA5
Njc2KQorKysgU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTE5LDYgKzE5LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSQog
CSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuaCBcCiAJJChXZWJL
aXQyKS9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuaCBcCiAJJChXZWJLaXQyKS9TaGFyZWQvQVBJL2Mv
V0tQYWdlTG9hZFR5cGVzLmggXAorCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2Jq
ZWN0LmggXAogCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW4uaCBcCiAJ
JChXZWJLaXQyKS9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBcCiAJJChX
ZWJLaXQyKS9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVQcml2YXRlLmggXApA
QCAtMjg4LDYgKzI4OSw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLTnVtYmVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlw
ZXMuaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNwcCBc
CisJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmggXAogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW4uaCBcCiAJU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBcCkBAIC00MzUsNiArNDM4
LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXNTdG9yZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmpl
Y3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmggXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJTZWN1cml0eU9yaWdpbi5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJTdHJpbmcuaCBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwOTY3NikKKysr
IFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuaCBc
CiAgICAgU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS1BhZ2VM
b2FkVHlwZXMuaCBcCisgICAgU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmggXAogICAgIFNo
YXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmgg
XApAQCAtMTEyLDYgKzExMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9XZWJQb3B1cEl0
ZW0uaCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBcCiAgICAgU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBcCisgICAgU2hhcmVkL1dlYlJlbmRlck9iamVj
dC5oIFwKICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5oIFwKICAgICBTaGFyZWQvV2ViVVJMUmVz
cG9uc2UuaCBcCiAgICAgU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIFwKQEAgLTM5
Myw2ICszOTUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAg
XAogICAgIFNoYXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9uYXJ5LmNwcCBcCiAgICAgU2hhcmVk
L0FQSS9jL1dLTnVtYmVyLmNwcCBcCisgICAgU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNw
cCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW4uY3BwIFwKICAgICBTaGFyZWQv
QVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tT
dHJpbmcuY3BwIFwKQEAgLTQ1NSw2ICs0NTgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQv
V2ViUG9wdXBJdGVtLmNwcCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIFwK
ICAgICBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgXAorICAgIFNoYXJl
ZC9XZWJSZW5kZXJPYmplY3QuY3BwIFwKICAgICBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAgXAog
ICAgIFNoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcCBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNl
LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCShyZXZpc2lvbiAxMDk2NzYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlR3JhcGhpY3NDb250ZXh0LAogICAg
ICAgICBUeXBlSW1hZ2UsCiAgICAgICAgIFR5cGVQcm90ZWN0aW9uU3BhY2UsCisgICAgICAgIFR5
cGVSZW5kZXJPYmplY3QsCiAgICAgICAgIFR5cGVTZWN1cml0eU9yaWdpbiwKICAgICAgICAgVHlw
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwKICAgICAgICAgVHlwZVN0cmluZywKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCShyZXZpc2lvbiAxMDk2NzYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYkdlb21ldHJ5LmgiCiAjaW5jbHVkZSAi
V2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJOdW1iZXIuaCIKKyNpbmNsdWRlICJXZWJSZW5kZXJP
YmplY3QuaCIKICNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKQEAgLTU2LDYgKzU3LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAvLyAgIC0gV2ViRGF0YSAtPiBXZWJEYXRhCiAvLyAgIC0gV2ViRG91
YmxlIC0+IFdlYkRvdWJsZQogLy8gICAtIFdlYkltYWdlIC0+IFdlYkltYWdlCisvLyAgIC0gV2Vi
UmVuZGVyT2JqZWN0IC0+IFdlYlJlbmRlck9iamVjdAogLy8gICAtIFdlYlVJbnQ2NCAtPiBXZWJV
SW50NjQKIC8vICAgLSBXZWJVUkwgLT4gV2ViVVJMCiAvLyAgIC0gV2ViVVJMUmVxdWVzdCAtPiBX
ZWJVUkxSZXF1ZXN0CkBAIC0xMzksNiArMTQxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZShyZWN0T2JqZWN0LT5yZWN0KCkuc2l6ZS5oZWlnaHQpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVS
ZW5kZXJPYmplY3Q6IHsKKyAgICAgICAgICAgIFdlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8V2ViUmVuZGVyT2JqZWN0Kj4obV9yb290KTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZShyZW5kZXJPYmplY3QtPm5hbWUoKSk7CisgICAgICAgICAgICBlbmNvZGVy
LT5lbmNvZGUocmVuZGVyT2JqZWN0LT5hYnNvbHV0ZVBvc2l0aW9uKCkpOworICAgICAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlKHJlbmRlck9iamVjdC0+ZnJhbWVSZWN0KCkpOworICAgICAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlKE93bmVyKHJlbmRlck9iamVjdC0+Y2hpbGRyZW4oKS5nZXQoKSkpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmpl
Y3Q6OlR5cGVVUkw6IHsKICAgICAgICAgICAgIFdlYlVSTCogdXJsT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8V2ViVVJMKj4obV9yb290KTsKICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZSh1cmxPYmpl
Y3QtPnN0cmluZygpKTsKQEAgLTMzOCw2ICszNDgsMjYgQEAgcHVibGljOgogICAgICAgICAgICAg
Y29kZXIubV9yb290ID0gV2ViUmVjdDo6Y3JlYXRlKFdLUmVjdE1ha2UoeCwgeSwgd2lkdGgsIGhl
aWdodCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBUElP
YmplY3Q6OlR5cGVSZW5kZXJPYmplY3Q6IHsKKyAgICAgICAgICAgIFN0cmluZyBuYW1lOworICAg
ICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbjsKKyAgICAgICAgICAg
IFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0OworICAgICAgICAgICAgUmVmUHRyPEFQSU9iamVj
dD4gY2hpbGRyZW47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKG5hbWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGFic29sdXRlUG9zaXRpb24pKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZyYW1lUmVjdCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgT3duZXIgbWVzc2Fn
ZUNvZGVyKGNvZGVyLCBjaGlsZHJlbik7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShtZXNzYWdlQ29kZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGlmIChjaGlsZHJlbi0+dHlwZSgpICE9IEFQSU9iamVjdDo6VHlwZUFycmF5KQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYlJl
bmRlck9iamVjdDo6Y3JlYXRlKG5hbWUsIGFic29sdXRlUG9zaXRpb24sIGZyYW1lUmVjdCwgV1RG
OjpzdGF0aWNfcG9pbnRlcl9jYXN0PE11dGFibGVBcnJheT4oY2hpbGRyZW4pKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlVVJMOiB7
CiAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoc3RyaW5nKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmpl
Y3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9i
amVjdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUmVuZGVyT2JqZWN0LmgiCisKKyNpbmNsdWRl
ICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRleHQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRl
cldpZGdldC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1Bhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBXZWJSZW5kZXJPYmplY3Q6OmNyZWF0
ZShXZWJQYWdlKiBwYWdlKQoreworICAgIEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJh
bWUoKTsKKyAgICBpZiAoIW1haW5GcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAo
IW1haW5GcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5oYXNIVE1MVmlldygpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFJlbmRlclZpZXcqIGNvbnRlbnRSZW5kZXJlciA9IG1haW5GcmFtZS0+
Y29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCFjb250ZW50UmVuZGVyZXIpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29udGVu
dFJlbmRlcmVyKSk7Cit9CisKK1dlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgbV9uYW1lID0gcmVuZGVyZXItPnJlbmRlck5hbWUo
KTsKKworICAgIC8vIEZJWE1FOiBicm9rZW4gd2l0aCB0cmFuc2Zvcm1zCisgICAgbV9hYnNvbHV0
ZVBvc2l0aW9uID0gSW50UG9pbnQocmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50
KCkpKTsKKworICAgIGlmIChyZW5kZXJlci0+aXNCb3goKSkKKyAgICAgICAgbV9mcmFtZVJlY3Qg
PSB0b1JlbmRlckJveChyZW5kZXJlciktPmZyYW1lUmVjdCgpOworICAgIGVsc2UgaWYgKHJlbmRl
cmVyLT5pc1RleHQoKSkgeworICAgICAgICBtX2ZyYW1lUmVjdCA9IHRvUmVuZGVyVGV4dChyZW5k
ZXJlciktPmxpbmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgbV9mcmFtZVJlY3Quc2V0WCh0b1Jl
bmRlclRleHQocmVuZGVyZXIpLT5maXJzdFJ1blgoKSk7CisgICAgICAgIG1fZnJhbWVSZWN0LnNl
dFkodG9SZW5kZXJUZXh0KHJlbmRlcmVyKS0+Zmlyc3RSdW5ZKCkpOworICAgIH0gZWxzZSBpZiAo
cmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkpCisgICAgICAgIG1fZnJhbWVSZWN0ID0gdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlciktPmJvcmRlckJvdW5kaW5nQm94KCk7CisKKyAgICBt
X2NoaWxkcmVuID0gTXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKKyAgICBmb3IgKFJlbmRlck9iamVj
dCogY29yZUNoaWxkID0gcmVuZGVyZXItPmZpcnN0Q2hpbGQoKTsgY29yZUNoaWxkOyBjb3JlQ2hp
bGQgPSBjb3JlQ2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlJlbmRl
ck9iamVjdD4gY2hpbGQgPSBhZG9wdFJlZihuZXcgV2ViUmVuZGVyT2JqZWN0KGNvcmVDaGlsZCkp
OworICAgICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoY2hpbGQuZ2V0KCkpOworICAgIH0KKworICAg
IGlmICghcmVuZGVyZXItPmlzV2lkZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdpZGdl
dCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLT53aWRnZXQoKTsKKyAgICBpZiAo
IXdpZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCk7
CisgICAgaWYgKFJlbmRlclZpZXcqIGNvcmVDb250ZW50UmVuZGVyZXIgPSBmcmFtZVZpZXctPmZy
YW1lKCktPmNvbnRlbnRSZW5kZXJlcigpKSB7CisgICAgICAgIFJlZlB0cjxXZWJSZW5kZXJPYmpl
Y3Q+IGNvbnRlbnRSZW5kZXJlciA9IGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29yZUNv
bnRlbnRSZW5kZXJlcikpOworICAgICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoY29udGVudFJlbmRl
cmVyLmdldCgpKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUmVuZGVyT2JqZWN0X2gKKyNkZWZpbmUg
V2ViUmVuZGVyT2JqZWN0X2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIk11
dGFibGVBcnJheS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgUmVuZGVy
T2JqZWN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xh
c3MgV2ViUmVuZGVyT2JqZWN0IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVSZW5kZXJPYmplY3Q7CisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IGNyZWF0ZShXZWJQYWdlKik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1l
UmVjdCwgUGFzc1JlZlB0cjxNdXRhYmxlQXJyYXk+IGNoaWxkcmVuKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QobmFtZSwgYWJzb2x1dGVQb3NpdGlv
biwgZnJhbWVSZWN0LCBjaGlsZHJlbikpOworICAgIH0KKworICAgIFJlZlB0cjxJbW11dGFibGVB
cnJheT4gY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9CisKKyAgICBjb25z
dCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVBvc2l0
aW9uOyB9CisgICAgV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2ZyYW1lUmVjdDsgfQorCitwcml2YXRlOgorICAgIFdlYlJlbmRlck9iamVjdChXZWJDb3JlOjpS
ZW5kZXJPYmplY3QqKTsKKyAgICBXZWJSZW5kZXJPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1l
UmVjdCwgUGFzc1JlZlB0cjxNdXRhYmxlQXJyYXk+IGNoaWxkcmVuKQorICAgICAgICA6IG1fY2hp
bGRyZW4oY2hpbGRyZW4pCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV9hYnNv
bHV0ZVBvc2l0aW9uKGFic29sdXRlUG9zaXRpb24pCisgICAgICAgICwgbV9mcmFtZVJlY3QoZnJh
bWVSZWN0KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFJlZlB0cjxNdXRhYmxlQXJyYXk+IG1f
Y2hpbGRyZW47CisKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFdlYkNvcmU6OkludFBvaW50IG1f
YWJzb2x1dGVQb3NpdGlvbjsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG1fZnJhbWVSZWN0OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJSZW5kZXJPYmplY3RfaApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gMTA5Njc2KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw2ICs1OSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLR3JhcGhpY3NDb24K
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSW1hZ2UqIFdLSW1hZ2VSZWY7CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BvaW50UmVmKiBXS1BvaW50UmVmOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tSZWN0UmVmKiBXS1JlY3RSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1JlbmRlck9iamVjdCogV0tSZW5kZXJPYmplY3RSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1NlY3VyaXR5T3JpZ2luKiBXS1NlY3VyaXR5T3JpZ2luUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUqIFdLU2VyaWFs
aXplZFNjcmlwdFZhbHVlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTaXplUmVm
KiBXS1NpemVSZWY7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tSZW5kZXJP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Jl
bmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLUmVuZGVyT2JqZWN0Lmgi
CisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJSZW5kZXJPYmplY3QuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitX
S1R5cGVJRCBXS1JlbmRlck9iamVjdEdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdl
YlJlbmRlck9iamVjdDo6QVBJVHlwZSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLUmVuZGVyT2JqZWN0
Q29weU5hbWUoV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0UmVmKQoreworICAgIHJldHVy
biB0b0NvcGllZEFQSSh0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+bmFtZSgpKTsKK30KKworV0tQ
b2ludCBXS1JlbmRlck9iamVjdEdldEFic29sdXRlUG9zaXRpb24oV0tSZW5kZXJPYmplY3RSZWYg
cmVuZGVyT2JqZWN0UmVmKQoreworICAgIEludFBvaW50IGFic29sdXRlUG9zaXRpb24gPSB0b0lt
cGwocmVuZGVyT2JqZWN0UmVmKS0+YWJzb2x1dGVQb3NpdGlvbigpOworICAgIHJldHVybiBXS1Bv
aW50TWFrZShhYnNvbHV0ZVBvc2l0aW9uLngoKSwgYWJzb2x1dGVQb3NpdGlvbi55KCkpOworfQor
CitXS1JlY3QgV0tSZW5kZXJPYmplY3RHZXRGcmFtZVJlY3QoV0tSZW5kZXJPYmplY3RSZWYgcmVu
ZGVyT2JqZWN0UmVmKQoreworICAgIEludFJlY3QgZnJhbWVSZWN0ID0gdG9JbXBsKHJlbmRlck9i
amVjdFJlZiktPmZyYW1lUmVjdCgpOworICAgIHJldHVybiBXS1JlY3RNYWtlKGZyYW1lUmVjdC54
KCksIGZyYW1lUmVjdC55KCksIGZyYW1lUmVjdC53aWR0aCgpLCBmcmFtZVJlY3QuaGVpZ2h0KCkp
OworfQorCitXS0FycmF5UmVmIFdLUmVuZGVyT2JqZWN0R2V0Q2hpbGRyZW4oV0tSZW5kZXJPYmpl
Y3RSZWYgcmVuZGVyT2JqZWN0UmVmKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVy
T2JqZWN0UmVmKS0+Y2hpbGRyZW4oKS5nZXQoKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1JlbmRlck9iamVjdF9oCisjZGVmaW5l
IFdLUmVuZGVyT2JqZWN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLUmVuZGVyT2JqZWN0R2V0VHlwZUlE
KCk7CisKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1JlbmRlck9iamVjdENvcHlOYW1lKFdLUmVu
ZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdCk7CitXS19FWFBPUlQgV0tQb2ludCBXS1JlbmRlck9i
amVjdEdldEFic29sdXRlUG9zaXRpb24oV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0KTsK
K1dLX0VYUE9SVCBXS1JlY3QgV0tSZW5kZXJPYmplY3RHZXRGcmFtZVJlY3QoV0tSZW5kZXJPYmpl
Y3RSZWYgcmVuZGVyT2JqZWN0KTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLUmVuZGVyT2JqZWN0
R2V0Q2hpbGRyZW4oV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0KTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLUmVuZGVyT2JqZWN0X2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDEw
OTY3NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBX
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI7CiBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdl
YlByb3RlY3Rpb25TcGFjZTsKK2NsYXNzIFdlYlJlbmRlck9iamVjdDsKIGNsYXNzIFdlYlRleHRD
aGVja2VyOwogCiBXS19BRERfQVBJX01BUFBJTkcoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJl
ZiwgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eSkKQEAgLTExOSw2ICsxMjAsNyBAQCBX
S19BRERfQVBJX01BUFBJTkcoV0tQYWdlUmVmLCBXZWJQYWdlUHJvCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWYsIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcikK
IFdLX0FERF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVmZXJlbmNlcykKIFdL
X0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2ViUHJvdGVjdGlvblNwYWNl
KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVuZGVyT2JqZWN0UmVmLCBXZWJSZW5kZXJPYmplY3Qp
CiBXS19BRERfQVBJX01BUFBJTkcoV0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNrZXIpCiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA5Njc2KQorKysgU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTYsNiArMzE2LDEwIEBACiAJCTMzRDNBM0NBMTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJN
ZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzRDNBM0M2MTMzOTYxNzkwMDcwOUJFNCAv
KiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
MzNEM0EzQ0IxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNE
M0EzQzcxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oICovOyB9OwogCQkzM0Y5RDVCOTEzMTJGMUVFMDAwRDY4M0YgLyogV2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXJDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzM0Y5RDVCODEzMTJGMUVFMDAwRDY4M0YgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXJDRk5ldC5jcHAgKi87IH07CisJCTM3NjA4ODFFMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5k
ZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzc2MDg4MUMxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5jcHAgKi87IH07
CisJCTM3NjA4ODFGMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NjA4ODFEMTUwNDEzRTkw
MEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuaCAqLzsgfTsKKwkJMzc2MDg4MjIxNTA0MTRGNzAw
RkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3NjA4ODIwMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9i
amVjdC5jcHAgKi87IH07CisJCTM3NjA4ODIzMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc2
MDg4MjExNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzc4OEEwNUMxNDc0M0M5MDAwNjMx
OUU1IC8qIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3ODhBMDVCMTQ3NDNDOTAwMDYzMTlF
NSAvKiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdDNEU5RjYxMzFDNkU3RTAwMjlC
RDVBIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjM5NkVBNTUxMkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZpZy5oICovOyB9OwogCQkzN0Y2
MjNCODEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGNjIzQjcxMkE1N0I2MjAwRTNGREY2IC8q
IFdLRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTMyNyw2ICsxMzMxLDEwIEBACiAJCTMzRDNBM0M2MTMzOTYxNzkwMDcwOUJF
NCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0QzQTND
NzEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0Y5RDVCODEzMTJG
MUVFMDAwRDY4M0YgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJDRk5ldC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZO
ZXQuY3BwOyBwYXRoID0gUmVzb3VyY2VDYWNoZS9jZi9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNG
TmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc2MDg4MUMxNTA0MTNFOTAw
RkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJSZW5kZXJPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzNzYwODgxRDE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlbmRlck9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzNzYwODgyMDE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5kZXJP
YmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tSZW5kZXJP
YmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzYwODgyMTE1MDQxNEY3
MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tSZW5kZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc4
OEEwNUIxNDc0M0M5MDAwNjMxOUU1IC8qIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlclByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0Y2MjNC
NzEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0ZpbmRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMDAzMUY2MTM3OUNBQ0IwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbS5keWxpYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5keWxpYiI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYlByb2Nlc3NTaGltLmR5
bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMjQxOCw2ICsyNDI2
LDggQEAKIAkJCQlCQ0Q1OThBQTExMkI3RkRGMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9y
ZS5oICovLAogCQkJCUJDMzA2ODIzMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCAqLywKIAkJCQlCQzMwNjgyMjEyNUE2Qjk0MDBFNzEyNzggLyogV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovLAorCQkJCTM3NjA4ODFDMTUwNDEzRTkwMEZD
ODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuY3BwICovLAorCQkJCTM3NjA4ODFEMTUwNDEzRTkwMEZD
ODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuaCAqLywKIAkJCQlGNjM0NDQ1NTEyQTg4NUM4MDAwNjEy
RDggLyogV2ViU2VjdXJpdHlPcmlnaW4uaCAqLywKIAkJCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhC
MTUgLyogV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8sCiAJCQkJQkNGMDRDOEUxMUZGOUY2
RTAwRjg2QTU4IC8qIFdlYlN0cmluZy5oICovLApAQCAtMzQ5NCw2ICszNTA0LDggQEAKIAkJCQlC
QzQwNzVFNTEyNEZGMDI3MDA2OEYyMEEgLyogV0tOdW1iZXIuY3BwICovLAogCQkJCUJDNDA3NUU2
MTI0RkYwMjcwMDY4RjIwQSAvKiBXS051bWJlci5oICovLAogCQkJCUJDMkQwMjE4MTJBQzQyNkMw
MEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCAqLywKKwkJCQkzNzYwODgyMDE1MDQxNEY3MDBG
QzgyQzcgLyogV0tSZW5kZXJPYmplY3QuY3BwICovLAorCQkJCTM3NjA4ODIxMTUwNDE0RjcwMEZD
ODJDNyAvKiBXS1JlbmRlck9iamVjdC5oICovLAogCQkJCUY2MzQ0NDVBMTJBODg1RTkwMDA2MTJE
OCAvKiBXS1NlY3VyaXR5T3JpZ2luLmNwcCAqLywKIAkJCQlGNjM0NDQ1QjEyQTg4NUU5MDAwNjEy
RDggLyogV0tTZWN1cml0eU9yaWdpbi5oICovLAogCQkJCUJDNDA3NUU3MTI0RkYwMjcwMDY4RjIw
QSAvKiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8sCkBAIC00MTU1LDYgKzQxNjcsOCBA
QAogCQkJCUUxN0JGOTk2MTREMEE3M0UwMEE1QTA2OSAvKiBOZXRzY2FwZVNhbmRib3hGdW5jdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA5Mzc4MTRGQjEyOEMwMDExMzhEOSAvKiBSZW1v
dGVMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4NUQxNTAxOUJDMzAwNzFG
NDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzc2MDg4MUYxNTA0
MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzc2
MDg4MjMxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTQ4OTUsNiArNDkwOSw4IEBACiAJCQkJRTE3QkY5OTgxNEQwQUE4MzAwQTVBMDY5IC8qIE5l
dHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRTA5Mzc3MTRG
QjEyOEMwMDExMzhEOSAvKiBSZW1vdGVMYXllckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTI5NkJEODVFMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4gU291cmNl
cyAqLywKKwkJCQkzNzYwODgxRTE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTM3NjA4ODIyMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRl
ck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5jcHAJKHJldmlzaW9uIDEwOTY3NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
V2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgog
CkBAIC0zMjgsNiArMzI5LDExIEBAIHVpbnQ2NF90IFdLQnVuZGxlUGFnZUdldFJlbmRlclRyZWVT
aXplKFcKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5yZW5kZXJUcmVlU2l6ZSgpOwogfQog
CitXS1JlbmRlck9iamVjdFJlZiBXS0J1bmRsZVBhZ2VDb3B5UmVuZGVyVHJlZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZikKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViUmVuZGVyT2JqZWN0OjpjcmVh
dGUodG9JbXBsKHBhZ2VSZWYpKS5sZWFrUmVmKCkpOworfQorCiB2b2lkIFdLQnVuZGxlUGFnZVNl
dFBhaW50ZWRPYmplY3RzQ291bnRlclRocmVzaG9sZChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgdWlu
dDY0X3QgdGhyZXNob2xkKQogewogICAgIHRvSW1wbChwYWdlKS0+c2V0UGFpbnRlZE9iamVjdHND
b3VudGVyVGhyZXNob2xkKHRocmVzaG9sZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZVByaXZhdGUuaAkocmV2aXNpb24gMTA5Njc2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2lt
dWxhdGVNb3VzZQogCiBXS19FWFBPUlQgdWludDY0X3QgV0tCdW5kbGVQYWdlR2V0UmVuZGVyVHJl
ZVNpemUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCitXS19FWFBPUlQgV0tSZW5kZXJPYmplY3RS
ZWYgV0tCdW5kbGVQYWdlQ29weVJlbmRlclRyZWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOworCiAv
LyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkuIFVsdGltYXRlbHkgV2ViS2l0IHNob3VsZCBjaG9v
c2UgdGhlIHRocmVzaG9sZCBpdHNlbGYuCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRQ
YWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIHVpbnQ2
NF90IHRocmVzaG9sZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlz
aW9uIDEwOTY3NikKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzkxLDYgKzc5MSwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViUmVuZGVyT2JqZWN0LmNwcCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYlJl
bmRlck9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxTaGFyZWRcV2ViU2VjdXJpdHlPcmlnaW4uaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBA
IC05NzQsNiArOTgyLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQVBJXGNcV0tSZW5kZXJPYmplY3QuY3BwIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQ
SVxjXFdLUmVuZGVyT2JqZWN0LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQVBJXGNcV0tTZWN1cml0eU9yaWdpbi5jcHAiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130048</attachid>
            <date>2012-03-04 20:13:43 -0800</date>
            <delta_ts>2012-03-07 10:02:31 -0800</delta_ts>
            <desc>Add WKRenderObject and bundle API for getting the render tree of a page</desc>
            <filename>bug-80230-20120304201344.patch</filename>
            <type>text/plain</type>
            <size>31262</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTY5NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAzLTA0ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTQz
OTY+IFdlYktpdDIgbGFja3MgQVBJIGZvciBvYnRhaW5pbmcgYSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgcmVuZGVyIHRyZWUgb2YgYSBwYWdlLCBsaWtlIFdlYlJlbmRlck5vZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMjMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2Uu
aDogQWRkZWQgYSB0eXBlIGRlZmluaXRpb24gb2YgV0tSZW5kZXJPYmplY3RSZWYuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdL
UmVuZGVyT2JqZWN0R2V0VHlwZUlEKTogQWRkZWQuIFJldHVybnMgdGhlIFdLUmVuZGVyT2JqZWN0
IHR5cGUgSUQuCisgICAgICAgIChXS1JlbmRlck9iamVjdENvcHlOYW1lKTogQWRkZWQgdGhpcyBn
ZXR0ZXIgd3JhcHBlci4KKyAgICAgICAgKFdLUmVuZGVyT2JqZWN0R2V0QWJzb2x1dGVQb3NpdGlv
bik6IERpdHRvLgorICAgICAgICAoV0tSZW5kZXJPYmplY3RHZXRGcmFtZVJlY3QpOiBEaXR0by4K
KyAgICAgICAgKFdLUmVuZGVyT2JqZWN0R2V0Q2hpbGRyZW4pOiBEaXR0by4KKworICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS1JlbmRlck9iamVjdC5oOiBBZGRlZC4KKworICAgICAgICAqIFNoYXJl
ZC9BUElPYmplY3QuaDogQWRkZWQgVHlwZVJlbmRlck9iamVjdCB0byB0aGUgQVBJT2JqZWN0OjpU
eXBlIGVudW0uCisgICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmg6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZXNzYWdlRW5jb2Rlcjo6YmFzZUVuY29kZSk6IEFkZGVkIFdlYlJlbmRl
ck9iamVjdCBlbmNvZGluZy4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2VEZWNvZGVyOjpi
YXNlRGVjb2RlKTogQWRkZWQgV2ViUmVuZGVyT2JqZWN0IGRlY29kaW5nLgorICAgICAgICAqIFNo
YXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVu
ZGVyT2JqZWN0OjpjcmVhdGUpOiBBZGRlZC4gQ3JlYXRlcyBhIFdlYlJlbmRlck9iamVjdCBmb3Ig
dGhlIHBhZ2XigJlzIG1haW4KKyAgICAgICAgZnJhbWUgY29udGVudCByZW5kZXJlci4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVuZGVyT2JqZWN0OjpXZWJSZW5kZXJPYmplY3QpOiBBZGRlZC4gQ29u
c3RydWN0cyBhIFdlYlJlbmRlck9iamVjdCB3aXRoIHRoZQorICAgICAgICBuYW1lLCBtZXRyaWNz
IGFuZCBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gUmVuZGVyT2JqZWN0LCBmb2xsb3dpbmcgdGhlIHJ1
bGVzIHVzZWQgaW4gV2ViS2l0MQorICAgICAgICBXZWJSZW5kZXJOb2RlLiBJbiBwYXJ0aWN1bGFy
LCBhIFJlbmRlcldpZGdldCByZXByZXNlbnRpbmcgYSBmcmFtZSBnZXRzIHRoZSBmcmFtZeKAmXMg
Y29udGVudAorICAgICAgICByZW5kZXJlciBhcyBhIGNoaWxkLgorCisgICAgICAgICogU2hhcmVk
L1dlYlJlbmRlck9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVuZGVyT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJPYmplY3Q6OmNoaWxkcmVu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVuZGVyT2JqZWN0OjpuYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVuZGVyT2JqZWN0OjpmcmFtZVJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5k
ZXJPYmplY3Q6OldlYlJlbmRlck9iamVjdCk6CisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOiBBZGRlZCBhIG1hcHBpbmcgYmV0
d2VlbiBXS1JlbmRlck9iamVjdFJlZiBhbmQgV2ViUmVuZGVyT2JqZWN0LgorCisgICAgICAgICog
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBXZWJSZW5kZXJPYmplY3Qu
e2NwcCxofSBhbmQgV0tSZW5kZXJPYmplY3Que2NwcC5ofS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlUGFnZUNvcHlSZW5kZXJUcmVlKTogQWRkZWQgdGhpcyBidW5kbGUgQVBJIGZvciBnZXR0aW5n
IHRoZSByZW5kZXIgdHJlZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oOgorCisgICAgICAgICogd2luL1dlYktpdDIudmNw
cm9qOgorCiAyMDEyLTAzLTA0ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lv
bi5tb2JpPgogCiAgICAgICAgIFtDTWFrZV0gTGlicmFyaWVzIGFyZSBpbnN0YWxsZWQgdG8gL3Vz
ci9saWIgYW5kIG5vdCAvdXNyL2xpYjY0IG9uIHg4Nl82NApJbmRleDogU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDEwOTY3NikKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAg
IFNoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUu
Y3BwCiAgICAgU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisgICAgU2hh
cmVkL1dlYlJlbmRlck9iamVjdC5jcHAKICAgICBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKICAg
ICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAKICAgICBTaGFyZWQvV2ViVVJMUmVzcG9uc2UuY3Bw
CkBAIC0xNzMsNiArMTc0LDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9BUEkv
Yy9XS011dGFibGVBcnJheS5jcHAKICAgICBTaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlvbmFy
eS5jcHAKICAgICBTaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwCisgICAgU2hhcmVkL0FQSS9jL1dL
UmVuZGVyT2JqZWN0LmNwcAogICAgIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luLmNwcAog
ICAgIFNoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKICAgICBTaGFyZWQv
QVBJL2MvV0tTdHJpbmcuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTA5
Njc2KQorKysgU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTE5LDYgKzE5LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSQog
CSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuaCBcCiAJJChXZWJL
aXQyKS9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuaCBcCiAJJChXZWJLaXQyKS9TaGFyZWQvQVBJL2Mv
V0tQYWdlTG9hZFR5cGVzLmggXAorCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2Jq
ZWN0LmggXAogCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW4uaCBcCiAJ
JChXZWJLaXQyKS9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBcCiAJJChX
ZWJLaXQyKS9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVQcml2YXRlLmggXApA
QCAtMjg4LDYgKzI4OSw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLTnVtYmVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlw
ZXMuaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNwcCBc
CisJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmggXAogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW4uaCBcCiAJU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBcCkBAIC00MzUsNiArNDM4
LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXNTdG9yZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmpl
Y3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmggXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJTZWN1cml0eU9yaWdpbi5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJTdHJpbmcuaCBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwOTY3NikKKysr
IFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuaCBc
CiAgICAgU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS1BhZ2VM
b2FkVHlwZXMuaCBcCisgICAgU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmggXAogICAgIFNo
YXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmgg
XApAQCAtMTEyLDYgKzExMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9XZWJQb3B1cEl0
ZW0uaCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBcCiAgICAgU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBcCisgICAgU2hhcmVkL1dlYlJlbmRlck9iamVj
dC5oIFwKICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5oIFwKICAgICBTaGFyZWQvV2ViVVJMUmVz
cG9uc2UuaCBcCiAgICAgU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIFwKQEAgLTM5
Myw2ICszOTUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAg
XAogICAgIFNoYXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9uYXJ5LmNwcCBcCiAgICAgU2hhcmVk
L0FQSS9jL1dLTnVtYmVyLmNwcCBcCisgICAgU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNw
cCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW4uY3BwIFwKICAgICBTaGFyZWQv
QVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tT
dHJpbmcuY3BwIFwKQEAgLTQ1NSw2ICs0NTgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQv
V2ViUG9wdXBJdGVtLmNwcCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIFwK
ICAgICBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgXAorICAgIFNoYXJl
ZC9XZWJSZW5kZXJPYmplY3QuY3BwIFwKICAgICBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAgXAog
ICAgIFNoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcCBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNl
LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCShyZXZpc2lvbiAxMDk2NzYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlR3JhcGhpY3NDb250ZXh0LAogICAg
ICAgICBUeXBlSW1hZ2UsCiAgICAgICAgIFR5cGVQcm90ZWN0aW9uU3BhY2UsCisgICAgICAgIFR5
cGVSZW5kZXJPYmplY3QsCiAgICAgICAgIFR5cGVTZWN1cml0eU9yaWdpbiwKICAgICAgICAgVHlw
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwKICAgICAgICAgVHlwZVN0cmluZywKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCShyZXZpc2lvbiAxMDk2NzYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYkdlb21ldHJ5LmgiCiAjaW5jbHVkZSAi
V2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJOdW1iZXIuaCIKKyNpbmNsdWRlICJXZWJSZW5kZXJP
YmplY3QuaCIKICNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKQEAgLTU2LDYgKzU3LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAvLyAgIC0gV2ViRGF0YSAtPiBXZWJEYXRhCiAvLyAgIC0gV2ViRG91
YmxlIC0+IFdlYkRvdWJsZQogLy8gICAtIFdlYkltYWdlIC0+IFdlYkltYWdlCisvLyAgIC0gV2Vi
UmVuZGVyT2JqZWN0IC0+IFdlYlJlbmRlck9iamVjdAogLy8gICAtIFdlYlVJbnQ2NCAtPiBXZWJV
SW50NjQKIC8vICAgLSBXZWJVUkwgLT4gV2ViVVJMCiAvLyAgIC0gV2ViVVJMUmVxdWVzdCAtPiBX
ZWJVUkxSZXF1ZXN0CkBAIC0xMzksNiArMTQxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZShyZWN0T2JqZWN0LT5yZWN0KCkuc2l6ZS5oZWlnaHQpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVS
ZW5kZXJPYmplY3Q6IHsKKyAgICAgICAgICAgIFdlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8V2ViUmVuZGVyT2JqZWN0Kj4obV9yb290KTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZShyZW5kZXJPYmplY3QtPm5hbWUoKSk7CisgICAgICAgICAgICBlbmNvZGVy
LT5lbmNvZGUocmVuZGVyT2JqZWN0LT5hYnNvbHV0ZVBvc2l0aW9uKCkpOworICAgICAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlKHJlbmRlck9iamVjdC0+ZnJhbWVSZWN0KCkpOworICAgICAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlKE93bmVyKHJlbmRlck9iamVjdC0+Y2hpbGRyZW4oKS5nZXQoKSkpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBBUElPYmpl
Y3Q6OlR5cGVVUkw6IHsKICAgICAgICAgICAgIFdlYlVSTCogdXJsT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8V2ViVVJMKj4obV9yb290KTsKICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZSh1cmxPYmpl
Y3QtPnN0cmluZygpKTsKQEAgLTMzOCw2ICszNDgsMjYgQEAgcHVibGljOgogICAgICAgICAgICAg
Y29kZXIubV9yb290ID0gV2ViUmVjdDo6Y3JlYXRlKFdLUmVjdE1ha2UoeCwgeSwgd2lkdGgsIGhl
aWdodCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBUElP
YmplY3Q6OlR5cGVSZW5kZXJPYmplY3Q6IHsKKyAgICAgICAgICAgIFN0cmluZyBuYW1lOworICAg
ICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbjsKKyAgICAgICAgICAg
IFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0OworICAgICAgICAgICAgUmVmUHRyPEFQSU9iamVj
dD4gY2hpbGRyZW47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKG5hbWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGFic29sdXRlUG9zaXRpb24pKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZyYW1lUmVjdCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgT3duZXIgbWVzc2Fn
ZUNvZGVyKGNvZGVyLCBjaGlsZHJlbik7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShtZXNzYWdlQ29kZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGlmIChjaGlsZHJlbi0+dHlwZSgpICE9IEFQSU9iamVjdDo6VHlwZUFycmF5KQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYlJl
bmRlck9iamVjdDo6Y3JlYXRlKG5hbWUsIGFic29sdXRlUG9zaXRpb24sIGZyYW1lUmVjdCwgV1RG
OjpzdGF0aWNfcG9pbnRlcl9jYXN0PE11dGFibGVBcnJheT4oY2hpbGRyZW4pKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlVVJMOiB7
CiAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoc3RyaW5nKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmpl
Y3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9i
amVjdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUmVuZGVyT2JqZWN0LmgiCisKKyNpbmNsdWRl
ICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRleHQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRl
cldpZGdldC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1Bhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBXZWJSZW5kZXJPYmplY3Q6OmNyZWF0
ZShXZWJQYWdlKiBwYWdlKQoreworICAgIEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJh
bWUoKTsKKyAgICBpZiAoIW1haW5GcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAo
IW1haW5GcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5oYXNIVE1MVmlldygpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFJlbmRlclZpZXcqIGNvbnRlbnRSZW5kZXJlciA9IG1haW5GcmFtZS0+
Y29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCFjb250ZW50UmVuZGVyZXIpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29udGVu
dFJlbmRlcmVyKSk7Cit9CisKK1dlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgbV9uYW1lID0gcmVuZGVyZXItPnJlbmRlck5hbWUo
KTsKKworICAgIC8vIEZJWE1FOiBicm9rZW4gd2l0aCB0cmFuc2Zvcm1zCisgICAgbV9hYnNvbHV0
ZVBvc2l0aW9uID0gZmxvb3JlZEludFBvaW50KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoRmxv
YXRQb2ludCgpKSk7CisKKyAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpCisgICAgICAgIG1fZnJh
bWVSZWN0ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5mcmFtZVJlY3QoKTsKKyAgICBlbHNlIGlm
IChyZW5kZXJlci0+aXNUZXh0KCkpIHsKKyAgICAgICAgbV9mcmFtZVJlY3QgPSB0b1JlbmRlclRl
eHQocmVuZGVyZXIpLT5saW5lc0JvdW5kaW5nQm94KCk7CisgICAgICAgIG1fZnJhbWVSZWN0LnNl
dFgodG9SZW5kZXJUZXh0KHJlbmRlcmVyKS0+Zmlyc3RSdW5YKCkpOworICAgICAgICBtX2ZyYW1l
UmVjdC5zZXRZKHRvUmVuZGVyVGV4dChyZW5kZXJlciktPmZpcnN0UnVuWSgpKTsKKyAgICB9IGVs
c2UgaWYgKHJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpKQorICAgICAgICBtX2ZyYW1lUmVjdCA9
IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5ib3JkZXJCb3VuZGluZ0JveCgpOwor
CisgICAgbV9jaGlsZHJlbiA9IE11dGFibGVBcnJheTo6Y3JlYXRlKCk7CisgICAgZm9yIChSZW5k
ZXJPYmplY3QqIGNvcmVDaGlsZCA9IHJlbmRlcmVyLT5maXJzdENoaWxkKCk7IGNvcmVDaGlsZDsg
Y29yZUNoaWxkID0gY29yZUNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIFJlZlB0cjxX
ZWJSZW5kZXJPYmplY3Q+IGNoaWxkID0gYWRvcHRSZWYobmV3IFdlYlJlbmRlck9iamVjdChjb3Jl
Q2hpbGQpKTsKKyAgICAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKGNoaWxkLmdldCgpKTsKKyAgICB9
CisKKyAgICBpZiAoIXJlbmRlcmVyLT5pc1dpZGdldCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXaWRnZXQqIHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+d2lkZ2V0KCk7Cisg
ICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3
aWRnZXQpOworICAgIGlmIChSZW5kZXJWaWV3KiBjb3JlQ29udGVudFJlbmRlcmVyID0gZnJhbWVW
aWV3LT5mcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKSkgeworICAgICAgICBSZWZQdHI8V2ViUmVu
ZGVyT2JqZWN0PiBjb250ZW50UmVuZGVyZXIgPSBhZG9wdFJlZihuZXcgV2ViUmVuZGVyT2JqZWN0
KGNvcmVDb250ZW50UmVuZGVyZXIpKTsKKyAgICAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKGNvbnRl
bnRSZW5kZXJlci5nZXQoKSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlbmRlck9iamVjdF9oCisj
ZGVmaW5lIFdlYlJlbmRlck9iamVjdF9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlICJNdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNz
IFJlbmRlck9iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7
CisKK2NsYXNzIFdlYlJlbmRlck9iamVjdCA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlUmVuZGVyT2JqZWN0OworCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBjcmVhdGUoV2ViUGFnZSopOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbiwgV2ViQ29yZTo6SW50UmVj
dCBmcmFtZVJlY3QsIFBhc3NSZWZQdHI8TXV0YWJsZUFycmF5PiBjaGlsZHJlbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUmVuZGVyT2JqZWN0KG5hbWUsIGFic29sdXRl
UG9zaXRpb24sIGZyYW1lUmVjdCwgY2hpbGRyZW4pKTsKKyAgICB9CisKKyAgICBSZWZQdHI8SW1t
dXRhYmxlQXJyYXk+IGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQorCisg
ICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgV2Vi
Q29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1
dGVQb3NpdGlvbjsgfQorICAgIFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZVJlY3Q7IH0KKworcHJpdmF0ZToKKyAgICBXZWJSZW5kZXJPYmplY3QoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0Kik7CisgICAgV2ViUmVuZGVyT2JqZWN0KGNvbnN0IFN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbiwgV2ViQ29yZTo6SW50UmVj
dCBmcmFtZVJlY3QsIFBhc3NSZWZQdHI8TXV0YWJsZUFycmF5PiBjaGlsZHJlbikKKyAgICAgICAg
OiBtX2NoaWxkcmVuKGNoaWxkcmVuKQorICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAs
IG1fYWJzb2x1dGVQb3NpdGlvbihhYnNvbHV0ZVBvc2l0aW9uKQorICAgICAgICAsIG1fZnJhbWVS
ZWN0KGZyYW1lUmVjdCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBSZWZQdHI8TXV0YWJsZUFy
cmF5PiBtX2NoaWxkcmVuOworCisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBXZWJDb3JlOjpJbnRQ
b2ludCBtX2Fic29sdXRlUG9zaXRpb247CisgICAgV2ViQ29yZTo6SW50UmVjdCBtX2ZyYW1lUmVj
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUmVuZGVyT2Jq
ZWN0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDEw
OTY3NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0dyYXBo
aWNzQ29uCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0ltYWdlKiBXS0ltYWdlUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQb2ludFJlZiogV0tQb2ludFJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUmVjdFJlZiogV0tSZWN0UmVmOwordHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tSZW5kZXJPYmplY3QqIFdLUmVuZGVyT2JqZWN0UmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTZWN1cml0eU9yaWdpbiogV0tTZWN1cml0eU9yaWdpblJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBX
S1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
U2l6ZVJlZiogV0tTaXplUmVmOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1JlbmRlck9i
amVjdC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViUmVuZGVyT2Jq
ZWN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworV0tUeXBlSUQgV0tSZW5kZXJPYmplY3RHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0
b0FQSShXZWJSZW5kZXJPYmplY3Q6OkFQSVR5cGUpOworfQorCitXS1N0cmluZ1JlZiBXS1JlbmRl
ck9iamVjdENvcHlOYW1lKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKK3sKKyAg
ICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHJlbmRlck9iamVjdFJlZiktPm5hbWUoKSk7Cit9
CisKK1dLUG9pbnQgV0tSZW5kZXJPYmplY3RHZXRBYnNvbHV0ZVBvc2l0aW9uKFdLUmVuZGVyT2Jq
ZWN0UmVmIHJlbmRlck9iamVjdFJlZikKK3sKKyAgICBJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9u
ID0gdG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmFic29sdXRlUG9zaXRpb24oKTsKKyAgICByZXR1
cm4gV0tQb2ludE1ha2UoYWJzb2x1dGVQb3NpdGlvbi54KCksIGFic29sdXRlUG9zaXRpb24ueSgp
KTsKK30KKworV0tSZWN0IFdLUmVuZGVyT2JqZWN0R2V0RnJhbWVSZWN0KFdLUmVuZGVyT2JqZWN0
UmVmIHJlbmRlck9iamVjdFJlZikKK3sKKyAgICBJbnRSZWN0IGZyYW1lUmVjdCA9IHRvSW1wbChy
ZW5kZXJPYmplY3RSZWYpLT5mcmFtZVJlY3QoKTsKKyAgICByZXR1cm4gV0tSZWN0TWFrZShmcmFt
ZVJlY3QueCgpLCBmcmFtZVJlY3QueSgpLCBmcmFtZVJlY3Qud2lkdGgoKSwgZnJhbWVSZWN0Lmhl
aWdodCgpKTsKK30KKworV0tBcnJheVJlZiBXS1JlbmRlck9iamVjdEdldENoaWxkcmVuKFdLUmVu
ZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBs
KHJlbmRlck9iamVjdFJlZiktPmNoaWxkcmVuKCkuZ2V0KCkpOworfQpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tSZW5kZXJPYmplY3RfaAor
I2RlZmluZSBXS1JlbmRlck9iamVjdF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1JlbmRlck9iamVjdEdl
dFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tSZW5kZXJPYmplY3RDb3B5TmFt
ZShXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3QpOworV0tfRVhQT1JUIFdLUG9pbnQgV0tS
ZW5kZXJPYmplY3RHZXRBYnNvbHV0ZVBvc2l0aW9uKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9i
amVjdCk7CitXS19FWFBPUlQgV0tSZWN0IFdLUmVuZGVyT2JqZWN0R2V0RnJhbWVSZWN0KFdLUmVu
ZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdCk7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS1JlbmRl
ck9iamVjdEdldENoaWxkcmVuKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdCk7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS1JlbmRlck9iamVjdF9o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZp
c2lvbiAxMDk2NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5Owog
Y2xhc3MgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyOwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CiBj
bGFzcyBXZWJQcm90ZWN0aW9uU3BhY2U7CitjbGFzcyBXZWJSZW5kZXJPYmplY3Q7CiBjbGFzcyBX
ZWJUZXh0Q2hlY2tlcjsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJSZWYsIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkpCkBAIC0xMTksNiArMTIw
LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZVJlZiwgV2ViUGFnZVBybwogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyUmVmLCBXZWJQbHVnaW5TaXRlRGF0YU1h
bmFnZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQcmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVyZW5j
ZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQcm90ZWN0aW9uU3BhY2VSZWYsIFdlYlByb3RlY3Rp
b25TcGFjZSkKK1dLX0FERF9BUElfTUFQUElORyhXS1JlbmRlck9iamVjdFJlZiwgV2ViUmVuZGVy
T2JqZWN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVj
a2VyKQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwOTY3NikKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiwxMCBAQAogCQkzM0QzQTNDQTEzMzk2MTc5MDA3MDlCRTQg
LyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0QzQTNDNjEzMzk2MTc5MDA3
MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCTMzRDNBM0NCMTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMzRDNBM0M3MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5
TWVzc2FnZXMuaCAqLzsgfTsKIAkJMzNGOUQ1QjkxMzEyRjFFRTAwMEQ2ODNGIC8qIFdlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzNGOUQ1QjgxMzEyRjFFRTAwMEQ2ODNGIC8qIFdlYlJlc291cmNlQ2Fj
aGVNYW5hZ2VyQ0ZOZXQuY3BwICovOyB9OworCQkzNzYwODgxRTE1MDQxM0U5MDBGQzgyQzcgLyog
V2ViUmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3NjA4ODFDMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuY3Bw
ICovOyB9OworCQkzNzYwODgxRjE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzYwODgxRDE1
MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggKi87IH07CisJCTM3NjA4ODIyMTUw
NDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzYwODgyMDE1MDQxNEY3MDBGQzgyQzcgLyogV0tS
ZW5kZXJPYmplY3QuY3BwICovOyB9OworCQkzNzYwODgyMzE1MDQxNEY3MDBGQzgyQzcgLyogV0tS
ZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3NjA4ODIxMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3ODhBMDVDMTQ3NDND
OTAwMDYzMTlFNSAvKiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzg4QTA1QjE0NzQzQzkw
MDA2MzE5RTUgLyogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3QzRFOUY2MTMxQzZF
N0UwMDI5QkQ1QSAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIzOTZFQTU1MTJFMEVEMkQwMEY0RkVCNyAvKiBjb25maWcuaCAqLzsgfTsK
IAkJMzdGNjIzQjgxMkE1N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RjYyM0I3MTJBNTdCNjIwMEUz
RkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTEzMjcsNiArMTMzMSwxMCBAQAogCQkzM0QzQTNDNjEzMzk2MTc5
MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJNZWRpYUNhY2hlTWFuYWdl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzNEM0EzQzcxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYUNhY2hlTWFu
YWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNGOUQ1
QjgxMzEyRjFFRTAwMEQ2ODNGIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDQ7IG5hbWUgPSBXZWJSZXNvdXJjZUNhY2hlTWFu
YWdlckNGTmV0LmNwcDsgcGF0aCA9IFJlc291cmNlQ2FjaGUvY2YvV2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXJDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3NjA4ODFDMTUw
NDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVuZGVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzc2MDg4MUQxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZW5kZXJPYmplY3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc2MDg4MjAxNTA0MTRGNzAwRkM4MkM3IC8qIFdL
UmVuZGVyT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
UmVuZGVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc2MDg4MjEx
NTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUmVuZGVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3ODhBMDVCMTQ3NDNDOTAwMDYzMTlFNSAvKiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzdGNjIzQjcxMkE1N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTAwMzFGNjEzNzlDQUNCMDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0uZHls
aWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21w
aWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJQcm9jZXNz
U2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTI0MTgs
NiArMjQyNiw4IEBACiAJCQkJQkNENTk4QUExMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVu
Y2VzU3RvcmUuaCAqLywKIAkJCQlCQzMwNjgyMzEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJQkMzMDY4MjIxMjVBNkI5NDAwRTcxMjc4
IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKKwkJCQkzNzYwODgxQzE1MDQx
M0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmNwcCAqLywKKwkJCQkzNzYwODgxRDE1MDQx
M0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggKi8sCiAJCQkJRjYzNDQ0NTUxMkE4ODVD
ODAwMDYxMkQ4IC8qIFdlYlNlY3VyaXR5T3JpZ2luLmggKi8sCiAJCQkJQTcyRDVEN0YxMjM2Q0JB
ODAwQTg4QjE1IC8qIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovLAogCQkJCUJDRjA0QzhF
MTFGRjlGNkUwMEY4NkE1OCAvKiBXZWJTdHJpbmcuaCAqLywKQEAgLTM0OTQsNiArMzUwNCw4IEBA
CiAJCQkJQkM0MDc1RTUxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTnVtYmVyLmNwcCAqLywKIAkJCQlC
QzQwNzVFNjEyNEZGMDI3MDA2OEYyMEEgLyogV0tOdW1iZXIuaCAqLywKIAkJCQlCQzJEMDIxODEy
QUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggKi8sCisJCQkJMzc2MDg4MjAxNTA0
MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmNwcCAqLywKKwkJCQkzNzYwODgyMTE1MDQx
NEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuaCAqLywKIAkJCQlGNjM0NDQ1QTEyQTg4NUU5
MDAwNjEyRDggLyogV0tTZWN1cml0eU9yaWdpbi5jcHAgKi8sCiAJCQkJRjYzNDQ0NUIxMkE4ODVF
OTAwMDYxMkQ4IC8qIFdLU2VjdXJpdHlPcmlnaW4uaCAqLywKIAkJCQlCQzQwNzVFNzEyNEZGMDI3
MDA2OEYyMEEgLyogV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovLApAQCAtNDE1NSw2ICs0
MTY3LDggQEAKIAkJCQlFMTdCRjk5NjE0RDBBNzNFMDBBNUEwNjkgLyogTmV0c2NhcGVTYW5kYm94
RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkg
LyogUmVtb3RlTGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5NkJEODVEMTUwMTlC
QzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTM3NjA4
ODFGMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTM3NjA4ODIzMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC00ODk1LDYgKzQ5MDksOCBAQAogCQkJCUUxN0JGOTk4MTREMEFBODMwMEE1QTA2
OSAvKiBOZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Uw
OTM3NzE0RkIxMjhDMDAxMTM4RDkgLyogUmVtb3RlTGF5ZXJDbGllbnQubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyOTZCRDg1RTE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJMzc2MDg4MUUxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzNzYwODgyMjE1MDQxNEY3MDBGQzgyQzcgLyog
V0tSZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiAxMDk2NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlJl
bmRlck9iamVjdC5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVl
c3QuaCIKIApAQCAtMzI4LDYgKzMyOSwxMSBAQCB1aW50NjRfdCBXS0J1bmRsZVBhZ2VHZXRSZW5k
ZXJUcmVlU2l6ZShXCiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+cmVuZGVyVHJlZVNpemUo
KTsKIH0KIAorV0tSZW5kZXJPYmplY3RSZWYgV0tCdW5kbGVQYWdlQ29weVJlbmRlclRyZWUoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYlJlbmRlck9iamVj
dDo6Y3JlYXRlKHRvSW1wbChwYWdlUmVmKSkubGVha1JlZigpKTsKK30KKwogdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRQYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIHVpbnQ2NF90IHRocmVzaG9sZCkKIHsKICAgICB0b0ltcGwocGFnZSktPnNldFBhaW50ZWRP
YmplY3RzQ291bnRlclRocmVzaG9sZCh0aHJlc2hvbGQpOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDEwOTY3NikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZVNpbXVsYXRlTW91c2UKIAogV0tfRVhQT1JUIHVpbnQ2NF90IFdLQnVuZGxlUGFnZUdldFJl
bmRlclRyZWVTaXplKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIAorV0tfRVhQT1JUIFdLUmVuZGVy
T2JqZWN0UmVmIFdLQnVuZGxlUGFnZUNvcHlSZW5kZXJUcmVlKFdLQnVuZGxlUGFnZVJlZiBwYWdl
KTsKKwogLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5LiBVbHRpbWF0ZWx5IFdlYktpdCBzaG91
bGQgY2hvb3NlIHRoZSB0aHJlc2hvbGQgaXRzZWxmLgogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQ
YWdlU2V0UGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNob2xkKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCB1aW50NjRfdCB0aHJlc2hvbGQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9q
CShyZXZpc2lvbiAxMDk2NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTc5MSw2ICs3OTEsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYlJlbmRlck9iamVjdC5jcHAi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJl
ZFxXZWJSZW5kZXJPYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYlNlY3VyaXR5T3JpZ2luLmgiCiAJCQkJPgogCQkJPC9G
aWxlPgpAQCAtOTc0LDYgKzk4MiwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLUmVuZGVyT2JqZWN0LmNwcCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNo
YXJlZFxBUElcY1xXS1JlbmRlck9iamVjdC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLU2VjdXJpdHlPcmlnaW4u
Y3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgo=
</data>
<flag name="review"
          id="132933"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>