<?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>133017</bug_id>
          
          <creation_ts>2014-05-16 16:18:14 -0700</creation_ts>
          <short_desc>Expose WKUserScript as API</short_desc>
          <delta_ts>2014-05-17 12:58:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mkwst</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1009885</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-16 16:18:14 -0700</bug_when>
    <thetext>Expose WKUserScript as API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009889</commentid>
    <comment_count>1</comment_count>
      <attachid>231604</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-16 16:39:10 -0700</bug_when>
    <thetext>Created attachment 231604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009890</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-16 16:42:13 -0700</bug_when>
    <thetext>Attachment 231604 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKUserScriptInternal.h:32:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKUserContentControllerInternal.h:36:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 36 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>1009896</commentid>
    <comment_count>3</comment_count>
      <attachid>231604</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-16 17:53:09 -0700</bug_when>
    <thetext>Comment on attachment 231604
Patch

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

&gt; Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h:41
&gt; +class WebUserContentControllerProxy final : public RefCounted&lt;WebUserContentControllerProxy&gt; {

There is nothing virtual about this class. Does adding final really help here?

&gt; Source/WebKit2/WebProcess/UserContent/WebUserContentController.h:51
&gt; +private:

This private is redundant.

&gt; Source/WebKit2/WebProcess/UserContent/WebUserContentController.h:53
&gt; +    RefPtr&lt;WebCore::UserContentController&gt; m_userContentController;

This could probably be a Ref&lt;WebCore::UserContentController&gt; m_userContentController;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009982</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-17 12:58:10 -0700</bug_when>
    <thetext>Committed r168994: &lt;http://trac.webkit.org/changeset/168994&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231604</attachid>
            <date>2014-05-16 16:39:10 -0700</date>
            <delta_ts>2014-05-16 17:53:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133017-20140516233846.patch</filename>
            <type>text/plain</type>
            <size>77654</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY4OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTRkM2IyNGRjNzMyZjY5
YmU5MTAwYzJiMTE5NTc1MmE2YTY4MmNkZC4uMGU0MGFmODVjYTJmNmE0ZTk5NDY0YzA1NGMxNjJh
ZTIwYWMxNzlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE0LTA1LTE2ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIFdLVXNl
clNjcmlwdCBhcyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMzAxNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY5NDgwNTk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5p
bjoKKyAgICAgICAgRXhwb3J0IHN5bWJvbHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIENoYW5nZSBVc2VyQ29udGVudENvbnRyb2xsZXIu
aCB0byBiZSBhIHByaXZhdGUgaGVhZGVyLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICBTZXQgbV91c2VyQ29udGVudENv
bnRyb2xsZXIgZnJvbSB0aGUgcGFnZSBjb25maWd1cmF0aW9uIGFuZCBhZGQgaXQgaWYgaXQncyBu
b3QgbnVsbC4KKworICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICBBZGQgVXNlckNvbnRl
bnRDb250cm9sbGVyIHRvIFBhZ2VDbGllbnRzLgorCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjphZGRQYWdlKToKKyAgICAgICAgT25s
eSB0cnkgdG8gYWRkIGEgdXNlciBjb250ZW50IGNvbnRyb2xsZXIgaWYgdGhlIHBhZ2UgZG9lc24n
dCBhbHJlYWR5IGhhdmUgb25lLgorCisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnJlbW92
ZVBhZ2UpOgorICAgICAgICBPbmx5IHRyeSB0byByZW1vdmUgdGhlIHVzZXIgY29udGVudCBjb250
cm9sbGVyIGlmIGl0J3MgdGhlIGdyb3VwIG9uZS4KKwogMjAxNC0wNS0xNiAgQW5kcmVpIEJ1Y3Vy
ICA8YWJ1Y3VyQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFJlZ2lvbnNdIFJlZHVjZSB0aGUg
UmVuZGVyUmVnaW9uIGludmFzaXZlbmVzcyBpbiByZW5kZXJpbmcgY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDE0YjZkNzg2ZTliZjRiODIxMDM0NWM2Y2MwNGI4MWZkM2Y5YTljNTEuLjEyMWQxNjM4NGJhMTI0
NDE1NWFhZWVmODY4MTAzOGI2Yzc0MjQwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzQgQEAK
KzIwMTQtMDUtMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAg
ICAgICBFeHBvc2UgV0tVc2VyU2NyaXB0IGFzIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMDE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
Njk0ODA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgIEFkZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oOgorICAgICAgICBB
ZGQgV0tVc2VyU2NyaXB0LmgKKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNh
c3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6CisgICAg
ICAgIFVwZGF0ZSBmb3IgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSAtPiBfV0tVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZSByZW5hbWUuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZS5oOgorICAgICAgICBSZW5hbWUgV0tVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZSB0byBfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB0byBmcmVlIHVwIHRoZSBuYW1lIGZv
ciB0aGUgT2JqZWN0aXZlLUMgQVBJCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSk6CisgICAgICAgIEVuY29kZSB0aGUgdXNlciBjb250ZW50IGNvbnRyb2xsZXIg
SUQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgRGVjb2RlIHRoZSB1c2VyIGNvbnRlbnQgY29udHJvbGxlciBJRC4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIEFkZCB1
c2VyQ29udGVudENvbnRyb2xsZXJJRC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VHcm91cC5jcHA6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQpOgorICAgICAg
ICBVcGRhdGUgZm9yIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUgLT4gX1dLVXNlclNjcmlwdElu
amVjdGlvblRpbWUgcmVuYW1lLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdy
b3VwLmg6CisgICAgICAgIFVwZGF0ZSBmb3IgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSAtPiBf
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSByZW5hbWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAuaDoKKyAgICAgICAgVXBkYXRlIGZvciBX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIC0+IF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIHJl
bmFtZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRH
cm91cC5tbToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU2NyaXB0
OmJhc2VVUkw6d2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczpibGFja2xpc3RlZFVSTFBhdHRlcm5zOmlu
amVjdGlvblRpbWU6bWFpbkZyYW1lT25seTpdKToKKyAgICAgICAgVXBkYXRlIGZvciBXS1VzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lIC0+IF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIHJlbmFtZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
aDoKKyAgICAgICAgQWRkIG5ldyBtZXRob2RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICBDcmVhdGUgdGhlIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5IG9iamVjdCBhbmQgdXNlciBzY3JpcHRzIGFycmF5LgorCisgICAgICAgICgt
W1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHVzZXJTY3JpcHRzXSk6CisgICAgICAgIFJldHVybiB0
aGUgdXNlciBzY3JpcHRzIGFycmF5LgorCisgICAgICAgICh0b1dlYkNvcmVVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZSk6CisgICAgICAgIEhlbHBlciBmb3IgY29udmVydGluZyBmcm9tIGEgV0tVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBlbnVtIHRvIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25U
aW1lLgorCisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6
XSk6CisgICAgICAgIENhbGwgdGhyb3VnaCB0byB0aGUgX3VzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5IG9iamVjdC4KKworICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVB
bGxVc2VyU2NyaXB0c10pOgorICAgICAgICBDYWxsIHRocm91Z2ggdG8gdGhlIF91c2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAg
ICAgQWRkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IGl2YXIuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIG5l
dyBoZWFkZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5t
bToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IGluaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6
Zm9yTWFpbkZyYW1lT25seTpdKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgV0tVc2VyU2NyaXB0
IG9iamVjdC4KKworICAgICAgICAoLVtXS1VzZXJTY3JpcHQgc291cmNlXSk6CisgICAgICAgICgt
W1dLVXNlclNjcmlwdCBpbmplY3Rpb25UaW1lXSk6CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBp
c0Zvck1haW5GcmFtZU9ubHldKToKKyAgICAgICAgQWRkIGdldHRlcnMuCisKKyAgICAgICAgKC1b
V0tVc2VyU2NyaXB0IGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgU2luY2UgV0tVc2VyU2NyaXB0
IGlzIGltbXV0YWJsZSwganVzdCByZXR1cm4gYSByZXRhaW5lZCBvYmplY3QuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdEludGVybmFsLmg6CisgICAgICAgIEFk
ZCBpdmFycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAg
ICAgICBTZXQgdGhlIHVzZXIgY29udGVudCBjb250cm9sbGVyIGZyb20gdGhlIGNvbmZpZ3VyYXRp
b24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVJZGVudGlm
aWVyKToKKyAgICAgICAgUmV0dXJuIGEgdW5pcXVlIGlkZW50aWZpZXIuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIFJl
dHVybiBhIG5ldyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBvYmplY3QuCisKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgSW5pdGlhbGl6ZSBtX2lkZW50aWZpZXIuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIEFkZCBkZXN0cnVjdG9yLgorCisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKToKKyAg
ICAgICAgQWRkIHRoZSBwcm9jZXNzIHRvIHRoZSBtX3Byb2Nlc3NlcyBzZXQuIElmIGl0J3MgdGhl
IGZpcnN0IHRpbWUgZG9pbmcgc28sIGFkZCB0aGUgdXNlciBzY3JpcHRzIHdlIGtub3cgYWJvdXQu
CisKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZVByb2Nlc3MpOgorICAgICAgICBSZW1vdmUgdGhlIHByb2Nlc3MgZnJvbSBtX3Byb2Nlc3Nlcy4K
KworICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNl
clNjcmlwdCk6CisgICAgICAgIEFkZCB0aGUgdXNlciBzY3JpcHQgYW5kIGxldCBhbGwgdGhlIHdl
YiBwcm9jZXNzZXMga25vdyB0aGF0IGl0IHdhcyBhZGRlZC4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMpOgorICAg
ICAgICBSZW1vdmUgYWxsIHVzZXIgc2NyaXB0cyBhbmQgdGVsbCBhbGwgdGhlIHdlYiBwcm9jZXNz
ZXMgYWJvdXQgaXQuCisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICBBZGQgbmV3IGNsYXNzLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgSWYgdGhlIHByb2Nlc3MgaXMg
YWxyZWFkeSBydW5uaW5nLCBhZGQgaXQgdG8gdGhlIHVzZXIgY29udGVudCBjb250cm9sbGVyLgor
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICBJZiB0aGUg
cHJvY2VzcyBpcyBydW5uaW5nLCByZW1vdmUgaXQgZnJvbSB0aGUgdXNlciBjb250ZW50IGNvbnRy
b2xsZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb25uZWN0aW9uV2lsbE9w
ZW4pOgorICAgICAgICBBZGQgdGhlIHByb2Nlc3MgdG8gdGhlIHVzZXIgY29udGVudCBjb250cm9s
bGVyLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJv
Y2Vzc0V4aXRlZCk6CisgICAgICAgIFJlbW92ZSB0aGUgcHJvY2VzcyBmcm9tIHRoZSB1c2VyIGNv
bnRlbnQgY29udHJvbGxlci4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgIFBhc3MgYWxvbmcgdGhlIHVzZXIgY29udGVudCBjb250
cm9sbGVyIElEIHdoZW4gY3JlYXRpbmcgdGhlIHdlYiBwYWdlLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICBBZGQgYSBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSBvYmplY3QgdG8gdGhlIHdlYiBwYWdlIGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmls
ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UHJpdmF0ZS5oOgorICAgICAgICBVcGRhdGUgZm9yIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUg
LT4gX1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUgcmVuYW1lLgorICAgICAgICAKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHA6IEFk
ZGVkLgorICAgICAgICBOZXcgY2xhc3MgdGhhdCBtYW5hZ2VzIGEgV2ViQ29yZTo6VXNlckNvbnRl
bnRDb250cm9sbGVyIG9iamVjdC4KKworICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgTG9vayB1cCAob3IgY3JlYXRlKSBhIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlciBvYmplY3QgZ2l2ZW4gaXRzIGlkZW50aWZpZXIuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXIpOgorICAgICAgICBBZGQgb3Vyc2VsdmVzIGFzIGEgbWVzc2FnZSByZWNlaXZlci4K
KworICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6On5XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIpOgorICAgICAgICBSZW1vdmUgb3Vyc2VsdmVzIGFzIGEgbWVzc2FnZSBy
ZWNlaXZlci4KKworICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFk
ZFVzZXJTY3JpcHRzKToKKyAgICAgICAgQWRkIGFsbCBwYXNzZWQgaW4gdXNlciBzY3JpcHRzIHRv
IHRoZSBXZWJDb3JlIHVzZXIgY29udGVudCBjb250cm9sbGVyIG9iamVjdC4KKworICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToK
KyAgICAgICAgUmVtb3ZlIGFsbCB1c2VyIHNjcmlwdHMgZnJvbSB0aGUgV2ViQ29yZSB1c2VyIGNv
bnRlbnQgY29udHJvbGxlciBvYmplY3QuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAg
IEFkZCBuZXcgbWVzc2FnZXMgZmlsZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAg
IEdldCBhIFdlYlVzZXJDb250ZW50Q29udHJvbGxlciBvYmplY3QgYW5kIHBhc3MgaXQgYWxvbmcg
dG8gV2ViQ29yZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIEFkZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgbWVtYmVyLgorCiAyMDE0LTA1LTE2
ICBNYXJ0aW4gSG9kb3ZhbiAgPG1ob2RvdmFuLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW1dLMl0gQ2hhbmdlIHRoZSByZW1haW5pbmcgZnJhbWV3b3JrIGluY2x1ZGVz
IGZyb20gV2ViS2l0MiB0byBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggY2E4OWQyZDU1
MzcxNTM5ZTZlODc5Y2YxZmEwMWY2YjBmYTllYjMyMy4uNGFmNDNjNmNjY2U2N2VkOWQxZDUwZTQy
ZjY5NjBlZGFhYjMzOWYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIxODksNiArMjE4OSwx
MCBAQCBfX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xpZW50MjNkaWRSZWNlaXZlUmVzcG9u
c2VBc3luY0VQTlNfMTRSZXNvdXJjZUhhbmRsZQogX19aTjdXZWJDb3JlMjBhcHBsaWNhdGlvbklz
SFJCbG9ja0V2CiBfX1pON1dlYkNvcmUyMGJ1aWx0SW5QREZQbHVnaW5OYW1lRXYKIF9fWk43V2Vi
Q29yZTIxRGV2aWNlT3JpZW50YXRpb25EYXRhNmNyZWF0ZUViZGJkYmRiYgorX19aTjdXZWJDb3Jl
MjFVc2VyQ29udGVudENvbnRyb2xsZXIxM2FkZFVzZXJTY3JpcHRFUk5TXzE1RE9NV3JhcHBlcldv
cmxkRU5TdDNfXzExMHVuaXF1ZV9wdHJJTlNfMTBVc2VyU2NyaXB0RU5TM18xNGRlZmF1bHRfZGVs
ZXRlSVM1X0VFRUUKK19fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMTdyZW1vdmVV
c2VyU2NyaXB0c0VSTlNfMTVET01XcmFwcGVyV29ybGRFCitfX1pON1dlYkNvcmUyMVVzZXJDb250
ZW50Q29udHJvbGxlcjZjcmVhdGVFdgorX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xs
ZXJEMUV2CiBfX1pON1dlYkNvcmUyMWFwcGxpY2F0aW9uSXNBcGVydHVyZUV2CiBfX1pON1dlYkNv
cmUyMWFwcGxpY2F0aW9uSXNWZXJzaW9uc0V2CiBfX1pON1dlYkNvcmUyMXJlcG9ydFRocmVhZFZp
b2xhdGlvbkVQS2NOU18yMFRocmVhZFZpb2xhdGlvblJvdW5kRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2MTc1ZjJiYWVmMTIx
ZTRlYjVmYjZjZmZlZmRhNWQyNTA5OTkzM2MuLjQxNzk5YTRiNWUzOTY3ODQ5NjNhMzVhYjJjN2U0
N2ZmNjczNjgzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTg3Myw3ICs4NzMsNyBAQAogCQkxQUUyQUVDNzBBMUQyOTdCMDBC
NDJCMjUgLyogSlNIVE1MUXVvdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTJBRUMzMEExRDI5N0IwMEI0MkIyNSAvKiBKU0hUTUxR
dW90ZUVsZW1lbnQuY3BwICovOyB9OwogCQkxQUUyQUVDODBBMUQyOTdCMDBCNDJCMjUgLyogSlNI
VE1MUXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUUyQUVDNDBBMUQyOTdCMDBCNDJCMjUgLyogSlNIVE1MUXVvdGVFbGVtZW50Lmgg
Ki87IH07CiAJCTFBRTc5RDQyMTg4REI2MUYwMDIyMzlDMiAvKiBVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFF
NzlENDAxODhEQjYxRjAwMjIzOUMyIC8qIFVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgKi87IH07
Ci0JCTFBRTc5RDQzMTg4REI2MUYwMDIyMzlDMiAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTc5RDQxMTg4
REI2MUYwMDIyMzlDMiAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIuaCAqLzsgfTsKKwkJMUFFNzlE
NDMxODhEQjYxRjAwMjIzOUMyIC8qIFVzZXJDb250ZW50Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFNzlENDExODhEQjYxRjAwMjIz
OUMyIC8qIFVzZXJDb250ZW50Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBRTgyRjhGMENBQUZBOUQwMDIyMzdBRSAvKiBKU0Rh
dGFiYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBRTgyRjhEMENBQUZBOUQwMDIyMzdBRSAvKiBKU0RhdGFiYXNlLmNwcCAqLzsgfTsKIAkJMUFF
ODJGOTAwQ0FBRkE5RDAwMjIzN0FFIC8qIEpTRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTgyRjhFMENBQUZBOUQwMDIyMzdBRSAvKiBK
U0RhdGFiYXNlLmggKi87IH07CiAJCTFBRTgyRkVDMENBQjA3RUUwMDIyMzdBRSAvKiBKU1NRTFJl
c3VsdFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUU4MkZFQTBDQUIwN0VFMDAyMjM3QUUgLyogSlNTUUxSZXN1bHRTZXQuY3BwICovOyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggMWZhNzQwNzEzNjcxM2QzOGE0NTc4Y2MyNWYxZmM1ZjVlMDZi
YTc0Mi4uMTFlODkzNDMyYjcwMDI3MmE5MDI3ZWNiODZmMmNjZmQxMTNjYzAxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0xOTcsMTMgKzE5NywxNyBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBw
YWdlQ2xpZW50cykKICNlbmRpZgogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRh
dGVzQ291bnQoMCkgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIFNwYXRp
YWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0JlZm9yZVVubG9h
ZEV2ZW50KDApCisgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihzdGQ6Om1vdmUocGFnZUNs
aWVudHMudXNlckNvbnRlbnRDb250cm9sbGVyKSkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShz
dGQ6Om1vdmUocGFnZUNsaWVudHMudmlzaXRlZExpbmtTdG9yZSkpCiAgICAgLCBtX3Nlc3Npb25J
RChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKIHsKICAgICBBU1NFUlQobV9lZGl0b3JD
bGllbnQpOwogICAgIAogICAgIHNldFRpbWVyVGhyb3R0bGluZ0VuYWJsZWQobV92aWV3U3RhdGUg
JiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKLSAgICAKKworICAgIGlmIChtX3VzZXJDb250
ZW50Q29udHJvbGxlcikKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFBhZ2Uo
KnRoaXMpOworCiAgICAgaWYgKG1fdmlzaXRlZExpbmtTdG9yZSkKICAgICAgICAgbV92aXNpdGVk
TGlua1N0b3JlLT5hZGRQYWdlKCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA5ZDM2ODZjN2I3
NWUzNmUxYzJhODQ1NDlhNmM1Yzg2Nzk4ODEzZTAwLi40YmYwNTZhNDc4ZDRkMDEzZmMwNTRhMjFj
MGUyNjEwNTVlMDU1NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckFsbFBhZ2VzQWZ0ZXJHbG9iYWxDaGFu
Z2VJbkVudmlyb25tZW50KCk7CiAKICAgICAvLyBJdCBpcyB1cCB0byB0aGUgcGxhdGZvcm0gdG8g
ZW5zdXJlIHRoYXQgbm9uLW51bGwgY2xpZW50cyBhcmUgcHJvdmlkZWQgd2hlcmUgcmVxdWlyZWQu
CisgICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIHRvIFBhZ2VDb25maWd1cmF0aW9uIGFuZCBtb3Zl
IGl0IHRvIGl0cyBvd24gY2xhc3MuCiAgICAgc3RydWN0IFBhZ2VDbGllbnRzIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNsaWVudHMpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CkBAIC0xMzgsNiArMTM5LDcgQEAgcHVibGljOgogICAgICAgICBWYWxp
ZGF0aW9uTWVzc2FnZUNsaWVudCogdmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiAgICAgICAgIEZy
YW1lTG9hZGVyQ2xpZW50KiBsb2FkZXJDbGllbnRGb3JNYWluRnJhbWU7CiAKKyAgICAgICAgUmVm
UHRyPFVzZXJDb250ZW50Q29udHJvbGxlcj4gdXNlckNvbnRlbnRDb250cm9sbGVyOwogICAgICAg
ICBSZWZQdHI8VmlzaXRlZExpbmtTdG9yZT4gdmlzaXRlZExpbmtTdG9yZTsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggMzM4NWU3YjY5ZTY1NTRlMzM2Y2QwMDlhNzlm
YmIxNmQ2ODUxMjEzMi4uMzdhNmM5ODVhNjQ3NmQ3OTgxODUzODQ5MWJiOTU4NTI3MzlkNGMwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAtMTY3LDcgKzE2Nyw4IEBAIHZvaWQgUGFn
ZUdyb3VwOjphZGRQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgQVNTRVJUKCFtX3BhZ2VzLmNvbnRhaW5z
KCZwYWdlKSk7CiAgICAgbV9wYWdlcy5hZGQoJnBhZ2UpOwogCi0gICAgcGFnZS5zZXRVc2VyQ29u
dGVudENvbnRyb2xsZXIobV91c2VyQ29udGVudENvbnRyb2xsZXIuZ2V0KCkpOworICAgIGlmICgh
cGFnZS51c2VyQ29udGVudENvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZS5zZXRVc2VyQ29udGVu
dENvbnRyb2xsZXIobV91c2VyQ29udGVudENvbnRyb2xsZXIuZ2V0KCkpOwogfQogCiB2b2lkIFBh
Z2VHcm91cDo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQpAQCAtMTc1LDcgKzE3Niw4IEBAIHZvaWQg
UGFnZUdyb3VwOjpyZW1vdmVQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgQVNTRVJUKG1fcGFnZXMuY29u
dGFpbnMoJnBhZ2UpKTsKICAgICBtX3BhZ2VzLnJlbW92ZSgmcGFnZSk7CiAKLSAgICBwYWdlLnNl
dFVzZXJDb250ZW50Q29udHJvbGxlcihudWxscHRyKTsKKyAgICBpZiAocGFnZS51c2VyQ29udGVu
dENvbnRyb2xsZXIoKSA9PSBtX3VzZXJDb250ZW50Q29udHJvbGxlcikKKyAgICAgICAgcGFnZS5z
ZXRVc2VyQ29udGVudENvbnRyb2xsZXIobnVsbHB0cik7CiB9CiAKIFZpc2l0ZWRMaW5rU3RvcmUm
IFBhZ2VHcm91cDo6dmlzaXRlZExpbmtTdG9yZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCAzM2NlMTYxOThhMGEwMTgwMjVhZmYzYzczNDIyNDczMzEyMWIwMGE5Li4wNTk5MGQ3
NGNlMWQyN2RlOWVmMzU2NTUxMzcwMjI5M2ZiMGZkNDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTQ5LDYgKzQ5LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQ
cm9jZXNzL1Jlc291cmNlQ2FjaGUgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9TY3JvbGxp
bmcgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9TdG9yYWdlIFwKKyAgICAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydCBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlBhZ2UgXAogICAgICQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9pb3MgXApAQCAtMTMzLDYgKzEzNCw3IEBAIE1FU1NBR0VfUkVD
RUlWRVJTID0gXAogICAgIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyIFwKICAgICBXZWJSZXNvdXJj
ZUNhY2hlTWFuYWdlclByb3h5IFwKICAgICBXZWJSZXNvdXJjZUxvYWRlciBcCisgICAgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyIFwKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIFwKICAg
ICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgXAogIwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggYWQ0Y2M5MWQ0MjZhM2NkYTRjNjVmY2MwOGNlMTg1
YzQxY2IyNDllNy4uNTI0MTZjOGEwOTQ1OGVlOWFmYjZkMWY3OTYwYmJkZGFkNzQ4YjkyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW1wb3J0IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLVUlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9s
bGVyLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyU2NyaXB0Lmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYktpdExlZ2FjeS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCmluZGV4IDAzY2JkZDIxZGY2ZTliODVjZDQ2ZDA2OTMz
N2YyYjI4NGE3MzE0MTIuLmNmZTc3OTI1MWFjNTY1NGQxMGQzYzZjYzc2Y2QzYTFiNTZiMjIyNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAg
LTg5NSw3ICs4OTUsNyBAQCBpbmxpbmUgU25hcHNob3RPcHRpb25zIHRvU25hcHNob3RPcHRpb25z
KFdLU25hcHNob3RPcHRpb25zIHdrU25hcHNob3RPcHRpb25zKQogICAgIHJldHVybiBzbmFwc2hv
dE9wdGlvbnM7CiB9CiAKLWlubGluZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB0
b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUgd2tJbmpl
Y3RlZFRpbWUpCitpbmxpbmUgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgdG9Vc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZShfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB3a0luamVjdGVk
VGltZSkKIHsKICAgICBzd2l0Y2ggKHdrSW5qZWN0ZWRUaW1lKSB7CiAgICAgY2FzZSBrV0tJbmpl
Y3RBdERvY3VtZW50U3RhcnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUuaAppbmRleCBmNGQzOGIyYzFjYTFjMGQzN2Ji
Y2MxY2FkMGUwNzg3YWFiZmNiNmYzLi40NWQyNDEwNzJiMzg5ZTE0ZTBjZTE4MGFmMTBlNzg0NGEz
OTY1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lLmgKQEAgLTI2LDEwICsyNiwxMCBAQAogI2lmbmRlZiBXS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lX2gKICNkZWZpbmUgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZV9oCiAKLWVudW0gV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB7CitlbnVtIF9XS1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIHsKICAgICBrV0tJbmplY3RBdERvY3VtZW50U3RhcnQsCiAgICAga1dL
SW5qZWN0QXREb2N1bWVudEVuZAogfTsKLXR5cGVkZWYgZW51bSBXS1VzZXJTY3JpcHRJbmplY3Rp
b25UaW1lIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWU7Cit0eXBlZGVmIGVudW0gX1dLVXNlclNj
cmlwdEluamVjdGlvblRpbWUgX1dLVXNlclNjcmlwdEluamVjdGlvblRpbWU7CiAKICNlbmRpZiAv
KiBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA0MDhkNzE3OWFiZDI3
ODdkYzkwODQxMTFmYThiMWI1MmE0MjIzMzRmLi41YzBhMjE0NmY1MjExNzk0M2QzZTQ5NWFmZThk
MTRhOTkwZWI0NjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC01MSw2ICs1MSw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgc2Vzc2lvblN0YXRlOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklE
OwogICAgIGVuY29kZXIgPDwgaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRDsKKyAgICBlbmNv
ZGVyIDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklEOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExp
bmtUYWJsZUlEOwogICAgIGVuY29kZXIgPDwgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
OwogICAgIGVuY29kZXIgPDwgY2FuUnVuTW9kYWw7CkBAIC0xMTUsNiArMTE2LDggQEAgYm9vbCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIFdlYlBhZ2VDcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5oaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2Vy
Q29udGVudENvbnRyb2xsZXJJRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jYW5SdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggOGE0MzJmNDc0OTg5NWFmMzUyZWU3MDI5YTY1
ODU1ODE1YTE1MTU2NS4uN2E5YzIzMGQxNmQ1YzQyYWUzOGM0YjMyY2Q2ZDc3MGI3NmIzNjYwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCkBAIC04NSw2ICs4NSw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwogICAgIHVpbnQ2NF90IGhpZ2hlc3RV
c2VkQmFja0ZvcndhcmRJdGVtSUQ7CiAKKyAgICB1aW50NjRfdCB1c2VyQ29udGVudENvbnRyb2xs
ZXJJRDsKICAgICB1aW50NjRfdCB2aXNpdGVkTGlua1RhYmxlSUQ7CiAgICAgYm9vbCBjYW5SdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CiAgICAgYm9vbCBjYW5SdW5Nb2RhbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCmluZGV4IDY3Nzc1N2Rk
YjljYzI5NWY4MmZmNTg4MTdlN2JkY2YwNzIzOWM5ZjAuLmQ3ZjQ0NTk5NGU5YmJkMzY3ZmYxMTRm
YzkzYTdlMmZkNzAwMDY4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZUdyb3VwLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdLUGFnZUdyb3VwUmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKICAgICB0b0lt
cGwocGFnZUdyb3VwUmVmKS0+cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CiB9CiAKLXZvaWQg
V0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tT
dHJpbmdSZWYgc291cmNlUmVmLCBXS1VSTFJlZiBiYXNlVVJMLCBXS0FycmF5UmVmIHdoaXRlbGlz
dGVkVVJMUGF0dGVybnMsIFdLQXJyYXlSZWYgYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucywgV0tVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXS1VzZXJTY3JpcHRJbmplY3Rp
b25UaW1lIGluamVjdGlvblRpbWUpCit2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclNjcmlwdChXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwgV0tVUkxSZWYg
YmFzZVVSTCwgV0tBcnJheVJlZiB3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zLCBXS0FycmF5UmVmIGJs
YWNrbGlzdGVkVVJMUGF0dGVybnMsIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3Rl
ZEZyYW1lcywgX1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKICAg
ICB0b0ltcGwocGFnZUdyb3VwUmVmKS0+YWRkVXNlclNjcmlwdCh0b1dURlN0cmluZyhzb3VyY2VS
ZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMKSwgdG9JbXBsKHdoaXRlbGlzdGVkVVJMUGF0dGVybnMp
LCB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyhpbmplY3RlZEZyYW1lcyksIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9u
VGltZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZUdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAu
aAppbmRleCAxNDliMWEzMGJkOTdkNzFiMTJmYjIzMGZiM2EwZmQ0YTExZTU5ZGRjLi4xYmNhMWYy
YzNiMWIwYzE2MGE1MjY0MGFmODQ1ZjBkZjgwZjEwZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaApAQCAtNDYsNyArNDYsNyBAQCBXS19FWFBPUlQg
V0tQcmVmZXJlbmNlc1JlZiBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0
KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tTdHJpbmdSZWYgc291cmNlLCBXS1VSTFJlZiBi
YXNlVVJMLCBXS0FycmF5UmVmIHdoaXRlbGlzdGVkVVJMUGF0dGVybnMsIFdLQXJyYXlSZWYgYmxh
Y2tsaXN0ZWRVUkxQYXR0ZXJucywgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKIFdLX0VY
UE9SVCB2b2lkIFdLUGFnZUdyb3VwUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKFdLUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cCk7CiAgICAgCi1XS19FWFBPUlQgdm9pZCBXS1BhZ2VHcm91cEFkZFVzZXJT
Y3JpcHQoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS1N0cmluZ1JlZiBzb3VyY2UsIFdLVVJM
UmVmIGJhc2VVUkwsIFdLQXJyYXlSZWYgd2hpdGVsaXN0ZWRVUkxQYXR0ZXJucywgV0tBcnJheVJl
ZiBibGFja2xpc3RlZFVSTFBhdHRlcm5zLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMsIFdL
VXNlclNjcmlwdEluamVjdGlvblRpbWUpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlR3JvdXBBZGRV
c2VyU2NyaXB0KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tTdHJpbmdSZWYgc291cmNlLCBX
S1VSTFJlZiBiYXNlVVJMLCBXS0FycmF5UmVmIHdoaXRlbGlzdGVkVVJMUGF0dGVybnMsIFdLQXJy
YXlSZWYgYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucywgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
LCBfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VHcm91
cFJlbW92ZUFsbFVzZXJTY3JpcHRzKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7CiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAuaAppbmRleCA1OWRkZWI2OWJlMWFhOWIw
YWUyMWRlZTdiODkxM2NmNGUwNGM3MjZlLi41ZDE1MTE4MzBjN2YxNzRkZmUzMjdkYTcwOTUwYTJj
MzkzNTU5MTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLQnJvd3NpbmdDb250ZXh0R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAuaApAQCAtNDAsNyArNDAsNyBAQCBXS19D
TEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKIC0gKHZvaWQpYWRkVXNlclN0eWxlU2hlZXQ6KE5T
U3RyaW5nICopc291cmNlIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB3aGl0ZWxpc3RlZFVSTFBh
dHRlcm5zOihOU0FycmF5ICopd2hpdGVsaXN0IGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6KE5TQXJy
YXkgKilibGFja2xpc3QgbWFpbkZyYW1lT25seTooQk9PTCltYWluRnJhbWVPbmx5OwogLSAodm9p
ZClyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHM7CiAKLS0gKHZvaWQpYWRkVXNlclNjcmlwdDooTlNT
dHJpbmcgKilzb3VyY2UgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHdoaXRlbGlzdGVkVVJMUGF0
dGVybnM6KE5TQXJyYXkgKil3aGl0ZWxpc3QgYmxhY2tsaXN0ZWRVUkxQYXR0ZXJuczooTlNBcnJh
eSAqKWJsYWNrbGlzdCBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWlu
amVjdGlvblRpbWUgbWFpbkZyYW1lT25seTooQk9PTCltYWluRnJhbWVPbmx5OworLSAodm9pZClh
ZGRVc2VyU2NyaXB0OihOU1N0cmluZyAqKXNvdXJjZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwg
d2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczooTlNBcnJheSAqKXdoaXRlbGlzdCBibGFja2xpc3RlZFVS
TFBhdHRlcm5zOihOU0FycmF5ICopYmxhY2tsaXN0IGluamVjdGlvblRpbWU6KF9XS1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgbWFpbkZyYW1lT25seTooQk9PTCltYWluRnJh
bWVPbmx5OwogLSAodm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0czsKIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0
R3JvdXAubW0KaW5kZXggNjhkM2QxNTQ3N2IzZDljMTZmMTEzMTFhNzRmYWNmNTgxMTM3OTY2NS4u
MGMwNjk1ZDg3Y2E1MzczMjk4ZGMwMzVkMWIxMzdiMDE2MzliYzY2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRl
eHRHcm91cC5tbQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBXS1JldGFpblB0cjxXS0FycmF5
UmVmPiBjcmVhdGVXS0FycmF5KE5TQXJyYXkgKmFycmF5KQogICAgIFdLUGFnZUdyb3VwUmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKHRvQVBJKF9wYWdlR3JvdXAuZ2V0KCkpKTsKIH0KIAotLSAodm9p
ZClhZGRVc2VyU2NyaXB0OihOU1N0cmluZyAqKXNvdXJjZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VV
Ukwgd2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczooTlNBcnJheSAqKXdoaXRlbGlzdCBibGFja2xpc3Rl
ZFVSTFBhdHRlcm5zOihOU0FycmF5ICopYmxhY2tsaXN0IGluamVjdGlvblRpbWU6KFdLVXNlclNj
cmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGltZSBtYWluRnJhbWVPbmx5OihCT09MKW1haW5G
cmFtZU9ubHkKKy0gKHZvaWQpYWRkVXNlclNjcmlwdDooTlNTdHJpbmcgKilzb3VyY2UgYmFzZVVS
TDooTlNVUkwgKiliYXNlVVJMIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6KE5TQXJyYXkgKil3aGl0
ZWxpc3QgYmxhY2tsaXN0ZWRVUkxQYXR0ZXJuczooTlNBcnJheSAqKWJsYWNrbGlzdCBpbmplY3Rp
b25UaW1lOihfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaW1lIG1haW5GcmFt
ZU9ubHk6KEJPT0wpbWFpbkZyYW1lT25seQogewogICAgIGlmICghc291cmNlKQogICAgICAgICBD
UkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDNkZDY4ZGZlZGMyYWE1NGVjNGZk
OTIzMmJjZjE2MzAxYTc0YTA2OGYuLmJiMTE3MGJkNWJmNmNhNjI5MWI1ZGRlMTA5ZmVhZGFlYzU1
ZGFiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKK0BjbGFzcyBXS1VzZXJTY3JpcHQ7CiBA
cHJvdG9jb2wgV0tTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIAogLyohIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyIHByb3ZpZGVzIGEgd2F5IGZvciBKYXZhU2NyaXB0IHRvIHBvc3QgbWVzc2FnZXMgdG8g
dGhlIEBsaW5rIFdLV2ViVmlldyBAL2xpbmsuCkBAIC0zNyw2ICszOCwxOSBAQAogV0tfQ0xBU1Nf
QVZBSUxBQkxFKDEwXzEwLCA4XzApCiBAaW50ZXJmYWNlIFdLVXNlckNvbnRlbnRDb250cm9sbGVy
IDogTlNPYmplY3QKIAorLyohIEBhYnN0cmFjdCBUaGUgdXNlciBzY3JpcHRzIGFzc29jaWF0ZWQg
d2l0aCB0aGlzIHVzZXIgY29udGVudCBjb250cm9sbGVyLgorKi8KK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNBcnJheSAqdXNlclNjcmlwdHM7CisKKy8qISBAYWJzdHJhY3QgQWRk
cyBhIHVzZXIgc2NyaXB0LgorIEBwYXJhbSB1c2VyU2NyaXB0IFRoZSB1c2VyIHNjcmlwdCB0byBh
ZGQuCisqLworLSAodm9pZClhZGRVc2VyU2NyaXB0OihXS1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0
OworCisvKiEgQGFic3RyYWN0IFJlbW92ZXMgYWxsIGFzc29jaWF0ZWQgdXNlciBzY3JpcHRzLgor
Ki8KKy0gKHZvaWQpcmVtb3ZlQWxsVXNlclNjcmlwdHM7CisKIC8qISBAYWJzdHJhY3QgQWRkcyBh
IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCiAgQHBhcmFtIHNjcmlwdE1lc3NhZ2VIYW5kbGVyIFRo
ZSBtZXNzYWdlIGhhbmRsZXIgd2hlcmUgdGhlIG1lc3NhZ2VzIHNob3VsZCBiZSBkZWxpdmVyZWQu
CiAgQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRl
bnRDb250cm9sbGVyLm1tCmluZGV4IGEwNjIxNDJmYjI2MWU4MGRiMDkwNTU3ZDRiMTgxNDcyOTg2
NmM5YmQuLmZlZTI0NDJjMTVlNGQ0NWE0OGMxYzVhOWVkNDExOThjZTcxMTkzOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5tbQpAQCAtMjQsMTMgKzI0LDYyIEBACiAgKi8KIAogI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCIKKyNp
bXBvcnQgIldLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCIKIAogI2lmIFdLX0FQSV9F
TkFCTEVECiAKKyNpbXBvcnQgIldLVXNlclNjcmlwdEludGVybmFsLmgiCisjaW1wb3J0ICJXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2ltcG9ydCAiX1dLU2NyaXB0V29ybGQuaCIK
KyNpbXBvcnQgPFdlYkNvcmUvVXNlclNjcmlwdC5oPgogCi1AaW1wbGVtZW50YXRpb24gV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIKK0BpbXBsZW1lbnRhdGlvbiBXS1VzZXJDb250ZW50Q29udHJvbGxl
ciB7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfdXNlclNjcmlwdHM7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgPSBX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKKyAgICBfdXNl
clNjcmlwdHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKworICAg
IHJldHVybiBzZWxmOworfQorCistIChOU0FycmF5ICopdXNlclNjcmlwdHMKK3sKKyAgICByZXR1
cm4gX3VzZXJTY3JpcHRzLmdldCgpOworfQorCitzdGF0aWMgV2ViQ29yZTo6VXNlclNjcmlwdElu
amVjdGlvblRpbWUgdG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoV0tVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQoreworICAgIHN3aXRjaCAoaW5qZWN0aW9uVGlt
ZSkgeworICAgIGNhc2UgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydDoK
KyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsKKworICAgIGNh
c2UgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQ6CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOworICAgIH0KKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOworfQor
CistICh2b2lkKWFkZFVzZXJTY3JpcHQ6KFdLVXNlclNjcmlwdCAqKXVzZXJTY3JpcHQKK3sKKyAg
ICBbX3VzZXJTY3JpcHRzIGFkZE9iamVjdDp1c2VyU2NyaXB0XTsKKworICAgIF91c2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdXNl
clNjcmlwdC0+X3NvdXJjZS5nZXQoKSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgeyB9LCB7IH0sIHRv
V2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKHVzZXJTY3JpcHQtPl9pbmplY3Rpb25UaW1l
KSwgdXNlclNjcmlwdC0+X2Zvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZy
YW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0pOworfQorCistICh2b2lkKXJl
bW92ZUFsbFVzZXJTY3JpcHRzCit7CisgICAgW191c2VyU2NyaXB0cyByZW1vdmVBbGxPYmplY3Rz
XTsKKworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlclNjcmlw
dHMoKTsKK30KIAogLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0
TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFt
ZQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NGQ4NzNjMDg0OGI2M2IyY2E5ZGZlZjVkOWRjNzczYWNhZjBlOWFjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJv
bGxlckludGVybmFsLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldL
VXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwor
I2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OworfQorCitAaW50ZXJmYWNlIFdLVXNlckNvbnRlbnRD
b250cm9sbGVyICgpIHsKK0BwYWNrYWdlCisgICAgUmVmUHRyPFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk+IF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKK30KK0BlbmQK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlclNjcmlwdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJTY3JpcHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWQwYjMwYTRlMGVhZjUyMWRkNWFiM2UyMDA4ZTA1M2Q3
MTc5N2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJTY3JpcHQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKy8qISBAZW51bSBXS1VzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lCisgQGFic3RyYWN0IHdoZW4gYSB1c2VyIHNjcmlwdCBzaG91bGQgYmUgaW5qZWN0
ZWQgaW50byBhIHdlYiBwYWdlLgorIEBjb25zdGFudCBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
QXREb2N1bWVudFN0YXJ0ICAgIEluamVjdCB0aGUgc2NyaXB0IGFmdGVyIHRoZSBkb2N1bWVudCBl
bGVtZW50IGhhcyBiZWVuIGNyZWF0ZWQsIGJ1dCBiZWZvcmUgYW55IG90aGVyIGNvbnRlbnQgaGFz
IGJlZW4gbG9hZGVkLgorIEBjb25zdGFudCBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1
bWVudEVuZCAgICAgIEluamVjdCB0aGUgc2NyaXB0IGFmdGVyIHRoZSBkb2N1bWVudCBoYXMgZmlu
aXNoZWQgbG9hZGluZywgYnV0IGJlZm9yZSBhbnkgc3VicmVzb3VyY2VzIG1heSBoYXZlIGZpbmlz
aGVkIGxvYWRpbmcuCisgKi8KK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLVXNlclNjcmlw
dEluamVjdGlvblRpbWUpIHsKKyAgICBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVu
dFN0YXJ0LAorICAgIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kCit9IFdL
X0VOVU1fQVZBSUxBQkxFKDEwXzEwLCA4XzApOworCisvKiEgQSBAbGluayBXS1VzZXJTY3JpcHQg
QC9saW5rIG9iamVjdCByZXByZXNlbnRzIGEgc2NyaXB0IHRoYXQgY2FuIGJlIGluamVjdGVkIGlu
dG8gd2ViIHBhZ2VzLgorICovCitXS19DTEFTU19BVkFJTEFCTEUoMTBfMTAsIDhfMCkKK0BpbnRl
cmZhY2UgV0tVc2VyU2NyaXB0IDogTlNPYmplY3QgPE5TQ29weWluZz4KKworLyohIEBhYnN0cmFj
dCBSZXR1cm5zIGFuIGluaXRpYWxpemVkIHVzZXIgc2NyaXB0IHRoYXQgY2FuIGJlIGFkZGVkIHRv
IGEgQGxpbmsgV0tVc2VyQ29udGVudENvbnRyb2xsZXIgQC9saW5rLgorIEBwYXJhbSBzb3VyY2Ug
VGhlIHNjcmlwdCBzb3VyY2UuCisgQHBhcmFtIGluamVjdGlvblRpbWUgV2hlbiB0aGUgc2NyaXB0
IHNob3VsZCBiZSBpbmplY3RlZC4KKyBAcGFyYW0gZm9yTWFpbkZyYW1lT25seSBXaGV0aGVyIHRo
ZSBzY3JpcHQgc2hvdWxkIGJlIGluamVjdGVkIGludG8gYWxsIGZyYW1lcyBvciBqdXN0IHRoZSBt
YWluIGZyYW1lLgorICovCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5n
ICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUpaW5qZWN0
aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHk7CisKKy8qIEBh
YnN0cmFjdCBUaGUgc2NyaXB0IHNvdXJjZSBjb2RlLiAqLworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU1N0cmluZyAqc291cmNlOworCisvKiBAYWJzdHJhY3QgV2hlbiB0aGUgc2Ny
aXB0IHNob3VsZCBiZSBpbmplY3RlZC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lOworCisvKiBAYWJzdHJh
Y3QgV2hldGhlciB0aGUgc2NyaXB0IHNob3VsZCBiZSBpbmplY3RlZCBpbnRvIGFsbCBmcmFtZXMg
b3IganVzdCB0aGUgbWFpbiBmcmFtZS4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSwgZ2V0dGVyPWlzRm9yTWFpbkZyYW1lT25seSkgQk9PTCBmb3JNYWluRnJhbWVPbmx5OworCitA
ZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlclNjcmlwdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWU5MjYwM2Y3YWNlMmFiMzkyZTgwNjk4ZjNm
M2FiYTMzZWE3M2E1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tVc2VyU2NyaXB0SW50ZXJuYWwuaCIKKwor
I2lmIFdLX0FQSV9FTkFCTEVECisKK0BpbXBsZW1lbnRhdGlvbiBXS1VzZXJTY3JpcHQKKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25U
aW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1l
T25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfc291cmNlID0gYWRvcHROUyhbc291
cmNlIGNvcHldKTsKKyAgICBfaW5qZWN0aW9uVGltZSA9IGluamVjdGlvblRpbWU7CisgICAgX2Zv
ck1haW5GcmFtZU9ubHkgPSBmb3JNYWluRnJhbWVPbmx5OworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKE5TU3RyaW5nICopc291cmNlCit7CisgICAgcmV0dXJuIF9zb3VyY2UuZ2V0KCk7Cit9
CisKKy0gKFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGltZQoreworICAgIHJl
dHVybiBfaW5qZWN0aW9uVGltZTsKK30KKworLSAoQk9PTClpc0Zvck1haW5GcmFtZU9ubHkKK3sK
KyAgICByZXR1cm4gX2Zvck1haW5GcmFtZU9ubHk7Cit9CisKKy0gKGlkKWNvcHlXaXRoWm9uZToo
TlNab25lICopem9uZQoreworICAgIHJldHVybiBbc2VsZiByZXRhaW5dOworfQorCitAZW5kCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJTY3JpcHRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJTY3JpcHRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NmU3ZDcxODhlYjQzOGRhNWEw
NDQyYTA0NzI3ZTU4NjY4MGNiMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdEludGVybmFsLmgKQEAgLTAsMCArMSw0MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgIldLVXNlclNjcmlwdC5oIgorCisjaWYgV0tfQVBJX0VO
QUJMRUQKKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIFdLVXNlclNj
cmlwdCAoKSB7CitAcGFja2FnZQorICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3NvdXJjZTsKKyAg
ICBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIF9pbmplY3Rpb25UaW1lOworICAgIEJPT0wgX2Zv
ck1haW5GcmFtZU9ubHk7Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGNiOGM4NTRiZGIzNzc3ZTFj
MzAyMTdmZjhhOTY5YTI0MTE4YWIxODAuLjRhZmUwYTcyMzNjYzlmY2FmYWY2ZDNjM2Y1OGMzYmQ3
NGM1ODgwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC00OCw3ICs0OCw3IEBACiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tVSURl
bGVnYXRlLmgiCi0jaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2ltcG9ydCAi
V0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIu
aCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMTc4LDYgKzE3OCw3IEBACiAg
ICAgaWYgKFdLV2ViVmlldyAqcmVsYXRlZFdlYlZpZXcgPSBbX2NvbmZpZ3VyYXRpb24gX3JlbGF0
ZWRXZWJWaWV3XSkKICAgICAgICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSBy
ZWxhdGVkV2ViVmlldy0+X3BhZ2UuZ2V0KCk7CiAKKyAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi51
c2VyQ29udGVudENvbnRyb2xsZXIgPSBbX2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXS0+X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmdldCgpOwogICAgIHdlYlBhZ2VDb25m
aWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBbX2NvbmZpZ3VyYXRpb24gX3Zpc2l0ZWRM
aW5rUHJvdmlkZXJdLT5fdmlzaXRlZExpbmtQcm92aWRlci5nZXQoKTsKICAgICB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi5zZXNzaW9uID0gW19jb25maWd1cmF0aW9uIF93ZWJzaXRlRGF0YVN0b3JlXS0+
X3Nlc3Npb24uZ2V0KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MDViMTM0NmE2ZDQ1OTgwMjhlNzE0ODFmZjZmYTkwMWQ1Y2Rj
ZmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtMCwwICsxLDg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmgiCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCit7CisgICAgc3Rh
dGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CisKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQor
CitQYXNzUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KTsKK30KKworV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKKyAgICA6IG1faWRlbnRp
ZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKK3sKK30KKworV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpCit7Cit9CisKK3ZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHkpCit7CisgICAgQVNTRVJUKHdlYlByb2Nlc3NQcm94eS5zdGF0ZSgp
ID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpOworCisgICAgaWYgKCFtX3Byb2Nl
c3Nlcy5hZGQoJndlYlByb2Nlc3NQcm94eSkuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgd2ViUHJvY2Vzc1Byb3h5LmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyhtX3VzZXJTY3JpcHRzKSwgbV9pZGVu
dGlmaWVyKTsKK30KKwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKK3sKKyAgICBBU1NFUlQo
bV9wcm9jZXNzZXMuY29udGFpbnMoJndlYlByb2Nlc3NQcm94eSkpOworCisgICAgbV9wcm9jZXNz
ZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJveHkpOworfQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlw
dCkKK3sKKyAgICBtX3VzZXJTY3JpcHRzLmFwcGVuZChzdGQ6Om1vdmUodXNlclNjcmlwdCkpOwor
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzQW5kQ291bnQgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAg
cHJvY2Vzc0FuZENvdW50LmtleS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRzKHsgbV91c2VyU2NyaXB0cy5sYXN0KCkg
fSksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKK3sKKyAgICBtX3VzZXJTY3JpcHRzLmNsZWFyKCk7
CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1fcHJvY2Vzc2VzKQorICAgICAg
ICBwcm9jZXNzQW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoKSwgbV9pZGVudGlmaWVy
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZDY2NTk2NzgxOTQ4NWM3NDhmMzcwNjY2YmI4ZTc4
MDc0MTM1N2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eV9oCisj
ZGVmaW5lIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5X2gKKworI2luY2x1ZGUgPHd0Zi9I
YXNoQ291bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVXNlclNjcmlw
dDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsKKwor
Y2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4geworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBjcmVhdGUoKTsKKyAg
ICB+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKKworICAgIHVpbnQ2NF90IGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgYWRkUHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lkIHJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5Jik7CisKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCk7
CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cygpOworCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCk7CisKKyAgICB1aW50NjRfdCBtX2lk
ZW50aWZpZXI7CisgICAgSGFzaENvdW50ZWRTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNz
ZXM7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6VXNlclNjcmlwdD4gbV91c2VyU2NyaXB0czsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCAwODc1ZmU5ODk1NTE5MjJlN2E1YzA0NmIyN2FjYmMwMmJkODg5ZDBkLi5hYmM4YmY2NTI2
Y2FhMzc0ODBkOTc2OThlYTcxMmI2MDEzNTNmZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgIldl
YlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC0yNjMs
NiArMjY0LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNs
aWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1fcHJvY2Vzcyhwcm9j
ZXNzKQogICAgICwgbV9wYWdlR3JvdXAoKmNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwKQogICAgICwg
bV9wcmVmZXJlbmNlcygqY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcykKKyAgICAsIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyKGNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyKQogICAg
ICwgbV92aXNpdGVkTGlua1Byb3ZpZGVyKCpjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlk
ZXIpCiAgICAgLCBtX21haW5GcmFtZShudWxscHRyKQogICAgICwgbV91c2VyQWdlbnQoc3RhbmRh
cmRVc2VyQWdlbnQoKSkKQEAgLTM1OCw4ICszNjAsMTEgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1
aW4KICAgICAsIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yKERvTm90UGluKQogICAgICwgbV9uYXZp
Z2F0aW9uSUQoMCkKIHsKLSAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQ
cm94eTo6U3RhdGU6OlJ1bm5pbmcpCisgICAgaWYgKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQ
cm9jZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIGlmIChtX3VzZXJDb250ZW50
Q29udHJvbGxlcikKKyAgICAgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRQcm9j
ZXNzKG1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgICAgIG1fdmlzaXRlZExpbmtQcm92aWRlci0+YWRk
UHJvY2VzcyhtX3Byb2Nlc3MuZ2V0KCkpOworICAgIH0KIAogICAgIHVwZGF0ZVZpZXdTdGF0ZSgp
OwogICAgIHVwZGF0ZUFjdGl2aXR5VG9rZW4oKTsKQEAgLTYxOCw4ICs2MjMsMTEgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwogCi0gICAgaWYg
KG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nKQor
ICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVu
bmluZykgeworICAgICAgICBpZiAobV91c2VyQ29udGVudENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlUHJvY2VzcyhtX3Byb2Nlc3MuZ2V0KCkp
OwogICAgICAgICBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXItPnJlbW92ZVByb2Nlc3MobV9wcm9jZXNz
LmdldCgpKTsKKyAgICB9CiAKICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+cGFnZUNsb3NlZCgpOwog
ICAgIG1fcGFnZUNsaWVudC5wYWdlQ2xvc2VkKCk7CkBAIC0yODk4LDYgKzI5MDYsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y29ubmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiogY29ubmVj
dGlvbikKIHsKICAgICBBU1NFUlQoY29ubmVjdGlvbiA9PSBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24o
KSk7CiAKKyAgICBpZiAobV91c2VyQ29udGVudENvbnRyb2xsZXIpCisgICAgICAgIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyLT5hZGRQcm9jZXNzKG1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgbV92aXNp
dGVkTGlua1Byb3ZpZGVyLT5hZGRQcm9jZXNzKG1fcHJvY2Vzcy5nZXQoKSk7CiAKICAgICBtX3By
b2Nlc3MtPmNvbnRleHQoKS5zdG9yYWdlTWFuYWdlcigpLnNldEFsbG93ZWRTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZUNvbm5lY3Rpb24obV9wYWdlSUQsIGNvbm5lY3Rpb24pOwpAQCAtNDE5OCw4ICs0
MjA4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVk
KCkKICAgICAvLyBGSVhNRTogSXQncyB3ZWlyZCB0aGF0IHJlc2V0U3RhdGVBZnRlclByb2Nlc3NF
eGl0ZWQoKSBpcyBjYWxsZWQgZXZlbiB0aG91Z2ggdGhlIHByb2Nlc3MgaXMgbGF1bmNoaW5nLgog
ICAgIEFTU0VSVChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6
TGF1bmNoaW5nIHx8IG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRl
OjpUZXJtaW5hdGVkKTsKIAotICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vz
c1Byb3h5OjpTdGF0ZTo6VGVybWluYXRlZCkKKyAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgpID09
IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0ZWQpIHsKKyAgICAgICAgaWYgKG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyKQorICAgICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXIt
PnJlbW92ZVByb2Nlc3MobV9wcm9jZXNzLmdldCgpKTsKICAgICAgICAgbV92aXNpdGVkTGlua1By
b3ZpZGVyLT5yZW1vdmVQcm9jZXNzKG1fcHJvY2Vzcy5nZXQoKSk7CisgICAgfQogCiAgICAgbV9w
cm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAKQEAgLTQyNjgsNiArNDI4MSw3IEBAIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMo
KQogICAgIHBhcmFtZXRlcnMuc2Vzc2lvblN0YXRlID0gU2Vzc2lvblN0YXRlKG1fYmFja0Zvcndh
cmRMaXN0LT5lbnRyaWVzKCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SW5kZXgoKSk7CiAg
ICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSBtX3Nlc3Npb24tPmdldElEKCk7CiAgICAgcGFyYW1l
dGVycy5oaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEID0gV2ViQmFja0ZvcndhcmRMaXN0SXRl
bTo6aGlnaGVkVXNlZEl0ZW1JRCgpOworICAgIHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9s
bGVySUQgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlciA/IG1fdXNlckNvbnRlbnRDb250cm9sbGVy
LT5pZGVudGlmaWVyKCkgOiAwOwogICAgIHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEID0g
bV92aXNpdGVkTGlua1Byb3ZpZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgcGFyYW1ldGVycy5jYW5S
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgPSBtX3VpQ2xpZW50LT5jYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoKTsKICAgICBwYXJhbWV0ZXJzLmNhblJ1bk1vZGFsID0gbV9jYW5SdW5N
b2RhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyOTM2YTZm
MTM2ODE2NDg3ZjM2ZTZjYmYyYzFkMjU5N2JkOGQ0ODFlLi44YTEyMzZjNjgyMjc3MGI5ZmI5MWY3
Njg5Mjk3ODgxZTkzMWYwOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xNjMsNiArMTYzLDcgQEAgY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBX
ZWJQcm9jZXNzUHJveHk7CitjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNs
YXNzIFdlYldoZWVsRXZlbnQ7CiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0cnVjdCBDb2xv
clNwYWNlRGF0YTsKQEAgLTQyNyw3ICs0MjgsOSBAQCBwcml2YXRlOgogc3RydWN0IFdlYlBhZ2VD
b25maWd1cmF0aW9uIHsKICAgICBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCA9IG51bGxwdHI7CiAg
ICAgV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzID0gbnVsbHB0cjsKKyAgICBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyID0gbnVsbHB0cjsKICAg
ICBWaXNpdGVkTGlua1Byb3ZpZGVyKiB2aXNpdGVkTGlua1Byb3ZpZGVyID0gbnVsbHB0cjsKKwog
ICAgIEFQSTo6U2Vzc2lvbiogc2Vzc2lvbiA9IG51bGxwdHI7CiAgICAgV2ViUGFnZVByb3h5KiBy
ZWxhdGVkUGFnZSA9IG51bGxwdHI7CiB9OwpAQCAtMTQ1NCw2ICsxNDU3LDcgQEAgcHJpdmF0ZToK
ICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CiAgICAgUmVmPFdlYlBhZ2VHcm91
cD4gbV9wYWdlR3JvdXA7CiAgICAgUmVmPFdlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOwor
ICAgIGNvbnN0IFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29u
dGVudENvbnRyb2xsZXI7CiAgICAgUmVmPFZpc2l0ZWRMaW5rUHJvdmlkZXI+IG1fdmlzaXRlZExp
bmtQcm92aWRlcjsKIAogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX21haW5GcmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4NGQzZjhhYzZmMTg2OGFhZWEyNTliNTU3NDU2OWU3MmEzZTk0OWI1Li5hNmNmODZhMTFlNWM1
NjE0ZGQzNTM1ZDJiNzY2OTVhMTI3Njc5MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMTksNiArMzE5LDE2IEBACiAJCTFB
QUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFCNEE4QzEyOTZGMEEyMDAyMzk1
MkYgLyogU2FuZGJveEV4dGVuc2lvbi5oICovOyB9OwogCQkxQUFCNEFBQTEyOTZGMTU0MDAyMzk1
MkYgLyogU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUI0QUE5MTI5NkYxNTQwMDIzOTUyRiAvKiBTYW5kYm94RXh0
ZW5zaW9uTWFjLm1tICovOyB9OwogCQkxQUFCRkUzQTE4MjlDMUVEMDA1QjA3MEUgLyogX1dLUmVt
b3RlT2JqZWN0SW50ZXJmYWNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUJGRTM5MTgyOUMxRUQwMDVCMDcwRSAvKiBfV0tSZW1vdGVP
YmplY3RJbnRlcmZhY2VJbnRlcm5hbC5oICovOyB9OworCQkxQUFGMDg5QTE5MjY3RUU1MDBCNjM5
MEMgLyogV0tVc2VyU2NyaXB0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBRjA4OTgxOTI2N0VFNTAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdC5tbSAq
LzsgfTsKKwkJMUFBRjA4OUIxOTI2N0VFNTAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBRjA4OTkxOTI2N0VF
NTAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFB1YmxpYywgKTsgfTsgfTsKKwkJMUFBRjA4OUQxOTI2N0ZDODAwQjYzOTBDIC8qIFdLVXNlclNj
cmlwdEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUFGMDg5QzE5MjY3RkM4MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0SW50ZXJuYWwuaCAq
LzsgfTsKKwkJMUFBRjA4QTExOTI2ODFEMTAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQUYwODlGMTkyNjgxRDEwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5jcHAgKi87IH07CisJCTFBQUYwOEEyMTkyNjgxRDEwMEI2MzkwQyAvKiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBRjA4QTAxOTI2ODFEMTAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmggKi87IH07CisJCTFBQUYwOEE0MTkyNjgyREEwMEI2MzkwQyAvKiBXS1Vz
ZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFGMDhBMzE5MjY4MkRBMDBCNjM5MEMgLyogV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJJbnRlcm5hbC5oICovOyB9OworCQkxQUFGMDhBRDE5MjY5MzY3MDBCNjM5
MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUYwOEFCMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwICovOyB9OworCQkxQUFGMDhBRTE5MjY5MzY3MDBCNjM5
MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFGMDhBQzE5MjY5MzY3MDBCNjM5MEMgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmggKi87IH07CisJCTFBQUYwOEI3MTkyNjlFNkQwMEI2MzkwQyAv
KiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBRjA4QjUxOTI2OUU2RDAwQjYz
OTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07
CisJCTFBQUYwOEI4MTkyNjlFNkQwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFBRjA4QjYxOTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3Nh
Z2VzLmggKi87IH07CiAJCTFBQUYwQzRBMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVy
c0NGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFG
MEM0ODEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5oICovOyB9OwogCQkxQUFG
MEM0QjEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFGMEM0OTEyQjE2MzM0MDA4RTQ5
RTIgLyogQXJndW1lbnRDb2RlcnNDRi5jcHAgKi87IH07CiAJCTFBQUYyNjM4MTQ2ODdDMzkwMDRB
MUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4QSAv
KiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAqLzsgfTsKQEAgLTIyMTgsNiArMjIy
OCwxNyBAQAogCQkxQUFCNEFBOTEyOTZGMTU0MDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbk1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbmRib3hFeHRl
bnNpb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQUJGRTM5MTgyOUMx
RUQwMDVCMDcwRSAvKiBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUFERTZGRTEwRDg1NUZDMDBEM0Q2
M0QgLyogQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7
IH07CisJCTFBQUYwODk4MTkyNjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1VzZXJTY3JpcHQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQUYwODk5MTkyNjdFRTUwMEI2MzkwQyAvKiBXS1Vz
ZXJTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyU2NyaXB0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQUYwODlDMTkyNjdGQzgwMEI2Mzkw
QyAvKiBXS1VzZXJTY3JpcHRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1VzZXJTY3JpcHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQUFGMDg5RjE5MjY4MUQxMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUFG
MDhBMDE5MjY4MUQxMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFBRjA4QTMxOTI2ODJEQTAw
QjYzOTBDIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUFGMDhBQjE5MjY5MzY3MDBCNjM5MEMgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFBQUYwOEFDMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQUYwOEI0MTky
NjlFMjQwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQUFGMDhCNTE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQUYwOEI2MTkyNjlFNkQwMEI2MzkwQyAvKiBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUFGMEM0ODEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRD
b2RlcnNDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudENvZGVy
c0NGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQUYwQzQ5MTJCMTYzMzQwMDhF
NDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2Rpbmcg
PSA0OyBwYXRoID0gQXJndW1lbnRDb2RlcnNDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDM5OSw2ICs0NDIwLDI1IEBACiAJCQlwYXRoID0gUGx1Z2luczsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCTFBQUYwODlFMTkyNjgxQUMwMEI2MzkwQyAvKiBVc2VyQ29u
dGVudCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUFB
RjA4OUYxOTI2ODFEMTAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cCAqLywKKwkJCQkxQUFGMDhBMDE5MjY4MUQxMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gVXNlckNvbnRlbnQ7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQUFGMDhBQTE5MjY5MzBCMDBCNjM5MEMgLyog
VXNlckNvbnRlbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTFBQUYwOEFCMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwICovLAorCQkJCTFBQUYwOEFDMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuaCAqLywKKwkJCQkxQUFGMDhCNDE5MjY5RTI0MDBCNjM5MEMgLyogV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBVc2VyQ29u
dGVudDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTFBQUYwQzQ3MTJCMTYz
MjgwMDhFNDlFMiAvKiBjZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC00ODY0LDcgKzQ5MDQsMTEgQEAKIAkJCQkzNzQzOTI1NzE4QkM0QzYwMDAxQzg2NzUg
LyogV0tVSURlbGVnYXRlUHJpdmF0ZS5oICovLAogCQkJCTFBRkEzQUM3MThFNjFDNjEwMDNDQ0JB
RSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlci5oICovLAogCQkJCTFBRkEzQUM2MThFNjFDNjEw
MDNDQ0JBRSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSAqLywKKwkJCQkxQUFGMDhBMzE5
MjY4MkRBMDBCNjM5MEMgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oICovLAog
CQkJCTdDQzk5QTMzMThFRjdCMTIwMDQ4QzhCNCAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclBy
aXZhdGUuaCAqLywKKwkJCQkxQUFGMDg5OTE5MjY3RUU1MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0
LmggKi8sCisJCQkJMUFBRjA4OTgxOTI2N0VFNTAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdC5tbSAq
LywKKwkJCQkxQUFGMDg5QzE5MjY3RkM4MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0SW50ZXJuYWwu
aCAqLywKIAkJCQkxQTNDQzE2NTE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggKi8sCiAJ
CQkJMUEzQ0MxNjQxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5tbSAqLywKIAkJCQkxQURG
NTkxOTE4OTA1MjhFMDA0M0MxNDUgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oICovLApAQCAt
NTQxMyw2ICs1NDU3LDcgQEAKIAkJCQkzMzM2NzYyQjEzMEM5OTc4MDA2QzlERTIgLyogUmVzb3Vy
Y2VDYWNoZSAqLywKIAkJCQkwRjU5NDc4QzE4N0IzQjJBMDA0Mzc4NTcgLyogU2Nyb2xsaW5nICov
LAogCQkJCTFBQUM0RERFMTZCMUNCRjYwMDk0MjVFMyAvKiBTdG9yYWdlICovLAorCQkJCTFBQUYw
OEFBMTkyNjkzMEIwMEI2MzkwQyAvKiBVc2VyQ29udGVudCAqLywKIAkJCQlCQzAzMkQ1RDEwRjQz
NzIyMDA1OEMxNUEgLyogV2ViQ29yZVN1cHBvcnQgKi8sCiAJCQkJQkMwMzJENUUxMEY0MzcyQjAw
NThDMTVBIC8qIFdlYlBhZ2UgKi8sCiAJCQkJQkNFOUMwQ0YxNDg1OTY1RDAwRTMzRDYxIC8qIFdl
YkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHAgKi8sCkBAIC01NTUxLDYgKzU1OTYsNyBAQAogCQkJ
CTFBRUZDQzA1MTFEMDFGMzQwMDgyMTlEMyAvKiBQbHVnaW5zICovLAogCQkJCTBGNTk0NzkzMTg3
QjNCNEMwMDQzNzg1NyAvKiBTY3JvbGxpbmcgKi8sCiAJCQkJMUE0NEI5NTgxNkI3M0Y4QzAwQjdC
QkQ4IC8qIFN0b3JhZ2UgKi8sCisJCQkJMUFBRjA4OUUxOTI2ODFBQzAwQjYzOTBDIC8qIFVzZXJD
b250ZW50ICovLAogCQkJCTFBRTUyRjhGMTkyMDFEQTcwMEExRkEzNyAvKiBBUElDb250ZXh0Q29u
ZmlndXJhdGlvbi5jcHAgKi8sCiAJCQkJMUFFNTJGOTAxOTIwMURBNzAwQTFGQTM3IC8qIEFQSUNv
bnRleHRDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJQkNGNjlGQTExMTc2RDAxNDAwNDcxQTUyIC8q
IEFQSU5hdmlnYXRpb25EYXRhLmNwcCAqLywKQEAgLTY1MDcsNiArNjU1Myw4IEBACiAJCUMwQ0U3
MjlEMTI0N0U3MUQwMEJDMEVDNCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFBQUYwOEI1MTkyNjlFNkQwMEI2MzkwQyAv
KiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTFB
QUYwOEI2MTkyNjlFNkQwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdl
cy5oICovLAogCQkJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQzE4QkQyQTY4
MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJ
CQkJNTEyRjU4QTAxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC02OTM2LDYgKzY5ODQsNyBAQAogCQkJCTFBNzlEOUYyMThF
QjVFRjEwMDkxNENDNSAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMUUwOTM0MTg4NjFEMzgwMEQyREM0OSAvKiBXZWJQcm9ncmVzc1RyYWNr
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQUYwOEFFMTkyNjkzNjcwMEI2MzkwQyAv
KiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjQ2OTcw
MTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCQ0Iw
Q0IxMjE1RTMyMTAwREU1OUNBIC8qIEltbXV0YWJsZURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMjA0RUUzMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC03MzQ2LDYgKzczOTUsNyBAQAogCQkJCTM3NjA4ODFGMTUwNDEzRTkwMEZD
ODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMjE3NDY1MTY0
QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzMzNjc2MzAxMzBDOTk5ODAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxQUFGMDg5QjE5MjY3RUU1MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzM2NzY1NjEzMEM5RUNBMDA2QzlERTIgLyogV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBOTQ0QTQx
ODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMz
Njc2MzYxMzBDOTlCMjAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuaCBp
biBIZWFkZXJzICovLApAQCAtNzM1Myw2ICs3NDAzLDcgQEAKIAkJCQkwRjkzMUMxQzE4QzU3MTE5
MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9h
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFBRjA4QTQxOTI2
ODJEQTAwQjYzOTBDIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1l
bnUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQjAwQUM5MTg1Rjc2NDYwMDE5MTQyRSAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5QYWdlR3JvdXBJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYz
NDQ0NTYxMkE4ODVDODAwMDYxMkQ4IC8qIFdlYlNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAq
LywKQEAgLTczOTQsNiArNzQ0NSw3IEBACiAJCQkJNTE3REQ1QkYxODBEQTdEMzAwODE2NjBCIC8q
IERhdGFiYXNlUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVFRUI5QjEyNzc2
MTdDMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUVGQzFDRjE1MjRFNjI1MDBDOUE5MzggLyogV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQUYwOEEyMTkyNjgxRDEwMEI2MzkwQyAvKiBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjVG
MTcxMUQ2QkRFMTAwMTY5QjBFIC8qIFdLQnVuZGxlRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRjA0OUU2MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjkyMzJERjQxOEIyOUQ2ODAwRDA1OTZGIC8qIFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ0NSw2ICs3NDk3LDcgQEAK
IAkJCQlCQzVEMjRDMjE2Q0Q3MDZEMDA3RDU0NjEgLyogV0tET01Ob2RlUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFBQkZFM0ExODI5QzFFRDAwNUIwNzBFIC8qIF9XS1JlbW90ZU9iamVj
dEludGVyZmFjZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVEMjRDNTE2Q0Q3MDg4
MDA3RDU0NjEgLyogV0tET01SYW5nZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQUYw
ODlEMTkyNjdGQzgwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE5RTMyOEQxODIxNjVBOTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdEludGVy
ZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyOTA5OTMxODNBQ0VBRjAwNTUyMkE2IC8qIFdl
YklEQlNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3MEYzNEEzMTgyOUJF
MUUwMDkwMjdDOCAvKiBXS05hdmlnYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTc1MjQs
NiArNzU3Nyw3IEBACiAJCQkJMzMzNjc2M0IxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEE1MDE1MTE3NjVGNTYwMDc1NzU3
MyAvKiBXS1JldGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYzNDQ0NUQxMkE4ODVFOTAw
MDYxMkQ4IC8qIFdLU2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQUYwOEI4
MTkyNjlFNkQwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MDQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU0QzE4QkJFMDQ0MDAwRkNG
QzkgLyogV0tDb250ZW50Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdBNjRFNTcxOEYzOEY0
NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCBpbiBIZWFkZXJzICovLApAQCAtODU0
MCw2ICs4NTk0LDcgQEAKIAkJCQkxQTkxMDA3MjEyNjY3NUM0MDAxODQyRjUgLyogRmluZEluZGlj
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U4MUQ4QzEzMTlGN0VGMDAyNDE5MTAgLyog
Rm9udEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc4RTFBNDkxODIwOENENjAwMzEwMDdB
IC8qIFdLTlNTdHJpbmcubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQUFGMDhCNzE5MjY5RTZEMDBC
NjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBRDAxQkNDMTkwNUQ1NDkwMEM5QzQ1RiAvKiBXS1JlbG9hZEZyYW1l
RXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1NUNCNUI4MThD
MkE1RDYwMENBODFFMSAvKiBXS0Zvcm1TZWxlY3RQaWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlCQzA2RjQzMDEyREJCOUI2MDAyRDc4REUgLyogR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04NjQwLDYgKzg2OTUsNyBAQAogCQkJCTFB
RTQ5NzY5MTFGRjY1OEUwMDQ4QjQ2NCAvKiBOUEpTT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBMkQ4MkE0MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEODQzOTEyN0Y2NUQ1MDAxRUI5NjIgLyogTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUFBRjA4QUQxOTI2OTM2NzAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTJEODJBNjEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQ
cm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEODJBODEyN0Y0RUFCMDAxRUI5NjIgLyog
TlBSZW1vdGVPYmplY3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYxQjExMUYzNzY2
NDAwOEFEMEY1IC8qIE5QUnVudGltZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg5
NTcsNiArOTAxMyw3IEBACiAJCQkJQkM1NzQ0RUYxMjYzOEZCMzAwNkYwRjEyIC8qIFdlYlBvcHVw
SXRlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMUMxRDE4QzU3MTE5MDBEQkE3QzMgLyog
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUQzQjk0ODQ2MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMUFBRjA4QTExOTI2ODFEMTAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzQzQUM3MTI3Qjk5REUwMDMx
N0YxNiAvKiBXZWJQb3B1cE1lbnVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzU3NTA5ODEy
NjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQ0Q1OTgwMDExMkI1N0JFMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXMuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC05MDgxLDYgKzkxMzgsNyBAQAogCQkJCUJDRDAxMzlDMTEwRkE0MjAwMDNC
OEE2NyAvKiBXS0ZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjlGNkE2MTEyM0REMEQw
MEExMzdFMCAvKiBXS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTFBRUEyMzAxNDY4N0JEQjAwODA0NTY5IC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTFBQUYwODlBMTkyNjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJT
Y3JpcHQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRENBODVDODEzMkFCQTRFMDBFOTYxREYgLyog
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRTAw
RDZCMTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM1NENDMTMxMkQ2NzRFRTAwNUM2N0IwIC8qIFdLR2VvbG9jYXRpb25NYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCAyNDdmOWU3ZDkzOGJi
ZWNhNDQwN2M2NDk5MjBhZTRlZWM5ZWM4OGM1Li5lNjBiMmRmOTI5NjhkZWViZDg1MzIwYTZkYWQ0
MWZkZjI0MzEzMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2
b2lkIFdLQnVuZGxlU2V0QWx3YXlzQWNjZXB0Q29va2llcyhXS0J1bmRsZVJlZiBidW5kbGVSZWYs
IGJvb2wgYWNjZXB0KQogICAgIHRvSW1wbChidW5kbGVSZWYpLT5zZXRBbHdheXNBY2NlcHRDb29r
aWVzKGFjY2VwdCk7CiB9CiAKLXZvaWQgV0tCdW5kbGVBZGRVc2VyU2NyaXB0KFdLQnVuZGxlUmVm
IGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS0J1bmRsZVNj
cmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmLCBXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIFdLVVJM
UmVmIHVybFJlZiwgV0tBcnJheVJlZiB3aGl0ZWxpc3RSZWYsIFdLQXJyYXlSZWYgYmxhY2tsaXN0
UmVmLCBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWVSZWYsIFdLVXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lc1JlZikKK3ZvaWQgV0tCdW5kbGVBZGRV
c2VyU2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmLCBXS1N0cmlu
Z1JlZiBzb3VyY2VSZWYsIFdLVVJMUmVmIHVybFJlZiwgV0tBcnJheVJlZiB3aGl0ZWxpc3RSZWYs
IFdLQXJyYXlSZWYgYmxhY2tsaXN0UmVmLCBfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmpl
Y3Rpb25UaW1lUmVmLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXNS
ZWYpCiB7CiAgICAgdG9JbXBsKGJ1bmRsZVJlZiktPmFkZFVzZXJTY3JpcHQodG9JbXBsKHBhZ2VH
cm91cFJlZiksIHRvSW1wbChzY3JpcHRXb3JsZFJlZiksIHRvV1RGU3RyaW5nKHNvdXJjZVJlZiks
IHRvV1RGU3RyaW5nKHVybFJlZiksIHRvSW1wbCh3aGl0ZWxpc3RSZWYpLCB0b0ltcGwoYmxhY2ts
aXN0UmVmKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lUmVmKSwgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzUmVmKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVByaXZhdGUuaAppbmRleCBlM2JlNTZlYThhYmE5MzBkMTg2OTJjMTgyYTM0
NGQxMzJmMWMzNzUyLi45MDBjOGNiMzdiY2I5OTQ0Y2M0NjU1NzUyNWUxOWZlMDA2M2M4YWEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKQEAgLTcyLDcgKzcyLDcgQEAgV0tfRVhQ
T1JUIFdLRGF0YVJlZiBXS0J1bmRsZUNyZWF0ZVdLRGF0YUZyb21VSW50OEFycmF5KFdLQnVuZGxl
UmVmIGJ1bmRsZSwgSlNDb24KIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0QXN5bmNocm9ub3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYsIGJvb2wgZW5hYmxlZCk7CiAKIC8vIFVzZXJDb250ZW50IEFQ
SQotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVBZGRVc2VyU2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
IHNjcmlwdFdvcmxkLCBXS1N0cmluZ1JlZiBzb3VyY2UsIFdLVVJMUmVmIHVybCwgV0tBcnJheVJl
ZiB3aGl0ZWxpc3QsIFdLQXJyYXlSZWYgYmxhY2tsaXN0LCBXS1VzZXJTY3JpcHRJbmplY3Rpb25U
aW1lIGluamVjdGlvblRpbWUsIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcyk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFdLQnVuZGxlU2NyaXB0V29y
bGRSZWYgc2NyaXB0V29ybGQsIFdLU3RyaW5nUmVmIHNvdXJjZSwgV0tVUkxSZWYgdXJsLCBXS0Fy
cmF5UmVmIHdoaXRlbGlzdCwgV0tBcnJheVJlZiBibGFja2xpc3QsIF9XS1VzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmpl
Y3RlZEZyYW1lcyk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUFkZFVzZXJTdHlsZVNoZWV0KFdL
QnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS0J1bmRs
ZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBXS1N0cmluZ1JlZiBzb3VyY2UsIFdLVVJMUmVm
IHVybCwgV0tBcnJheVJlZiB3aGl0ZWxpc3QsIFdLQXJyYXlSZWYgYmxhY2tsaXN0LCBXS1VzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpOwogV0tfRVhQT1JUIHZvaWQgV0tC
dW5kbGVSZW1vdmVVc2VyU2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBXS1VS
TFJlZiB1cmwpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU3R5bGVTaGVldChX
S0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tCdW5k
bGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCwgV0tVUkxSZWYgdXJsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODIzNjI5ZjFiNzA4OGJhZmIzMWYz
NzUyYTdiMDQ4MmVmMGE2Nzc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC0wLDAg
KzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0RPTVdyYXBwZXJXb3JsZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxl
ci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBIYXNoTWFwPHVpbnQ2NF90
LCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqPiYgdXNlckNvbnRlbnRDb250cm9sbGVycygpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcio+PiB1c2VyQ29udGVudENvbnRyb2xsZXJzOworCisgICAgcmV0dXJuIHVz
ZXJDb250ZW50Q29udHJvbGxlcnM7Cit9CisKK1Bhc3NSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpCit7CisgICAgYXV0byYgdXNlckNvbnRlbnRDb250cm9sbGVyUHRyID0gdXNlckNv
bnRlbnRDb250cm9sbGVycygpLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7CisgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlclB0cikKKyAgICAgICAgcmV0dXJuIHVz
ZXJDb250ZW50Q29udHJvbGxlclB0cjsKKworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIoaWRlbnRpZmllcikpOworICAgIHVzZXJDb250ZW50Q29udHJvbGxlclB0ciA9
IHVzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKTsKKworICAgIHJldHVybiB1c2VyQ29udGVudENv
bnRyb2xsZXIucmVsZWFzZSgpOworfQorCitXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIDogbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmNyZWF0ZSgpKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOworfQorCitXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKQoreworICAgIEFTU0VSVCh1
c2VyQ29udGVudENvbnRyb2xsZXJzKCkuY29udGFpbnMobV9pZGVudGlmaWVyKSk7CisKKyAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIp
OworCisgICAgdXNlckNvbnRlbnRDb250cm9sbGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwor
fQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdHMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+JiB1c2VyU2NyaXB0cykKK3sKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHVzZXJTY3JpcHQgOiB1c2VyU2NyaXB0cykKKyAgICAgICAgbV91c2VyQ29udGVu
dENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6VXNlclNjcmlwdD4odXNlclNjcmlwdCkpOworfQorCit2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQoreworICAg
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyU2NyaXB0cyhtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2JjNTg1NTQ1OTE1ZTc4NDJkMjk3ZjdkN2Q3ZmZk
MjE3N2ViMWY2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyX2gKKyNkZWZpbmUg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcj4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IGdldE9yQ3JlYXRl
KHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAgIHZpcnR1YWwgfldlYlVzZXJDb250ZW50Q29udHJv
bGxlcigpOworCisgICAgV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyKiB1c2VyQ29udGVu
dENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKTsgfQor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcih1aW50NjRf
dCBpZGVudGlmaWVyKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpVc2VyU2NyaXB0PiYgdXNlclNjcmlwdHMpOworICAgIHZvaWQgcmVtb3ZlQWxs
VXNlclNjcmlwdHMoKTsKKworcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV91c2VyQ29udGVudENv
bnRyb2xsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkZDM2NWE1ZTFiN2NhNzM4ZmFiYjAyMTc0NzA2
YjhjOTJiZDAyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyIHsKKyAgICBBZGRVc2VyU2NyaXB0cyhWZWN0b3I8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNl
clNjcmlwdHMpOworICAgIFJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4MTA3M2ViNTY2MWEzNGRi
NDM3NDg0MjZkMTk4YjcyMTZhZDRhOWFhLi44YjZmOTZlMWFkZDQzYWY4NmIxNmU0MGM4YjQ1MGIx
ODZmNzM2OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJVbmRvU3RlcC5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hp
dmVSZXNvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CkBAIC0yNzAsNiArMjcx
LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CiAgICAgLCBtX2FjdGl2ZUNvbG9yQ2hvb3NlcigwKQogI2VuZGlmCisgICAgLCBtX3VzZXJDb250
ZW50Q29udHJvbGxlcihwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEID8gV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29u
dHJvbGxlcklEKSA6IG51bGxwdHIpCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgICwgbV9n
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcih0aGlzKQogI2VuZGlmCkBAIC0zNDIs
NiArMzQ0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgcGFnZUNsaWVudHMubG9hZGVy
Q2xpZW50Rm9yTWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50OwogICAgIHBhZ2VD
bGllbnRzLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQoKnRoaXMpOwogCisgICAgcGFnZUNsaWVudHMudXNlckNvbnRlbnRDb250cm9sbGVyID0gbV91
c2VyQ29udGVudENvbnRyb2xsZXIgPyBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+dXNlckNvbnRl
bnRDb250cm9sbGVyKCkgOiBudWxscHRyOwogICAgIHBhZ2VDbGllbnRzLnZpc2l0ZWRMaW5rU3Rv
cmUgPSBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6Z2V0T3JDcmVhdGUocGFyYW1ldGVycy52
aXNpdGVkTGlua1RhYmxlSUQpOwogCiAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
PihwYWdlQ2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCBlMzVhZjJjYmJkZGIzZDc2ODdmMThmMjJmYzA4N2U5YjMyMzQzMDNmLi44ZTg2
YWFmYTNmOTFlNmNlODI3MDk4MTU1ODg1ZDZhYjljN2MzOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBjbGFzcyBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogY2xh
c3MgV2ViUG9wdXBNZW51OwogY2xhc3MgV2ViVW5kb1N0ZXA7CitjbGFzcyBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI7CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOwogY2xhc3MgV2Vi
V2hlZWxFdmVudDsKIHN0cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjsKQEAgLTExMzksNiAr
MTE0MCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
PiBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwogICAgIFJlZlB0cjxOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOwogCisgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV91c2Vy
Q29udGVudENvbnRyb2xsZXI7CisKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjsKICNlbmRpZgo=
</data>
<flag name="review"
          id="256052"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>