<?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>43290</bug_id>
          
          <creation_ts>2010-07-30 18:09:48 -0700</creation_ts>
          <short_desc>Add structured message passing from the injected bundle to UIProcess</short_desc>
          <delta_ts>2010-07-30 18:58:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>258502</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-30 18:09:48 -0700</bug_when>
    <thetext>Step 2 of structure message passing, the other direction!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258503</commentid>
    <comment_count>1</comment_count>
      <attachid>63132</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-30 18:12:01 -0700</bug_when>
    <thetext>Created attachment 63132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258508</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-30 18:16:48 -0700</bug_when>
    <thetext>Attachment 63132 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp:68:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebKit2/UIProcess/WebContext.cpp:74:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebKit2/UIProcess/WebContext.cpp:122:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebKit2/UIProcess/WebContext.cpp:370:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 4 in 23 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>258514</commentid>
    <comment_count>3</comment_count>
      <attachid>63132</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-30 18:55:27 -0700</bug_when>
    <thetext>Comment on attachment 63132
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258515</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-30 18:58:44 -0700</bug_when>
    <thetext>Landed in r64396.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63132</attachid>
            <date>2010-07-30 18:12:01 -0700</date>
            <delta_ts>2010-07-30 18:55:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>43991</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDM5MikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTAtMDctMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMjkwCisgICAgICAg
