<?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>49322</bug_id>
          
          <creation_ts>2010-11-10 09:11:46 -0800</creation_ts>
          <short_desc>Convert client classes to use APIClient base class</short_desc>
          <delta_ts>2010-11-10 09:15:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>307372</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-10 09:11:46 -0800</bug_when>
    <thetext>Convert client classes to use APIClient base class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307373</commentid>
    <comment_count>1</comment_count>
      <attachid>73501</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-10 09:12:23 -0800</bug_when>
    <thetext>Created attachment 73501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307375</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-10 09:15:16 -0800</bug_when>
    <thetext>Fixed in http://trac.webkit.org/changeset/71746.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73501</attachid>
            <date>2010-11-10 09:12:23 -0800</date>
            <delta_ts>2010-11-10 09:13:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchForAPIClient.diff</filename>
            <type>text/plain</type>
            <size>41585</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTcwOCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0
IGNsaWVudCBjbGFzc2VzIHRvIHVzZSBBUElDbGllbnQgYmFzZSBjbGFzcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzIyCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViRm9ybUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZvcm1DbGll
bnQ6OndpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRm9ybUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUG9saWN5
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VUlDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6CisKIDIwMTAtMTEt
MDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IHRoZSBldmVyLXBpY2t5IFdpbmRvd3MgYnVpbGQtYm90LgpJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRm9ybUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRm9ybUNsaWVudC5jcHAJKHJldmlzaW9uIDcxNjk4KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRm9ybUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDIyICszMiw5IEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1XZWJGb3JtQ2xpZW50OjpXZWJGb3JtQ2xpZW50KCkKLXsKLSAg
ICBpbml0aWFsaXplKDApOwotfQotCi12b2lkIFdlYkZvcm1DbGllbnQ6OmluaXRpYWxpemUoY29u
c3QgV0tQYWdlRm9ybUNsaWVudCogY2xpZW50KQotewotICAgIGlmIChjbGllbnQgJiYgIWNsaWVu
dC0+dmVyc2lvbikKLSAgICAgICAgbV9wYWdlRm9ybUNsaWVudCA9ICpjbGllbnQ7Ci0gICAgZWxz
ZSAKLSAgICAgICAgbWVtc2V0KCZtX3BhZ2VGb3JtQ2xpZW50LCAwLCBzaXplb2YobV9wYWdlRm9y
bUNsaWVudCkpOwotfQotCiBib29sIFdlYkZvcm1DbGllbnQ6OndpbGxTdWJtaXRGb3JtKFdlYlBh
Z2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkZyYW1lUHJveHkqIHNvdXJj
ZUZyYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiA+JiB0ZXh0Rmll
bGRWYWx1ZXMsIEFQSU9iamVjdCogdXNlckRhdGEsIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQ
cm94eSogbGlzdGVuZXIpCiB7Ci0gICAgaWYgKCFtX3BhZ2VGb3JtQ2xpZW50LndpbGxTdWJtaXRG
b3JtKQorICAgIGlmICghbV9jbGllbnQud2lsbFN1Ym1pdEZvcm0pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgbWFwOwpAQCAtNTUsNyAr
NDIsNyBAQCBib29sIFdlYkZvcm1DbGllbnQ6OndpbGxTdWJtaXRGb3JtKFdlYlBhCiAgICAgICAg
IG1hcC5zZXQodGV4dEZpZWxkVmFsdWVzW2ldLmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZSh0ZXh0
RmllbGRWYWx1ZXNbaV0uc2Vjb25kKSk7CiAgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+
IHRleHRGaWVsZHNNYXAgPSBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtYXApOwogCi0gICAg
bV9wYWdlRm9ybUNsaWVudC53aWxsU3VibWl0Rm9ybSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUp
LCB0b0FQSShzb3VyY2VGcmFtZSksIHRvQVBJKHRleHRGaWVsZHNNYXAuZ2V0KCkpLCB0b0FQSSh1
c2VyRGF0YSksIHRvQVBJKGxpc3RlbmVyKSwgbV9wYWdlRm9ybUNsaWVudC5jbGllbnRJbmZvKTsK
KyAgICBtX2NsaWVudC53aWxsU3VibWl0Rm9ybSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0
b0FQSShzb3VyY2VGcmFtZSksIHRvQVBJKHRleHRGaWVsZHNNYXAuZ2V0KCkpLCB0b0FQSSh1c2Vy
RGF0YSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmgJKHJldmlzaW9uIDcx
Njk4KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRm9ybUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYkZvcm1DbGllbnRfaAogI2RlZmluZSBXZWJG
b3JtQ2xpZW50X2gKIAorI2luY2x1ZGUgIkFQSUNsaWVudC5oIgogI2luY2x1ZGUgIldLUGFnZS5o
IgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM4LDE1
ICszOSw5IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFz
cyBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHk7CiAKLWNsYXNzIFdlYkZvcm1DbGllbnQg
eworY2xhc3MgV2ViRm9ybUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tQYWdlRm9ybUNsaWVu
dD4gewogcHVibGljOgotICAgIFdlYkZvcm1DbGllbnQoKTsKLSAgICB2b2lkIGluaXRpYWxpemUo
Y29uc3QgV0tQYWdlRm9ybUNsaWVudCopOwotCiAgICAgYm9vbCB3aWxsU3VibWl0Rm9ybShXZWJQ
YWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+ID4mIHRleHRGaWVsZFZhbHVlcywgQVBJT2JqZWN0KiB1
c2VyRGF0YSwgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5Kik7IAotCi1wcml2YXRlOgot
ICAgIFdLUGFnZUZvcm1DbGllbnQgbV9wYWdlRm9ybUNsaWVudDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCShyZXZp
c2lvbiA3MTY5OCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDE3NyArMzIsMTY0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViTG9hZGVyQ2xpZW50OjpXZWJMb2FkZXJDbGll
bnQoKQotewotICAgIGluaXRpYWxpemUoMCk7Ci19Ci0KLXZvaWQgV2ViTG9hZGVyQ2xpZW50Ojpp
bml0aWFsaXplKGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudCogY2xpZW50KQotewotICAgIGlmIChj
bGllbnQgJiYgIWNsaWVudC0+dmVyc2lvbikKLSAgICAgICAgbV9wYWdlTG9hZGVyQ2xpZW50ID0g
KmNsaWVudDsKLSAgICBlbHNlIAotICAgICAgICBtZW1zZXQoJm1fcGFnZUxvYWRlckNsaWVudCwg
MCwgc2l6ZW9mKG1fcGFnZUxvYWRlckNsaWVudCkpOwotfQotCiB2b2lkIFdlYkxvYWRlckNsaWVu
dDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewotICAgIGlmICghbV9w
YWdlTG9hZGVyQ2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpCisgICAgaWYg
KCFtX2NsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fcGFnZUxv
YWRlckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkq
IHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewotICAg
IGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKQorICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcGFnZUxvYWRlckNsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSks
IG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2
b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZy
YW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewotICAgIGlmICghbV9wYWdl
TG9hZGVyQ2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSkKKyAg
ICBpZiAoIW1fY2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQ
SShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8p
OworICAgIG1fY2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0
b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRDb21t
aXRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwg
QVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBpZiAoIW1fcGFnZUxvYWRlckNsaWVudC5kaWRD
b21taXRMb2FkRm9yRnJhbWUpCisgICAgaWYgKCFtX2NsaWVudC5kaWRDb21taXRMb2FkRm9yRnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRDb21taXRM
b2FkRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBt
X3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewotICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50
LmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKQorICAgIGlmICghbV9jbGllbnQuZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxv
YWRlckNsaWVudC5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZv
KTsKKyAgICBtX2NsaWVudC5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh0b0FQSShwYWdl
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwog
fQogCiB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYlBhZ2VQ
cm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7
Ci0gICAgaWYgKCFtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lKQorICAg
IGlmICghbV9jbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lKHRvQVBJKHBhZ2Up
LCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVu
dEluZm8pOworICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSh0b0FQSShwYWdlKSwg
dG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQog
CiB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBpZiAoIW1fcGFnZUxvYWRlckNs
aWVudC5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKQorICAgIGlmICghbV9jbGllbnQuZGlk
RmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdl
TG9hZGVyQ2xpZW50LmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodG9BUEkocGFnZSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkoZXJyb3IpLCB0b0FQSSh1c2VyRGF0YSksIG1fcGFnZUxvYWRlckNs
aWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZy
YW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAg
aWYgKCFtX3BhZ2VMb2FkZXJDbGllbnQuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpCisgICAgaWYg
KCFtX2NsaWVudC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHRvQVBJKHBhZ2Up
LCB0b0FQSSh0aXRsZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9w
YWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSSh0aXRsZS5pbXBsKCkpLCB0b0FQSShmcmFtZSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9h
ZGVyQ2xpZW50OjpkaWRGaXJzdExheW91dEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2Vi
RnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgaWYgKCFtX3Bh
Z2VMb2FkZXJDbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkKKyAgICBpZiAoIW1fY2xpZW50
LmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxv
YWRlckNsaWVudC5kaWRGaXJzdExheW91dEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOworICAg
IG1fY2xpZW50LmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1l
KSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJM
b2FkZXJDbGllbnQ6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdlYlBh
Z2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEp
CiB7Ci0gICAgaWYgKCFtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9yRnJhbWUpCisgICAgaWYgKCFtX2NsaWVudC5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlTG9hZGVyQ2xp
ZW50LmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0
b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudElu
Zm8pOworICAgIG1fY2xpZW50LmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1l
KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZW1vdmVGcmFtZUZyb21I
aWVyYXJjaHkoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJT2Jq
ZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBpZiAoIW1fcGFnZUxvYWRlckNsaWVudC5kaWRSZW1vdmVG
cmFtZUZyb21IaWVyYXJjaHkpCisgICAgaWYgKCFtX2NsaWVudC5kaWRSZW1vdmVGcmFtZUZyb21I
aWVyYXJjaHkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRS
ZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEko
dXNlckRhdGEpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQu
ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9hZGVy
Q2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiBw
YWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBp
ZiAoIW1fcGFnZUxvYWRlckNsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUp
CisgICAgaWYgKCFtX2NsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkodXNlckRh
dGEpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkRGlz
cGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9hZGVy
Q2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2Us
IFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewotICAgIGlmICgh
bV9wYWdlTG9hZGVyQ2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKQorICAgIGlm
ICghbV9jbGllbnQuZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fcGFnZUxvYWRl
ckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xp
ZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm9n
cmVzcyhXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgaWYgKCFtX3BhZ2VMb2FkZXJDbGllbnQu
ZGlkU3RhcnRQcm9ncmVzcykKKyAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0UHJvZ3Jlc3MpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRTdGFydFByb2dyZXNz
KHRvQVBJKHBhZ2UpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGll
bnQuZGlkU3RhcnRQcm9ncmVzcyh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9
CiAKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VQcm9ncmVzcyhXZWJQYWdlUHJveHkq
IHBhZ2UpCiB7Ci0gICAgaWYgKCFtX3BhZ2VMb2FkZXJDbGllbnQuZGlkQ2hhbmdlUHJvZ3Jlc3Mp
CisgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VQcm9ncmVzcykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZENoYW5nZVByb2dyZXNzKHRvQVBJKHBhZ2UpLCBt
X3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkQ2hhbmdlUHJv
Z3Jlc3ModG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkxv
YWRlckNsaWVudDo6ZGlkRmluaXNoUHJvZ3Jlc3MoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAg
IGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZpbmlzaFByb2dyZXNzKQorICAgIGlmICghbV9j
bGllbnQuZGlkRmluaXNoUHJvZ3Jlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxv
YWRlckNsaWVudC5kaWRGaW5pc2hQcm9ncmVzcyh0b0FQSShwYWdlKSwgbV9wYWdlTG9hZGVyQ2xp
ZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZEZpbmlzaFByb2dyZXNzKHRvQVBJKHBh
Z2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OnBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIGlm
ICghbV9wYWdlTG9hZGVyQ2xpZW50LnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpCisgICAg
aWYgKCFtX2NsaWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3BhZ2VMb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2
ZSh0b0FQSShwYWdlKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xp
ZW50LnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUodG9BUEkocGFnZSksIG1fY2xpZW50LmNs
aWVudEluZm8pOwogfQogCiB2b2lkIFdlYkxvYWRlckNsaWVudDo6cHJvY2Vzc0RpZEJlY29tZVJl
c3BvbnNpdmUoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIGlmICghbV9wYWdlTG9hZGVyQ2xp
ZW50LnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKQorICAgIGlmICghbV9jbGllbnQucHJvY2Vz
c0RpZEJlY29tZVJlc3BvbnNpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxvYWRl
ckNsaWVudC5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSh0b0FQSShwYWdlKSwgbV9wYWdlTG9h
ZGVyQ2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnByb2Nlc3NEaWRCZWNvbWVSZXNw
b25zaXZlKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJM
b2FkZXJDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAg
aWYgKCFtX3BhZ2VMb2FkZXJDbGllbnQucHJvY2Vzc0RpZENyYXNoKQorICAgIGlmICghbV9jbGll
bnQucHJvY2Vzc0RpZENyYXNoKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VMb2FkZXJD
bGllbnQucHJvY2Vzc0RpZENyYXNoKHRvQVBJKHBhZ2UpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xp
ZW50SW5mbyk7CisgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKHRvQVBJKHBhZ2UpLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgaWYgKCFtX3BhZ2VMb2Fk
ZXJDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KQorICAgIGlmICghbV9jbGllbnQuZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VMb2Fk
ZXJDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KHRvQVBJKHBhZ2UpLCBtX3BhZ2VMb2Fk
ZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
NzE2OTgpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJMb2FkZXJDbGllbnRfaAogI2RlZmlu
ZSBXZWJMb2FkZXJDbGllbnRfaAogCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAi
V0tQYWdlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzksMTEgKzQwLDggQEAg
Y2xhc3MgQVBJT2JqZWN0OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViRnJhbWVQcm94
eTsKIAotY2xhc3MgV2ViTG9hZGVyQ2xpZW50IHsKK2NsYXNzIFdlYkxvYWRlckNsaWVudCA6IHB1
YmxpYyBBUElDbGllbnQ8V0tQYWdlTG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6Ci0gICAgV2ViTG9h
ZGVyQ2xpZW50KCk7Ci0gICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdLUGFnZUxvYWRlckNsaWVu
dCopOwotCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQ
cm94eSosIFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdl
YkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSU9iamVjdCopOwpAQCAtNjgsOSArNjYsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViUGFnZVByb3h5Kik7CiAKICAgICB2
b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkqKTsKLQotcHJpdmF0ZToK
LSAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbV9wYWdlTG9hZGVyQ2xpZW50OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHAJ
KHJldmlzaW9uIDcxNjk4KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNDMgKzMyLDMwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViUG9saWN5Q2xpZW50OjpXZWJQb2xpY3lD
bGllbnQoKQotewotICAgIGluaXRpYWxpemUoMCk7Ci19Ci0KLXZvaWQgV2ViUG9saWN5Q2xpZW50
Ojppbml0aWFsaXplKGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudCogY2xpZW50KQotewotICAgIGlm
IChjbGllbnQgJiYgIWNsaWVudC0+dmVyc2lvbikKLSAgICAgICAgbV9wYWdlUG9saWN5Q2xpZW50
ID0gKmNsaWVudDsKLSAgICBlbHNlIAotICAgICAgICBtZW1zZXQoJm1fcGFnZVBvbGljeUNsaWVu
dCwgMCwgc2l6ZW9mKG1fcGFnZVBvbGljeUNsaWVudCkpOwotfQotCiBib29sIFdlYlBvbGljeUNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkqIHBhZ2Us
IE5hdmlnYXRpb25UeXBlIHR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBXZWJN
b3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IFN0cmluZyYgdXJsLCBXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikKIHsK
LSAgICBpZiAoIW1fcGFnZVBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKQorICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9wYWdlUG9saWN5Q2xpZW50LmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24odG9BUEkocGFnZSksIHRvQVBJKHR5cGUpLCB0b0FQSSht
b2RpZmllcnMpLCB0b0FQSShtb3VzZUJ1dHRvbiksIHRvVVJMUmVmKHVybC5pbXBsKCkpLCB0b0FQ
SShmcmFtZSksIHRvQVBJKGxpc3RlbmVyKSwgbV9wYWdlUG9saWN5Q2xpZW50LmNsaWVudEluZm8p
OworICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odG9BUEkocGFn
ZSksIHRvQVBJKHR5cGUpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSShtb3VzZUJ1dHRvbiksIHRv
VVJMUmVmKHVybC5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV2ViUG9saWN5Q2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViUGFnZVByb3h5KiBwYWdlLCBO
YXZpZ2F0aW9uVHlwZSB0eXBlLCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgV2ViTW91
c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCBTdHJpbmcmIHVybCwgV2ViRnJhbWVQ
cm94eSogZnJhbWUsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCiB7Ci0g
ICAgaWYgKCFtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KQorICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKHRvQVBJKHBhZ2UpLCB0b0FQSSh0eXBlKSwgdG9BUEkobW9kaWZp
ZXJzKSwgdG9BUEkobW91c2VCdXR0b24pLCB0b1VSTFJlZih1cmwuaW1wbCgpKSwgdG9BUEkoZnJh
bWUpLCB0b0FQSShsaXN0ZW5lciksIG1fcGFnZVBvbGljeUNsaWVudC5jbGllbnRJbmZvKTsKKyAg
ICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9BUEkocGFnZSksIHRv
QVBJKHR5cGUpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSShtb3VzZUJ1dHRvbiksIHRvVVJMUmVm
KHVybC5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV2ViUG9saWN5Q2xpZW50Ojpk
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikKIHsKLSAgICBpZiAoIW1fcGFnZVBvbGlj
eUNsaWVudC5kZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSkKKyAgICBpZiAoIW1fY2xpZW50LmRlY2lk
ZVBvbGljeUZvck1JTUVUeXBlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BhZ2VQ
b2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUodG9BUEkocGFnZSksIHRvQVBJKE1J
TUVUeXBlLmltcGwoKSksIHRvVVJMUmVmKHVybC5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KGxpc3RlbmVyKSwgbV9wYWdlUG9saWN5Q2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50
LmRlY2lkZVBvbGljeUZvck1JTUVUeXBlKHRvQVBJKHBhZ2UpLCB0b0FQSShNSU1FVHlwZS5pbXBs
KCkpLCB0b1VSTFJlZih1cmwuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShsaXN0ZW5lciks
IG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuaAkocmV2aXNpb24gNzE2OTgpCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBXZWJQb2xpY3lDbGllbnRfaAogI2RlZmluZSBXZWJQb2xpY3lDbGllbnRfaAog
CisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSAi
V2ViRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTM3
LDE3ICszOCwxMSBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5Owog
Y2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OwogCi1jbGFzcyBXZWJQb2xpY3lDbGll
bnQgeworY2xhc3MgV2ViUG9saWN5Q2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS1BhZ2VQb2xp
Y3lDbGllbnQ+IHsKIHB1YmxpYzoKLSAgICBXZWJQb2xpY3lDbGllbnQoKTsKLSAgICB2b2lkIGlu
aXRpYWxpemUoY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50Kik7Ci0KICAgICBib29sIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5KiwgV2ViQ29yZTo6TmF2aWdhdGlv
blR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3Qg
U3RyaW5nJiB1cmwsIFdlYkZyYW1lUHJveHkqLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkq
KTsKICAgICBib29sIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkq
LCBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSwgV2ViRXZlbnQ6Ok1vZGlmaWVycywgV2ViTW91c2VF
dmVudDo6QnV0dG9uLCBjb25zdCBTdHJpbmcmIHVybCwgV2ViRnJhbWVQcm94eSosIFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eSopOwogICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUo
V2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIFdlYkZyYW1l
UHJveHkqLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqKTsKLQotcHJpdmF0ZToKLSAgICBX
S1BhZ2VQb2xpY3lDbGllbnQgbV9wYWdlUG9saWN5Q2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCShyZXZpc2lvbiA3MTY5
OCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsMjIgKzQwLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1XZWJVSUNsaWVudDo6V2ViVUlDbGllbnQoKQotewotICAgIGluaXRpYWxpemUo
MCk7Ci19Ci0KLXZvaWQgV2ViVUlDbGllbnQ6OmluaXRpYWxpemUoY29uc3QgV0tQYWdlVUlDbGll
bnQqIGNsaWVudCkKLXsKLSAgICBpZiAoY2xpZW50ICYmICFjbGllbnQtPnZlcnNpb24pCi0gICAg
ICAgIG1fcGFnZVVJQ2xpZW50ID0gKmNsaWVudDsKLSAgICBlbHNlIAotICAgICAgICBtZW1zZXQo
Jm1fcGFnZVVJQ2xpZW50LCAwLCBzaXplb2YobV9wYWdlVUlDbGllbnQpKTsKLX0KLQogUGFzc1Jl
ZlB0cjxXZWJQYWdlUHJveHk+IFdlYlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94
eSogcGFnZSwgY29uc3QgV2luZG93RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCBXZWJFdmVudDo6
TW9kaWZpZXJzIG1vZGlmaWVycywgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbikKIHsKLSAg
ICBpZiAoIW1fcGFnZVVJQ2xpZW50LmNyZWF0ZU5ld1BhZ2UpCisgICAgaWYgKCFtX2NsaWVudC5j
cmVhdGVOZXdQYWdlKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEltbXV0YWJsZURpY3Rpb25h
cnk6Ok1hcFR5cGUgbWFwOwpAQCAtNzYsNDcgKzYzLDQ3IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVBy
b3h5PiBXZWJVSUNsaWVudDo6Y3IKICAgICBtYXAuc2V0KCJkaWFsb2ciLCBXZWJCb29sZWFuOjpj
cmVhdGUod2luZG93RmVhdHVyZXMuZGlhbG9nKSk7CiAgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rp
b25hcnk+IGZlYXR1cmVzTWFwID0gSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWFwKTsKIAot
ICAgIHJldHVybiBhZG9wdFJlZih0b0ltcGwobV9wYWdlVUlDbGllbnQuY3JlYXRlTmV3UGFnZSh0
b0FQSShwYWdlKSwgdG9BUEkoZmVhdHVyZXNNYXAuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCB0
b0FQSShidXR0b24pLCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJbmZvKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZSh0b0FQSShwYWdlKSwgdG9BUEko
ZmVhdHVyZXNNYXAuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSShidXR0b24pLCBtX2Ns
aWVudC5jbGllbnRJbmZvKSkpOwogfSAKIAogdm9pZCBXZWJVSUNsaWVudDo6c2hvd1BhZ2UoV2Vi
UGFnZVByb3h5KiBwYWdlKQogewotICAgIGlmICghbV9wYWdlVUlDbGllbnQuc2hvd1BhZ2UpCisg
ICAgaWYgKCFtX2NsaWVudC5zaG93UGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1f
cGFnZVVJQ2xpZW50LnNob3dQYWdlKHRvQVBJKHBhZ2UpLCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICBtX2NsaWVudC5zaG93UGFnZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CiB9CiAKIHZvaWQgV2ViVUlDbGllbnQ6OmNsb3NlKFdlYlBhZ2VQcm94eSogcGFnZSkK
IHsKLSAgICBpZiAoIW1fcGFnZVVJQ2xpZW50LmNsb3NlKQorICAgIGlmICghbV9jbGllbnQuY2xv
c2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3BhZ2VVSUNsaWVudC5jbG9zZSh0b0FQ
SShwYWdlKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuY2xvc2Uo
dG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYlVJQ2xpZW50
OjpydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lKQogewotICAgIGlmICghbV9wYWdlVUlDbGllbnQu
cnVuSmF2YVNjcmlwdEFsZXJ0KQorICAgIGlmICghbV9jbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wYWdlVUlDbGllbnQucnVuSmF2YVNjcmlw
dEFsZXJ0KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwg
bV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdEFs
ZXJ0KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIGJvb2wgV2ViVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRD
b25maXJtKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFt
ZVByb3h5KiBmcmFtZSkKIHsKLSAgICBpZiAoIW1fcGFnZVVJQ2xpZW50LnJ1bkphdmFTY3JpcHRD
b25maXJtKQorICAgIGlmICghbV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX3BhZ2VVSUNsaWVudC5ydW5KYXZhU2NyaXB0
Q29uZmlybSh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSks
IG1fcGFnZVVJQ2xpZW50LmNsaWVudEluZm8pOworICAgIHJldHVybiBtX2NsaWVudC5ydW5KYXZh
U2NyaXB0Q29uZmlybSh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShm
cmFtZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiBTdHJpbmcgV2ViVUlDbGllbnQ6OnJ1
bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkKIHsK
LSAgICBpZiAoIW1fcGFnZVVJQ2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQpCisgICAgaWYgKCFt
X2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBXZWJTdHJpbmcqIHN0cmluZyA9IHRvSW1wbChtX3BhZ2VVSUNsaWVudC5ydW5KYXZhU2Ny
aXB0UHJvbXB0KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1
bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fcGFnZVVJQ2xpZW50LmNsaWVudEluZm8p
KTsKKyAgICBXZWJTdHJpbmcqIHN0cmluZyA9IHRvSW1wbChtX2NsaWVudC5ydW5KYXZhU2NyaXB0
UHJvbXB0KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRW
YWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmNsaWVudEluZm8pKTsKICAgICBp
ZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0xMjgsMTI2ICsxMTUs
MTI2IEBAIFN0cmluZyBXZWJVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdCgKIAogdm9pZCBX
ZWJVSUNsaWVudDo6c2V0U3RhdHVzVGV4dChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKLSAgICBpZiAoIW1fcGFnZVVJQ2xpZW50LnNldFN0YXR1c1RleHQpCisgICAg
aWYgKCFtX2NsaWVudC5zZXRTdGF0dXNUZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bh
Z2VVSUNsaWVudC5zZXRTdGF0dXNUZXh0KHRvQVBJKHBhZ2UpLCB0b0FQSSh0ZXh0LmltcGwoKSks
IG1fcGFnZVVJQ2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnNldFN0YXR1c1RleHQo
dG9BUEkocGFnZSksIHRvQVBJKHRleHQuaW1wbCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9
CiAKIHZvaWQgV2ViVUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIEFQSU9iamVjdCogdXNlckRh
dGEpCiB7Ci0gICAgaWYgKCFtX3BhZ2VVSUNsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCkK
KyAgICBpZiAoIW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3BhZ2VVSUNsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShw
YWdlKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEkodXNlckRhdGEpLCBtX3BhZ2VVSUNsaWVudC5j
bGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShw
YWdlKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKIH0KIAogdm9pZCBXZWJVSUNsaWVudDo6ZGlkTm90SGFuZGxlS2V5RXZlbnQoV2ViUGFn
ZVByb3h5KiBwYWdlLCBjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKLSAg
ICBpZiAoIW1fcGFnZVVJQ2xpZW50LmRpZE5vdEhhbmRsZUtleUV2ZW50KQorICAgIGlmICghbV9j
bGllbnQuZGlkTm90SGFuZGxlS2V5RXZlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3BhZ2VV
SUNsaWVudC5kaWROb3RIYW5kbGVLZXlFdmVudCh0b0FQSShwYWdlKSwgZXZlbnQubmF0aXZlRXZl
bnQoKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkTm90SGFu
ZGxlS2V5RXZlbnQodG9BUEkocGFnZSksIGV2ZW50Lm5hdGl2ZUV2ZW50KCksIG1fY2xpZW50LmNs
aWVudEluZm8pOwogfQogCiBib29sIFdlYlVJQ2xpZW50Ojp0b29sYmFyc0FyZVZpc2libGUoV2Vi
UGFnZVByb3h5KiBwYWdlKQogewotICAgIGlmICghbV9wYWdlVUlDbGllbnQudG9vbGJhcnNBcmVW
aXNpYmxlKQorICAgIGlmICghbV9jbGllbnQudG9vbGJhcnNBcmVWaXNpYmxlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbV9wYWdlVUlDbGllbnQudG9vbGJhcnNBcmVWaXNpYmxl
KHRvQVBJKHBhZ2UpLCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gbV9j
bGllbnQudG9vbGJhcnNBcmVWaXNpYmxlKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKIAogfQogdm9pZCBXZWJVSUNsaWVudDo6c2V0VG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBhZ2VQ
cm94eSogcGFnZSwgYm9vbCB2aXNpYmxlKQogewotICAgIGlmICghbV9wYWdlVUlDbGllbnQuc2V0
VG9vbGJhcnNBcmVWaXNpYmxlKQorICAgIGlmICghbV9jbGllbnQuc2V0VG9vbGJhcnNBcmVWaXNp
YmxlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wYWdlVUlDbGllbnQuc2V0VG9vbGJhcnNBcmVW
aXNpYmxlKHRvQVBJKHBhZ2UpLCB2aXNpYmxlLCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJbmZvKTsK
KyAgICBtX2NsaWVudC5zZXRUb29sYmFyc0FyZVZpc2libGUodG9BUEkocGFnZSksIHZpc2libGUs
IG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiBib29sIFdlYlVJQ2xpZW50OjptZW51QmFySXNW
aXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBpZiAoIW1fcGFnZVVJQ2xpZW50Lm1l
bnVCYXJJc1Zpc2libGUpCisgICAgaWYgKCFtX2NsaWVudC5tZW51QmFySXNWaXNpYmxlKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbV9wYWdlVUlDbGllbnQubWVudUJhcklzVmlz
aWJsZSh0b0FQSShwYWdlKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbyk7CisgICAgcmV0dXJu
IG1fY2xpZW50Lm1lbnVCYXJJc1Zpc2libGUodG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudElu
Zm8pOwogfQogCiB2b2lkIFdlYlVJQ2xpZW50OjpzZXRNZW51QmFySXNWaXNpYmxlKFdlYlBhZ2VQ
cm94eSogcGFnZSwgYm9vbCB2aXNpYmxlKQogewotICAgIGlmICghbV9wYWdlVUlDbGllbnQuc2V0
TWVudUJhcklzVmlzaWJsZSkKKyAgICBpZiAoIW1fY2xpZW50LnNldE1lbnVCYXJJc1Zpc2libGUp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3BhZ2VVSUNsaWVudC5zZXRNZW51QmFySXNWaXNpYmxl
KHRvQVBJKHBhZ2UpLCB2aXNpYmxlLCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBt
X2NsaWVudC5zZXRNZW51QmFySXNWaXNpYmxlKHRvQVBJKHBhZ2UpLCB2aXNpYmxlLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKIH0KIAogYm9vbCBXZWJVSUNsaWVudDo6c3RhdHVzQmFySXNWaXNpYmxl
KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBpZiAoIW1fcGFnZVVJQ2xpZW50LnN0YXR1c0Jh
cklzVmlzaWJsZSkKKyAgICBpZiAoIW1fY2xpZW50LnN0YXR1c0JhcklzVmlzaWJsZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fcGFnZVVJQ2xpZW50LnN0YXR1c0JhcklzVmlz
aWJsZSh0b0FQSShwYWdlKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbyk7CisgICAgcmV0dXJu
IG1fY2xpZW50LnN0YXR1c0JhcklzVmlzaWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CiB9CiAKIHZvaWQgV2ViVUlDbGllbnQ6OnNldFN0YXR1c0JhcklzVmlzaWJsZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIGJvb2wgdmlzaWJsZSkKIHsKLSAgICBpZiAoIW1fcGFnZVVJQ2xpZW50
LnNldFN0YXR1c0JhcklzVmlzaWJsZSkKKyAgICBpZiAoIW1fY2xpZW50LnNldFN0YXR1c0Jhcklz
VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcGFnZVVJQ2xpZW50LnNldFN0YXR1c0Jh
cklzVmlzaWJsZSh0b0FQSShwYWdlKSwgdmlzaWJsZSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5m
byk7CisgICAgbV9jbGllbnQuc2V0U3RhdHVzQmFySXNWaXNpYmxlKHRvQVBJKHBhZ2UpLCB2aXNp
YmxlLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogYm9vbCBXZWJVSUNsaWVudDo6aXNSZXNp
emFibGUoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIGlmICghbV9wYWdlVUlDbGllbnQuaXNS
ZXNpemFibGUpCisgICAgaWYgKCFtX2NsaWVudC5pc1Jlc2l6YWJsZSkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgcmV0dXJuIG1fcGFnZVVJQ2xpZW50LmlzUmVzaXphYmxlKHRvQVBJKHBhZ2Up
LCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gbV9jbGllbnQuaXNSZXNp
emFibGUodG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYlVJ
Q2xpZW50OjpzZXRJc1Jlc2l6YWJsZShXZWJQYWdlUHJveHkqIHBhZ2UsIGJvb2wgcmVzaXphYmxl
KQogewotICAgIGlmICghbV9wYWdlVUlDbGllbnQuc2V0SXNSZXNpemFibGUpCisgICAgaWYgKCFt
X2NsaWVudC5zZXRJc1Jlc2l6YWJsZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcGFnZVVJQ2xp
ZW50LnNldElzUmVzaXphYmxlKHRvQVBJKHBhZ2UpLCByZXNpemFibGUsIG1fcGFnZVVJQ2xpZW50
LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnNldElzUmVzaXphYmxlKHRvQVBJKHBhZ2UpLCBy
ZXNpemFibGUsIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYlVJQ2xpZW50Ojpz
ZXRXaW5kb3dGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWUp
CiB7Ci0gICAgaWYgKCFtX3BhZ2VVSUNsaWVudC5zZXRXaW5kb3dGcmFtZSkKKyAgICBpZiAoIW1f
Y2xpZW50LnNldFdpbmRvd0ZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VVSUNs
aWVudC5zZXRXaW5kb3dGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX3BhZ2VVSUNs
aWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5zZXRXaW5kb3dGcmFtZSh0b0FQSShwYWdl
KSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogRmxvYXRSZWN0IFdl
YlVJQ2xpZW50Ojp3aW5kb3dGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgaWYgKCFt
X3BhZ2VVSUNsaWVudC5nZXRXaW5kb3dGcmFtZSkKKyAgICBpZiAoIW1fY2xpZW50LmdldFdpbmRv
d0ZyYW1lKQogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAKLSAgICByZXR1cm4gdG9JbXBs
KG1fcGFnZVVJQ2xpZW50LmdldFdpbmRvd0ZyYW1lKHRvQVBJKHBhZ2UpLCBtX3BhZ2VVSUNsaWVu
dC5jbGllbnRJbmZvKSk7CisgICAgcmV0dXJuIHRvSW1wbChtX2NsaWVudC5nZXRXaW5kb3dGcmFt
ZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbykpOwogfQogCiBib29sIFdlYlVJQ2xp
ZW50OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQogewotICAgIHJldHVybiBtX3Bh
Z2VVSUNsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAgcmV0dXJuIG1fY2xp
ZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKIH0KIAogYm9vbCBXZWJVSUNsaWVudDo6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkKIHsKLSAgICBpZiAoIW1fcGFnZVVJ
Q2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkKKyAgICBpZiAoIW1fY2xpZW50LnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBy
ZXR1cm4gbV9wYWdlVUlDbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRvQVBJKHBh
Z2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9wYWdlVUlDbGllbnQu
Y2xpZW50SW5mbyk7CisgICAgcmV0dXJuIG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYlVJQ2xpZW50OjpkaWREcmF3KFdlYlBh
Z2VQcm94eSogcGFnZSkKIHsKLSAgICBpZiAoIW1fcGFnZVVJQ2xpZW50LmRpZERyYXcpCisgICAg
aWYgKCFtX2NsaWVudC5kaWREcmF3KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VVSUNs
aWVudC5kaWREcmF3KHRvQVBJKHBhZ2UpLCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJbmZvKTsKKyAg
ICBtX2NsaWVudC5kaWREcmF3KHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0K
IAogdm9pZCBXZWJVSUNsaWVudDo6cGFnZURpZFNjcm9sbChXZWJQYWdlUHJveHkqIHBhZ2UpCiB7
Ci0gICAgaWYgKCFtX3BhZ2VVSUNsaWVudC5wYWdlRGlkU2Nyb2xsKQorICAgIGlmICghbV9jbGll
bnQucGFnZURpZFNjcm9sbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlVUlDbGllbnQu
cGFnZURpZFNjcm9sbCh0b0FQSShwYWdlKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbyk7Cisg
ICAgbV9jbGllbnQucGFnZURpZFNjcm9sbCh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5m
byk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVu
dC5oCShyZXZpc2lvbiA3MTY5OCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViVUlDbGllbnRfaAog
I2RlZmluZSBXZWJVSUNsaWVudF9oCiAKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKICNpbmNsdWRl
ICJXS1BhZ2UuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CkBAIC00NCwxMSArNDUsOCBAQCBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OwogY2xh
c3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAotY2xhc3MgV2ViVUlDbGll
bnQgeworY2xhc3MgV2ViVUlDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLUGFnZVVJQ2xpZW50
PiB7CiBwdWJsaWM6Ci0gICAgV2ViVUlDbGllbnQoKTsKLSAgICB2b2lkIGluaXRpYWxpemUoY29u
c3QgV0tQYWdlVUlDbGllbnQqKTsKLQogICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVh
dGVOZXdQYWdlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwg
V2ViRXZlbnQ6Ok1vZGlmaWVycywgV2ViTW91c2VFdmVudDo6QnV0dG9uKTsKICAgICB2b2lkIHNo
b3dQYWdlKFdlYlBhZ2VQcm94eSopOwogICAgIHZvaWQgY2xvc2UoV2ViUGFnZVByb3h5Kik7CkBA
IC03OSw5ICs3Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkRHJhdyhXZWJQYWdlUHJveHkq
KTsKICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoV2ViUGFnZVByb3h5Kik7Ci0KLXByaXZhdGU6Ci0g
ICAgV0tQYWdlVUlDbGllbnQgbV9wYWdlVUlDbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiA3MTY5OCkKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcyLDggKzE1NzIsNiBAQAogCQlCQzAzMkQ1RTEwRjQz
NzJCMDA1OEMxNUEgLyogV2ViUGFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmNwcCAqLywKLQkJCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUu
aCAqLywKIAkJCQlCQzk2M0Q2QzExM0REMTk1MDA1NzRCRTIgLyogbWFjICovLAogCQkJCUJDNUY3
QkIyMTE4MjM3NkMwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuY3BwICovLAog
CQkJCUJDNUY3QkIzMTE4MjM3NkMwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEu
aCAqLywKQEAgLTE1ODcsNiArMTU4NSw4IEBACiAJCQkJMUE5MEMyMzUxMjY1MDcxNzAwM0U0NEQ0
IC8qIFBhZ2VPdmVybGF5LmggKi8sCiAJCQkJQkM3MkI5RjgxMUU2NDc2QjAwMUVCNEVBIC8qIFdl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCAqLywKIAkJCQlCQzcyQjlGOTExRTY0NzZCMDAxRUI0
RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCAqLywKKwkJCQk1MTg3MUI1OTEyN0NCODlE
MDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovLAorCQkJCTUxODcxQjVBMTI3Q0I4OUQw
MEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovLAogCQkJCUJDQTBFRjdFMTIzMzFFNzgwMDdE
M0NGQiAvKiBXZWJFZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJQkNBMEVGN0QxMjMzMUU3ODAwN0Qz
Q0ZCIC8qIFdlYkVkaXRDb21tYW5kLmggKi8sCiAJCQkJQkMxMTFBREMxMTJGNUI5MzAwMzM3QkFC
IC8qIFdlYkZyYW1lLmNwcCAqLywKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50LmNwcAkocmV2aXNpb24gNzE2OTgpCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxOSArMzgsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCgpCi17Ci0gICAgaW5p
dGlhbGl6ZSgwKTsKLX0KLQotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dDo6aW5pdGlhbGl6ZShXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCogY2xpZW50KQotewot
ICAgIGlmIChjbGllbnQgJiYgIWNsaWVudC0+dmVyc2lvbikKLSAgICAgICAgbV9jbGllbnQgPSAq
Y2xpZW50OwotICAgIGVsc2UgCi0gICAgICAgIG1lbXNldCgmbV9jbGllbnQsIDAsIHNpemVvZiht
X2NsaWVudCkpOwotfQotCiBib29sIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpD
b250ZXh0TWVudSogZGVmYXVsdE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYg
bmV3TWVudSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbURlZmF1bHRN
ZW51KQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgJ
KHJldmlzaW9uIDcxNjk4KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRf
aAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudF9oCiAKKyNpbmNs
dWRlICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTM4LDE1ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIEluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50IHsKK2NsYXNzIEluamVjdGVkQnVuZGxlUGFn
ZUNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudD4gewogcHVibGljOgotICAgIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50KCk7Ci0gICAgdm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50Kik7Ci0KICAgICBib29sIGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2Uq
LCBXZWJDb3JlOjpDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhPiYgbmV3TWVudSk7Ci0KLXByaXZhdGU6Ci0gICAgV0tCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQgbV9jbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiA3MTY5OCkK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxOSArMzUsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50KCkKLXsKLSAg
ICBpbml0aWFsaXplKDApOwotfQotCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dDo6aW5pdGlhbGl6ZShXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQqIGNsaWVudCkKLXsKLSAgICBp
ZiAoY2xpZW50ICYmICFjbGllbnQtPnZlcnNpb24pCi0gICAgICAgIG1fY2xpZW50ID0gKmNsaWVu
dDsKLSAgICBlbHNlIAotICAgICAgICBtZW1zZXQoJm1fY2xpZW50LCAwLCBzaXplb2YobV9jbGll
bnQpKTsKLX0KLQogYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEJl
Z2luRWRpdGluZyhXZWJQYWdlKiBwYWdlLCBSYW5nZSogcmFuZ2UpCiB7CiAgICAgaWYgKG1fY2xp
ZW50LnNob3VsZEJlZ2luRWRpdGluZykgewpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuaAkocmV2aXNpb24gNzE2OTgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
X2gKICNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50X2gKIAorI2luY2x1ZGUg
IkFQSUNsaWVudC5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRWRpdG9ySW5zZXJ0QWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0QWZmaW5pdHku
aD4KQEAgLTQyLDExICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7
CiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQg
eworY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50IDogcHVibGljIEFQSUNsaWVu
dDxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+IHsKIHB1YmxpYzoKLSAgICBJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQoKTsKLSAgICB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50Kik7Ci0KICAgICBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJQYWdlKiwgV2Vi
Q29yZTo6UmFuZ2UqKTsKICAgICBib29sIHNob3VsZEVuZEVkaXRpbmcoV2ViUGFnZSosIFdlYkNv
cmU6OlJhbmdlKik7CiAgICAgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYlBhZ2UqLCBXZWJDb3Jl
OjpOb2RlKiwgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlVG9SZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24pOwpAQCAtNTgsOSArNTYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmRF
ZGl0aW5nKFdlYlBhZ2UqLCBTdHJpbmdJbXBsKiBub3RpZmljYXRpb25OYW1lKTsKICAgICB2b2lk
IGRpZENoYW5nZShXZWJQYWdlKiwgU3RyaW5nSW1wbCogbm90aWZpY2F0aW9uTmFtZSk7CiAgICAg
dm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSosIFN0cmluZ0ltcGwqIG5vdGlmaWNhdGlv
bk5hbWUpOwotCi1wcml2YXRlOgotICAgIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudCBtX2NsaWVu
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VGb3JtQ2xpZW50LmNwcAkocmV2aXNpb24gNzE2OTgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDE5ICszNyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6SW5qZWN0ZWRC
dW5kbGVQYWdlRm9ybUNsaWVudCgpCi17Ci0gICAgaW5pdGlhbGl6ZSgwKTsKLX0KLQotdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojppbml0aWFsaXplKFdLQnVuZGxlUGFnZUZvcm1D
bGllbnQqIGNsaWVudCkKLXsKLSAgICBpZiAoY2xpZW50ICYmICFjbGllbnQtPnZlcnNpb24pCi0g
ICAgICAgIG1fY2xpZW50ID0gKmNsaWVudDsKLSAgICBlbHNlIAotICAgICAgICBtZW1zZXQoJm1f
Y2xpZW50LCAwLCBzaXplb2YobV9jbGllbnQpKTsKLX0KLQogdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VGb3JtQ2xpZW50Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoV2ViUGFnZSogcGFnZSwgSFRN
TElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYg
KCFtX2NsaWVudC50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcpCkluZGV4OiBXZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VGb3JtQ2xpZW50LmgJKHJldmlzaW9uIDcxNjk4KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xp
ZW50X2gKICNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudF9oCiAKKyNpbmNsdWRl
ICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQ0LDIwICs0NSwxNCBAQCBjbGFz
cyBJbW11dGFibGVEaWN0aW9uYXJ5OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwog
Ci1jbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50IHsKK2NsYXNzIEluamVjdGVkQnVu
ZGxlUGFnZUZvcm1DbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZUZvcm1DbGll
bnQ+IHsKIHB1YmxpYzoKLSAgICBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50KCk7Ci0gICAg
dm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUGFnZUZvcm1DbGllbnQqKTsKLQogICAgIHZvaWQgdGV4
dEZpZWxkRGlkQmVnaW5FZGl0aW5nKFdlYlBhZ2UqLCBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
KiwgV2ViRnJhbWUqKTsKICAgICB2b2lkIHRleHRGaWVsZERpZEVuZEVkaXRpbmcoV2ViUGFnZSos
IFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqLCBXZWJGcmFtZSopOwogICAgIHZvaWQgdGV4dERp
ZENoYW5nZUluVGV4dEZpZWxkKFdlYlBhZ2UqLCBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kiwg
V2ViRnJhbWUqKTsKICAgICB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKFdlYlBhZ2UqLCBX
ZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiwgV2ViRnJhbWUqKTsKICAgICBib29sIHNob3Vs
ZFBlcmZvcm1BY3Rpb25JblRleHRGaWVsZChXZWJQYWdlKiwgV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudCosIFdLSW5wdXRGaWVsZEFjdGlvblR5cGUsIFdlYkZyYW1lKik7ICAgIAogICAgIHZvaWQg
d2lsbFN1Ym1pdEZvcm0oV2ViUGFnZSosIFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCosIFdlYkZy
YW1lKiwgV2ViRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPiA+JiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKLQotcHJpdmF0ZToK
LSAgICBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50IG1fY2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAko
cmV2aXNpb24gNzE2OTgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTkg
KzM1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudCgpCi17Ci0gICAgaW5pdGlhbGl6ZSgwKTsKLX0KLQotdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OmluaXRpYWxpemUoV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KiBj
bGllbnQpCi17Ci0gICAgaWYgKGNsaWVudCAmJiAhY2xpZW50LT52ZXJzaW9uKQotICAgICAgICBt
X2NsaWVudCA9ICpjbGllbnQ7Ci0gICAgZWxzZSAKLSAgICAgICAgbWVtc2V0KCZtX2NsaWVudCwg
MCwgc2l6ZW9mKG1fY2xpZW50KSk7Ci19Ci0KIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdl
YkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQogewogICAgIGlmICgh
bV9jbGllbnQuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSkKSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDcxNjk4KQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudF9oCiAjZGVmaW5lIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dF9oCiAKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgpAQCAtNDEsMTEgKzQyLDggQEAgY2xhc3MgQVBJT2JqZWN0OwogY2xhc3MgV2ViUGFnZTsK
IGNsYXNzIFdlYkZyYW1lOwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQg
eworY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSUNsaWVu
dDxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKLSAgICBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQoKTsKLSAgICB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Kik7Ci0KICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdl
YlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9p
ZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZy
YW1lKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFJlZlB0cjxBUElPYmplY3Q+JiB1
c2VyRGF0YSk7CkBAIC02NSw5ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSopOwogICAgIHZvaWQgZGlkRGlz
cGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxB
UElPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwot
Ci1wcml2YXRlOgotICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBtX2NsaWVudDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQu
Y3BwCShyZXZpc2lvbiA3MTY5OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE5
ICszNCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
KCkKLXsKLSAgICBpbml0aWFsaXplKDApOwotfQotCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50Ojppbml0aWFsaXplKFdLQnVuZGxlUGFnZVVJQ2xpZW50KiBjbGllbnQpCi17Ci0gICAg
aWYgKGNsaWVudCAmJiAhY2xpZW50LT52ZXJzaW9uKQotICAgICAgICBtX2NsaWVudCA9ICpjbGll
bnQ7Ci0gICAgZWxzZSAKLSAgICAgICAgbWVtc2V0KCZtX2NsaWVudCwgMCwgc2l6ZW9mKG1fY2xp
ZW50KSk7Ci19Ci0KIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OndpbGxBZGRNZXNz
YWdlVG9Db25zb2xlKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50MzJf
dCBsaW5lTnVtYmVyKQogewogICAgIGlmIChtX2NsaWVudC53aWxsQWRkTWVzc2FnZVRvQ29uc29s
ZSkKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCShyZXZpc2lvbiA3MTY5OCkKKysr
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEluamVjdGVk
QnVuZGxlUGFnZVVJQ2xpZW50X2gKICNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnRf
aAogCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDAsMTEg
KzQxLDggQEAgY2xhc3MgQVBJT2JqZWN0OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdl
OwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCB7CitjbGFzcyBJbmplY3RlZEJ1
bmRsZVBhZ2VVSUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVQYWdlVUlDbGllbnQ+
IHsKIHB1YmxpYzoKLSAgICBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCgpOwotICAgIHZvaWQg
aW5pdGlhbGl6ZShXS0J1bmRsZVBhZ2VVSUNsaWVudCopOwotCiAgICAgdm9pZCB3aWxsQWRkTWVz
c2FnZVRvQ29uc29sZShXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQzMl90IGxp
bmVOdW1iZXIpOwogICAgIHZvaWQgd2lsbFNldFN0YXR1c2JhclRleHQoV2ViUGFnZSosIGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgd2lsbFJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlKiwgY29u
c3QgU3RyaW5nJiwgV2ViRnJhbWUqKTsKQEAgLTUyLDkgKzUwLDYgQEAgcHVibGljOgogICAgIHZv
aWQgd2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFdlYkZyYW1lKik7CiAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChX
ZWJQYWdlKiwgY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYsIFdlYkV2ZW50OjpNb2RpZmll
cnMsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xs
KFdlYlBhZ2UqKTsKLQotcHJpdmF0ZToKLSAgICBXS0J1bmRsZVBhZ2VVSUNsaWVudCBtX2NsaWVu
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="63942"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>