<?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>155346</bug_id>
          
          <creation_ts>2016-03-10 20:44:03 -0800</creation_ts>
          <short_desc>REGRESSION(r197982): This patch broke windows build. (Requested by n_wang on #webkit).</short_desc>
          <delta_ts>2016-03-10 23:08:52 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>154976</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>n_wang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1173563</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 20:44:03 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/197982 broke the build:
This patch broke windows build. (Requested by n_wang on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173564</commentid>
    <comment_count>1</comment_count>
      <attachid>273676</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 20:44:30 -0800</bug_when>
    <thetext>Created attachment 273676
ROLLOUT of r197982

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173578</commentid>
    <comment_count>2</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-03-10 21:04:27 -0800</bug_when>
    <thetext>Issue fixed in https://trac.webkit.org/changeset/197991. Please close.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273676</attachid>
            <date>2016-03-10 20:44:30 -0800</date>
            <delta_ts>2016-03-10 23:08:52 -0800</delta_ts>
            <desc>ROLLOUT of r197982</desc>
            <filename>bug-155346-20160310204417.patch</filename>
            <type>text/plain</type>
            <size>51387</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3OTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzgyNThiOWUwODY1MDU3
OTBjNjEzM2M5MDI3Nzk3MGE0ZjA2MWNkZS4uOGFjYWUzNjE2MzMzMzZiNzQzZWQ1ZDFiYmZjODlh
MDUwZDgwNTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTAzLTEwICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTk3OTgyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1MzQ2CisKKyAgICAgICAgVGhpcyBwYXRjaCBicm9rZSB3aW5kb3dz
IGJ1aWxkLiAoUmVxdWVzdGVkIGJ5IG5fd2FuZyBvbgorICAgICAgICAjd2Via2l0KS4KKworICAg
ICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkFYOiBJbXBsZW1lbnQgYm91bmRz
L3Bvc2l0aW9uIGFuZCBpbmRleCByZWxhdGVkIHRleHQgbWFya2VyCisgICAgICAgIGZ1bmN0aW9u
cyB1c2luZyBUZXh0SXRlcmF0b3IiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTQ5NzYKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTk3OTgyCisKIDIwMTYtMDMtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ1JBU0ggYXQgV2ViQ29yZTo6UmVuZGVyVmlldzo6dXBkYXRlVmlzaWJs
ZVZpZXdwb3J0UmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAKaW5kZXggMTUxZTllNzVlNmU5MTZiMDNmNzYxNTI2YWVhOWI1ODM1NTEwNDMzYy4u
OWQ2NGE2MWU3NzZhMDQyNzNlMzEyNDA5ODkwNDQyMjg1YmQ4MzQ3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNTA2LDkgKzE1MDYs
OCBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFu
Z2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudE5vZGUgPSBjaGlsZE5vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNSZXBsYWNl
ZE5vZGVPckJSID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50
Tm9kZSAhPSBwcmV2aW91c05vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBzZXQgdGhlIHN0YXJ0IG9mZnNldCBhbmQgbGVuZ3RoIGZvciB0aGUgY3VycmVudCBub2Rl
IGluIGNhc2UgdGhpcyBpcyB0aGUgbGFzdCBpdGVyYXRpb24uCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsYXN0U3RhcnRPZmZzZXQgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdExl
bmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgc2V0IHRoZSBj
dXJyZW50Tm9kZSB0byBwcmV2aW91cyBvbmUgaW4gY2FzZSB0aGlzIGlzIHRoZSBsYXN0IGl0ZXJh
dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlID0gcHJldmlvdXNOb2Rl
OwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CkBAIC0xNjk2LDEwICsxNjk1LDYgQEAgQ2hhcmFjdGVyT2Zm
c2V0IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShSZWZQ
dHI8UmFuZ2U+IHIKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gQ2hhcmFjdGVyT2Zm
c2V0KCk7CiAgICAgCi0gICAgLy8gV2hlbiBnZXR0aW5nIHRoZSBlbmQgQ2hhcmFjdGVyT2Zmc2V0
IGF0IG5vZGUgYm91bmRhcnksIHdlIGRvbid0IHdhbnQgdG8gY29sbGFwc2UgdG8gdGhlIHByZXZp
b3VzIG5vZGUuCi0gICAgaWYgKCFpc1N0YXJ0ICYmICFyYW5nZS0+ZW5kT2Zmc2V0KCkpCi0gICAg
ICAgIHJldHVybiBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KHJhbmdlLT5lbmRDb250
YWluZXIoKSwgMCwgVHJhdmVyc2VPcHRpb25JbmNsdWRlU3RhcnQpOwotICAgIAogICAgIC8vIElm
IGl0J3MgZW5kIHRleHQgbWFya2VyLCB3ZSB3YW50IHRvIGdvIHRvIHRoZSBlbmQgb2YgdGhlIHJh
bmdlLCBhbmQgc3RheSB3aXRoaW4gdGhlIHJhbmdlLgogICAgIGJvb2wgc3RheVdpdGhpblJhbmdl
ID0gIWlzU3RhcnQ7CiAgICAgCkBAIC0xNzgwLDM1ICsxNzc1LDEyIEBAIHZvaWQgQVhPYmplY3RD
YWNoZTo6dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRl
eHRNYXJrZXJECiAgICAgc2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zmc2V0KHRleHRN
YXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogfQogCi1ib29sIEFYT2JqZWN0Q2FjaGU6OnNo
b3VsZFNraXBCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIHByZXZpb3VzLCBjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmIG5leHQpCi17Ci0gICAgLy8gTWF0Y2ggdGhlIGJlaGF2aW9yIG9mIFZp
c2libGVQb3NpdGlvbiwgd2Ugc2hvdWxkIHNraXAgdGhlIG5vZGUgYm91bmRhcnkgd2hlbiB0aGVy
ZSdzIG5vIHZpc3VhbCBzcGFjZSBvciBuZXcgbGluZSBjaGFyYWN0ZXIuCi0gICAgaWYgKHByZXZp
b3VzLmlzTnVsbCgpIHx8IG5leHQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICBpZiAocHJldmlvdXMubm9kZSA9PSBuZXh0Lm5vZGUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKLSAgICBpZiAobmV4dC5zdGFydEluZGV4ID4gMCB8fCBuZXh0Lm9mZnNldCA+
IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBDaGFyYWN0ZXJPZmZzZXQgbmV3
TGluZSA9IHN0YXJ0Q2hhcmFjdGVyT2Zmc2V0T2ZMaW5lKG5leHQpOwotICAgIGlmIChuZXh0Lmlz
RXF1YWwobmV3TGluZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLSAgICAKIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXh0
Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCiB7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5l
eHQgPSBjaGFyYWN0ZXJPZmZzZXQ7Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzID0gY2hh
cmFjdGVyT2Zmc2V0OwogICAgIGRvIHsKICAgICAgICAgbmV4dCA9IG5leHRDaGFyYWN0ZXJPZmZz
ZXQobmV4dCwgZmFsc2UpOwotICAgICAgICBpZiAoc2hvdWxkU2tpcEJvdW5kYXJ5KHByZXZpb3Vz
LCBuZXh0KSkKLSAgICAgICAgICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5leHQsIGZh
bHNlKTsKICAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtl
ckRhdGEsIG5leHQpOwotICAgICAgICBwcmV2aW91cyA9IG5leHQ7CiAgICAgfSB3aGlsZSAodGV4
dE1hcmtlckRhdGEuaWdub3JlZCk7CiB9CiAKQEAgLTE5ODYsMTAgKzE5NTgsNyBAQCBDaGFyYWN0
ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6c3RhcnRDaGFyYWN0ZXJPZmZzZXRPZldvcmQoY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JgogICAgICAgICBpZiAoYy5pc0VxdWFsKGVuZE9mUGFyYWdyYXBoKSkK
ICAgICAgICAgICAgIHJldHVybiBjOwogICAgICAgICAKLSAgICAgICAgLy8gV2Ugc2hvdWxkIGNv
bnNpZGVyIHRoZSBub2RlIGJvdW5kYXJ5IHRoYXQgc3BsaXRzIHdvcmRzLiBPdGhlcndpc2UgVm9p
Y2VPdmVyIHdvbid0IHNlZSBpdCBhcyBzcGFjZS4KLSAgICAgICAgYyA9IG5leHRDaGFyYWN0ZXJP
ZmZzZXQoY2hhcmFjdGVyT2Zmc2V0LCBmYWxzZSk7Ci0gICAgICAgIGlmIChzaG91bGRTa2lwQm91
bmRhcnkoY2hhcmFjdGVyT2Zmc2V0LCBjKSkKLSAgICAgICAgICAgIGMgPSBuZXh0Q2hhcmFjdGVy
T2Zmc2V0KGMsIGZhbHNlKTsKKyAgICAgICAgYyA9IG5leHRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFj
dGVyT2Zmc2V0KTsKICAgICAgICAgaWYgKGMuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4g
Y2hhcmFjdGVyT2Zmc2V0OwogICAgIH0KQEAgLTIxMzcsMTAgKzIxMDYsNiBAQCBDaGFyYWN0ZXJP
ZmZzZXQgQVhPYmplY3RDYWNoZTo6bmV4dEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNldCYg
Y2hhcmFjdGVyT2ZmcwogICAgIGlmIChpdC5hdEVuZCgpICYmIG5leHQgPT0gc3RyaW5nLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIGVuZDsKICAgICAKLSAgICAvLyBXZSBzaG91bGQgY29uc2lkZXIg
dGhlIG5vZGUgYm91bmRhcnkgdGhhdCBzcGxpdHMgd29yZHMuCi0gICAgaWYgKHNlYXJjaEZ1bmN0
aW9uID09IGVuZFdvcmRCb3VuZGFyeSAmJiBuZXh0IC0gcHJlZml4TGVuZ3RoID09IDEpCi0gICAg
ICAgIHJldHVybiBuZXh0Q2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCwgZmFsc2UpOwot
ICAgIAogICAgIC8vIFRoZSBlbmRTZW50ZW5jZUJvdW5kYXJ5IGZ1bmN0aW9uIHdpbGwgaW5jbHVk
ZSBhIGxpbmUgYnJlYWsgYXQgdGhlIGVuZCBvZiB0aGUgc2VudGVuY2UuCiAgICAgaWYgKHNlYXJj
aEZ1bmN0aW9uID09IGVuZFNlbnRlbmNlQm91bmRhcnkgJiYgc3RyaW5nW25leHQgLSAxXSA9PSAn
XG4nKQogICAgICAgICBuZXh0LS07CkBAIC0yMTk1LDcgKzIxNjAsNyBAQCBDaGFyYWN0ZXJPZmZz
ZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQm
IGNoYXJhY3RlcgogICAgIAogICAgIGludCBjaGFyYWN0ZXJDb3VudCA9IGNoYXJhY3Rlck9mZnNl
dC5vZmZzZXQgLSAoc3RyaW5nLnNpemUoKSAtIHN1ZmZpeExlbmd0aCAtIG5leHQpOwogICAgIC8v
IFdlIGRvbid0IHdhbnQgdG8gZ28gdG8gdGhlIHByZXZpb3VzIG5vZGUgaWYgdGhlIG5vZGUgaXMg
YXQgdGhlIHN0YXJ0IG9mIGEgbmV3IGxpbmUuCi0gICAgaWYgKGNoYXJhY3RlckNvdW50IDwgMCAm
JiAoY2hhcmFjdGVyT2Zmc2V0Tm9kZUlzQlIoY2hhcmFjdGVyT2Zmc2V0KSB8fCBzdHJpbmdbc3Ry
aW5nLnNpemUoKSAtIHN1ZmZpeExlbmd0aCAtIDFdID09ICdcbicpKQorICAgIGlmIChjaGFyYWN0
ZXJDb3VudCA8IDAgJiYgKGNoYXJhY3Rlck9mZnNldE5vZGVJc0JSKGNoYXJhY3Rlck9mZnNldCkg
fHwgc3RyaW5nW3N0cmluZy5zaXplKCkgLSAxXSA9PSAnXG4nKSkKICAgICAgICAgY2hhcmFjdGVy
Q291bnQgPSAwOwogICAgIHJldHVybiBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KCpj
aGFyYWN0ZXJPZmZzZXQubm9kZSwgY2hhcmFjdGVyQ291bnQsIFRyYXZlcnNlT3B0aW9uSW5jbHVk
ZVN0YXJ0KTsKIH0KQEAgLTIzMTgsMTMzICsyMjgzLDYgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2Jq
ZWN0Q2FjaGU6OnByZXZpb3VzU2VudGVuY2VTdGFydENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFy
YWMKICAgICByZXR1cm4gc3RhcnRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRlbmNlKHByZXZpb3VzKTsK
IH0KIAotTGF5b3V0UmVjdCBBWE9iamVjdENhY2hlOjpsb2NhbENhcmV0UmVjdEZvckNoYXJhY3Rl
ck9mZnNldChSZW5kZXJPYmplY3QqJiByZW5kZXJlciwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBj
aGFyYWN0ZXJPZmZzZXQpCi17Ci0gICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkgewot
ICAgICAgICByZW5kZXJlciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0g
ICAgfQotICAgIAotICAgIE5vZGUqIG5vZGUgPSBjaGFyYWN0ZXJPZmZzZXQubm9kZTsKLSAgICAK
LSAgICByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKLSAgICAKLSAgICBJbmxpbmVCb3gqIGlubGluZUJv
eCA9IG51bGxwdHI7Ci0gICAgaW50IGNhcmV0T2Zmc2V0OwotICAgIC8vIFVzZSBhIGNvbGxhcHNl
ZCByYW5nZSB0byBnZXQgdGhlIHBvc2l0aW9uLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBy
YW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY2hhcmFjdGVyT2Zmc2V0LCBjaGFyYWN0
ZXJPZmZzZXQpOwotICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSByYW5nZS0+c3RhcnRQb3Np
dGlvbigpOwotICAgIHN0YXJ0UG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zmc2V0KERPV05TVFJF
QU0sIGlubGluZUJveCwgY2FyZXRPZmZzZXQpOwotICAgIAotICAgIGlmIChpbmxpbmVCb3gpCi0g
ICAgICAgIHJlbmRlcmVyID0gJmlubGluZUJveC0+cmVuZGVyZXIoKTsKLSAgICAKLSAgICByZXR1
cm4gcmVuZGVyZXItPmxvY2FsQ2FyZXRSZWN0KGlubGluZUJveCwgY2FyZXRPZmZzZXQpOwotfQot
Ci1JbnRSZWN0IEFYT2JqZWN0Q2FjaGU6OmFic29sdXRlQ2FyZXRCb3VuZHNGb3JDaGFyYWN0ZXJP
ZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCi17Ci0gICAgUmVu
ZGVyQmxvY2sqIGNhcmV0UGFpbnRlciA9IG51bGxwdHI7Ci0gICAgCi0gICAgLy8gRmlyc3QgY29t
cHV0ZSBhIHJlY3QgbG9jYWwgdG8gdGhlIHJlbmRlcmVyIGF0IHRoZSBzZWxlY3Rpb24gc3RhcnQu
Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG51bGxwdHI7Ci0gICAgTGF5b3V0UmVjdCBs
b2NhbFJlY3QgPSBsb2NhbENhcmV0UmVjdEZvckNoYXJhY3Rlck9mZnNldChyZW5kZXJlciwgY2hh
cmFjdGVyT2Zmc2V0KTsKLSAgICAKLSAgICBsb2NhbFJlY3QgPSBsb2NhbENhcmV0UmVjdEluUmVu
ZGVyZXJGb3JSZWN0KGxvY2FsUmVjdCwgY2hhcmFjdGVyT2Zmc2V0Lm5vZGUsIHJlbmRlcmVyLCBj
YXJldFBhaW50ZXIpOwotICAgIHJldHVybiBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsQ2FyZXRSZWN0
KGNhcmV0UGFpbnRlciwgbG9jYWxSZWN0KTsKLX0KLQotQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0
Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvclBvaW50KGNvbnN0IEludFBvaW50ICZwb2ludCwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqKQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4g
Q2hhcmFjdGVyT2Zmc2V0KCk7Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHZwID0gb2JqLT52
aXNpYmxlUG9zaXRpb25Gb3JQb2ludChwb2ludCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IG1ha2VSYW5nZSh2cCwgdnApOwotICAgIHJldHVybiBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0
Rm9yUmFuZ2UocmFuZ2UsIHRydWUpOwotfQotCi1DaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNo
ZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yUG9pbnQoY29uc3QgSW50UG9pbnQgJnBvaW50KQotewotICAg
IFJlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZSA9IG1fZG9jdW1lbnQuY2FyZXRSYW5nZUZyb21Qb2lu
dChMYXlvdXRQb2ludChwb2ludCkpOwotICAgIHJldHVybiBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zm
c2V0Rm9yUmFuZ2UoY2FyZXRSYW5nZSwgdHJ1ZSk7Ci19Ci0KLUNoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JCb3VuZHMoY29uc3QgSW50UmVjdCYgcmVjdCwg
Ym9vbCBmaXJzdCkKLXsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBD
aGFyYWN0ZXJPZmZzZXQoKTsKLSAgICAKLSAgICBJbnRQb2ludCBjb3JuZXIgPSBmaXJzdCA/IHJl
Y3QubWluWE1pbllDb3JuZXIoKSA6IHJlY3QubWF4WE1heFlDb3JuZXIoKTsKLSAgICBDaGFyYWN0
ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yUG9pbnQoY29ybmVy
KTsKLSAgICAKLSAgICBpZiAocmVjdC5jb250YWlucyhhYnNvbHV0ZUNhcmV0Qm91bmRzRm9yQ2hh
cmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCkuY2VudGVyKCkpKQotICAgICAgICByZXR1cm4g
Y2hhcmFjdGVyT2Zmc2V0OwotICAgIAotICAgIC8vIElmIHRoZSBpbml0aWFsIHBvc2l0aW9uIGlz
IGxvY2F0ZWQgb3V0c2lkZSB0aGUgYm91bmRzIGFkanVzdCBpdCBpbmNyZW1lbnRhbGx5IGFzIG5l
ZWRlZC4KLSAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dENoYXJPZmZzZXQgPSBuZXh0Q2hhcmFjdGVy
T2Zmc2V0KGNoYXJhY3Rlck9mZnNldCwgZmFsc2UpOwotICAgIENoYXJhY3Rlck9mZnNldCBwcmV2
aW91c0NoYXJPZmZzZXQgPSBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQs
IGZhbHNlKTsKLSAgICB3aGlsZSAoIW5leHRDaGFyT2Zmc2V0LmlzTnVsbCgpIHx8ICFwcmV2aW91
c0NoYXJPZmZzZXQuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKHJlY3QuY29udGFpbnMoYWJzb2x1
dGVDYXJldEJvdW5kc0ZvckNoYXJhY3Rlck9mZnNldChuZXh0Q2hhck9mZnNldCkuY2VudGVyKCkp
KQotICAgICAgICAgICAgcmV0dXJuIG5leHRDaGFyT2Zmc2V0OwotICAgICAgICBpZiAocmVjdC5j
b250YWlucyhhYnNvbHV0ZUNhcmV0Qm91bmRzRm9yQ2hhcmFjdGVyT2Zmc2V0KHByZXZpb3VzQ2hh
ck9mZnNldCkuY2VudGVyKCkpKQotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ2hhck9mZnNl
dDsKLSAgICAgICAgCi0gICAgICAgIG5leHRDaGFyT2Zmc2V0ID0gbmV4dENoYXJhY3Rlck9mZnNl
dChuZXh0Q2hhck9mZnNldCwgZmFsc2UpOwotICAgICAgICBwcmV2aW91c0NoYXJPZmZzZXQgPSBw
cmV2aW91c0NoYXJhY3Rlck9mZnNldChwcmV2aW91c0NoYXJPZmZzZXQsIGZhbHNlKTsKLSAgICB9
Ci0gICAgCi0gICAgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOwotfQotCi0vLyBGSVhNRTogUmVt
b3ZlIFZpc2libGVQb3NpdGlvbiBjb2RlIGFmdGVyIGltcGxlbWVudGluZyB0aGlzIHVzaW5nIENo
YXJhY3Rlck9mZnNldC4KLUNoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjplbmRDaGFyYWN0
ZXJPZmZzZXRPZkxpbmUoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCi17
Ci0gICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIENoYXJh
Y3Rlck9mZnNldCgpOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvbiB2cCA9IHZpc2libGVQb3Np
dGlvbkZyb21DaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBWaXNpYmxlUG9z
aXRpb24gZW5kTGluZSA9IGVuZE9mTGluZSh2cCk7Ci0gICAgCi0gICAgcmV0dXJuIGNoYXJhY3Rl
ck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24oZW5kTGluZSk7Ci19Ci0KLUNoYXJhY3Rlck9mZnNl
dCBBWE9iamVjdENhY2hlOjpzdGFydENoYXJhY3Rlck9mZnNldE9mTGluZShjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKLXsKLSAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0Lmlz
TnVsbCgpKQotICAgICAgICByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7Ci0gICAgCi0gICAgVmlz
aWJsZVBvc2l0aW9uIHZwID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFy
YWN0ZXJPZmZzZXQpOwotICAgIFZpc2libGVQb3NpdGlvbiBzdGFydExpbmUgPSBzdGFydE9mTGlu
ZSh2cCk7Ci0gICAgCi0gICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRp
b24oc3RhcnRMaW5lKTsKLX0KLQotQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJh
Y3Rlck9mZnNldEZvckluZGV4KGludCBpbmRleCwgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7
Ci0gICAgCi0gICAgLy8gU2luY2UgdGhpcyB3b3VsZCBvbmx5IHdvcmsgb24gcmVuZGVyZWQgbm9k
ZXMsIHVzaW5nIFZpc2libGVQb3NpdGlvbiB0byBjcmVhdGUgYSBjb2xsYXBzZWQKLSAgICAvLyBy
YW5nZSBzaG91bGQgYmUgZmluZS4KLSAgICBWaXNpYmxlUG9zaXRpb24gdnAgPSBvYmotPnZpc2li
bGVQb3NpdGlvbkZvckluZGV4KGluZGV4KTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFr
ZVJhbmdlKHZwLCB2cCk7Ci0gICAgCi0gICAgcmV0dXJuIHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZz
ZXRGb3JSYW5nZShyYW5nZSwgdHJ1ZSk7Ci19Ci0KLWludCBBWE9iamVjdENhY2hlOjppbmRleEZv
ckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwg
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQotewotICAgIC8vIENyZWF0ZSBhIGNvbGxhcHNlZCBy
YW5nZSBzbyB0aGF0IHdlIGNhbiBnZXQgdGhlIFZpc2libGVQb3NpdGlvbiBmcm9tIGl0LgotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSByYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMo
Y2hhcmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghcmFuZ2UpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIFZpc2libGVQb3NpdGlvbiB2cCA9IHJhbmdlLT5zdGFydFBvc2l0
aW9uKCk7Ci0gICAgcmV0dXJuIG9iai0+aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24odnApOwotfQot
CiBjb25zdCBFbGVtZW50KiBBWE9iamVjdENhY2hlOjpyb290QVhFZGl0YWJsZUVsZW1lbnQoY29u
c3QgTm9kZSogbm9kZSkKIHsKICAgICBjb25zdCBFbGVtZW50KiByZXN1bHQgPSBub2RlLT5yb290
RWRpdGFibGVFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oCmluZGV4IDliNTZkNWRiMzNiZDEwN2MxOTYwY2VkNmRiOWEyYjhmOWUwNjNhZDEu
LmMxZGQyOTYyZWFiZTMyODVjYzQ0NWUzMzBmZjk0OTkxOGU1ZDEzZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0yMDAsNyArMjAwLDYgQEAg
cHVibGljOgogICAgIENoYXJhY3Rlck9mZnNldCBuZXh0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENo
YXJhY3Rlck9mZnNldCYsIGJvb2wgaWdub3JlTmV4dE5vZGVTdGFydCA9IHRydWUpOwogICAgIENo
YXJhY3Rlck9mZnNldCBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmLCBib29sIGlnbm9yZVByZXZpb3VzTm9kZUVuZCA9IHRydWUpOwogICAgIHZvaWQgc3RhcnRP
ckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoVGV4dE1hcmtlckRhdGEmLCBSZWZQdHI8UmFuZ2U+
LCBib29sKTsKLSAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZv
clJhbmdlKFJlZlB0cjxSYW5nZT4sIGJvb2wpOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFj
Y2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNvbnN0IENo
YXJhY3Rlck9mZnNldCYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIHN0YXRpYyBSZWZQ
dHI8UmFuZ2U+IHJhbmdlRm9yTm9kZUNvbnRlbnRzKE5vZGUqKTsKQEAgLTIyMSwxOSArMjIwLDYg
QEAgcHVibGljOgogICAgIFJlZlB0cjxSYW5nZT4gc2VudGVuY2VGb3JDaGFyYWN0ZXJPZmZzZXQo
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRTZW50ZW5j
ZUVuZENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0
ZXJPZmZzZXQgcHJldmlvdXNTZW50ZW5jZVN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYpOwotICAgIAotICAgIC8vIEJvdW5kcwotICAgIENoYXJhY3Rlck9mZnNldCBj
aGFyYWN0ZXJPZmZzZXRGb3JQb2ludChjb25zdCBJbnRQb2ludCYsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqKTsKLSAgICBJbnRSZWN0IGFic29sdXRlQ2FyZXRCb3VuZHNGb3JDaGFyYWN0ZXJPZmZzZXQo
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9m
ZnNldEZvckJvdW5kcyhjb25zdCBJbnRSZWN0JiwgYm9vbCk7Ci0gICAgCi0gICAgLy8gTGluZXMK
LSAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZMaW5lKGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYpOwotICAgIENoYXJhY3Rlck9mZnNldCBzdGFydENoYXJhY3Rlck9mZnNldE9m
TGluZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAgICAKLSAgICAvLyBJbmRleAotICAgIENo
YXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChpbnQsIGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QqKTsKLSAgICBpbnQgaW5kZXhGb3JDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0JiwgQWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiAgICAgZW51bSBBWE5vdGlm
aWNhdGlvbiB7CiAgICAgICAgIEFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQsCkBAIC0zMzUsNiAr
MzIxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFj
dGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAg
VUNoYXIzMiBjaGFyYWN0ZXJBZnRlcihjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBVQ2hh
cjMyIGNoYXJhY3RlckJlZm9yZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBDaGFyYWN0
ZXJPZmZzZXQgc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKFJlZlB0cjxSYW5nZT4s
IGJvb2wpOwogICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zm
c2V0KE5vZGUmLCBpbnQsIFRyYXZlcnNlT3B0aW9uID0gVHJhdmVyc2VPcHRpb25EZWZhdWx0KTsK
ICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmLCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dEJv
dW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIEJvdW5kYXJ5U2VhcmNoRnVuY3Rpb24pOwpA
QCAtMzQ0LDkgKzMzMSw2IEBAIHByb3RlY3RlZDoKICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kQ2hh
cmFjdGVyT2Zmc2V0T2ZQYXJhZ3JhcGgoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgRWRpdGluZ0Jv
dW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgIENo
YXJhY3Rlck9mZnNldCBzdGFydENoYXJhY3Rlck9mZnNldE9mU2VudGVuY2UoY29uc3QgQ2hhcmFj
dGVyT2Zmc2V0Jik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZENoYXJhY3Rlck9mZnNldE9mU2Vu
dGVuY2UoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldEZvclBvaW50KGNvbnN0IEludFBvaW50Jik7Ci0gICAgTGF5b3V0UmVjdCBsb2Nh
bENhcmV0UmVjdEZvckNoYXJhY3Rlck9mZnNldChSZW5kZXJPYmplY3QqJiwgY29uc3QgQ2hhcmFj
dGVyT2Zmc2V0Jik7Ci0gICAgYm9vbCBzaG91bGRTa2lwQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0JiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAKIHByaXZhdGU6CiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogcm9vdFdlYkFyZWEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDI5Mjk3MzA2Nzg4Zjg3
M2M0YzQ0NGMwYTc1ZTZlM2FkNDJhNDcyOWIuLjA2YTQzMmFhYzI5ZGU3OTU0YTI3NGE2NGFjZjJk
MTM1ZmQ3ZGI4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMTE5OCwyMCArMTE5OCw2IEBAIFZpc2libGVQb3Np
dGlvblJhbmdlIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFu
Z2UoY29uc3QgUGxhCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKHN0YXJ0UG9zaXRp
b24sIGVuZFBvc2l0aW9uKTsKIH0KIAotUmVmUHRyPFJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpyYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZSkgY29u
c3QKLXsKLSAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gZ2V0TGVuZ3RoRm9yVGV4dFJhbmdlKCk7
Ci0gICAgaWYgKHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVuZ3RoID4gdGV4dExlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0g
YXhPYmplY3RDYWNoZSgpKSB7Ci0gICAgICAgIENoYXJhY3Rlck9mZnNldCBzdGFydCA9IGNhY2hl
LT5jaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChyYW5nZS5zdGFydCwgdGhpcyk7Ci0gICAgICAgIENo
YXJhY3Rlck9mZnNldCBlbmQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9ySW5kZXgocmFuZ2Uu
c3RhcnQgKyByYW5nZS5sZW5ndGgsIHRoaXMpOwotICAgICAgICByZXR1cm4gY2FjaGUtPnJhbmdl
Rm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhzdGFydCwgZW5kKTsKLSAgICB9Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIFZpc2libGVQb3NpdGlvblJhbmdlIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmxpbmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBv
c2l0aW9uKSBjb25zdAogewogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gc3Rh
cnRPZkxpbmUodmlzaWJsZVBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggNzVjMDhkYjViODJkNTAxZmFjZTBi
NTE3ZmU0MDBkOWMzYzA5YjkxOS4uYjg5MTYwNDc3ZWZkZWZjMWM0ZThjYWUzMjg4OTQ3Y2VkMjE2
YzBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKQEAgLTgzNSwxMyArODM1LDEwIEBAIHB1YmxpYzoKICAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Q7CiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JS
YW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OwogICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIGxpbmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0Owot
ICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFp
blRleHRSYW5nZSYpIGNvbnN0OwogCiAgICAgU3RyaW5nIHN0cmluZ0ZvclZpc2libGVQb3NpdGlv
blJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Q7CiAgICAgU3RyaW5nIHN0
cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4pIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UmVjdCBi
b3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYp
IGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNG
b3JSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+KSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0K
ICAgICBpbnQgbGVuZ3RoRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRWaXNpYmxlUG9z
aXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IHsgfQogCkBAIC04
NzUsNyArODcyLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgZG9BWFN0cmluZ0Zv
clJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
ICAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJh
bmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IGRv
QVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IFBsYWluVGV4dFJhbmdl
JikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9CiAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0
Rm9yTm9kZUFuZFBvc2l0aW9uKE5vZGUqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsK
IAogICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKaW5kZXggMWJmYzk2NmUwODJiM2Y5MjRjZmY1YWI3MjczZDUyMWM0MjZiNjFmYi4uZDJm
NGMxYWJmY2EyOGJiNDdjZDdiZTAyODA2M2U1Nzg4OTg2MTA3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCkBAIC0xOTYyLDI2ICsxOTYyLDYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojpub2RlSXNUZXh0Q29udHJvbChjb25zdCBOb2RlKiBub2RlKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotSW50UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3VuZHNGb3JS
ZWN0cyhMYXlvdXRSZWN0JiByZWN0MSwgTGF5b3V0UmVjdCYgcmVjdDIsIFJlZlB0cjxSYW5nZT4g
ZGF0YVJhbmdlKSBjb25zdAotewotICAgIExheW91dFJlY3Qgb3VyUmVjdCA9IHJlY3QxOwotICAg
IG91clJlY3QudW5pdGUocmVjdDIpOwotICAgIAotICAgIC8vIGlmIHRoZSByZWN0YW5nbGUgc3Bh
bnMgbGluZXMgYW5kIGNvbnRhaW5zIG11bHRpcGxlIHRleHQgY2hhcnMsIHVzZSB0aGUgcmFuZ2Un
cyBib3VuZGluZyBib3ggaW50ZWFkCi0gICAgaWYgKHJlY3QxLm1heFkoKSAhPSByZWN0Mi5tYXhZ
KCkpIHsKLSAgICAgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveCA9IGRhdGFSYW5nZS0+YWJzb2x1
dGVCb3VuZGluZ0JveCgpOwotICAgICAgICBTdHJpbmcgcmFuZ2VTdHJpbmcgPSBwbGFpblRleHQo
ZGF0YVJhbmdlLmdldCgpKTsKLSAgICAgICAgaWYgKHJhbmdlU3RyaW5nLmxlbmd0aCgpID4gMSAm
JiAhYm91bmRpbmdCb3guaXNFbXB0eSgpKQotICAgICAgICAgICAgb3VyUmVjdCA9IGJvdW5kaW5n
Qm94OwotICAgIH0KLSAgICAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmV0dXJuIG1fcmVuZGVy
ZXItPnZpZXcoKS5mcmFtZVZpZXcoKS5jb250ZW50c1RvU2NyZWVuKHNuYXBwZWRJbnRSZWN0KG91
clJlY3QpKTsKLSNlbHNlCi0gICAgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KG91clJlY3QpOwotI2Vu
ZGlmCi19Ci0KIEludFJlY3QgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRzRm9yVmlz
aWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHZpc2libGVQb3Np
dGlvblJhbmdlKSBjb25zdAogewogICAgIGlmICh2aXNpYmxlUG9zaXRpb25SYW5nZS5pc051bGwo
KSkKQEAgLTIwMDUsMzkgKzE5ODUsMjMgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojpib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG8KICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IGRhdGFSYW5nZSA9IG1ha2VSYW5n
ZShyYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsKLSAgICByZXR1cm4gYm91bmRzRm9yUmVjdHMocmVj
dDEsIHJlY3QyLCBkYXRhUmFuZ2UpOwotfQotCi1JbnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4gcmFuZ2UpIGNvbnN0Ci17
Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICBMYXlvdXRS
ZWN0IG91cnJlY3QgPSByZWN0MTsKKyAgICBvdXJyZWN0LnVuaXRlKHJlY3QyKTsKICAgICAKLSAg
ICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHRoaXMtPmF4T2JqZWN0Q2FjaGUoKTsKLSAgICBpZiAo
IWNhY2hlKQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgIAotICAgIENoYXJhY3Rlck9m
ZnNldCBzdGFydCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UocmFu
Z2UsIHRydWUpOwotICAgIENoYXJhY3Rlck9mZnNldCBlbmQgPSBjYWNoZS0+c3RhcnRPckVuZENo
YXJhY3Rlck9mZnNldEZvclJhbmdlKHJhbmdlLCBmYWxzZSk7Ci0gICAgCi0gICAgTGF5b3V0UmVj
dCByZWN0MSA9IGNhY2hlLT5hYnNvbHV0ZUNhcmV0Qm91bmRzRm9yQ2hhcmFjdGVyT2Zmc2V0KHN0
YXJ0KTsKLSAgICBMYXlvdXRSZWN0IHJlY3QyID0gY2FjaGUtPmFic29sdXRlQ2FyZXRCb3VuZHNG
b3JDaGFyYWN0ZXJPZmZzZXQoZW5kKTsKLSAgICAKLSAgICAvLyByZWFkanVzdCBmb3IgcG9zaXRp
b24gYXQgdGhlIGVkZ2Ugb2YgYSBsaW5lLiBUaGlzIGlzIHRvIGV4Y2x1ZGUgbGluZSByZWN0IHRo
YXQgZG9lc24ndCBuZWVkIHRvIGJlIGFjY291bnRlZCBpbiB0aGUgcmFuZ2UgYm91bmRzLgotICAg
IGlmIChyZWN0Mi55KCkgIT0gcmVjdDEueSgpKSB7Ci0gICAgICAgIENoYXJhY3Rlck9mZnNldCBl
bmRPZkZpcnN0TGluZSA9IGNhY2hlLT5lbmRDaGFyYWN0ZXJPZmZzZXRPZkxpbmUoc3RhcnQpOwot
ICAgICAgICBpZiAoc3RhcnQuaXNFcXVhbChlbmRPZkZpcnN0TGluZSkpIHsKLSAgICAgICAgICAg
IHN0YXJ0ID0gY2FjaGUtPm5leHRDaGFyYWN0ZXJPZmZzZXQoc3RhcnQsIGZhbHNlKTsKLSAgICAg
ICAgICAgIHJlY3QxID0gY2FjaGUtPmFic29sdXRlQ2FyZXRCb3VuZHNGb3JDaGFyYWN0ZXJPZmZz
ZXQoc3RhcnQpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChlbmQuaXNFcXVhbChlbmRPZkZpcnN0
TGluZSkpIHsKLSAgICAgICAgICAgIGVuZCA9IGNhY2hlLT5wcmV2aW91c0NoYXJhY3Rlck9mZnNl
dChlbmQsIGZhbHNlKTsKLSAgICAgICAgICAgIHJlY3QyID0gY2FjaGUtPmFic29sdXRlQ2FyZXRC
b3VuZHNGb3JDaGFyYWN0ZXJPZmZzZXQoZW5kKTsKLSAgICAgICAgfQorICAgIC8vIGlmIHRoZSBy
ZWN0YW5nbGUgc3BhbnMgbGluZXMgYW5kIGNvbnRhaW5zIG11bHRpcGxlIHRleHQgY2hhcnMsIHVz
ZSB0aGUgcmFuZ2UncyBib3VuZGluZyBib3ggaW50ZWFkCisgICAgaWYgKHJlY3QxLm1heFkoKSAh
PSByZWN0Mi5tYXhZKCkpIHsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBkYXRhUmFuZ2UgPSBtYWtl
UmFuZ2UocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCk7CisgICAgICAgIExheW91dFJlY3QgYm91bmRp
bmdCb3ggPSBkYXRhUmFuZ2UtPmFic29sdXRlQm91bmRpbmdCb3goKTsKKyAgICAgICAgU3RyaW5n
IHJhbmdlU3RyaW5nID0gcGxhaW5UZXh0KGRhdGFSYW5nZS5nZXQoKSk7CisgICAgICAgIGlmIChy
YW5nZVN0cmluZy5sZW5ndGgoKSA+IDEgJiYgIWJvdW5kaW5nQm94LmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIG91cnJlY3QgPSBib3VuZGluZ0JveDsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGJv
dW5kc0ZvclJlY3RzKHJlY3QxLCByZWN0MiwgcmFuZ2UpOworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICByZXR1cm4gbV9yZW5kZXJlci0+dmlldygpLmZyYW1lVmlldygpLmNvbnRlbnRzVG9TY3JlZW4o
c25hcHBlZEludFJlY3Qob3VycmVjdCkpOworI2Vsc2UKKyAgICByZXR1cm4gc25hcHBlZEludFJl
Y3Qob3VycmVjdCk7CisjZW5kaWYKIH0KICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b25SYW5nZSYgcmFuZ2UpIGNvbnN0CkBAIC0yMjMyLDEzICsyMTk2LDYgQEAgSW50UmVjdCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0
UmFuZ2UmIHJhbmcKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogCi1JbnRSZWN0IEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0
KGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZSkgY29uc3QKLXsKLSAgICBpZiAoYWxsb3dzVGV4
dFJhbmdlcygpKQotICAgICAgICByZXR1cm4gYm91bmRzRm9yUmFuZ2UocmFuZ2VGb3JQbGFpblRl
eHRSYW5nZShyYW5nZSkpOwotICAgIHJldHVybiBJbnRSZWN0KCk7Ci19Ci0KIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1h
cEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CiB7CiAgICAgaWYgKCFhcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCAxYzVmYWFlMDhkZTZh
NTE0Nzg1YzRjYjNkN2ViNmQyYzVhMjllMDg4Li44ZjQzMmYwYzYwNjA4MWU3MDQ5ODU4MWMwMWRm
MTM4MGQ2NjE5YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTczLDggKzE3Myw2IEBAIHB1Ymxp
YzoKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdl
Rm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBib3VuZHNGb3JW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJhbmdlPikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UmVjdCBib3VuZHNGb3JSZWN0cyhMYXlvdXRSZWN0Jiwg
TGF5b3V0UmVjdCYsIFJlZlB0cjxSYW5nZT4pIGNvbnN0OwogICAgIHZvaWQgc2V0U2VsZWN0ZWRW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNBUklBRmxvd1RvKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3Qgb3ZlcnJpZGU7CkBAIC0yMDIsNyArMjAwLDYgQEAgcHVibGljOgogICAgIAogICAgIFN0
cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVy
cmlkZTsKICAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5n
ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlVXNpbmdD
aGFyYWN0ZXJPZmZzZXQoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICAg
ICAKICAgICBTdHJpbmcgc3RyaW5nVmFsdWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDVkMWMzMjk2MDQ3Mjc1ZjhjMWJiOWY4YTVh
OTliZGY0OGQyNDJkNjUuLjRkNzZjYjBiZDZiODRhM2QwOWMwYmZkNzAwYjFiMTU0Y2ZlYTVhNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0yMTQ4LDE0ICsy
MTQ4LDEwIEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRh
YmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywKICAgICBpZiAoIW1hcmtlcikKICAgICAg
ICAgcmV0dXJuIE5TTm90Rm91bmQ7ICAgIAogCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hl
ID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSkgewotICAgICAgICBDaGFyYWN0ZXJPZmZzZXQg
Y2hhcmFjdGVyT2Zmc2V0ID0gW21hcmtlciBjaGFyYWN0ZXJPZmZzZXRdOwotICAgICAgICAvLyBD
cmVhdGUgYSBjb2xsYXBzZWQgcmFuZ2UgZnJvbSB0aGUgQ2hhcmFjdGVyT2Zmc2V0IG9iamVjdC4K
LSAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGNhY2hlLT5yYW5nZUZvclVub3JkZXJlZENo
YXJhY3Rlck9mZnNldHMoY2hhcmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgICAg
ICBOU1JhbmdlIG5zUmFuZ2UgPSBbc2VsZiBfY29udmVydFRvTlNSYW5nZTpyYW5nZS5nZXQoKV07
Ci0gICAgICAgIHJldHVybiBuc1JhbmdlLmxvY2F0aW9uOwotICAgIH0KLSAgICByZXR1cm4gTlNO
b3RGb3VuZDsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihbbWFya2VyIHZpc2libGVQ
b3NpdGlvbl0pOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxp
emVkUmFuZ2UoKTsKKyAgICBOU1JhbmdlIG5zUmFuZ2UgPSBbc2VsZiBfY29udmVydFRvTlNSYW5n
ZTpyYW5nZS5nZXQoKV07CisgICAgcmV0dXJuIG5zUmFuZ2UubG9jYXRpb247CiB9CiAKIC0gKE5T
QXJyYXkgKil0ZXh0TWFya2VyUmFuZ2UKQEAgLTIyMDksMTcgKzIyMDUsMTEgQEAgc3RhdGljIHZv
aWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
KiBhdHRyU3RyaW5nLAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gbV9vYmplY3Qt
PnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgCi0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBtX29iamVjdC0+YXhPYmpl
Y3RDYWNoZSgpOwotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwot
ICAgIENoYXJhY3Rlck9mZnNldCBzdGFydCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zm
c2V0Rm9yUmFuZ2UocmFuZ2UsIHRydWUpOwotICAgIENoYXJhY3Rlck9mZnNldCBlbmQgPSBjYWNo
ZS0+c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHJhbmdlLCBmYWxzZSk7CisgICAg
VmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7
CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLnZpc2libGVFbmQo
KTsKIAotICAgIFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciA9IFtXZWJB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDpzdGFy
dCBjYWNoZTpjYWNoZV07Ci0gICAgV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtl
ciA9IFtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9m
ZnNldDplbmQgY2FjaGU6Y2FjaGVdOworICAgIFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBz
dGFydE1hcmtlciA9IFtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyV2l0aFZp
c2libGVQb3NpdGlvbjpzdGFydFBvc2l0aW9uIGNhY2hlOm1fb2JqZWN0LT5heE9iamVjdENhY2hl
KCldOworICAgIFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIgPSBbV2ViQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgdGV4dE1hcmtlcldpdGhWaXNpYmxlUG9zaXRpb246ZW5kUG9z
aXRpb24gY2FjaGU6bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKV07CiAgICAgaWYgKCFzdGFydE1h
cmtlciB8fCAhZW5kTWFya2VyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIApAQCAtMjIzNCwx
MyArMjIyNCwxMSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiAgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpOU01ha2VSYW5nZShwb3NpdGlvbiwgMCld
OwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBBWE9iamVjdENh
Y2hlKiBjYWNoZSA9IG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCk7Ci0gICAgaWYgKCFjYWNoZSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVy
T2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShyYW5nZSwg
dHJ1ZSk7Ci0gICAgcmV0dXJuIFtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2Vy
V2l0aENoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXQgY2FjaGU6Y2FjaGVdOworICAgIFZp
c2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UsIERPV05T
VFJFQU0pOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbiA9IHNlbGVjdGlv
bi52aXNpYmxlU3RhcnQoKTsKKyAgICByZXR1cm4gW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IHRleHRNYXJrZXJXaXRoVmlzaWJsZVBvc2l0aW9uOnZpc2libGVQb3NpdGlvbiBjYWNoZTptX29i
amVjdC0+YXhPYmplY3RDYWNoZSgpXTsKIH0KIAogLSAoaWQpX3N0cmluZ0ZvclJhbmdlOihOU1Jh
bmdlKXJhbmdlIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmlidXRlZApAQCAtMjQxNywxNCArMjQwNSwx
NSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vz
c2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAKLSAgICBBWE9iamVj
dENhY2hlKiBjYWNoZSA9IG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCk7Ci0gICAgaWYgKCFjYWNo
ZSkKLSAgICAgICAgcmV0dXJuIENHUmVjdFplcm87Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IFtzZWxmIHJhbmdlRm9yVGV4dE1hcmtlcnM6YXJyYXldOwotICAgIGlmICghcmFuZ2UpCisgICAg
aWYgKFthcnJheSBjb3VudF0gIT0gMikKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAgICAg
Ci0gICAgSW50UmVjdCByZWN0ID0gbV9vYmplY3QtPmJvdW5kc0ZvclJhbmdlKHJhbmdlKTsKKyAg
ICBXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIgPSBbYXJyYXkgb2JqZWN0
QXRJbmRleDowXTsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyID0g
W2FycmF5IG9iamVjdEF0SW5kZXg6MV07CisgICAgaWYgKCFbc3RhcnRNYXJrZXIgaXNLaW5kT2ZD
bGFzczpbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgY2xhc3NdXSB8fCAhW2VuZE1hcmtlciBp
c0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBjbGFzc11dKQorICAgICAg
ICByZXR1cm4gQ0dSZWN0WmVybzsKKworICAgIEludFJlY3QgcmVjdCA9IG1fb2JqZWN0LT5ib3Vu
ZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShWaXNpYmxlUG9zaXRpb25SYW5nZShbc3RhcnRNYXJr
ZXIgdmlzaWJsZVBvc2l0aW9uXSwgW2VuZE1hcmtlciB2aXNpYmxlUG9zaXRpb25dKSk7CiAgICAg
cmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TY3JlZW5TcGFjZTpyZWN0XTsKIH0KIApAQCAtMjQz
MywxMSArMjQyMiw4IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQo
TlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywKICAgICBpZiAoIVtzZWxmIF9w
cmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAg
IEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKLSAgICBp
ZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIENoYXJhY3Rlck9mZnNldCBjaGFy
YWN0ZXJPZmZzZXQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9yUG9pbnQoSW50UG9pbnQocG9p
bnQpLCBtX29iamVjdCk7Ci0gICAgcmV0dXJuIFtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0
ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXQgY2FjaGU6Y2FjaGVd
OworICAgIFZpc2libGVQb3NpdGlvbiBwb3MgPSBtX29iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9y
UG9pbnQoSW50UG9pbnQocG9pbnQpKTsKKyAgICByZXR1cm4gW1dlYkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIHRleHRNYXJrZXJXaXRoVmlzaWJsZVBvc2l0aW9uOnBvcyBjYWNoZTptX29iamVjdC0+
YXhPYmplY3RDYWNoZSgpXTsKIH0KIAogLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilu
ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9m
ZnNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAyY2E2OWJj
OTUyZDcxYzNlYjgxMjVjMGZjNTU5ZmZmNjNlOWM0MDkyLi4yNDhkMzk4ZDg4NmI3N2ExNDQ1OTA5
MTI5NDE1Y2M1YzE0MDhhZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQpAQCAtMzc3Niw4ICszNzc2LDggQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJG
b3JWaWV3KE5TVmlldyogdmlldykKIC0gKE5TQXR0cmlidXRlZFN0cmluZyopZG9BWEF0dHJpYnV0
ZWRTdHJpbmdGb3JSYW5nZTooTlNSYW5nZSlyYW5nZQogewogICAgIFBsYWluVGV4dFJhbmdlIHRl
eHRSYW5nZSA9IFBsYWluVGV4dFJhbmdlKHJhbmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGgpOwot
ICAgIFJlZlB0cjxSYW5nZT4gd2ViUmFuZ2UgPSBtX29iamVjdC0+cmFuZ2VGb3JQbGFpblRleHRS
YW5nZSh0ZXh0UmFuZ2UpOwotICAgIHJldHVybiBbc2VsZiBkb0FYQXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZTpbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2U6d2ViUmFuZ2Vd
XTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zUmFuZ2UgPSBtX29iamVjdC0+
dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZSh0ZXh0UmFuZ2UpOworICAgIHJldHVybiBbc2Vs
ZiBkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTpbc2VsZiB0ZXh0TWFya2Vy
UmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2aXNpYmxlUG9zUmFuZ2Uuc3RhcnQgZW5kUG9zaXRp
b246dmlzaWJsZVBvc1JhbmdlLmVuZF1dOwogfQogCiAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1Jh
bmdlOihSYW5nZSopcmFuZ2UKQEAgLTM4MDQsMTMgKzM4MDQsOCBAQCBzdGF0aWMgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlckZvclZpZXcoTlNWaWV3KiB2aWV3KQogICAgIGlmICghbWFya2VyKQogICAg
ICAgICByZXR1cm4gTlNOb3RGb3VuZDsKICAgICAKLSAgICBpZiAoQVhPYmplY3RDYWNoZSogY2Fj
aGUgPSBtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpKSB7Ci0gICAgICAgIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXQgPSBbc2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyOm1h
cmtlcl07Ci0gICAgICAgIC8vIENyZWF0ZSBhIGNvbGxhcHNlZCByYW5nZSBmcm9tIHRoZSBDaGFy
YWN0ZXJPZmZzZXQgb2JqZWN0LgotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gY2FjaGUt
PnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjaGFyYWN0ZXJPZmZzZXQsIGNoYXJh
Y3Rlck9mZnNldCk7Ci0gICAgICAgIHJldHVybiBbc2VsZiBfY29udmVydFRvTlNSYW5nZTpyYW5n
ZS5nZXQoKV0ubG9jYXRpb247Ci0gICAgfQotICAgIHJldHVybiBOU05vdEZvdW5kOworICAgIFZp
c2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJr
ZXI6bWFya2VyXSk7CisgICAgcmV0dXJuIFtzZWxmIF9jb252ZXJ0VG9OU1JhbmdlOnNlbGVjdGlv
bi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpXS5sb2NhdGlvbjsKIH0KIAogLSAoaWQpX3RleHRN
YXJrZXJGb3JJbmRleDooTlNJbnRlZ2VyKXRleHRJbmRleApAQCAtMzgyMywxMSArMzgxOCw4IEBA
IHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhOU1ZpZXcqIHZpZXcpCiAgICAg
aWYgKCF0ZXh0UmFuZ2UgfHwgIXRleHRSYW5nZS0+Ym91bmRhcnlQb2ludHNWYWxpZCgpKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IG1f
b2JqZWN0LT5heE9iamVjdENhY2hlKCkpIHsKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UodGV4
dFJhbmdlLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0
ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKKyAgICBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb24odGV4dFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnBvc2l0aW9uXTsKIH0K
IAogLy8gVGhlIFJURiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0aGF0IGlzCkBAIC0zOTE1LDEwICszOTA3LDYgQEAg
c3RhdGljIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2Um
IHJhbmdlLCBjaGFyKiBidWZmZXIsIHUKICAgICBpZiAoIVtzZWxmIHVwZGF0ZU9iamVjdEJhY2tp
bmdTdG9yZV0pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgQVhPYmplY3RDYWNoZSog
Y2FjaGUgPSBtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOwotICAgIGlmICghY2FjaGUpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCiAgICAgLy8gY29tbW9uIHBhcmFtZXRlciB0eXBlIGNoZWNr
L2Nhc3RpbmcuICBOaWwgY2hlY2tzIGluIGhhbmRsZXJzIGNhdGNoIHdyb25nIHR5cGUgY2FzZS4K
ICAgICAvLyBOT1RFOiBUaGlzIGFzc3VtZXMgbmlsIGlzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciwg
YmVjYXVzZSBpdCBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tCiAgICAgLy8gYSBwYXJhbWV0ZXIg
b2YgdGhlIHdyb25nIHR5cGUuCkBAIC0zOTc2LDEzICszOTY0LDExIEBAIHN0YXRpYyB2b2lkIGZv
cm1hdEZvckRlYnVnZ2VyKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJiByYW5nZSwgY2hhciog
YnVmZmVyLCB1CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eUVuZFRleHRNYXJrZXJGb3JCb3VuZHNQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkg
ewogICAgICAgICBJbnRSZWN0IHdlYkNvcmVSZWN0ID0gW3NlbGYgc2NyZWVuVG9Db250ZW50czpl
bmNsb3NpbmdJbnRSZWN0KHJlY3QpXTsKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rl
ck9mZnNldCA9IGNhY2hlLT5jaGFyYWN0ZXJPZmZzZXRGb3JCb3VuZHMod2ViQ29yZVJlY3QsIGZh
bHNlKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6
Y2hhcmFjdGVyT2Zmc2V0XTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNp
YmxlUG9zaXRpb246bV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckJvdW5kcyh3ZWJDb3JlUmVj
dCwgTGFzdFZpc2libGVQb3NpdGlvbkZvckJvdW5kcyldOwogICAgIH0KICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U3RhcnRUZXh0TWFya2VyRm9yQm91
bmRzUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKICAgICAgICAgSW50UmVjdCB3ZWJDb3JlUmVj
dCA9IFtzZWxmIHNjcmVlblRvQ29udGVudHM6ZW5jbG9zaW5nSW50UmVjdChyZWN0KV07Ci0gICAg
ICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zm
c2V0Rm9yQm91bmRzKHdlYkNvcmVSZWN0LCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRl
eHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XTsKKyAgICAgICAgcmV0
dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPnZpc2libGVQ
b3NpdGlvbkZvckJvdW5kcyh3ZWJDb3JlUmVjdCwgRmlyc3RWaXNpYmxlUG9zaXRpb25Gb3JCb3Vu
ZHMpXTsKICAgICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZV0pIHsKQEAgLTQwMzEsMzUgKzQwMTcsMzAgQEAgc3RhdGljIHZvaWQgZm9ybWF0
Rm9yRGVidWdnZXIoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlLCBjaGFyKiBidWZm
ZXIsIHUKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRN
YXJrZXJGb3JQb3NpdGlvbiJdKSB7CiAgICAgICAgIEludFBvaW50IHdlYkNvcmVQb2ludCA9IElu
dFBvaW50KHBvaW50KTsKLSAgICAgICAgaWYgKCFwb2ludFNldCkKLSAgICAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+
Y2hhcmFjdGVyT2Zmc2V0Rm9yUG9pbnQod2ViQ29yZVBvaW50LCBtX29iamVjdCk7Ci0gICAgICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNl
dF07CisgICAgICAgIHJldHVybiBwb2ludFNldCA/IFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxl
UG9zaXRpb246bV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCld
IDogbmlsOwogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6
QCJBWEJvdW5kc0ZvclRleHRNYXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBbc2VsZiByYW5nZUZvclRleHRNYXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2VdOwot
ICAgICAgICBOU1JlY3QgcmVjdCA9IG1fb2JqZWN0LT5ib3VuZHNGb3JSYW5nZShyYW5nZSk7Cisg
ICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5nZSA9IFtzZWxmIHZpc2li
bGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07CisgICAg
ICAgIE5TUmVjdCByZWN0ID0gbV9vYmplY3QtPmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdl
KHZpc2libGVQb3NSYW5nZSk7CiAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0
OnJlY3RdOwogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5Qm91bmRzRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewot
ICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9y
SW5kZXgocmFuZ2UubG9jYXRpb24sIG1fb2JqZWN0KTsKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0
IGVuZCA9IGNhY2hlLT5jaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChyYW5nZS5sb2NhdGlvbityYW5n
ZS5sZW5ndGgsIG1fb2JqZWN0KTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gbV9v
YmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4KHJhbmdlLmxvY2F0aW9uKTsKKyAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIGVuZCA9IG1fb2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChy
YW5nZS5sb2NhdGlvbityYW5nZS5sZW5ndGgpOwogICAgICAgICBpZiAoc3RhcnQuaXNOdWxsKCkg
fHwgZW5kLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IGNhY2hlLT5yYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMo
c3RhcnQsIGVuZCk7Ci0gICAgICAgIE5TUmVjdCByZWN0ID0gbV9vYmplY3QtPmJvdW5kc0ZvclJh
bmdlKHJhbmdlKTsKKyAgICAgICAgTlNSZWN0IHJlY3QgPSBtX29iamVjdC0+Ym91bmRzRm9yVmlz
aWJsZVBvc2l0aW9uUmFuZ2UoVmlzaWJsZVBvc2l0aW9uUmFuZ2Uoc3RhcnQsIGVuZCkpOwogICAg
ICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0XTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVN0cmluZ0Zv
clJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0
IHN0YXJ0ID0gY2FjaGUtPmNoYXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxvY2F0aW9uLCBt
X29iamVjdCk7Ci0gICAgICAgIENoYXJhY3Rlck9mZnNldCBlbmQgPSBjYWNoZS0+Y2hhcmFjdGVy
T2Zmc2V0Rm9ySW5kZXgocmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgsIG1fb2JqZWN0KTsK
KyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlv
bkZvckluZGV4KHJhbmdlLmxvY2F0aW9uKTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9
IG1fb2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChyYW5nZS5sb2NhdGlvbityYW5nZS5s
ZW5ndGgpOwogICAgICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpKQogICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGNhY2hl
LT5yYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoc3RhcnQsIGVuZCk7Ci0gICAgICAg
IHJldHVybiBtX29iamVjdC0+c3RyaW5nRm9yUmFuZ2UocmFuZ2UpOworICAgICAgICByZXR1cm4g
bV9vYmplY3QtPnN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKFZpc2libGVQb3NpdGlvblJh
bmdlKHN0YXJ0LCBlbmQpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIl0pCkBAIC00
MDc0LDYgKzQwNTUsOSBAQCBzdGF0aWMgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjb25zdCBWaXNp
YmxlUG9zaXRpb25SYW5nZSYgcmFuZ2UsIGNoYXIqIGJ1ZmZlciwgdQogICAgICAgICBpZiAoIUFY
T2JqZWN0SXNUZXh0TWFya2VyKHRleHRNYXJrZXIxKSB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIo
dGV4dE1hcmtlcjIpKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgCisgICAgICAg
IEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAg
ICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIENoYXJhY3Rl
ck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQxID0gW3NlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1h
cmtlcjp0ZXh0TWFya2VyMV07CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZz
ZXQyID0gW3NlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyMl07CiAg
ICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBjYWNoZS0+cmFuZ2VGb3JVbm9yZGVyZWRDaGFy
YWN0ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNldDEsIGNoYXJhY3Rlck9mZnNldDIpOwpAQCAtNDA5
MSwxMiArNDA3NSwxOCBAQCBzdGF0aWMgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjb25zdCBWaXNp
YmxlUG9zaXRpb25SYW5nZSYgcmFuZ2UsIGNoYXIqIGJ1ZmZlciwgdQogICAgIH0KICAgICAKICAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExlZnRXb3JkVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlciJdKSB7CisgICAgICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbV9v
YmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBb
c2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gY2FjaGUtPmxlZnRXb3JkUmFuZ2UoY2hhcmFjdGVyT2Zmc2V0
KTsKICAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZTpyYW5nZV07
CiAgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUmln
aHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciJdKSB7CisgICAgICAgIEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgaWYgKCFj
YWNoZSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBj
aGFyYWN0ZXJPZmZzZXQgPSBbc2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRN
YXJrZXJdOwogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gY2FjaGUtPnJpZ2h0V29yZFJh
bmdlKGNoYXJhY3Rlck9mZnNldCk7CiAgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFu
Z2VGcm9tUmFuZ2U6cmFuZ2VdOwpAQCAtNDExNSwyNCArNDEwNSwzNiBAQCBzdGF0aWMgdm9pZCBm
b3JtYXRGb3JEZWJ1Z2dlcihjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYgcmFuZ2UsIGNoYXIq
IGJ1ZmZlciwgdQogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWFNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciJdKSB7CisgICAgICAg
IEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAg
ICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIENoYXJhY3Rl
ck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBbc2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFy
a2VyOnRleHRNYXJrZXJdOwogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gY2FjaGUtPnNl
bnRlbmNlRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CiAgICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2U6cmFuZ2VdOwogICAgIH0KICAgICAKICAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFBhcmFncmFwaFRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IG1f
b2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgICAgIGlmICghY2FjaGUpCisgICAgICAgICAg
ICByZXR1cm4gbmlsOwogICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0g
W3NlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKICAgICAgICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGNhY2hlLT5wYXJhZ3JhcGhGb3JDaGFyYWN0ZXJPZmZzZXQo
Y2hhcmFjdGVyT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZy
b21SYW5nZTpyYW5nZV07CiAgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpAIkFYTmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7CisgICAg
ICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAg
ICAgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIENoYXJh
Y3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBbc2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0
TWFya2VyOnRleHRNYXJrZXJdOwogICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dEVuZCA9IGNh
Y2hlLT5uZXh0V29yZEVuZENoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogICAgICAg
ICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpuZXh0RW5kXTsKICAg
ICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQcmV2aW91
c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNh
Y2hlKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNo
YXJhY3Rlck9mZnNldCA9IFtzZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1h
cmtlcl07CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91c1N0YXJ0ID0gY2FjaGUtPnBy
ZXZpb3VzV29yZFN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CiAgICAgICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OnByZXZpb3VzU3RhcnRd
OwpAQCAtNDE0OSwyNCArNDE1MSwzNiBAQCBzdGF0aWMgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihj
b25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYgcmFuZ2UsIGNoYXIqIGJ1ZmZlciwgdQogICAgIH0K
ICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWE5leHRTZW50ZW5j
ZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgQVhPYmplY3RDYWNoZSog
Y2FjaGUgPSBtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlKQor
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rl
ck9mZnNldCA9IFtzZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtlcl07
CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBuZXh0RW5kID0gY2FjaGUtPm5leHRTZW50ZW5jZUVu
ZENoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogICAgICAgICByZXR1cm4gW3NlbGYg
dGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpuZXh0RW5kXTsKICAgICB9CiAgICAgCiAgICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQcmV2aW91c1NlbnRlbmNlU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7CisgICAgICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hl
ID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgaWYgKCFjYWNoZSkKKyAgICAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZz
ZXQgPSBbc2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwogICAg
ICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNTdGFydCA9IGNhY2hlLT5wcmV2aW91c1NlbnRl
bmNlU3RhcnRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKICAgICAgICAgcmV0dXJu
IFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6cHJldmlvdXNTdGFydF07CiAgICAg
fQogICAgIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTmV4dFBhcmFn
cmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgQVhPYmplY3RDYWNo
ZSogY2FjaGUgPSBtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hl
KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldCA9IFtzZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtl
cl07CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBuZXh0RW5kID0gY2FjaGUtPm5leHRQYXJhZ3Jh
cGhFbmRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIFtz
ZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6bmV4dEVuZF07CiAgICAgfQogICAgIAog
ICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUHJldmlvdXNQYXJhZ3JhcGhT
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgQVhPYmplY3RDYWNoZSog
Y2FjaGUgPSBtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlKQor
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rl
ck9mZnNldCA9IFtzZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtlcl07
CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91c1N0YXJ0ID0gY2FjaGUtPnByZXZpb3Vz
UGFyYWdyYXBoU3RhcnRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKICAgICAgICAg
cmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6cHJldmlvdXNTdGFydF07
CkBAIC00MjYyLDcgKzQyNzYsNyBAQCBzdGF0aWMgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYgcmFuZ2UsIGNoYXIqIGJ1ZmZlciwgdQogICAgICAgICAg
ICAgaWYgKCFyYW5nZVNldCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAg
ICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2UgPSBQbGFpblRleHRSYW5nZShyYW5nZS5s
b2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKLSAgICAgICAgICAgIE5TUmVjdCByZWN0ID0gbV9vYmpl
Y3QtPmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0KHBsYWluVGV4dFJhbmdl
KTsKKyAgICAgICAgICAgIE5TUmVjdCByZWN0ID0gbV9vYmplY3QtPmRvQVhCb3VuZHNGb3JSYW5n
ZShwbGFpblRleHRSYW5nZSk7CiAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
UmVjdDpyZWN0XTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAKaW5kZXggNjA3ZGM3YWNkNTE2YjIwNzU5MjI4YjI3NWQ5MjJhOWQyOWM2ODFm
My4uYTI0ZTUwMjRkZDI5YTZjYzA5NmIwZTBjN2U5M2UxYzQ0MTcwMjFhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTEzMjAsMTQgKzEzMjAsOSBAQCBMYXlvdXRS
ZWN0IGxvY2FsQ2FyZXRSZWN0SW5SZW5kZXJlckZvckNhcmV0UGFpbnRpbmcoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBjYXJldAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXI7CiAgICAgTGF5b3V0
UmVjdCBsb2NhbFJlY3QgPSBjYXJldFBvc2l0aW9uLmxvY2FsQ2FyZXRSZWN0KHJlbmRlcmVyKTsK
IAotICAgIHJldHVybiBsb2NhbENhcmV0UmVjdEluUmVuZGVyZXJGb3JSZWN0KGxvY2FsUmVjdCwg
Y2FyZXRQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCksIHJlbmRlcmVy
LCBjYXJldFBhaW50ZXIpOwotfQotCi1MYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0SW5SZW5kZXJl
ckZvclJlY3QoTGF5b3V0UmVjdCYgbG9jYWxSZWN0LCBOb2RlKiBub2RlLCBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBSZW5kZXJCbG9jayomIGNhcmV0UGFpbnRlcikKLXsKICAgICAvLyBHZXQgdGhl
IHJlbmRlcmVyIHRoYXQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgdGhlIGNhcmV0
CiAgICAgLy8gKHdoaWNoIGlzIGVpdGhlciB0aGUgcmVuZGVyZXIgd2UganVzdCBmb3VuZCwgb3Ig
b25lIG9mIGl0cyBjb250YWluZXJzKS4KLSAgICBjYXJldFBhaW50ZXIgPSByZW5kZXJlckZvckNh
cmV0UGFpbnRpbmcobm9kZSk7CisgICAgY2FyZXRQYWludGVyID0gcmVuZGVyZXJGb3JDYXJldFBh
aW50aW5nKGNhcmV0UG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKTsK
IAogICAgIC8vIENvbXB1dGUgYW4gb2Zmc2V0IGJldHdlZW4gdGhlIHJlbmRlcmVyIGFuZCB0aGUg
Y2FyZXRQYWludGVyLgogICAgIHdoaWxlIChyZW5kZXJlciAhPSBjYXJldFBhaW50ZXIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAppbmRleCA2MzQ5ZWZjMmVkOGUyOGY1NjA1OGI2
MDIzMjY2ZTFmYzc1N2QwOGY1Li5lNDA4NDY4YTZkYzc5N2VkOTgxNzllNDVmYjNhZDcxZWYyYTg3
ODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCkBAIC0yNjksNyArMjY5LDYg
QEAgY29uc3QgU3RyaW5nJiBub25CcmVha2luZ1NwYWNlU3RyaW5nKCk7CiAKIFJlbmRlckJsb2Nr
KiByZW5kZXJlckZvckNhcmV0UGFpbnRpbmcoTm9kZSopOwogTGF5b3V0UmVjdCBsb2NhbENhcmV0
UmVjdEluUmVuZGVyZXJGb3JDYXJldFBhaW50aW5nKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFJl
bmRlckJsb2NrKiYpOwotTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdEluUmVuZGVyZXJGb3JSZWN0
KExheW91dFJlY3QmLCBOb2RlKiwgUmVuZGVyT2JqZWN0KiwgUmVuZGVyQmxvY2sqJik7CiBJbnRS
ZWN0IGFic29sdXRlQm91bmRzRm9yTG9jYWxDYXJldFJlY3QoUmVuZGVyQmxvY2sqIHJlbmRlcmVy
Rm9yQ2FyZXRQYWludGluZywgY29uc3QgTGF5b3V0UmVjdCYpOwogCiB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTFjNGU4
NmEyNjIzZjhmMDQyNzUwZjkyYmYzY2RhZDkwOGViODk3OS4uOWU5NTRlMWU0NGFkY2NmMjE3NzAy
N2I4OGFkMGU3MjVlM2IyZjcyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTAzLTEwICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTk3OTgyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzQ2CisKKyAgICAgICAgVGhpcyBwYXRjaCBicm9rZSB3aW5k
b3dzIGJ1aWxkLiAoUmVxdWVzdGVkIGJ5IG5fd2FuZyBvbgorICAgICAgICAjd2Via2l0KS4KKwor
ICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkFYOiBJbXBsZW1lbnQgYm91
bmRzL3Bvc2l0aW9uIGFuZCBpbmRleCByZWxhdGVkIHRleHQgbWFya2VyCisgICAgICAgIGZ1bmN0
aW9ucyB1c2luZyBUZXh0SXRlcmF0b3IiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTQ5NzYKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMTk3OTgyCisKIDIwMTYtMDMtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ1JBU0ggYXQgV2ViQ29yZTo6UmVuZGVyVmlldzo6dXBkYXRlVmlz
aWJsZVZpZXdwb3J0UmVjdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvdGV4dC1tYXJrZXItZm9yLWluZGV4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3RleHQtbWFya2VyLWZvci1pbmRleC1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MDhiNGFhMzk2NTc1Nzc3ZTZlZTRhMzBiZWFmZmUzYTJi
ZGI5MjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItZm9yLWluZGV4LWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLXRleHQKLQotdGV4dAotYXVkaW8g
ZmlsZS4KLVRoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggYW5kIGluZGV4Rm9y
VGV4dE1hcmtlciBhcmUgd29ya2luZyBjb3JyZWN0bHkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KLQotCi1PcmlnaW5hbCBtYXJrZXIgc3RyaW5nOiB4Ci1JbmRleCBpczogMwotTmV3IG1h
cmtlciBzdHJpbmc6IHgKLQotT3JpZ2luYWwgbWFya2VyIHN0cmluZzogJ2xpbmUgYnJlYWsnCi1J
bmRleCBpczogNgotTmV3IG1hcmtlciBzdHJpbmc6ICdsaW5lIGJyZWFrJwotCi1PcmlnaW5hbCBt
YXJrZXIgc3RyaW5nOiBmCi1JbmRleCBpczogMTgKLU5ldyBtYXJrZXIgc3RyaW5nOiBmCi0KLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci1mb3ItaW5kZXgu
aHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLWZvci1pbmRl
eC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTlhZTdiM2YwN2Q4YzA0Mjhh
MTQxNDk0MjM5MDU0MzIyYjc4ODRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLWZv
ci1pbmRleC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxib2R5IGlkPSJib2R5
IiB0YWJpbmRleD0iMCI+Ci0KLTxkaXYgdGFiaW5kZXg9IjAiIGlkPSJ0ZXh0MSI+dGV4dDwvZGl2
PgotPGJyPgotdGV4dAotCi08ZGl2IGlkPSJ0ZXh0MiI+Ci1hdWRpbyA8YXVkaW8gY29udHJvbHM+
PHNvdXJjZSBzcmM9InRlc3QubXAzIiB0eXBlPSJhdWRpby9tcGVnIj48L2F1ZGlvPmZpbGUuCi08
L2Rpdj4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KLQotPHNjcmlwdD4KLQotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHZlcmlmaWVzIHRoYXQgdGV4
dE1hcmtlckZvckluZGV4IGFuZCBpbmRleEZvclRleHRNYXJrZXIgYXJlIHdvcmtpbmcgY29ycmVj
dGx5LiIpOwotCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAg
ICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgidGV4dDEiKTsKLSAgICAgICAgLy8gR2V0IHRoZSBhY3R1YWwgdGV4dCBub2RlLgotICAg
ICAgICB0ZXh0ID0gdGV4dC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIAotICAgICAgICB2YXIg
cHJldmlvdXMsIGN1cnJlbnQ7Ci0gICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHZhciBzdGFydE1hcmtlciA9
IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7
Ci0gICAgICAgIHZhciByZXN1bHQgPSBmb3J3YXJkKDMsIHByZXZpb3VzLCBzdGFydE1hcmtlciwg
dGV4dCk7Ci0gICAgICAgIHByZXZpb3VzID0gcmVzdWx0LnByZXZpb3VzOwotICAgICAgICBjdXJy
ZW50ID0gcmVzdWx0LmN1cnJlbnQ7Ci0gICAgICAgIHZlcmlmeU1hcmtlckluZGV4KHByZXZpb3Vz
LCBjdXJyZW50LCB0ZXh0KTsgCi0gICAgICAgIAotICAgICAgICAvLyBCUgotICAgICAgICByZXN1
bHQgPSBmb3J3YXJkKDIsIHByZXZpb3VzLCBjdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgcHJldmlv
dXMgPSByZXN1bHQucHJldmlvdXM7Ci0gICAgICAgIGN1cnJlbnQgPSByZXN1bHQuY3VycmVudDsK
LSAgICAgICAgdmVyaWZ5TWFya2VySW5kZXgocHJldmlvdXMsIGN1cnJlbnQsIHRleHQpOyAKLSAg
ICAgICAgCi0gICAgICAgIC8vIEF0dGFjaG1lbnQKLSAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDIiKTsKLSAgICAgICAgdGV4
dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAg
ICAgICBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
KHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAgIHJlc3VsdCA9IGZvcndhcmQoOCwgcHJldmlvdXMs
IHN0YXJ0TWFya2VyLCB0ZXh0KTsKLSAgICAgICAgcHJldmlvdXMgPSByZXN1bHQucHJldmlvdXM7
Ci0gICAgICAgIGN1cnJlbnQgPSByZXN1bHQuY3VycmVudDsKLSAgICAgICAgdmVyaWZ5TWFya2Vy
SW5kZXgocHJldmlvdXMsIGN1cnJlbnQsIHRleHQpOwotICAgIH0KLSAgICAKLSAgICAKLSAgICBm
dW5jdGlvbiBmb3J3YXJkKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2Jq
KSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICAg
ICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOwotICAgICAgICAgICAgY3VycmVudE1h
cmtlciA9IG9iai5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAotICAg
ICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgotICAgICAgICB9OwotICAgIH0KLSAgICAK
LSAgICBmdW5jdGlvbiByZXBsYWNlTGluZWJyZWFrSW5TdHJpbmcoc3RyKSB7Ci0gICAgICAgIHZh
ciBuZXdsaW5lID0gJ1xuJzsKLSAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UobmV3bGluZSwgIids
aW5lIGJyZWFrJyIpOwotICAgICAgICByZXR1cm4gc3RyOwotICAgIH0KLSAgICAKLSAgICBmdW5j
dGlvbiB2ZXJpZnlNYXJrZXJJbmRleChwcmV2aW91c01hcmtlciwgdGV4dE1hcmtlciwgb2JqKSB7
Ci0gICAgICAgIHZhciBtYXJrZXJSYW5nZSA9IG9iai50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHByZXZpb3VzTWFya2VyLCB0ZXh0TWFya2VyKTsKLSAgICAgICAgdmFyIG9yaWdpbmFsU3RyaW5n
ID0gcmVwbGFjZUxpbmVicmVha0luU3RyaW5nKG9iai5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpKTsKLSAgICAgICAgZGVidWcoIk9yaWdpbmFsIG1hcmtlciBzdHJpbmc6ICIg
KyBvcmlnaW5hbFN0cmluZyk7Ci0gICAgICAgIAotICAgICAgICB2YXIgaW5kZXggPSBvYmouaW5k
ZXhGb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICB2YXIgbmV3TWFya2VyID0gb2Jq
LnRleHRNYXJrZXJGb3JJbmRleChpbmRleCk7Ci0gICAgICAgIG1hcmtlclJhbmdlID0gb2JqLnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIG5ld01hcmtlcik7Ci0gICAg
ICAgIHZhciBuZXdTdHJpbmcgPSByZXBsYWNlTGluZWJyZWFrSW5TdHJpbmcob2JqLnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkpOwotICAgICAgICBkZWJ1ZygiSW5kZXggaXM6
ICIgKyBpbmRleCArICJcbk5ldyBtYXJrZXIgc3RyaW5nOiAiICsgbmV3U3RyaW5nICsgIlxuIik7
Ci0gICAgfQotCi08L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
dGV4dC1tYXJrZXItd29yZC1uYXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvdGV4dC1tYXJrZXItd29yZC1uYXYtZXhwZWN0ZWQudHh0CmluZGV4IDY0Y2Y5MWRi
MjZjZTU1NzZjNWIwYjdiYzJlODBmY2M3N2Q1OGU1Y2UuLmIyZWRjZDFmN2MwY2RjNzY1ZjYwZDNk
MDg2OTNlYzhlZWIwOGY1ZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3RleHQtbWFya2VyLXdvcmQtbmF2LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci13b3JkLW5hdi1leHBlY3RlZC50eHQKQEAgLTks
OCArOSw2IEBAIGxpbmUgYnJlYWtzCiBzb21lCiB0ZXh0CiB0ZXN0IGF1ZGlvIGZpbGUKLUVkaXQg
dGV4dAotCiBUaGlzIHRlc3RzIHRoYXQgd29yZCBuYXZpZ2F0aW9uIGlzIHdvcmtpbmcgY29ycmVj
dGx5LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCkBAIC02MSwxMSArNTksNiBAQCBMZWZ0
IHdvcmQgaXM6IGNhbid0CiBSaWdodCB3b3JkIGlzOiBjYW4ndAogUHJlIHdvcmQgc3RhcnQgdG8g
bmV4dCB3b3JkIGVuZDogY2FuJ3QKIAotQ3VycmVudCBjaGFyYWN0ZXIgaXM6IAotTGVmdCB3b3Jk
IGlzOiDlt6flhYvlipsKLVJpZ2h0IHdvcmQgaXM6IOW3p+WFi+WKmwotUHJlIHdvcmQgc3RhcnQg
dG8gbmV4dCB3b3JkIGVuZDogc2VsZWN0J2xpbmUgYnJlYWsn5ben5YWL5YqbCi0KIEN1cnJlbnQg
Y2hhcmFjdGVyIGlzOiDlhYsKIExlZnQgd29yZCBpczog5ben5YWL5YqbCiBSaWdodCB3b3JkIGlz
OiDlt6flhYvlipsKQEAgLTEyNiwxMSArMTE5LDYgQEAgTGVmdCB3b3JkIGlzOiBmaWxlCiBSaWdo
dCB3b3JkIGlzOiBmaWxlCiBQcmUgd29yZCBzdGFydCB0byBuZXh0IHdvcmQgZW5kOiBmaWxlCiAK
LUN1cnJlbnQgY2hhcmFjdGVyIGlzOiB0Ci1MZWZ0IHdvcmQgaXM6IEVkaXQKLVJpZ2h0IHdvcmQg
aXM6ICAKLVByZSB3b3JkIHN0YXJ0IHRvIG5leHQgd29yZCBlbmQ6IEVkaXQgdGV4dAotCiBUZXN0
IGdvaW5nIGZvcndhcmQuCiBFbmQgd29yZDogZmlsZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci13b3JkLW5hdi5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItd29yZC1uYXYuaHRtbAppbmRleCA4YmNl
YjhjNDUzMzllNDg3MDljMDk4MmM1YWM5NGQ4ZTQ2YTVhZTAyLi5hMzc2ODc4ZjU3ZTZmYTk3YjQ3
Nzg5ZjNlNDQ5OWNkZWNiZjZiNWIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy90ZXh0LW1hcmtlci13b3JkLW5hdi5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXdvcmQtbmF2Lmh0bWwKQEAgLTM5LDExICszOSw2IEBA
IHNvbWU8YnI+dGV4dAogdGVzdCBhdWRpbyA8YXVkaW8gY29udHJvbHM+PHNvdXJjZSBzcmM9InRl
c3QubXAzIiB0eXBlPSJhdWRpby9tcGVnIj48L2F1ZGlvPmZpbGUKIDwvZGl2PgogCi08cCBpZD0i
dGV4dDgiPgotPHN0cm9uZz5FZGl0PC9zdHJvbmc+Ci10ZXh0Ci08L3A+Ci0KIDxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiAKQEAgLTY5LDEzICs2NCwx
MyBAQCB0ZXh0CiAgICAgICAgIC8vIEF0ICJUIiBpbiAiVGhpc2lzIiwgc2hvdWxkIHJldHVybiB0
aGUgd29yZCBhcyAiVGhpc2lzbG9uZ3dvcmQiLgogICAgICAgICBjdXJyZW50TWFya2VyID0gYWR2
YW5jZUFuZFZlcmlmeShjdXJyZW50TWFya2VyLCAyLCB0ZXh0KTsKICAgICAgICAgLy8gQXQgIiAi
IGJlZm9yZSAiSSIsIHRoZSB3b3JkIHNob3VsZCBiZSAiSSdsbCIuCi0gICAgICAgIGN1cnJlbnRN
YXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KGN1cnJlbnRNYXJrZXIsIDE0LCB0ZXh0KTsKKyAgICAg
ICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJpZnkoY3VycmVudE1hcmtlciwgMTUsIHRl
eHQpOwogICAgICAgICAvLyBBdCAiICIgYmVmb3JlICJ0cnkiLCB0aGUgd29yZCBzaG91bGQgZXhj
bHVkZXMgIi4iCi0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KGN1cnJl
bnRNYXJrZXIsIDUsIHRleHQpOworICAgICAgICBjdXJyZW50TWFya2VyID0gYWR2YW5jZUFuZFZl
cmlmeShjdXJyZW50TWFya2VyLCA2LCB0ZXh0KTsKICAgICAgICAgCiAgICAgICAgIC8vIENoZWNr
IHRoZSBjYXNlIHdpdGggY29udGVudGVkaXRhYmxlCiAgICAgICAgIC8vIEF0ICJlIiBpbiAiZWRp
dGFibGUiLCB0aGUgd29yZCBzaG91bGQgTk9UIGluY2x1ZGUgIkNvbnRlbnQiIGJlZm9yZSBpdC4K
LSAgICAgICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJpZnkoY3VycmVudE1hcmtlciwg
MTgsIHRleHQpOworICAgICAgICBjdXJyZW50TWFya2VyID0gYWR2YW5jZUFuZFZlcmlmeShjdXJy
ZW50TWFya2VyLCAxOSwgdGV4dCk7CiAgICAgICAgIAogICAgICAgICAvLyBDaGVjayB0aGUgY2Fz
ZSB3aXRoIHJlcGxhY2VkIG5vZGUsIHRoZSByZXBsYWNlZCBub2RlIHNob3VsZCBiZSBjb25zaWRl
cmVkIGEgd29yZC4KICAgICAgICAgdmFyIHRleHQyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MiIpOwpAQCAtOTQsOCArODksNiBAQCB0ZXh0CiAg
ICAgICAgIHZhciB0ZXh0NCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgidGV4dDQiKTsKICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dDQudGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0NCk7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0
NC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKLSAg
ICAgICAgLy8gTWFrZSBzdXJlIHdoZW4gd2UgYXJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgbGluZSwg
aXQgd29uJ3QgZ28gdG8gcHJldmlvdXMgbm9kZS4KLSAgICAgICAgY3VycmVudE1hcmtlciA9IGFk
dmFuY2VBbmRWZXJpZnkoY3VycmVudE1hcmtlciwgMCwgdGV4dDQpOwogICAgICAgICBjdXJyZW50
TWFya2VyID0gYWR2YW5jZUFuZFZlcmlmeShjdXJyZW50TWFya2VyLCAyLCB0ZXh0NCk7CiAgICAg
ICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KGN1cnJlbnRNYXJrZXIsIDEsIHRl
eHQ0KTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJpZnkoY3VycmVudE1h
cmtlciwgMSwgdGV4dDQpOwpAQCAtMTMwLDE4ICsxMjMsMTIgQEAgdGV4dAogICAgICAgICBjdXJy
ZW50TWFya2VyID0gYWR2YW5jZUFuZFZlcmlmeShjdXJyZW50TWFya2VyLCAxLCB0ZXh0Nyk7CiAg
ICAgICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KGN1cnJlbnRNYXJrZXIsIDEs
IHRleHQ3KTsKICAgICAgICAgCi0gICAgICAgIC8vIEZvciBub2RlIHdpdGggdGV4dCBub2RlIGNo
aWxkcmVuLCB3ZSBzaG91bGQgdHJlYXQgdGhlIHZpc3VhbCBzcGFjZSBhcyB3b3JkIGJvdW5kYXJ5
LgotICAgICAgICB2YXIgdGV4dDggPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInRleHQ4Iik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IHRleHQ4LnRl
eHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dDgpOwotICAgICAgICBjdXJyZW50TWFya2VyID0g
dGV4dDguc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7
Ci0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KGN1cnJlbnRNYXJrZXIs
IDQsIHRleHQ4KTsKLSAgICAgICAgCiAgICAgICAgIC8vIENoZWNrIHRoZSB3b3JkIG1hcmtlciBy
dW5zIGZyb20gc3RhcnQgdG8gZW5kLCBhbmQgYmFja3dhcmRzLgogICAgICAgICAvLyBNYWtlIHN1
cmUgaXQgd29uJ3QgaGFuZy4KICAgICAgICAgdmVyaWZ5RG9jdW1lbnQodGV4dCk7CiAgICAgICAg
IAogICAgICAgICBmdW5jdGlvbiBhZHZhbmNlQW5kVmVyaWZ5KGN1cnJlbnRNYXJrZXIsIG9mZnNl
dCwgb2JqKSB7Ci0gICAgICAgICAgICB2YXIgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2Vy
OworICAgICAgICAgICAgdmFyIHByZXZpb3VzTWFya2VyOwogICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBvZmZzZXQ7IGkrKykgewogICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2Vy
ID0gY3VycmVudE1hcmtlcjsKICAgICAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLm5l
eHRUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>