IEFkZCBzdHJ1Y3R1cmVkIG1lc3NhZ2UgcGFzc2luZyBmcm9tIHRoZSBpbmplY3RlZCBidW5kbGUg
dG8gVUlQcm9jZXNzCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oOgor
ICAgICAgICAqIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJDb250ZXh0TWVzc2FnZUtpbmRzLmg6
IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQcm9jZXNzUHJveHlN
ZXNzYWdlS2luZHMuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eU1lc3NhZ2U6Oik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6KToKKyAgICAgICAgKFdlYktpdDo6UG9z
dE1lc3NhZ2VFbmNvZGVyOjpQb3N0TWVzc2FnZURlY29kZXI6OlBvc3RNZXNzYWdlRGVjb2Rlcik6
CisgICAgICAgIChXZWJLaXQ6OlBvc3RNZXNzYWdlRW5jb2Rlcjo6UG9zdE1lc3NhZ2VEZWNvZGVy
OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVz
c2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUG9z
dE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGU6OkluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6
On5JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjppbml0
aWFsaXplQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFNob3VsZFRyYWNrVmlz
aXRlZExpbmtzKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFZp
c2l0ZWRMaW5rcyk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OndpbGxEZXN0cm95UGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorCiAy
MDEwLTA3LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXZpZCBLaWx6ZXIuCkluZGV4OiBXZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUlELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJ
RC5oCShyZXZpc2lvbiA2NDM4MCkKKysrIFdlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
SUQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBlbnVtIE1lc3NhZ2VDbGFzcyB7
CiAgICAgTWVzc2FnZUNsYXNzRHJhd2luZ0FyZWEsCiAKICAgICAvLyBNZXNzYWdlcyBzZW50IGJ5
IHRoZSB3ZWIgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICBNZXNzYWdlQ2xhc3NXZWJD
b250ZXh0LAogICAgIE1lc3NhZ2VDbGFzc1dlYlByb2Nlc3NQcm94eSwKICAgICBNZXNzYWdlQ2xh
c3NXZWJQYWdlUHJveHksCiAgICAgTWVzc2FnZUNsYXNzRHJhd2luZ0FyZWFQcm94eQpJbmRleDog
V2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYkNvbnRleHRNZXNz
YWdlS2luZHMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0
L1dlYkNvbnRleHRNZXNzYWdlS2luZHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29udGV4dE1lc3NhZ2VLaW5kc19oCisjZGVmaW5lIFdl
YkNvbnRleHRNZXNzYWdlS2luZHNfaAorCisvLyBNZXNzYWdlcyBzZW50IGZyb20gdGhlIGluamVj
dGVkIGJ1bmRsZSB0byB0aGUgV2ViQ29udGV4dC4KKworI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgor
CituYW1lc3BhY2UgV2ViQ29udGV4dE1lc3NhZ2UgeworCitlbnVtIEtpbmQgeworICAgIFBvc3RN
ZXNzYWdlCit9OworCit9CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgTWVzc2FnZUtpbmRUcmFpdHM8V2ViQ29udGV4dE1lc3NhZ2U6OktpbmQ+IHsKKyAgICBzdGF0
aWMgY29uc3QgTWVzc2FnZUNsYXNzIG1lc3NhZ2VDbGFzcyA9IE1lc3NhZ2VDbGFzc1dlYkNvbnRl
eHQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRsZU1lc3NhZ2VLaW5kc19oCklu
ZGV4OiBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQcm9jZXNzUHJveHlNZXNzYWdl
S2luZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQ
cm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaAkocmV2aXNpb24gNjQzNzkpCisrKyBXZWJLaXQyL1No
YXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQcm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBlbnVtIEtpbmQgewogICAgIEdldFBsdWdpbkhvc3RD
b25uZWN0aW9uLAogICAgIEdldFBsdWdpbnMsCiAgICAgUG9wdWxhdGVWaXNpdGVkTGlua3MsCi0g
ICAgUG9zdE1lc3NhZ2UsCiB9OwogCiB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAko
cmV2aXNpb24gNjQzODApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsMTIgKzI4LDE0IEBACiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXku
aCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgIlJ1
bkxvb3AuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU5hbWVzcGFjZS5oIgog
I2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAKICNpbmNsdWRlICJX
S0NvbnRleHRQcml2YXRlLmgiCiAKQEAgLTQ1LDYgKzQ3LDEyNSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK25hbWVzcGFjZSB7CisKKy8vIEZJWE1F
OiBXZSBzaG91bGQgdHJ5IHRvIGFic3RyYWN0IG91dCB0aGUgc2hhcmVkIGxvZ2ljIGZyb20gdGhl
c2UgYW5kCisvLyBhbmQgdGhlIFBvc3RNZXNzYWdlRW5jb2Rlci9Qb3N0TWVzc2FnZURlY29kZXJz
IGluIEluamVjdGVkQnVuZGxlLmNwcCBpbnRvCisvLyBhIHNoYXJlZCBiYXNlY2xhc3MuCisKKy8v
IEVuY29kZXMgcG9zdE1lc3NhZ2UgbWVzc2FnZXMgZnJvbSB0aGUgVUlQcm9jZXNzIC0+IEluamVj
dGVkQnVuZGxlCisKKy8vICAgLSBBcnJheSAtPiBBcnJheQorLy8gICAtIFN0cmluZyAtPiBTdHJp
bmcKKy8vICAgLSBQYWdlIC0+IEJ1bmRsZVBhZ2UKKworY2xhc3MgUG9zdE1lc3NhZ2VFbmNvZGVy
IHsKK3B1YmxpYzoKKyAgICBQb3N0TWVzc2FnZUVuY29kZXIoQVBJT2JqZWN0KiByb290KSAKKyAg
ICAgICAgOiBtX3Jvb3Qocm9vdCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBlbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdCAKKyAgICB7CisgICAgICAgIEFQ
SU9iamVjdDo6VHlwZSB0eXBlID0gbV9yb290LT50eXBlKCk7CisgICAgICAgIGVuY29kZXIuZW5j
b2RlKHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKSk7CisgICAgICAgIHN3aXRjaCAodHlwZSkg
eworICAgICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVBcnJheTogeworICAgICAgICAgICAg
ICAgIEltbXV0YWJsZUFycmF5KiBhcnJheSA9IHN0YXRpY19jYXN0PEltbXV0YWJsZUFycmF5Kj4o
bV9yb290KTsKKyAgICAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50
NjRfdD4oYXJyYXktPnNpemUoKSkpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYXJyYXktPnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLmVu
Y29kZShQb3N0TWVzc2FnZUVuY29kZXIoYXJyYXktPmF0KGkpKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVN0
cmluZzogeworICAgICAgICAgICAgICAgIFdlYlN0cmluZyogc3RyaW5nID0gc3RhdGljX2Nhc3Q8
V2ViU3RyaW5nKj4obV9yb290KTsKKyAgICAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZShzdHJp
bmctPnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlUGFnZTogeworICAgICAgICAgICAgICAgIFdl
YlBhZ2VQcm94eSogcGFnZSA9IHN0YXRpY19jYXN0PFdlYlBhZ2VQcm94eSo+KG1fcm9vdCk7Cisg
ICAgICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUocGFnZS0+cGFnZUlEKCkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBBUElPYmplY3QqIG1fcm9vdDsKK307
CisKKy8vIERlY29kZXMgcG9zdE1lc3NhZ2UgbWVzc2FnZXMgZ29pbmcgZnJvbSB0aGUgSW5qZWN0
ZWRCdW5kbGUgLT4gVUlQcm9jZXNzIAorCisvLyAgIC0gQXJyYXkgLT4gQXJyYXkKKy8vICAgLSBT
dHJpbmcgLT4gU3RyaW5nCisvLyAgIC0gQnVuZGxlUGFnZSAtPiBQYWdlCisKK2NsYXNzIFBvc3RN
ZXNzYWdlRGVjb2RlciB7CitwdWJsaWM6CisgICAgUG9zdE1lc3NhZ2VEZWNvZGVyKEFQSU9iamVj
dCoqIHJvb3QsIFdlYkNvbnRleHQqIGNvbnRleHQpCisgICAgICAgIDogbV9yb290KHJvb3QpCisg
ICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBi
b29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBvc3RNZXNzYWdl
RGVjb2RlciYgY29kZXIpCisgICAgeworICAgICAgICB1aW50MzJfdCB0eXBlOworICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVB
cnJheTogeworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAgICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE93bkFycmF5UHRyPEFQSU9i
amVjdCo+IGFycmF5OworICAgICAgICAgICAgICAgIGFycmF5LnNldChuZXcgQVBJT2JqZWN0Kltz
aXplXSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgQVBJT2JqZWN0KiBlbGVt
ZW50OworICAgICAgICAgICAgICAgICAgICBQb3N0TWVzc2FnZURlY29kZXIgbWVzc2FnZUNvZGVy
KCZlbGVtZW50LCBjb2Rlci5tX2NvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKG1lc3NhZ2VDb2RlcikpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGFycmF5W2ldID0gZWxlbWVudDsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAqKGNvZGVyLm1fcm9vdCkgPSBJbW11dGFi
bGVBcnJheTo6Y3JlYXRlKGFycmF5LnJlbGVhc2UoKSwgc2l6ZSkubGVha1JlZigpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBBUElPYmpl
Y3Q6OlR5cGVTdHJpbmc6IHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAg
ICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RyaW5nKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICooY29kZXIubV9yb290KSA9IFdlYlN0
cmluZzo6Y3JlYXRlKHN0cmluZykubGVha1JlZigpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVCdW5kbGVQYWdl
OiB7CisgICAgICAgICAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFnZUlEKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICooY29kZXIubV9yb290KSA9IGNvZGVyLm1fY29udGV4dC0+
cHJvY2VzcygpLT53ZWJQYWdlKHBhZ2VJRCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBUElPYmplY3QqKiBtX3Jvb3Q7CisgICAgV2ViQ29udGV4dCogbV9jb250ZXh0Owor
fTsKKworfQorCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIFdURjo6UmVmQ291bnRlZExlYWtDb3Vu
dGVyIHdlYkNvbnRleHRDb3VudGVyKCJXZWJDb250ZXh0Iik7CiAjZW5kaWYKQEAgLTE2Nyw1NSAr
Mjg4LDYgQEAgdm9pZCBXZWJDb250ZXh0OjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiAgICAgfQog
fQogCi1uYW1lc3BhY2UgewotCi0vLyBFbmNvZGVzIHBvc3RNZXNzYWdlIG1lc3NhZ2VzIGZyb20g
dGhlIFVJUHJvY2VzcyAtPiBJbmplY3RlZEJ1bmRsZQotCi0vLyAgIC0gQXJyYXkgLT4gQXJyYXkK
LS8vICAgLSBTdHJpbmcgLT4gU3RyaW5nCi0vLyAgIC0gUGFnZSAtPiBCdW5kbGVQYWdlCi0KLWNs
YXNzIFBvc3RNZXNzYWdlRW5jb2RlciB7Ci1wdWJsaWM6Ci0gICAgUG9zdE1lc3NhZ2VFbmNvZGVy
KEFQSU9iamVjdCogcm9vdCkgCi0gICAgICAgIDogbV9yb290KHJvb3QpCi0gICAgewotICAgIH0K
LQotICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QgCi0gICAgewotICAgICAgICBBUElPYmplY3Q6OlR5cGUgdHlwZSA9IG1fcm9vdC0+dHlwZSgp
OwotICAgICAgICBlbmNvZGVyLmVuY29kZShzdGF0aWNfY2FzdDx1aW50MzJfdD4odHlwZSkpOwot
ICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBl
QXJyYXk6IHsKLSAgICAgICAgICAgICAgICBJbW11dGFibGVBcnJheSogYXJyYXkgPSBzdGF0aWNf
Y2FzdDxJbW11dGFibGVBcnJheSo+KG1fcm9vdCk7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci5l
bmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5LT5zaXplKCkpKTsKLSAgICAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoUG9zdE1lc3NhZ2VFbmNvZGVyKGFycmF5LT5hdChp
KSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Y2FzZSBBUElPYmplY3Q6OlR5cGVTdHJpbmc6IHsKLSAgICAgICAgICAgICAgICBXZWJTdHJpbmcq
IHN0cmluZyA9IHN0YXRpY19jYXN0PFdlYlN0cmluZyo+KG1fcm9vdCk7Ci0gICAgICAgICAgICAg
ICAgZW5jb2Rlci5lbmNvZGUoc3RyaW5nLT5zdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVBhZ2U6
IHsKLSAgICAgICAgICAgICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJQ
YWdlUHJveHkqPihtX3Jvb3QpOwotICAgICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHBhZ2Ut
PnBhZ2VJRCgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
QVBJT2JqZWN0KiBtX3Jvb3Q7Ci19OwotCi19Ci0KIHZvaWQgV2ViQ29udGV4dDo6cG9zdE1lc3Nh
Z2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCog
bWVzc2FnZUJvZHkpCiB7CiAgICAgaWYgKCFtX3Byb2Nlc3MpCkBAIC0yMjgsOSArMzAwLDkgQEAg
dm9pZCBXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdQogCiAvLyBJbmplY3RlZEJ1
bmRsZSBjbGllbnQKIAotdm9pZCBXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFdlYkNvbnRleHQ6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUs
IEFQSU9iamVjdCogbWVzc2FnZUJvZHkpCiB7Ci0gICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC5k
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0aGlzLCBtZXNzYWdlKTsKKyAgICBt
X2luamVjdGVkQnVuZGxlQ2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KHRoaXMsIG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7CiB9CiAKIC8vIEhpc3RvcnlDbGllbnQK
QEAgLTI5Miw0ICszNjQsMjYgQEAgdm9pZCBXZWJDb250ZXh0OjpyZWdpc3RlclVSTFNjaGVtZUFz
RW1wdAogICAgIG1fcHJvY2Vzcy0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6UmVnaXN0ZXJVUkxT
Y2hlbWVBc0VtcHR5RG9jdW1lbnQsIDAsIENvcmVJUEM6OkluKHVybFNjaGVtZSkpOwogfQogCit2
b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciYgYXJndW1lbnRzKQoreworICAgIHN3aXRjaCAobWVzc2FnZUlELmdldDxXZWJDb250
ZXh0TWVzc2FnZTo6S2luZD4oKSkgeworICAgICAgICBjYXNlIFdlYkNvbnRleHRNZXNzYWdlOjpQ
b3N0TWVzc2FnZTogeworICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lOworICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgUmVmUHRyPEFQSU9iamVjdD4KKyAgICAgICAg
ICAgIEFQSU9iamVjdCogbWVzc2FnZUJvZHkgPSAwOworICAgICAgICAgICAgUG9zdE1lc3NhZ2VE
ZWNvZGVyIG1lc3NhZ2VDb2RlcigmbWVzc2FnZUJvZHksIHRoaXMpOworICAgICAgICAgICAgaWYg
KCFhcmd1bWVudHMuZGVjb2RlKENvcmVJUEM6Ok91dChtZXNzYWdlTmFtZSwgbWVzc2FnZUNvZGVy
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOworCisgICAg
ICAgICAgICBtZXNzYWdlQm9keS0+ZGVyZWYoKTsKKworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkocmV2aXNpb24gNjQzODYp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgz
LDcgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxl
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIEFQSU9iamVjdCopOwogCiAgICAgLy8gSW5qZWN0ZWRC
dW5kbGUgY2xpZW50Ci0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIEFQSU9iamVjdCopOwogCiAg
ICAgLy8gSGlzdG9yeSBjbGllbnQKICAgICB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25E
YXRhKFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJik7IApAQCAt
MTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1l
QXNFbXB0eURvY3VtZW50KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXImKTsKKwogcHJpdmF0ZToKICAgICBXZWJDb250ZXh0KFBy
b2Nlc3NNb2RlbCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpOwog
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1
bmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDY0Mzc5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIg
KzQ1LDEyIEBAIHZvaWQgV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50OjppbmkKICAgICAg
ICAgbWVtc2V0KCZtX2NsaWVudCwgMCwgc2l6ZW9mKG1fY2xpZW50KSk7CiB9CiAKLXZvaWQgV2Vi
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lk
IFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUoV2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFt
ZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0b1JlZihjb250ZXh0KSwg
dG9SZWYobWVzc2FnZS5pbXBsKCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0b1JlZihjb250ZXh0KSwgdG9S
ZWYobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9SZWYobWVzc2FnZUJvZHkpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAkocmV2aXNpb24g
NjQzNzkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBXZWJDb250
ZXh0OwogCiBjbGFzcyBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgewpAQCAtNDEsNyAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KCk7CiAg
ICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Kik7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYkNvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdlYkNvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBB
UElPYmplY3QqKTsKIAogcHJpdmF0ZToKICAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dCBtX2NsaWVudDsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2
aXNpb24gNjQzNzkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODMsMTEgKzE4Myw2IEBAIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IFdlYlByb2Nlc3NQcm94eToKICAgICByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmdl
dChpdGVtSUQpLmdldCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Zm9yd2FyZE1lc3Nh
Z2VUb1dlYkNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIG1fY29udGV4dC0+
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZSk7Ci19Ci0KIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCwgVmVjdG9yPFBsdWdpbklu
Zm8+JiBwbHVnaW5zKQogewogICAgIGlmIChyZWZyZXNoKQpAQCAtMjI1LDE0ICsyMjAsNiBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoCiB7CiAgICAgaWYgKG1lc3Nh
Z2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJQcm9jZXNzUHJveHk+KCkpIHsKICAgICAg
ICAgc3dpdGNoIChtZXNzYWdlSUQuZ2V0PFdlYlByb2Nlc3NQcm94eU1lc3NhZ2U6OktpbmQ+KCkp
IHsKLSAgICAgICAgICAgIGNhc2UgV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZTo6UG9zdE1lc3NhZ2U6
IHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZTsKLSAgICAgICAgICAgICAgICBpZiAo
IWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChtZXNzYWdlKSkpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGZvcndhcmRNZXNzYWdlVG9XZWJDb250
ZXh0KG1lc3NhZ2UpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhc2UgV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZTo6QWRkQmFja0ZvcndhcmRJdGVt
OiB7CiAgICAgICAgICAgICAgICAgdWludDY0X3QgaXRlbUlEOwogICAgICAgICAgICAgICAgIFN0
cmluZyBvcmlnaW5hbFVSTDsKQEAgLTMxNiw2ICszMDMsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVNZXNzYWdlKAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKG1lc3Nh
Z2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJDb250ZXh0PigpKSB7CisgICAgICAgIG1f
Y29udGV4dC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCAqYXJndW1l
bnRzKTsgICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB1aW50NjRfdCBwYWdlSUQg
PSBhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKTsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzY1LDEzICszNTcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJl
Y2VpdmVTeW5jTWVzcwogICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzUHJveHlNZXNzYWdlOjpE
aWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NQcm94
eU1lc3NhZ2U6OkRpZFVwZGF0ZUhpc3RvcnlUaXRsZToKICAgICAgICAgICAgIGNhc2UgV2ViUHJv
Y2Vzc1Byb3h5TWVzc2FnZTo6UG9wdWxhdGVWaXNpdGVkTGlua3M6Ci0gICAgICAgICAgICBjYXNl
IFdlYlByb2Nlc3NQcm94eU1lc3NhZ2U6OlBvc3RNZXNzYWdlOgogICAgICAgICAgICAgY2FzZSBX
ZWJQcm9jZXNzUHJveHlNZXNzYWdlOjpBZGRCYWNrRm9yd2FyZEl0ZW06CiAgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCisKICAgICB1aW50NjRfdCBwYWdlSUQgPSBhcmd1bWVudHMtPmRlc3Rp
bmF0aW9uSUQoKTsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDY0Mzc5KQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDYg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlELCBQ
YXNzT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4pOwogCi0gICAgdm9pZCBmb3J3YXJk
TWVzc2FnZVRvV2ViQ29udGV4dChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICB2b2lkIGdl
dFBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKICAg
ICB2b2lkIGdldFBsdWdpbkhvc3RDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgV2ViQ29yZTo6U3RyaW5nJiBwbHVnaW5Q
YXRoKTsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJKHJldmlzaW9uIDY0
MzgwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDcgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogLy8gSW5qZWN0ZWQg
QnVuZGxlIENsaWVudAotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjaykoV0tDb250ZXh0UmVmIHBhZ2UsIFdLU3RyaW5nUmVm
IG1lc3NhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tDb250
ZXh0RGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjaykoV0tDb250ZXh0
UmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHks
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKSW5kZXg6IFdlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NDM4MCkKKysrIFdlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIs
NiArMjMyLDcgQEAKIAkJQkNDNTcxNUMxMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3RlbUludGVy
ZmFjZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QzU3MTVBMTE1QURBRUYwMDFDQ0FGOSAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UubW0gKi87IH07CiAJ
CUJDQzU3MTYyMTE1QURCNDIwMDFDQ0FGOSAvKiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDNTcxNjExMTVBREI0MjAwMUND
QUY5IC8qIE5vdEltcGxlbWVudGVkLmggKi87IH07CiAJCUJDQzkzOEUxMTE4MERFNDQwMDg1RTVG
RSAvKiBXS0NvbnRleHRQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0M5MzhFMDExODBERTQ0MDA4NUU1RkUgLyogV0tDb250ZXh0UHJpdmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJD
Q0I3NUM2MTIwM0ExQ0UwMDIyMkQxQiAvKiBXZWJDb250ZXh0TWVzc2FnZUtpbmRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0NCNzVDNTEyMDNBMUNF
MDAyMjJEMUIgLyogV2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oICovOyB9OwogCQlCQ0QwMDQyRDEx
MEMxRTI3MDAzQjhBNjcgLyogQ29yZVNlcnZpY2VzLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDAwNDJDMTEwQzFFMjcwMDNCOEE2
NyAvKiBDb3JlU2VydmljZXMuZnJhbWV3b3JrICovOyB9OwogCQlCQ0QwMTM5QjExMEZBNDIwMDAz
QjhBNjcgLyogV0tGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNEMDEzOTcxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDRDAxMzlDMTEwRkE0MjAw
MDNCOEE2NyAvKiBXS0ZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRDAxMzk4MTEwRkE0MjAwMDNCOEE2NyAvKiBXS0ZyYW1lLmNwcCAqLzsg
fTsKQEAgLTUyOSw2ICs1MzAsNyBAQAogCQlCQ0M1NzE1QTExNUFEQUVGMDAxQ0NBRjkgLyogV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViU3lzdGVtSW50ZXJmYWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0M1NzE2MTExNUFEQjQyMDAxQ0NBRjkgLyogTm90SW1wbGVtZW50ZWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTm90SW1wbGVtZW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNDOTM4RTAxMTgwREU0NDAwODVFNUZFIC8qIFdLQ29udGV4dFByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0UHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0NCNzVDNTEyMDNBMUNFMDAyMjJEMUIgLyog
V2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb250ZXh0TWVzc2FnZUtpbmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDRDAwNDJDMTEwQzFFMjcwMDNCOEE2NyAvKiBDb3JlU2VydmljZXMuZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFt
ZXdvcms7IG5hbWUgPSBDb3JlU2VydmljZXMuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJz
b2x1dGU+IjsgfTsKIAkJQkNEMDEzOTcxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQ0QwMTM5ODExMEZBNDIwMDAzQjhBNjcgLyogV0tGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ZyYW1lLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDMsNiArMTA0NSw3IEBACiAJCQkJQkM5RTk2OUIxMTQ1
N0YzRjAwODcwRTcxIC8qIERyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmggKi8sCiAJCQkJQkM5RTk2
OTkxMTQ1N0VERTAwODcwRTcxIC8qIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCAqLywK
IAkJCQlCQ0IyOENCRjEyMDIzM0Q5MDA3RDk5QkMgLyogSW5qZWN0ZWRCdW5kbGVNZXNzYWdlS2lu
ZHMuaCAqLywKKwkJCQlCQ0NCNzVDNTEyMDNBMUNFMDAyMjJEMUIgLyogV2ViQ29udGV4dE1lc3Nh
Z2VLaW5kcy5oICovLAogCQkJCUJDMTExQjYwMTEyRjYzODMwMDMzN0JBQiAvKiBXZWJQYWdlTWVz
c2FnZUtpbmRzLmggKi8sCiAJCQkJQkMxMTFCNjExMTJGNjM4MzAwMzM3QkFCIC8qIFdlYlBhZ2VQ
cm94eU1lc3NhZ2VLaW5kcy5oICovLAogCQkJCUJDMTExQjYyMTEyRjYzODMwMDMzN0JBQiAvKiBX
ZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmggKi8sCkBAIC0xMzIxLDYgKzEzMjQsNyBAQAogCQkJCUJD
REI4NTgyMTIwMEVDNTcwMDcyNTRCRSAvKiBXS1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
REI4NkMxMTIwMEZCOTcwMDcyNTRCRSAvKiBXZWJVUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
QjI4Q0MwMTIwMjMzRDkwMDdEOTlCQyAvKiBJbmplY3RlZEJ1bmRsZU1lc3NhZ2VLaW5kcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQkNDQjc1QzYxMjAzQTFDRTAwMjIyRDFCIC8qIFdlYkNvbnRleHRN
ZXNzYWdlS2luZHMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiA2NDM4
MCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMyBAQAogCiAjaW5jbHVkZSAiQXJndW1l
bnRzLmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0
TWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVNZXNzYWdlS2luZHMuaCIK
ICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VL
aW5kcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8d3RmL093
bkFycmF5UHRyLmg+CiAKQEAgLTQxLDU5ICs0MSw1NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRs
ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHBhdGgpCi0gICAgOiBtX3BhdGgocGF0aCkKLSAgICAs
IG1fcGxhdGZvcm1CdW5kbGUoMCkKLXsKLSAgICBpbml0aWFsaXplQ2xpZW50KDApOwotfQotCi1J
bmplY3RlZEJ1bmRsZTo6fkluamVjdGVkQnVuZGxlKCkKLXsKLX0KLQotdm9pZCBJbmplY3RlZEJ1
bmRsZTo6aW5pdGlhbGl6ZUNsaWVudChXS0J1bmRsZUNsaWVudCogY2xpZW50KQotewotICAgIGlm
IChjbGllbnQgJiYgIWNsaWVudC0+dmVyc2lvbikKLSAgICAgICAgbV9jbGllbnQgPSAqY2xpZW50
OwotICAgIGVsc2UKLSAgICAgICAgbWVtc2V0KCZtX2NsaWVudCwgMCwgc2l6ZW9mKG1fY2xpZW50
KSk7Ci19CituYW1lc3BhY2UgewogCi12b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0TWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kKFdlYlByb2Nlc3NQcm94eU1lc3NhZ2U6OlBvc3RNZXNzYWdlLCAwLCBDb3Jl
SVBDOjpJbihtZXNzYWdlKSk7Ci19CisvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBhYnN0cmFj
dCBvdXQgdGhlIHNoYXJlZCBsb2dpYyBmcm9tIHRoZXNlIGFuZAorLy8gYW5kIHRoZSBQb3N0TWVz
c2FnZUVuY29kZXIvUG9zdE1lc3NhZ2VEZWNvZGVycyBpbiBXZWJDb250ZXh0LmNwcCBpbnRvCisv
LyBhIHNoYXJlZCBiYXNlY2xhc3MuCiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFNob3VsZFRy
YWNrVmlzaXRlZExpbmtzKGJvb2wgc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpCi17Ci0gICAgUGFn
ZUdyb3VwOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhzaG91bGRUcmFja1Zpc2l0ZWRMaW5r
cyk7Ci19CisvLyBFbmNvZGVzIHBvc3RNZXNzYWdlIG1lc3NhZ2VzIGZyb20gdGhlIEluamVjdGVk
QnVuZGxlIC0+IFVJUHJvY2VzcwogCi12b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVBbGxWaXNp
dGVkTGlua3MoKQotewotICAgIFBhZ2VHcm91cDo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7Ci19
CisvLyAgIC0gQXJyYXkgLT4gQXJyYXkKKy8vICAgLSBTdHJpbmcgLT4gU3RyaW5nCisvLyAgIC0g
QnVuZGxlUGFnZSAtPiBQYWdlCiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZENyZWF0ZVBhZ2Uo
V2ViUGFnZSogcGFnZSkKLXsKLSAgICBpZiAobV9jbGllbnQuZGlkQ3JlYXRlUGFnZSkKLSAgICAg
ICAgbV9jbGllbnQuZGlkQ3JlYXRlUGFnZSh0b1JlZih0aGlzKSwgdG9SZWYocGFnZSksIG1fY2xp
ZW50LmNsaWVudEluZm8pOwotfQorY2xhc3MgUG9zdE1lc3NhZ2VFbmNvZGVyIHsKK3B1YmxpYzoK
KyAgICBQb3N0TWVzc2FnZUVuY29kZXIoQVBJT2JqZWN0KiByb290KSAKKyAgICAgICAgOiBtX3Jv
b3Qocm9vdCkKKyAgICB7CisgICAgfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjp3aWxsRGVzdHJv
eVBhZ2UoV2ViUGFnZSogcGFnZSkKLXsKLSAgICBpZiAobV9jbGllbnQud2lsbERlc3Ryb3lQYWdl
KQotICAgICAgICBtX2NsaWVudC53aWxsRGVzdHJveVBhZ2UodG9SZWYodGhpcyksIHRvUmVmKHBh
Z2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLX0KKyAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0IAorICAgIHsKKyAgICAgICAgQVBJT2JqZWN0
OjpUeXBlIHR5cGUgPSBtX3Jvb3QtPnR5cGUoKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGUoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpKTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
ICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZUFycmF5OiB7CisgICAgICAgICAgICAgICAgSW1t
dXRhYmxlQXJyYXkqIGFycmF5ID0gc3RhdGljX2Nhc3Q8SW1tdXRhYmxlQXJyYXkqPihtX3Jvb3Qp
OworICAgICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihh
cnJheS0+c2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
cnJheS0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKFBv
c3RNZXNzYWdlRW5jb2RlcihhcnJheS0+YXQoaSkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlU3RyaW5nOiB7
CisgICAgICAgICAgICAgICAgV2ViU3RyaW5nKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxXZWJTdHJp
bmcqPihtX3Jvb3QpOworICAgICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0cmluZy0+c3Ry
aW5nKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY2FzZSBBUElPYmplY3Q6OlR5cGVCdW5kbGVQYWdlOiB7CisgICAgICAgICAgICAgICAgV2Vi
UGFnZSogcGFnZSA9IHN0YXRpY19jYXN0PFdlYlBhZ2UqPihtX3Jvb3QpOworICAgICAgICAgICAg
ICAgIGVuY29kZXIuZW5jb2RlKHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVzc2FnZUJvZHkpCi17Ci0g
ICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlKQotICAgICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlTWVzc2FnZSh0b1JlZih0aGlzKSwgdG9SZWYobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9S
ZWYobWVzc2FnZUJvZHkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLX0KK3ByaXZhdGU6CisgICAg
QVBJT2JqZWN0KiBtX3Jvb3Q7Cit9OwogCi1uYW1lc3BhY2UgewogCiAvLyBEZWNvZGVzIHBvc3RN
ZXNzYWdlIG1lc3NhZ2VzIGdvaW5nIGZyb20gdGhlIFVJUHJvY2VzcyAtPiBJbmplY3RlZEJ1bmRs
ZQogCkBAIC0xNjEsNiArMTU5LDU4IEBAIHByaXZhdGU6CiAKIH0KIAorSW5qZWN0ZWRCdW5kbGU6
OkluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICA6IG1fcGF0aChwYXRoKQor
ICAgICwgbV9wbGF0Zm9ybUJ1bmRsZSgwKQoreworICAgIGluaXRpYWxpemVDbGllbnQoMCk7Cit9
CisKK0luamVjdGVkQnVuZGxlOjp+SW5qZWN0ZWRCdW5kbGUoKQoreworfQorCit2b2lkIEluamVj
dGVkQnVuZGxlOjppbml0aWFsaXplQ2xpZW50KFdLQnVuZGxlQ2xpZW50KiBjbGllbnQpCit7Cisg
ICAgaWYgKGNsaWVudCAmJiAhY2xpZW50LT52ZXJzaW9uKQorICAgICAgICBtX2NsaWVudCA9ICpj
bGllbnQ7CisgICAgZWxzZQorICAgICAgICBtZW1zZXQoJm1fY2xpZW50LCAwLCBzaXplb2YobV9j
bGllbnQpKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdE1lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViQ29udGV4dE1lc3NhZ2U6OlBvc3RN
ZXNzYWdlLCAwLCBDb3JlSVBDOjpJbihtZXNzYWdlTmFtZSwgUG9zdE1lc3NhZ2VFbmNvZGVyKG1l
c3NhZ2VCb2R5KSkpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTaG91bGRUcmFja1Zp
c2l0ZWRMaW5rcyhib29sIHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKQoreworICAgIFBhZ2VHcm91
cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3Moc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOwor
fQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQoreworICAg
IFBhZ2VHcm91cDo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGU6OmRpZENyZWF0ZVBhZ2UoV2ViUGFnZSogcGFnZSkKK3sKKyAgICBpZiAobV9jbGllbnQu
ZGlkQ3JlYXRlUGFnZSkKKyAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRlUGFnZSh0b1JlZih0aGlz
KSwgdG9SZWYocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lkIEluamVjdGVk
QnVuZGxlOjp3aWxsRGVzdHJveVBhZ2UoV2ViUGFnZSogcGFnZSkKK3sKKyAgICBpZiAobV9jbGll
bnQud2lsbERlc3Ryb3lQYWdlKQorICAgICAgICBtX2NsaWVudC53aWxsRGVzdHJveVBhZ2UodG9S
ZWYodGhpcyksIHRvUmVmKHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwordm9pZCBJ
bmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFt
ZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKK3sKKyAgICBpZiAobV9jbGllbnQuZGlkUmVjZWl2
ZU1lc3NhZ2UpCisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlKHRvUmVmKHRoaXMp
LCB0b1JlZihtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b1JlZihtZXNzYWdlQm9keSksIG1fY2xpZW50
LmNsaWVudEluZm8pOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVz
c2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGFyZ3VtZW50cykKIHsKICAgICBzd2l0
Y2ggKG1lc3NhZ2VJRC5nZXQ8SW5qZWN0ZWRCdW5kbGVNZXNzYWdlOjpLaW5kPigpKSB7CkluZGV4
OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaAkocmV2aXNpb24gNjQzODYpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBBUEkKICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoV0tCdW5kbGVDbGll
bnQqKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAg
IHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgQVBJT2JqZWN0Kik7CiAg
ICAgdm9pZCBzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhib29sKTsKICAgICB2b2lkIHJlbW92
ZUFsbFZpc2l0ZWRMaW5rcygpOwogCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAJKHJldmlzaW9uIDY0Mzg2KQorKysg
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQCB2b2lkIFdLQnVuZGxlU2V0Q2xpZW50KFdLQnVu
ZGxlUmVmIGJ1bmRsCiAgICAgICAgIHRvV0soYnVuZGxlUmVmKS0+aW5pdGlhbGl6ZUNsaWVudCh3
a0NsaWVudCk7CiB9CiAKLXZvaWQgV0tCdW5kbGVQb3N0TWVzc2FnZShXS0J1bmRsZVJlZiBidW5k
bGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VSZWYpCit2b2lkIFdLQnVuZGxlUG9zdE1lc3NhZ2Uo
V0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZVJlZiwgV0tUeXBl
UmVmIG1lc3NhZ2VCb2R5UmVmKQogewotICAgIHRvV0soYnVuZGxlUmVmKS0+cG9zdE1lc3NhZ2Uo
dG9XSyhtZXNzYWdlUmVmKS0+c3RyaW5nKCkpOworICAgIHRvV0soYnVuZGxlUmVmKS0+cG9zdE1l
c3NhZ2UodG9XSyhtZXNzYWdlTmFtZVJlZiktPnN0cmluZygpLCB0b1dLKG1lc3NhZ2VCb2R5UmVm
KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhXS0J1bmRs
ZVJlZiBidW5kbGVSZWYsIGJvb2wgc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpCkluZGV4OiBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAko
cmV2aXNpb24gNjQzODApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBXS19FWFBPUlQg
V0tUeXBlSUQgV0tCdW5kbGVHZXRUeXBlSUQoKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVT
ZXRDbGllbnQoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZUNsaWVudCAqIGNsaWVudCk7CiAK
LVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUG9zdE1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBX
S1N0cmluZ1JlZiBtZXNzYWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUG9zdE1lc3NhZ2Uo
V0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBXZWJLaXRUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2
NDM5MikKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI3IEBACisyMDEwLTA3LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggZm9yIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzI5MAorICAgICAgICBBZGQgc3Ry
dWN0dXJlZCBtZXNzYWdlIHBhc3NpbmcgZnJvbSB0aGUgaW5qZWN0ZWQgYnVuZGxlIHRvIFVJUHJv
Y2VzcworCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm06CisgICAgICAg
IChkaWRSZWNpZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogTWluaUJy
b3dzZXIvbWFjL1dlYkJ1bmRsZS9XZWJCdW5kbGVNYWluLm06CisgICAgICAgIChkaWRDbGVhcldp
bmRvd0ZvckZyYW1lKToKKyAgICAgICAgKGRpZFJlY2lldmVNZXNzYWdlKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRvbmUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxMC0wNy0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYktpdFRvb2xz
L01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCShyZXZpc2lvbiA2NDM4MCkKKysrIFdlYktp
dFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0z
NiwyMCArMzYsMjggQEAgc3RhdGljIE5TU3RyaW5nICpkZWZhdWx0VVJMID0gQCJodHRwOi8vdwog
CiBAaW1wbGVtZW50YXRpb24gQnJvd3NlckFwcERlbGVnYXRlCiAKLXZvaWQgZGlkUmVjaWV2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVm
IG1lc3NhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit2b2lkIGRpZFJlY2lldmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNz
YWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQog
ewotICAgIENGU3RyaW5nUmVmIGNmTWVzc2FnZSA9IFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIG1l
c3NhZ2UpOwotICAgIExPRyhAIkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCAtIGRpZFJlY2ll
dmVNZXNzYWdlIC0gbWVzc2FnZTogJUAiLCBjZk1lc3NhZ2UpOwotICAgIENGUmVsZWFzZShjZk1l
c3NhZ2UpOworICAgIENGU3RyaW5nUmVmIGNmTWVzc2FnZU5hbWUgPSBXS1N0cmluZ0NvcHlDRlN0
cmluZygwLCBtZXNzYWdlTmFtZSk7CisKKyAgICBXS1R5cGVJRCB0eXBlSUQgPSBXS0dldFR5cGVJ
RChtZXNzYWdlQm9keSk7CisgICAgaWYgKHR5cGVJRCA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKSB7
CisgICAgICAgIENGU3RyaW5nUmVmIGNmTWVzc2FnZUJvZHkgPSBXS1N0cmluZ0NvcHlDRlN0cmlu
ZygwLCAoV0tTdHJpbmdSZWYpbWVzc2FnZUJvZHkpOworICAgICAgICBMT0coQCJDb250ZXh0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQgLSBkaWRSZWNpZXZlTWVzc2FnZSAtIE1lc3NhZ2VOYW1lOiAlQCBN
ZXNzYWdlQm9keSAlQCIsIGNmTWVzc2FnZU5hbWUsIGNmTWVzc2FnZUJvZHkpOworICAgICAgICBD
RlJlbGVhc2UoY2ZNZXNzYWdlQm9keSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTE9HKEAiQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IC0gZGlkUmVjaWV2ZU1lc3NhZ2UgLSBNZXNzYWdlTmFt
ZTogJUAgKE1lc3NhZ2VCb2R5IFVuaGFuZGVsZWQpXG4iLCBjZk1lc3NhZ2VOYW1lKTsKKyAgICB9
CisgICAgCisgICAgQ0ZSZWxlYXNlKGNmTWVzc2FnZU5hbWUpOwogCiAgICAgV0tTdHJpbmdSZWYg
bmV3TWVzc2FnZU5hbWUgPSBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlNUUigiUmVzcG9u
c2UiKSk7CiAgICAgV0tTdHJpbmdSZWYgbmV3TWVzc2FnZUJvZHkgPSBXS1N0cmluZ0NyZWF0ZVdp
dGhDRlN0cmluZyhDRlNUUigiUm9nZXIgdGhhdCEiKSk7CiAKLSAgICBMT0coQCJteSBpbmZvOiAl
ZCIsIChpbnQpV0tHZXRUeXBlSUQobmV3TWVzc2FnZUJvZHkpKTsKLQogICAgIFdLQ29udGV4dFBv
c3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb250ZXh0LCBuZXdNZXNzYWdlTmFtZSwgbmV3TWVz
c2FnZUJvZHkpOwogICAgIAogICAgIFdLU3RyaW5nUmVsZWFzZShuZXdNZXNzYWdlTmFtZSk7Cisg
ICAgV0tTdHJpbmdSZWxlYXNlKG5ld01lc3NhZ2VCb2R5KTsKIH0KIAogI3ByYWdtYSBtYXJrIEhp
c3RvcnkgQ2xpZW50IENhbGxiYWNrcwpJbmRleDogV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFj
L1dlYkJ1bmRsZS9XZWJCdW5kbGVNYWluLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dlYkJ1bmRsZS9XZWJCdW5kbGVNYWluLm0JKHJldmlzaW9uIDY0MzgwKQor
KysgV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL1dlYkJ1bmRsZS9XZWJCdW5kbGVNYWluLm0J
KHdvcmtpbmcgY29weSkKQEAgLTc0LDkgKzc0LDExIEBAIHZvaWQgZGlkQ2xlYXJXaW5kb3dGb3JG
cmFtZShXS0J1bmRsZVBhZ2UKICAgICBMT0coQCJXS0J1bmRsZVBhZ2VDbGllbnQgLSBkaWRDbGVh
cldpbmRvd0ZvckZyYW1lICVAIiwgWyhOU1VSTCAqKWNmVVJMIGFic29sdXRlU3RyaW5nXSk7CiAg
ICAgQ0ZSZWxlYXNlKGNmVVJMKTsKIAotICAgIFdLU3RyaW5nUmVmIG1lc3NhZ2UgPSBXS1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZyhDRlNUUigiV2luZG93IHdhcyBjbGVhcmVkIikpOwotICAgIFdL
QnVuZGxlUG9zdE1lc3NhZ2UoZ2xvYmFsQnVuZGxlLCBtZXNzYWdlKTsKLSAgICBXS1N0cmluZ1Jl
bGVhc2UobWVzc2FnZSk7CisgICAgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUgPSBXS1N0cmluZ0Ny
ZWF0ZVdpdGhDRlN0cmluZyhDRlNUUigiQ2FsbGJhY2siKSk7CisgICAgV0tTdHJpbmdSZWYgbWVz
c2FnZUJvZHkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlNUUigiV2luZG93IHdhcyBj
bGVhcmVkIikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoZ2xvYmFsQnVuZGxlLCBtZXNzYWdl
TmFtZSwgbWVzc2FnZUJvZHkpOworICAgIFdLU3RyaW5nUmVsZWFzZShtZXNzYWdlTmFtZSk7Cisg
ICAgV0tTdHJpbmdSZWxlYXNlKG1lc3NhZ2VCb2R5KTsKIH0KIAogCkBAIC0xMTMsMTIgKzExNSwx
MiBAQCB2b2lkIGRpZFJlY2lldmVNZXNzYWdlKFdLQnVuZGxlUmVmIGJ1bmRsCiAgICAgV0tUeXBl
SUQgdHlwZUlEID0gV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpOwogICAgIGlmICh0eXBlSUQgPT0g
V0tTdHJpbmdHZXRUeXBlSUQoKSkgewogICAgICAgICBDRlN0cmluZ1JlZiBjZk1lc3NhZ2VCb2R5
ID0gV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgKFdLU3RyaW5nUmVmKW1lc3NhZ2VCb2R5KTsKLSAg
ICAgICAgTE9HKEAiV0tCdW5kbGVDbGllbnQgLSBkaWRSZWNpZXZlTWVzc2FnZSAlQCAoVHlwZT1T
dHJpbmcpICVAXG4iLCBjZk1lc3NhZ2VOYW1lLCBjZk1lc3NhZ2VCb2R5KTsKKyAgICAgICAgTE9H
KEAiV0tCdW5kbGVDbGllbnQgLSBkaWRSZWNpZXZlTWVzc2FnZSAtIE1lc3NhZ2VOYW1lOiAlQCBN
ZXNzYWdlQm9keSAlQCIsIGNmTWVzc2FnZU5hbWUsIGNmTWVzc2FnZUJvZHkpOwogICAgICAgICBD
RlJlbGVhc2UoY2ZNZXNzYWdlQm9keSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTE9HKEAiV0tC
dW5kbGVDbGllbnQgLSBkaWRSZWNpZXZlTWVzc2FnZSAlQCAoVHlwZT1VbmhhbmRlbGVkKVxuIiwg
Y2ZNZXNzYWdlTmFtZSk7CisgICAgICAgIExPRyhAIldLQnVuZGxlQ2xpZW50IC0gZGlkUmVjaWV2
ZU1lc3NhZ2UgLSBNZXNzYWdlTmFtZTogJUAgKE1lc3NhZ2VCb2R5IFVuaGFuZGVsZWQpXG4iLCBj
Zk1lc3NhZ2VOYW1lKTsKICAgICB9Ci0gICAgCisKICAgICBDRlJlbGVhc2UoY2ZNZXNzYWdlTmFt
ZSk7CiB9CiAKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDM2NCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MKICAgICBXS0NvbnRleHRJ
bmplY3RlZEJ1bmRsZUNsaWVudCBpbmplY3RlZEJ1bmRsZVBhdGhDbGllbnQgPSB7CiAgICAgICAg
IDAsCiAgICAgICAgIHRoaXMsCi0gICAgICAgIF9kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZQorICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZQogICAg
IH07CiAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgp
LCAmaW5qZWN0ZWRCdW5kbGVQYXRoQ2xpZW50KTsKIApAQCAtMTI2LDE0ICsxMjYsMTQgQEAgYm9v
bCBUZXN0Q29udHJvbGxlcjo6cnVuKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6X2RpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nh
c3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2UpOworICAgIHN0YXRpY19jYXN0
PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwog
fQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlw
ZVJlZiBtZXNzYWdlQm9keSkKIHsKLSAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlKTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0
aW9uLT5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVz
c2FnZUJvZHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFdlYktpdFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDY0MzY0KQorKysg
V2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw4ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplVGVzdFBs
dWdpbkRpcmVjdG9yeSgpOwogCiAgICAgLy8gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQK
LSAgICBzdGF0aWMgdm9pZCBfZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIGNvbnN0IHZvaWQqKTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2UpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBl
UmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5KTsKIAogICAgIE93blB0cjxUZXN0SW52b2NhdGlvbj4gbV9jdXJyZW50SW52b2Nh
dGlvbjsKIApJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAJKHJldmlzaW9uIDY0MzgwKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwxMSArMTQwLDEw
IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXAoY29uc3QgY2hhciogc3QKICAgICBmZmx1c2go
c3RkZXJyKTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZSkKK3ZvaWQgVGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBjZk1lc3NhZ2UoQWRvcHRDRiwgV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgbWVzc2FnZSkpOwot
ICAgIAotICAgIGlmIChDRkVxdWFsKGNmTWVzc2FnZS5nZXQoKSwgQ0ZTVFIoIkVycm9yIikpKSB7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZk1lc3NhZ2VOYW1lKEFkb3B0Q0YsIFdLU3Ry
aW5nQ29weUNGU3RyaW5nKDAsIG1lc3NhZ2VOYW1lKSk7CisgICAgaWYgKENGRXF1YWwoY2ZNZXNz
YWdlTmFtZS5nZXQoKSwgQ0ZTVFIoIkVycm9yIikpKSB7CiAgICAgICAgIC8vIFNldCBhbGwgc3Rh
dGVzIHRvIHRydWUgdG8gc3RvcCBzcGlubmluZyB0aGUgcnVubG9vcC4KICAgICAgICAgbV9nb3RJ
bml0aWFsUmVzcG9uc2UgPSB0cnVlOwogICAgICAgICBtX2dvdEZpbmFsTWVzc2FnZSA9IHRydWU7
CkBAIC0xNTIsMTUgKzE1MSwyNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVz
c2FnZUZyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoQ0ZFcXVhbChjZk1lc3Nh
Z2UuZ2V0KCksIENGU1RSKCJCZWdpblRlc3RBY2siKSkpIHsKLSAgICAgICAgbV9nb3RJbml0aWFs
UmVzcG9uc2UgPSB0cnVlOwotICAgICAgICByZXR1cm47CisgICAgaWYgKENGRXF1YWwoY2ZNZXNz
YWdlTmFtZS5nZXQoKSwgQ0ZTVFIoIkFjayIpKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNmTWVzc2FnZUJvZHkoQWRvcHRDRiwgV0tTdHJpbmdDb3B5Q0ZTdHJp
bmcoMCwgc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KG1lc3NhZ2VCb2R5KSkpOworCisgICAgICAg
IGlmIChDRkVxdWFsKGNmTWVzc2FnZUJvZHkuZ2V0KCksIENGU1RSKCJCZWdpblRlc3QiKSkpIHsK
KyAgICAgICAgICAgIG1fZ290SW5pdGlhbFJlc3BvbnNlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IAotICAgIE93blB0cjxWZWN0b3I8Y2hhcj4gPiB1dGY4TWVzc2FnZSA9IFdLU3RyaW5nVG9VVEY4
KG1lc3NhZ2UpOworICAgIGlmIChDRkVxdWFsKGNmTWVzc2FnZU5hbWUuZ2V0KCksIENGU1RSKCJE
b25lIikpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tT
dHJpbmdHZXRUeXBlSUQoKSk7CisgICAgICAgIE93blB0cjxWZWN0b3I8Y2hhcj4gPiB1dGY4TWVz
c2FnZSA9IFdLU3RyaW5nVG9VVEY4KHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihtZXNzYWdlQm9k
eSkpOworICAgICAgICBkdW1wKHV0ZjhNZXNzYWdlLT5kYXRhKCkpOworICAgICAgICBtX2dvdEZp
bmFsTWVzc2FnZSA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBkdW1wKHV0
ZjhNZXNzYWdlLT5kYXRhKCkpOwotICAgIG1fZ290RmluYWxNZXNzYWdlID0gdHJ1ZTsKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBXZWJL
aXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCShyZXZpc2lvbiA2
NDM2NCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgflRlc3RJbnZvY2F0
aW9uKCk7CiAKICAgICB2b2lkIGludm9rZSgpOwotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZSk7CisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tU
eXBlUmVmIG1lc3NhZ2VCb2R5KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGR1bXAoY29uc3QgY2hh
ciopOwpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDY0MzgwKQor
KysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEwICs4MSwxMyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRvbmUo
KQogeworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkb25lTWVzc2FnZU5hbWUoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZTVFIoIkRvbmUiKSkpOworCiAgICAgc3Rk
OjpzdHJpbmcgb3V0cHV0ID0gbV9vdXRwdXRTdHJlYW0uc3RyKCk7CiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBvdXRwdXRDRlN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3Ry
aW5nKDAsIG91dHB1dC5jX3N0cigpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKLSAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gZG9uZU1lc3NhZ2UoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcob3V0cHV0Q0ZTdHJpbmcuZ2V0KCkpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNz
YWdlKG1fYnVuZGxlLCBkb25lTWVzc2FnZS5nZXQoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGRvbmVNZXNzYWdlQm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmlu
ZyhvdXRwdXRDRlN0cmluZy5nZXQoKSkpOworCisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1
bmRsZSwgZG9uZU1lc3NhZ2VOYW1lLmdldCgpLCBkb25lTWVzc2FnZUJvZHkuZ2V0KCkpOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdl
KQpAQCAtMTAzLDE1ICsxMDYsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoVwogewogICAgIENGU3RyaW5nUmVmIGNmTWVzc2FnZSA9IFdLU3RyaW5nQ29weUNGU3Ry
aW5nKDAsIG1lc3NhZ2VOYW1lKTsKICAgICBpZiAoQ0ZFcXVhbChjZk1lc3NhZ2UsIENGU1RSKCJC
ZWdpblRlc3QiKSkpIHsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGFja01lc3Nh
Z2UoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZTVFIoIkJlZ2luVGVzdEFj
ayIpKSk7Ci0gICAgICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIGFja01lc3NhZ2Uu
Z2V0KCkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYWNrTWVzc2FnZU5hbWUo
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZTVFIoIkFjayIpKSk7CisgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhY2tNZXNzYWdlQm9keShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlNUUigiQmVnaW5UZXN0IikpKTsKKyAgICAgICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgYWNrTWVzc2FnZU5hbWUuZ2V0KCksIGFja01lc3Nh
Z2VCb2R5LmdldCgpKTsKIAogICAgICAgICByZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZShBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlNUUigiRXJyb3I6IFVua25vd24uIikpKTsKLSAg
ICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBlcnJvck1lc3NhZ2UuZ2V0KCkpOworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU1RSKCJFcnJvciIpKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoQ0ZTVFIoIlVua25vd24iKSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9i
dW5kbGUsIGVycm9yTWVzc2FnZU5hbWUuZ2V0KCksIGVycm9yTWVzc2FnZUJvZHkuZ2V0KCkpOwog
fQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldCgpCkluZGV4OiBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5u
ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjQzODApCisrKyBXZWJLaXRU
b29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBACiAJCUJDOTUyRUQyMTFG
M0MyOUYwMDMzOThCNCAvKiBMYXlvdXRUZXN0Q29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzk1MkVEMzExRjNDMzE4MDAzMzk4QjQgLyogQ29kZUdlbmVyYXRvclRlc3RSdW5u
ZXIucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gQ29kZUdlbmVyYXRvclRl
c3RSdW5uZXIucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTUyRjFEMTFGM0M2
NTIwMDMzOThCNCAvKiBKU0xheW91dFRlc3RDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJQkM5NTJGMUUxMUYzQzY1
MjAwMzM5OEI0IC8qIEpTTGF5b3V0VGVzdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBuYW1lID0gSlNMYXlvdXRUZXN0Q29udHJvbGxl
ci5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0xheW91dFRlc3RD
b250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUJDOTUy
RjFFMTFGM0M2NTIwMDMzOThCNCAvKiBKU0xheW91dFRlc3RDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTTGF5b3V0VGVzdENvbnRyb2xsZXIuaDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNMYXlvdXRUZXN0Q29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlCQ0M5OTdBMDExRDNDOEY2
MDAxN0JDQTIgLyogSW5qZWN0ZWRCdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0M5OTdBMTExRDNDOEY2MDAxN0JDQTIgLyogSW5qZWN0ZWRCdW5kbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNDOTk3QTIxMUQzQzhGNjAwMTdCQ0EyIC8qIEluamVjdGVkQnVu
ZGxlUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owo=
</data>
<flag name="review"
          id="51439"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>