<?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>207422</bug_id>
          
          <creation_ts>2020-02-07 17:13:49 -0800</creation_ts>
          <short_desc>Web Inspector: Revert slim toolbar</short_desc>
          <delta_ts>2020-02-07 20:23:19 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=204627</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=207317</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=207320</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=207318</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=207228</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=207322</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>mjs</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1616484</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-07 17:13:49 -0800</bug_when>
    <thetext>Revert r255547</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616485</commentid>
    <comment_count>1</comment_count>
      <attachid>390151</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-07 17:25:53 -0800</bug_when>
    <thetext>Created attachment 390151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616489</commentid>
    <comment_count>2</comment_count>
      <attachid>390151</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2020-02-07 17:47:19 -0800</bug_when>
    <thetext>Comment on attachment 390151
Patch

ChangeLog should probably have rationale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616492</commentid>
    <comment_count>3</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-02-07 17:49:53 -0800</bug_when>
    <thetext>Retitled from &quot;Revert r255547, r255890, r255892, r255893, and r255901&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616497</commentid>
    <comment_count>4</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-07 18:05:39 -0800</bug_when>
    <thetext>I&apos;ll update the Changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616498</commentid>
    <comment_count>5</comment_count>
      <attachid>390157</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-07 18:21:52 -0800</bug_when>
    <thetext>Created attachment 390157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616499</commentid>
    <comment_count>6</comment_count>
      <attachid>390158</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-07 18:30:40 -0800</bug_when>
    <thetext>Created attachment 390158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616507</commentid>
    <comment_count>7</comment_count>
      <attachid>390158</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-02-07 19:13:45 -0800</bug_when>
    <thetext>Comment on attachment 390158
Patch

r=me with testing of your build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616509</commentid>
    <comment_count>8</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-07 19:50:29 -0800</bug_when>
    <thetext>Looks like this requires one more additional patch to roll out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616510</commentid>
    <comment_count>9</comment_count>
      <attachid>390162</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-07 19:55:26 -0800</bug_when>
    <thetext>Created attachment 390162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616511</commentid>
    <comment_count>10</comment_count>
      <attachid>390163</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-07 20:09:00 -0800</bug_when>
    <thetext>Created attachment 390163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616515</commentid>
    <comment_count>11</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-07 20:22:26 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/256086/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616519</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-07 20:23:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/59282501&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390151</attachid>
            <date>2020-02-07 17:25:53 -0800</date>
            <delta_ts>2020-02-07 18:21:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207422-20200207172552.patch</filename>
            <type>text/plain</type>
            <size>426432</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IwYTRhNzQwNjk4YjZh
NWFhOTdkNzNhM2FiNWIzYTQ4MTM2NGNlNi4uOTdmMGNlZTdhMmQ4MDUzOTEzMDc4YmQ0NjBlNTE2
ZTE2ZjBjMzAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAyLTA3ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQgcjI1NTU0NywgcjI1NTg5
MCwgcjI1NTg5MiwgcjI1NTg5MywgYW5kIHIyNTU5MDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjptb3ZlV2luZG93QnkpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnN0YXJ0V2luZG93RHJhZyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om1vdmVXaW5kb3dCeSBjb25zdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorCiAyMDIwLTAyLTA3ICBKYWNrIExlZSAgPHNo
aWhjaGllaF9sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGxwdHIgY3Jhc2ggaW4gV2ViQ29y
ZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cKaW5kZXggOWFlNGNiNmU1ZWE4MjM5NDY3ZDI0MmRmMDQ5ZDk5Y2RiNWNjN2I1
Ni4uZjM3ZWE5NjA5N2UzZjk0NTI5MDIxODQ5MDc2MGQ1YWJmODFjMDEzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzc1IEBACisyMDIwLTAyLTA3ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQgcjI1NTU0NywgcjI1NTg5MCwgcjI1NTg5
MiwgcjI1NTg5MywgYW5kIHIyNTU5MDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNzQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV0ku
bG9hZGVkKToKKyAgICAgICAgKFdJLmNvbnRlbnRMb2FkZWQpOgorICAgICAgICAoV0kuX29wZW5E
ZWZhdWx0VGFiKToKKyAgICAgICAgKFdJLl9oYW5kbGVTZXR0aW5nc0tleWJvYXJkU2hvcnRjdXQp
OgorICAgICAgICAoV0kuX3RyeVRvUmVzdG9yZVBlbmRpbmdUYWJzKToKKyAgICAgICAgKFdJLnNo
b3dOZXdUYWJUYWIpOgorICAgICAgICAoV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQpOgorICAg
ICAgICAodXBkYXRlWm9vbUZhY3RvckNTU1ZhcmlhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0NvbnNvbGVNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuQ29uc29sZU1hbmFnZXIp
OgorICAgICAgICAoV0kuQ29uc29sZU1hbmFnZXIucHJvdG90eXBlLm1lc3NhZ2VXYXNBZGRlZCk6
CisgICAgICAgIChXSS5Db25zb2xlTWFuYWdlci5wcm90b3R5cGUubWVzc2FnZXNDbGVhcmVkKToK
KyAgICAgICAgKFdJLkNvbnNvbGVNYW5hZ2VyLnByb3RvdHlwZS5tZXNzYWdlUmVwZWF0Q291bnRV
cGRhdGVkKToKKyAgICAgICAgKFdJLkNvbnNvbGVNYW5hZ2VyLnByb3RvdHlwZS5fZGVsYXllZE1l
c3NhZ2VzQ2xlYXJlZCk6CisgICAgICAgIChXSS5Db25zb2xlTWFuYWdlci5wcm90b3R5cGUuZ2V0
IHdhcm5pbmdDb3VudCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5Db25zb2xlTWFuYWdlci5wcm90
b3R5cGUuZ2V0IGVycm9yQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29uc29sZU1hbmFn
ZXIucHJvdG90eXBlLl9pbmNyZW1lbnRNZXNzYWdlTGV2ZWxDb3VudCk6IERlbGV0ZWQuCisgICAg
ICAgICogVXNlckludGVyZmFjZS9EZWJ1Zy9Cb290c3RyYXAuanM6CisgICAgICAgIChhcHBseUR1
bXBNZXNzYWdlc1N0YXRlKToKKyAgICAgICAgKFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMpOgor
ICAgICAgICAodXBkYXRlRGVidWdVSSk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9JbWFnZXMvTmV3VGFiLnN2ZzogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFn
ZXMvTmV3VGFiUGx1cy5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2Vz
L09yaWdpbi5zdmc6CisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvU2VhcmNoUmVzdWx0
cy5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL1NvdXJjZXNQYXVz
ZWQuc3ZnOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFzaGJvYXJkLmpzOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNw
YWNlTmF2aWdhdGlvbkl0ZW0uY3NzLgorICAgICAgICAoV0kuRGVidWdnZXJEYXNoYm9hcmQpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanM6IEFkZGVk
LgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZCk6CisgICAgICAgIChXSS5EZWZhdWx0RGFz
aGJvYXJkLnByb3RvdHlwZS5nZXQgcmVzb3VyY2VzQ291bnQpOgorICAgICAgICAoV0kuRGVmYXVs
dERhc2hib2FyZC5wcm90b3R5cGUuc2V0IHJlc291cmNlc0NvdW50KToKKyAgICAgICAgKFdJLkRl
ZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLmdldCByZXNvdXJjZXNTaXplKToKKyAgICAgICAgKFdJ
LkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLnNldCByZXNvdXJjZXNTaXplKToKKyAgICAgICAg
KFdJLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLmdldCB0aW1lKToKKyAgICAgICAgKFdJLkRl
ZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLnNldCB0aW1lKToKKyAgICAgICAgKFdJLkRlZmF1bHRE
YXNoYm9hcmQucHJvdG90eXBlLmdldCBsb2dzKToKKyAgICAgICAgKFdJLkRlZmF1bHREYXNoYm9h
cmQucHJvdG90eXBlLnNldCBsb2dzKToKKyAgICAgICAgKFdJLkRlZmF1bHREYXNoYm9hcmQucHJv
dG90eXBlLmdldCBlcnJvcnMpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5
cGUuc2V0IGVycm9ycyk6CisgICAgICAgIChXSS5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5n
ZXQgaXNzdWVzKToKKyAgICAgICAgKFdJLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLnNldCBp
c3N1ZXMpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuX2RhdGFEaWRD
aGFuZ2UpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuX21haW5SZXNv
dXJjZURpZENoYW5nZSk6CisgICAgICAgIChXSS5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5f
aGFuZGxlVGltZWxpbmVDYXB0dXJpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV0kuRGVmYXVs
dERhc2hib2FyZC5wcm90b3R5cGUuX3Jlc291cmNlV2FzQWRkZWQpOgorICAgICAgICAoV0kuRGVm
YXVsdERhc2hib2FyZC5wcm90b3R5cGUuX2ZyYW1lV2FzQWRkZWQpOgorICAgICAgICAoV0kuRGVm
YXVsdERhc2hib2FyZC5wcm90b3R5cGUuX3Jlc291cmNlU2l6ZURpZENoYW5nZSk6CisgICAgICAg
IChXSS5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5fc3RhcnRVcGRhdGluZ1RpbWUpOgorICAg
ICAgICAoV0kuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuX3N0b3BVcGRhdGluZ1RpbWUpOgor
ICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuX3VwZGF0ZVRpbWUpOgorICAg
ICAgICAoV0kuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuX2NvbnNvbGVNZXNzYWdlQWRkZWQp
OgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuX2NvbnNvbGVNZXNzYWdl
V2FzUmVwZWF0ZWQpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuX2lu
Y3JlbWVudENvbnNvbGVNZXNzYWdlVHlwZSk6CisgICAgICAgIChXSS5EZWZhdWx0RGFzaGJvYXJk
LnByb3RvdHlwZS5fY29uc29sZVdhc0NsZWFyZWQpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hi
b2FyZC5wcm90b3R5cGUuX3RyYW5zaXRpb25QYWdlVGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0uanM6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZp
Z2F0aW9uSXRlbS5jc3MuCisgICAgICAgIChXSS5BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0F1ZGl0VGFiQ29udGVudFZpZXcuanM6Cisg
ICAgICAgIChXSS5BdWRpdFRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLkF1ZGl0VGFiQ29u
dGVudFZpZXcudGFiSW5mbyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25O
YXZpZ2F0aW9uSXRlbS5jc3M6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1l
OiBkYXJrKSAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uKToKKyAgICAgICAgKC50YWItYmFy
ID4gLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbi5pbWFnZS1hbmQtdGV4dCA+IHNwYW4pOiBE
ZWxldGVkLgorICAgICAgICAoLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbiA+IGltZyk6IERl
bGV0ZWQuCisgICAgICAgICgubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uLmRpc2FibGVkID4g
aW1nKTogRGVsZXRlZC4KKyAgICAgICAgKGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAu
d2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbiA+IGlt
Zyk6IERlbGV0ZWQuCisgICAgICAgIChib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndp
bmRvdy1kb2NrZWQtaW5hY3RpdmUpIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24uZGlzYWJs
ZWQgPiBpbWcpOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVt
ZTogZGFyaykgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbi5kaXNhYmxlZCA+IGltZyk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRl
bS5qczoKKyAgICAgICAgKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKToKKyAgICAgICAgKFdJLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5fdXBkYXRlKToKKyAgICAgICAgKFdJLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5nZXQgaW1hZ2VUeXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5zZXQgaW1hZ2VUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmNz
czogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGl2aWRlck5hdmlnYXRpb25JdGVtLmNzcy4KKyAgICAgICAgKC50b29sYmFyIC5pdGVtLmJ1dHRv
bik6CisgICAgICAgICgudG9vbGJhciAuaXRlbS5idXR0b246bm90KC5kaXNhYmxlZCk6YWN0aXZl
KToKKyAgICAgICAgKC50b29sYmFyIC5pdGVtLmJ1dHRvbjpub3QoLmRpc2FibGVkKTptYXRjaGVz
KDpmb2N1cywgLmFjdGl2YXRlLmFjdGl2YXRlZCkpOgorICAgICAgICAoLnRvb2xiYXIgLml0ZW0u
YnV0dG9uID4gLmdseXBoKToKKyAgICAgICAgKGJvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFy
IC5pdGVtLmJ1dHRvbik6CisgICAgICAgICgudG9vbGJhciAuaXRlbS5idXR0b24uZGlzYWJsZWQp
OgorICAgICAgICAoYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLml0ZW0uYnV0dG9uLmRp
c2FibGVkKToKKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC50
b29sYmFyIC5pdGVtLmJ1dHRvbik6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAudG9vbGJhciAuaXRlbS5idXR0b246bm90KC5kaXNhYmxlZCk6YWN0aXZlKToK
KyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIGJvZHk6bm90KC53
aW5kb3ctaW5hY3RpdmUpIC50b29sYmFyIC5pdGVtLmJ1dHRvbjpub3QoLmRpc2FibGVkKTptYXRj
aGVzKDpmb2N1cywgLmFjdGl2YXRlLmFjdGl2YXRlZCkgPiAuZ2x5cGgpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uanM6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0
aW9uSXRlbS5jc3MuCisgICAgICAgIChXSS5CdXR0b25Ub29sYmFySXRlbSk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChX
SS5Db25zb2xlVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuQ29uc29sZVRhYkNvbnRlbnRW
aWV3LnRhYkluZm8pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dz
ZXJUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkNvbnRlbnRCcm93c2VyVGFiQ29udGVu
dFZpZXcpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVt
LmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzcy4KKyAgICAgICAgKC50b29sYmFyIC5pdGVtLmNv
bnRyb2wpOgorICAgICAgICAoLnRvb2xiYXIuc21hbGwtc2l6ZSAuaXRlbS5jb250cm9sKToKKyAg
ICAgICAgKC50b29sYmFyIC5pdGVtLmNvbnRyb2w6aG92ZXIpOgorICAgICAgICAoLnRvb2xiYXIg
Lml0ZW0uY29udHJvbDphY3RpdmUpOgorICAgICAgICAoLnRvb2xiYXIgLml0ZW0uY29udHJvbCA+
IC5nbHlwaCk6CisgICAgICAgIChib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuaXRlbS5j
b250cm9sKToKKyAgICAgICAgKC50b29sYmFyIC5pdGVtLmNvbnRyb2wuZGlzYWJsZWQpOgorICAg
ICAgICAoYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLml0ZW0uY29udHJvbC5kaXNhYmxl
ZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uanM6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rp
dmlkZXJOYXZpZ2F0aW9uSXRlbS5jc3MuCisgICAgICAgIChXSS5Db250cm9sVG9vbGJhckl0ZW0p
OgorICAgICAgICAoV0kuQ29udHJvbFRvb2xiYXJJdGVtLnByb3RvdHlwZS5nZXQgYWRkaXRpb25h
bENsYXNzTmFtZXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRl
bnRWaWV3LmNzczoKKyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC5jb250ZW50
LXZpZXcuZG9tLXRyZWUgLnRyZWUtb3V0bGluZS5kb206Zm9jdXMgbGk6bWF0Y2hlcyguc2VsZWN0
ZWQsIC5ob3ZlcmVkKSAuc3RhdHVzLWltYWdlLmJyZWFrcG9pbnQpOgorICAgICAgICAoYm9keTpu
b3QoLndpbmRvdy1pbmFjdGl2ZSkgLmNvbnRlbnQtdmlldy5kb20tdHJlZSAudHJlZS1vdXRsaW5l
LmRvbTpmb2N1cyBsaTptYXRjaGVzKC5zZWxlY3RlZCwgLmhvdmVyZWQpIC5zdGF0dXMtaW1hZ2Uu
YnJlYWtwb2ludC5zdWJ0cmVlKToKKyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUs
IC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAuY29udGVudC12aWV3LmRvbS10cmVlIC50cmVlLW91
dGxpbmUuZG9tOmZvY3VzIGxpOm1hdGNoZXMoLnNlbGVjdGVkLCAuaG92ZXJlZCkgLnN0YXR1cy1p
bWFnZS5icmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5h
Y3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAuY29udGVudC12aWV3LmRvbS10cmVlIC50
cmVlLW91dGxpbmUuZG9tOmZvY3VzIGxpOm1hdGNoZXMoLnNlbGVjdGVkLCAuaG92ZXJlZCkgLnN0
YXR1cy1pbWFnZS5icmVha3BvaW50LnN1YnRyZWUpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5jc3M6IEFkZGVkLgorICAgICAg
ICAoLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIpOgorICAgICAgICAoYm9keTptYXRjaGVz
KC5wYWdlLCAud2ViLXBhZ2UpIC50b29sYmFyIC5kYXNoYm9hcmQtY29udGFpbmVyKToKKyAgICAg
ICAgKGJvZHk6bm90KC5wYWdlLCAud2ViLXBhZ2UpIC50b29sYmFyIC5kYXNoYm9hcmQtY29udGFp
bmVyKToKKyAgICAgICAgKC50b29sYmFyLmNvbGxhcHNlZCAuZGFzaGJvYXJkLWNvbnRhaW5lcik6
CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNo
Ym9hcmQudmlzaWJsZSk6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkOm5vdCgudmlzaWJs
ZSkpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1vdXQtdXApOgorICAgICAg
ICAoLnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1vdXQtZG93bik6CisgICAgICAgICgudG9vbGJh
ciAuZGFzaGJvYXJkLnNsaWRlLWluLXVwKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQu
c2xpZGUtaW4tZG93bik6CisgICAgICAgIChAa2V5ZnJhbWVzIHNsaWRlLXRvcC1lZGdlKToKKyAg
ICAgICAgKHRvKToKKyAgICAgICAgKEBrZXlmcmFtZXMgc2xpZGUtYm90dG9tLWVkZ2UpOgorICAg
ICAgICAoLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3cpOgorICAgICAgICAoYm9k
eVtkaXI9bHRyXSAuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdyk6CisgICAgICAg
IChib2R5W2Rpcj1ydGxdIC5kYXNoYm9hcmQtY29udGFpbmVyIC5hZHZhbmNlLWFycm93KToKKyAg
ICAgICAgKC5kYXNoYm9hcmQtY29udGFpbmVyIC5hZHZhbmNlLWFycm93OmhvdmVyKToKKyAgICAg
ICAgKC5kYXNoYm9hcmQtY29udGFpbmVyIC5hZHZhbmNlLWFycm93OmFjdGl2ZSk6CisgICAgICAg
ICguZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdy5pbmFjdGl2ZSk6CisgICAgICAg
ICguZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdy5hZHZhbmNlLWZvcndhcmQpOgor
ICAgICAgICAoLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3cuYWR2YW5jZS1iYWNr
d2FyZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJW
aWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcpOgorICAg
ICAgICAoV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5wcm90b3R5cGUuZ2V0IHRvb2xiYXJJdGVt
KToKKyAgICAgICAgKFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlLmdldCBjdXJy
ZW50RGFzaGJvYXJkVmlldyk6CisgICAgICAgIChXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LnBy
b3RvdHlwZS5zaG93RGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAg
KFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlLmhpZGVEYXNoYm9hcmRWaWV3Rm9y
UmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5w
cm90b3R5cGUuY2xvc2VEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAg
ICAoV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5wcm90b3R5cGUuX2FkdmFuY2VGb3J3YXJkQXJy
b3dDbGlja2VkKToKKyAgICAgICAgKFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBl
Ll9hZHZhbmNlQmFja3dhcmRBcnJvd0NsaWNrZWQpOgorICAgICAgICAoV0kuRGFzaGJvYXJkQ29u
dGFpbmVyVmlldy5wcm90b3R5cGUuX2Rpc21pc3NBZHZhbmNlQXJyb3dzKToKKyAgICAgICAgKFdJ
LkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlLl91cGRhdGVBZHZhbmNlQXJyb3dWaXNp
YmlsaXR5KToKKyAgICAgICAgKFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlLl9k
YXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV0kuRGFzaGJvYXJk
Q29udGFpbmVyVmlldy5wcm90b3R5cGUuX3Nob3dEYXNoYm9hcmRBdEluZGV4KToKKyAgICAgICAg
KFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlLl9zaG93RGFzaGJvYXJkVmlldy5h
bmltYXRpb25FbmRlZCk6CisgICAgICAgIChXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3Rv
dHlwZS5fc2hvd0Rhc2hib2FyZFZpZXcpOgorICAgICAgICAoV0kuRGFzaGJvYXJkQ29udGFpbmVy
Vmlldy5wcm90b3R5cGUuX2hpZGVEYXNoYm9hcmRWaWV3LmFuaW1hdGlvbkVuZGVkKToKKyAgICAg
ICAgKFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlLl9oaWRlRGFzaGJvYXJkVmll
dyk6CisgICAgICAgIChXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZS5fY2xvc2VE
YXNoYm9hcmRWaWV3LmRpc3NvY2lhdGVEYXNoYm9hcmRWaWV3KToKKyAgICAgICAgKFdJLkRhc2hi
b2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlLl9jbG9zZURhc2hib2FyZFZpZXcpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5qczogQ29waWVkIGZyb20gU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRlbS5q
cy4KKyAgICAgICAgKFdJLkRhc2hib2FyZFZpZXcpOgorICAgICAgICAoV0kuRGFzaGJvYXJkVmll
dy5jcmVhdGUpOgorICAgICAgICAoV0kuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUuZ2V0IGVsZW1l
bnQpOgorICAgICAgICAoV0kuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUuZ2V0IHJlcHJlc2VudGVk
T2JqZWN0KToKKyAgICAgICAgKFdJLkRhc2hib2FyZFZpZXcucHJvdG90eXBlLnNob3duKToKKyAg
ICAgICAgKFdJLkRhc2hib2FyZFZpZXcucHJvdG90eXBlLmhpZGRlbik6CisgICAgICAgIChXSS5E
YXNoYm9hcmRWaWV3LnByb3RvdHlwZS5jbG9zZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmNzczogQWRkZWQuCisgICAgICAgICgudG9vbGJh
ciAuZGFzaGJvYXJkLmRlYnVnZ2VyKToKKyAgICAgICAgKC5kYXNoYm9hcmQuZGVidWdnZXIgPiAu
bWVzc2FnZSk6CisgICAgICAgICguZGFzaGJvYXJkLmRlYnVnZ2VyIC5uYXZpZ2F0aW9uLWJhcik6
CisgICAgICAgICgudG9vbGJhcjpub3QoLnNtYWxsLXNpemUpIC5kYXNoYm9hcmQuZGVidWdnZXIg
Lm5hdmlnYXRpb24tYmFyKToKKyAgICAgICAgKC5kYXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRp
b24tYmFyIC5pdGVtLmJ1dHRvbik6CisgICAgICAgICguZGFzaGJvYXJkLmRlYnVnZ2VyIC5uYXZp
Z2F0aW9uLWJhciAuaXRlbS5idXR0b24gPiAuZ2x5cGgpOgorICAgICAgICAoYm9keS53aW5kb3ct
aW5hY3RpdmUgLmRhc2hib2FyZC5kZWJ1Z2dlciAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9u
ID4gLmdseXBoKToKKyAgICAgICAgKC5kYXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24tYmFy
IC5pdGVtLmRlYnVnZ2VyLWRhc2hib2FyZC1wYXVzZS5hY3RpdmF0ZWQpOgorICAgICAgICAoQGtl
eWZyYW1lcyBwdWxzZS1wYXVzZS1idXR0b24pOgorICAgICAgICAodG8pOgorICAgICAgICAoLmRh
c2hib2FyZC5kZWJ1Z2dlciA+IC5kaXZpZGVyKToKKyAgICAgICAgKC5kYXNoYm9hcmQuZGVidWdn
ZXIgPiBkaXYpOgorICAgICAgICAoLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbik6Cisg
ICAgICAgICguZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uID4gKik6CisgICAgICAgICgu
ZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uID4gOmZpcnN0LWNoaWxkKToKKyAgICAgICAg
KC5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gPiA6bGFzdC1jaGlsZCk6CisgICAgICAg
ICgudG9vbGJhcjpub3QoLnNtYWxsLXNpemUpIC5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRp
b24gOm5vdCg6Zmlyc3QtY2hpbGQpKToKKyAgICAgICAgKC5kYXNoYm9hcmQuZGVidWdnZXIgPiAu
bG9jYXRpb24gaW1nLmljb24pOgorICAgICAgICAoLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2Nh
dGlvbiA6bWF0Y2hlcyguZnVuY3Rpb24taWNvbiwgLmV2ZW50LWxpc3RlbmVyLWljb24pKToKKyAg
ICAgICAgKC5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gLmZ1bmN0aW9uLW5hbWUpOgor
ICAgICAgICAoLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiAuZnVuY3Rpb24tbmFtZTo6
YWZ0ZXIpOgorICAgICAgICAoLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiAuZ28tdG8t
bGluayk6CisgICAgICAgICgudG9vbGJhci5jb2xsYXBzZWQgLmRhc2hib2FyZC5kZWJ1Z2dlciA+
IDpub3QoLm1lc3NhZ2UsIC5uYXZpZ2F0aW9uLWJhcikpOgorICAgICAgICAoLnRvb2xiYXIuc21h
bGwtc2l6ZSAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLm1lc3NhZ2UpOgorICAgICAgICAoLnRvb2xi
YXIuc21hbGwtc2l6ZSAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIGltZy5pY29uLCk6
CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAudG9vbGJhciAu
ZGFzaGJvYXJkLmRlYnVnZ2VyKToKKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hl
bWU6IGRhcmspIC5kYXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRv
biA+IC5nbHlwaCk6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJr
KSAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIC5mdW5jdGlvbi1uYW1lKToKKyAgICAg
ICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5kYXNoYm9hcmQuZGVidWdn
ZXIgPiAubG9jYXRpb24gLmdvLXRvLWxpbmspOgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNv
bG9yLXNjaGVtZTogZGFyaykgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5kaXZpZGVyKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5qczogQWRkZWQu
CisgICAgICAgIChXSS5EZWJ1Z2dlckRhc2hib2FyZFZpZXcpOgorICAgICAgICAoV0kuRGVidWdn
ZXJEYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5jbG9zZWQpOgorICAgICAgICAoV0kuRGVidWdnZXJE
YXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fcmVidWlsZExvY2F0aW9uKToKKyAgICAgICAgKFdJLkRl
YnVnZ2VyRGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX3Jlc3VtZUJ1dHRvbkNsaWNrZWQpOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuY3NzOiBBZGRl
ZC4KKyAgICAgICAgKGJvZHk6bWF0Y2hlcygucGFnZSwgLndlYi1wYWdlKSAudG9vbGJhci5jb2xs
YXBzZWQgLmRhc2hib2FyZC5kZWZhdWx0ID4gOm1hdGNoZXMoLnJlc291cmNlc1NpemUsIC50aW1l
LCAubG9ncykpOgorICAgICAgICAoYm9keTpub3QoLnBhZ2UsIC53ZWItcGFnZSkgLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWZhdWx0ID4gOm1hdGNoZXMoLnJlc291cmNlc0NvdW50LCAucmVzb3VyY2Vz
U2l6ZSwgLnRpbWUpKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCk6Cisg
ICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbSk6CisgICAgICAgICgu
dG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiA6bWF0Y2hlcygudGltZSwgLnJlc291cmNlc1Np
emUpKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJs
ZWQ6aG92ZXIpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0u
ZW5hYmxlZDphY3RpdmUpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4g
Lml0ZW0gPiAqKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVt
ID4gaW1nKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVu
YWJsZWQgPiBpbWcpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0
ZW0uZW5hYmxlZDpob3ZlciA+IGltZyk6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkLmRl
ZmF1bHQgPiAuaXRlbSA+IGRpdik6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1
bHQgPiAuaXRlbS5lbmFibGVkID4gZGl2KToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQu
ZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIgPiBkaXYpOgorICAgICAgICAoLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc0NvdW50ID4gaW1nKToKKyAgICAgICAgKC50
b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC50aW1lID4gaW1nKToKKyAgICAgICAgKC50b29s
YmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5sb2dzID4gaW1nKToKKyAgICAgICAgKC50b29sYmFy
IC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5yZXNvdXJjZXNTaXplID4gaW1nKToKKyAgICAgICAgKC50
b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMgPiBpbWcpOgorICAgICAgICAoLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmVycm9ycy5lbmFibGVkID4gaW1nKToKKyAgICAg
ICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMuZW5hYmxlZDpob3ZlciA+
IGltZyk6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3JzLmVu
YWJsZWQgPiBkaXYpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmVy
cm9ycy5lbmFibGVkOmhvdmVyID4gZGl2KToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQu
ZGVmYXVsdCA+IC5pc3N1ZXMgPiBpbWcpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5k
ZWZhdWx0ID4gLmlzc3Vlcy5lbmFibGVkID4gaW1nKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNo
Ym9hcmQuZGVmYXVsdCA+IC5pc3N1ZXMuZW5hYmxlZDpob3ZlciA+IGltZyk6CisgICAgICAgICgu
dG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzLmVuYWJsZWQgPiBkaXYpOgorICAg
ICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmlzc3Vlcy5lbmFibGVkOmhvdmVy
ID4gZGl2KToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLnB1
bHNpbmcpOgorICAgICAgICAoQGtleWZyYW1lcyBjb25zb2xlLWl0ZW0tcHVsc2UpOgorICAgICAg
ICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLnRvb2xiYXIgLmRhc2hib2Fy
ZC5kZWZhdWx0ID4gLml0ZW0gPiBkaXYpOgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9y
LXNjaGVtZTogZGFyaykgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxl
ZCA+IGRpdik6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAu
dG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkOmhvdmVyKToKKyAgICAg
ICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC50b29sYmFyIC5kYXNoYm9h
cmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIgPiBkaXYpOgorICAgICAgICAoQG1lZGlh
IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0
ID4gLnJlc291cmNlc0NvdW50ID4gaW1nLCk6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29s
b3Itc2NoZW1lOiBkYXJrKSAudG9vbGJhciAuZGFzaGJvYXJkIC5pdGVtLmJ1dHRvbiwpOgorICAg
ICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmRhc2hib2FyZC1jb250
YWluZXIgLmFkdmFuY2UtYXJyb3cpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGVm
YXVsdERhc2hib2FyZFZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2Fy
ZFZpZXcpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90eXBlLl91cGRh
dGVEaXNwbGF5U29vbik6CisgICAgICAgIChXSS5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5
cGUuX3VwZGF0ZURpc3BsYXkpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZFZpZXcucHJv
dG90eXBlLl9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtLik6CisgICAgICAgIChXSS5EZWZhdWx0
RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX2FwcGVuZEVsZW1lbnRGb3JOYW1lZEl0ZW0uc2V0IGl0
ZW0pOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90eXBlLl9hcHBlbmRF
bGVtZW50Rm9yTmFtZWRJdGVtKToKKyAgICAgICAgKFdJLkRlZmF1bHREYXNoYm9hcmRWaWV3LnBy
b3RvdHlwZS5faXRlbVdhc0NsaWNrZWQpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZFZp
ZXcucHJvdG90eXBlLl9yZXNvdXJjZXNJdGVtV2FzQ2xpY2tlZCk6CisgICAgICAgIChXSS5EZWZh
dWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX25ldHdvcmtJdGVtV2FzQ2xpY2tlZCk6CisgICAg
ICAgIChXSS5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX3RpbWVsaW5lSXRlbVdhc0Ns
aWNrZWQpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90eXBlLl9jb25z
b2xlSXRlbVdhc0NsaWNrZWQpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZFZpZXcucHJv
dG90eXBlLl9zZXRDb25zb2xlSXRlbVZhbHVlLmFuaW1hdGlvbkVuZGVkKToKKyAgICAgICAgKFdJ
LkRlZmF1bHREYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fc2V0Q29uc29sZUl0ZW1WYWx1ZSk6Cisg
ICAgICAgIChXSS5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX3NldEl0ZW1FbmFibGVk
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRlbS5j
c3M6CisgICAgICAgICgubmF2aWdhdGlvbi1iYXIgLml0ZW0uZGl2aWRlcik6CisgICAgICAgIChA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAubmF2aWdhdGlvbi1iYXIgLml0ZW0u
ZGl2aWRlcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FbGVtZW50c1RhYkNvbnRl
bnRWaWV3LmpzOgorICAgICAgICAoV0kuRWxlbWVudHNUYWJDb250ZW50Vmlldyk6CisgICAgICAg
IChXSS5FbGVtZW50c1RhYkNvbnRlbnRWaWV3LnRhYkluZm8pOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLmNzczoKKyAgICAgICAgKDpt
YXRjaGVzKC5uYXZpZ2F0aW9uLWJhciwgLnRvb2xiYXIpIC5pdGVtLmZsZXhpYmxlLXNwYWNlKToK
KyAgICAgICAgKDptYXRjaGVzKC5uYXZpZ2F0aW9uLWJhciwgLnRvb2xiYXIpIC5pdGVtLmZsZXhp
YmxlLXNwYWNlLmFsaWduLXN0YXJ0ID4gLml0ZW0pOgorICAgICAgICAoOm1hdGNoZXMoLm5hdmln
YXRpb24tYmFyLCAudG9vbGJhcikgLml0ZW0uZmxleGlibGUtc3BhY2UuYWxpZ24tZW5kID4gLml0
ZW0pOgorICAgICAgICAoLm5hdmlnYXRpb24tYmFyIC5pdGVtLmZsZXhpYmxlLXNwYWNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5mbGV4aWJsZS1zcGFjZS5hbGln
bi1zdGFydCA+IC5pdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKC5uYXZpZ2F0aW9uLWJhciAuaXRl
bS5mbGV4aWJsZS1zcGFjZS5hbGlnbi1lbmQgPiAuaXRlbSk6IERlbGV0ZWQuCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVGFiQmFySXRlbS5qczoKKyAgICAgICAgKFdJLkdl
bmVyYWxUYWJCYXJJdGVtKToKKyAgICAgICAgKFdJLkdlbmVyYWxUYWJCYXJJdGVtLnByb3RvdHlw
ZS5mcm9tVGFiSW5mbyk6CisgICAgICAgIChXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiQ29u
dGVudFZpZXcpOiBEZWxldGVkLgorICAgICAgICAoV0kuR2VuZXJhbFRhYkJhckl0ZW0uZ2V0IGlz
RXBoZW1lcmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0dyYXBo
aWNzVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5HcmFwaGljc1RhYkNvbnRlbnRWaWV3
KToKKyAgICAgICAgKFdJLkdyYXBoaWNzVGFiQ29udGVudFZpZXcudGFiSW5mbyk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9Hcm91cE5hdmlnYXRpb25JdGVtLmpzOgorICAgICAgICAo
V0kuR3JvdXBOYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuZ2V0IGhpZGRlbik6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5Hcm91cE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5zZXQgaGlkZGVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkdyb3VwTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLmdldCBhZGRp
dGlvbmFsQ2xhc3NOYW1lcyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9MYXllcnNUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkxheWVyc1RhYkNvbnRlbnRW
aWV3KToKKyAgICAgICAgKFdJLkxheWVyc1RhYkNvbnRlbnRWaWV3LnRhYkluZm8pOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5VGFiQmFyLmpzOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMuCisgICAgICAg
IChXSS5MZWdhY3lUYWJCYXIpOgorICAgICAgICAoV0kuTGVnYWN5VGFiQmFyLnByb3RvdHlwZS5n
ZXQgbmV3VGFiVGFiQmFySXRlbSk6CisgICAgICAgIChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBl
LnVwZGF0ZU5ld1RhYlRhYkJhckl0ZW1TdGF0ZSk6CisgICAgICAgIChXSS5MZWdhY3lUYWJCYXIu
cHJvdG90eXBlLmFkZFRhYkJhckl0ZW0pOgorICAgICAgICAoV0kuTGVnYWN5VGFiQmFyLnByb3Rv
dHlwZS5pbnNlcnRUYWJCYXJJdGVtLmFuaW1hdGVUYWJzKToKKyAgICAgICAgKFdJLkxlZ2FjeVRh
YkJhci5wcm90b3R5cGUuaW5zZXJ0VGFiQmFySXRlbS5yZW1vdmVTdHlsZXMpOgorICAgICAgICAo
V0kuTGVnYWN5VGFiQmFyLnByb3RvdHlwZS5pbnNlcnRUYWJCYXJJdGVtKToKKyAgICAgICAgKFdJ
LkxlZ2FjeVRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFySXRlbS5hbmltYXRlVGFicyk6Cisg
ICAgICAgIChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLnJlbW92ZVRhYkJhckl0ZW0ucmVtb3Zl
U3R5bGVzKToKKyAgICAgICAgKFdJLkxlZ2FjeVRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFy
SXRlbSk6CisgICAgICAgIChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLnNlbGVjdFByZXZpb3Vz
VGFiKToKKyAgICAgICAgKFdJLkxlZ2FjeVRhYkJhci5wcm90b3R5cGUuc2VsZWN0TmV4dFRhYik6
CisgICAgICAgIChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLmdldCBzZWxlY3RlZFRhYkJhckl0
ZW0pOgorICAgICAgICAoV0kuTGVnYWN5VGFiQmFyLnByb3RvdHlwZS5zZXQgc2VsZWN0ZWRUYWJC
YXJJdGVtKToKKyAgICAgICAgKFdJLkxlZ2FjeVRhYkJhci5wcm90b3R5cGUuc2VsZWN0VGFiQmFy
SXRlbSk6CisgICAgICAgIChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLmdldCB0YWJCYXJJdGVt
cyk6CisgICAgICAgIChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLmdldCBub3JtYWxUYWJDb3Vu
dCk6CisgICAgICAgIChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLmdldCBzYXZlYWJsZVRhYkNv
dW50KToKKyAgICAgICAgKFdJLkxlZ2FjeVRhYkJhci5sYXlvdXQuZm9yY2VJdGVtSGlkZGVuKToK
KyAgICAgICAgKFdJLkxlZ2FjeVRhYkJhci5sYXlvdXQpOgorICAgICAgICAoV0kuTGVnYWN5VGFi
QmFyLnByb3RvdHlwZS5fdGFiQmFySXRlbXNGcm9tTGVmdFRvUmlnaHQpOgorICAgICAgICAoV0ku
TGVnYWN5VGFiQmFyLnByb3RvdHlwZS5fZmluZFRhYkJhckl0ZW0pOgorICAgICAgICAoV0kuTGVn
YWN5VGFiQmFyLnByb3RvdHlwZS5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOgorICAgICAgICAo
V0kuTGVnYWN5VGFiQmFyLnByb3RvdHlwZS5fb3BlbkRlZmF1bHRUYWIpOgorICAgICAgICAoV0ku
TGVnYWN5VGFiQmFyLnByb3RvdHlwZS5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25z
KToKKyAgICAgICAgKFdJLkxlZ2FjeVRhYkJhci5wcm90b3R5cGUuX2FwcGx5VGFiQmFySXRlbVNp
emVzQW5kUG9zaXRpb25zKToKKyAgICAgICAgKFdJLkxlZ2FjeVRhYkJhci5wcm90b3R5cGUuX2Ns
ZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKToKKyAgICAgICAgKFdJLkxlZ2FjeVRhYkJh
ci5wcm90b3R5cGUuX2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlLik6CisgICAgICAgIChX
SS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZSk6
CisgICAgICAgIChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZURvd24pOgor
ICAgICAgICAoV0kuTGVnYWN5VGFiQmFyLnByb3RvdHlwZS5faGFuZGxlQ2xpY2spOgorICAgICAg
ICAoV0kuTGVnYWN5VGFiQmFyLnByb3RvdHlwZS5faGFuZGxlTW91c2VNb3ZlZCk6CisgICAgICAg
IChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdJ
LkxlZ2FjeVRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTGVhdmUpOgorICAgICAgICAoV0ku
TGVnYWN5VGFiQmFyLnByb3RvdHlwZS5faGFuZGxlQ29udGV4dE1lbnUpOgorICAgICAgICAoV0ku
TGVnYWN5VGFiQmFyLnByb3RvdHlwZS5faGFuZGxlTmV3VGFiQ2xpY2spOgorICAgICAgICAoV0ku
TGVnYWN5VGFiQmFyLnByb3RvdHlwZS5faGFuZGxlTmV3VGFiTW91c2VFbnRlcik6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9NYWluLmNzczoKKyAgICAgICAgKGJvZHkuZG9ja2VkLmJv
dHRvbSk6CisgICAgICAgIChib2R5LmRvY2tlZC5ib3R0b20gI3Rvb2xiYXIpOgorICAgICAgICAo
Ym9keS5kb2NrZWQuYm90dG9tICN0b29sYmFyIC5pdGVtOm5vdCguZmxleGlibGUtc3BhY2UpKToK
KyAgICAgICAgKCNtYWluKToKKyAgICAgICAgKCN1bmRvY2tlZC10aXRsZS1hcmVhKTogRGVsZXRl
ZC4KKyAgICAgICAgKGJvZHkuZG9ja2VkICN1bmRvY2tlZC10aXRsZS1hcmVhKTogRGVsZXRlZC4K
KyAgICAgICAgKGJvZHkud2luZG93LWluYWN0aXZlICN1bmRvY2tlZC10aXRsZS1hcmVhKTogRGVs
ZXRlZC4KKyAgICAgICAgKEBrZXlmcmFtZXMgdGFiLWJhci1jb25zb2xlLWl0ZW0tcHVsc2UpOiBE
ZWxldGVkLgorICAgICAgICAoLnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iYXIgOm1hdGNoZXMoLmNv
bnNvbGUtd2FybmluZ3MsIC5jb25zb2xlLWVycm9ycyk6bm90KC5kaXNhYmxlZCkucHVsc2luZyk6
IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAj
dW5kb2NrZWQtdGl0bGUtYXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMt
Y29sb3Itc2NoZW1lOiBkYXJrKSBib2R5LndpbmRvdy1pbmFjdGl2ZSAjdW5kb2NrZWQtdGl0bGUt
YXJlYSk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9u
QmFyLmpzOgorICAgICAgICAoV0kuTmF2aWdhdGlvbkJhcik6CisgICAgICAgIChXSS5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS5hZGROYXZpZ2F0aW9uSXRlbSk6CisgICAgICAgIChXSS5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS5pbnNlcnROYXZpZ2F0aW9uSXRlbSk6CisgICAgICAgIChXSS5OYXZp
Z2F0aW9uQmFyLnByb3RvdHlwZS5nZXQgc2l6ZXNUb0ZpdCk6CisgICAgICAgIChXSS5OYXZpZ2F0
aW9uQmFyLmdldCBzaXplc1RvRml0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL05ldHdvcmtEZXRhaWxWaWV3LmNzczoKKyAgICAgICAgKC5uZXR3b3JrLWRldGFpbCk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanM6
CisgICAgICAgIChXSS5OZXR3b3JrVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuTmV0d29y
a1RhYkNvbnRlbnRWaWV3LnRhYkluZm8pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
TmV0d29ya1RhYmxlQ29udGVudFZpZXcuY3NzOgorICAgICAgICAoLmNvbnRlbnQtdmlldy5uZXR3
b3JrIC5uZXR3b3JrLXRhYmxlIC5pY29uKToKKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlIGxpOm5v
dCguZmlsbGVyKSAuY2VsbC5uYW1lKToKKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlIC5jZWxsLmRv
bS1ub2RlLm5hbWUgLmljb24pOgorICAgICAgICAoLm5ldHdvcmstdGFibGUgLmNlbGwuZG9tLW5v
ZGUubmFtZSAuZGlzY2xvc3VyZSk6CisgICAgICAgIChib2R5W2Rpcj1ydGxdIC5uZXR3b3JrLXRh
YmxlIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUpOgorICAgICAgICAoLm5ldHdvcmst
dGFibGU6Zm9jdXMgbGkuc2VsZWN0ZWQgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlzY2xvc3VyZSk6
CisgICAgICAgICgubmV0d29yay10YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJl
LmV4cGFuZGVkKToKKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlOmZvY3VzIGxpLnNlbGVjdGVkIC5j
ZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUuZXhwYW5kZWQpOgorICAgICAgICAoLm5ldHdv
cmstdGFibGUuZ3JvdXBlZCAuZGF0YS1jb250YWluZXIgLmNlbGwubmFtZSk6CisgICAgICAgICgu
bmV0d29yay10YWJsZS5ncm91cGVkIC5kYXRhLWNvbnRhaW5lciAuY2VsbDpub3QoLnBhcmVudCku
bmFtZSk6CisgICAgICAgICgubmV0d29yay10YWJsZS5ncm91cGVkIC5kYXRhLWNvbnRhaW5lciAu
Y2VsbC5jaGlsZC5uYW1lKToKKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlIC5kYXRhLWNvbnRhaW5l
ciAuY2VsbC5uYW1lIC5yYW5nZSk6CisgICAgICAgICgubmV0d29yay10YWJsZSAuZGF0YS1jb250
YWluZXIgLmNlbGwubmFtZSAucmFuZ2U6OmJlZm9yZSk6CisgICAgICAgICgubmV0d29yay10YWJs
ZTpmb2N1cyAuZGF0YS1jb250YWluZXIgbGkuc2VsZWN0ZWQgLmNlbGwubmFtZSAucmFuZ2UpOgor
ICAgICAgICAoLm5ldHdvcmstdGFibGUgbGk6bm90KC5zZWxlY3RlZCkgLmNlbGw6bWF0Y2hlcygu
Y2FjaGUtdHlwZSwgLm11bHRpcGxlKSk6CisgICAgICAgICgubmV0d29yay10YWJsZSAuZXJyb3Ip
OgorICAgICAgICAoLm5ldHdvcmstdGFibGUgLmNlbGwuZG9tYWluID4gLmxvY2spOgorICAgICAg
ICAoLm5ldHdvcmstdGFibGUgbGkuc2VsZWN0ZWQgLmNlbGwuZG9tYWluID4gLmxvY2spOgorICAg
ICAgICAoLm5ldHdvcmstdGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMpOgorICAgICAgICAoYm9k
eVtkaXI9bHRyXSAubmV0d29yay10YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyk6CisgICAgICAg
IChib2R5W2Rpcj1ydGxdIC5uZXR3b3JrLXRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzKToKKyAg
ICAgICAgKC5uZXR3b3JrLXRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIC5pbmRldGVybWluYXRl
LXByb2dyZXNzLXNwaW5uZXIpOgorICAgICAgICAoLnNob3dpbmctZGV0YWlsIC5uZXR3b3JrLXRh
YmxlIC5jZWxsOm5vdCgubmFtZSkpOgorICAgICAgICAoLnNob3dpbmctZGV0YWlsIC5uZXR3b3Jr
LXRhYmxlIC5yZXNpemVyOm5vdCg6Zmlyc3Qtb2YtdHlwZSkpOgorICAgICAgICAoLnNob3dpbmct
ZGV0YWlsIC5uZXR3b3JrLXRhYmxlIC50aW1lbGluZS1ydWxlcik6CisgICAgICAgICgubmV0d29y
ay10YWJsZSAuaGVhZGVyIC5jZWxsLndhdGVyZmFsbCk6CisgICAgICAgICgubmV0d29yay10YWJs
ZSA6bm90KC5oZWFkZXIpIC5jZWxsOmZpcnN0LW9mLXR5cGUpOgorICAgICAgICAoLm5ldHdvcmst
dGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwpOgorICAgICAgICAoLm5ldHdvcmst
dGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIp
OgorICAgICAgICAoLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwg
LndhdGVyZmFsbC1jb250YWluZXIgPiAuZG9tLWV2ZW50KToKKyAgICAgICAgKC5uZXR3b3JrLXRh
YmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4g
LmRvbS1hY3Rpdml0eSk6CisgICAgICAgICgubmV0d29yay10YWJsZSA6bm90KC5oZWFkZXIpIC5j
ZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5kb20tYWN0aXZpdHkucGxheWlu
Zyk6CisgICAgICAgICgubmV0d29yay10YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFs
bCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5hcmVhKToKKyAgICAgICAgKC5uZXR3b3JrLXRhYmxl
IDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmFy
ZWEuZG9tLWZ1bGxzY3JlZW4pOgorICAgICAgICAoLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVy
KSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuYXJlYS5wb3dlci1lZmZp
Y2llbnQtcGxheWJhY2spOgorICAgICAgICAoLm5ldHdvcmstdGFibGUgLnRpbWVsaW5lLXJ1bGVy
KToKKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlIC50aW1lbGluZS1ydWxlciA+IC5oZWFkZXIpOgor
ICAgICAgICAoLm5ldHdvcmstdGFibGUgLndhdGVyZmFsbCAuYmxvY2sgKyAuYmxvY2spOgorICAg
ICAgICAoLm5ldHdvcmstdGFibGUgLndhdGVyZmFsbCAuYmxvY2s6bWF0Y2hlcygubW91c2UtdHJh
Y2tpbmcsIC5maWxsZXIpICsgLmJsb2NrOm5vdCgubW91c2UtdHJhY2tpbmcsIC5maWxsZXIpLCk6
CisgICAgICAgICgubmV0d29yay10YWJsZSAud2F0ZXJmYWxsIC5ibG9jazpsYXN0LWNoaWxkKToK
KyAgICAgICAgKC53YXRlcmZhbGwgLmJsb2NrLnJlcXVlc3QsKToKKyAgICAgICAgKC53YXRlcmZh
bGwgLmJsb2NrLm1vdXNlLXRyYWNraW5nKToKKyAgICAgICAgKC53YXRlcmZhbGwgLmJsb2NrLmZp
bGxlcik6CisgICAgICAgICgud2F0ZXJmYWxsIC5ibG9jay5yZWRpcmVjdCk6CisgICAgICAgICgu
d2F0ZXJmYWxsIC5ibG9jay5xdWV1ZSk6CisgICAgICAgICgud2F0ZXJmYWxsIC5ibG9jay5kbnMp
OgorICAgICAgICAoLndhdGVyZmFsbCAuYmxvY2suY29ubmVjdCk6CisgICAgICAgICgud2F0ZXJm
YWxsIC5ibG9jay5zZWN1cmUpOgorICAgICAgICAoLndhdGVyZmFsbCAuYmxvY2sucmVxdWVzdCk6
CisgICAgICAgICgud2F0ZXJmYWxsIC5ibG9jay5yZXNwb25zZSk6CisgICAgICAgIChAbWVkaWEg
KHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAubmV0d29yay10YWJsZSAuY2VsbC5kb21haW4g
PiAubG9jayk6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAu
bmV0d29yay10YWJsZSAuZGF0YS1jb250YWluZXIgLmNlbGwubmFtZSAucmFuZ2UpOgorICAgICAg
ICAoLmNvbnRlbnQtdmlldy5uZXR3b3JrIC5uZXR3b3JrLXRhYmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKC5jb250ZW50LXZpZXcubmV0d29yayAubmV0d29yay10YWJsZSA+IC50YWJsZSAuaWNvbik6
IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZSBsaTpub3QoLnNlbGVj
dGVkKSAuY2VsbDpub3QoLmN1cnJlbnQtc2Vzc2lvbikpOiBEZWxldGVkLgorICAgICAgICAoLm5l
dHdvcmstdGFibGUgPiAudGFibGUgbGk6bm90KC5maWxsZXIpIC5jZWxsLm5hbWUpOiBEZWxldGVk
LgorICAgICAgICAoLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwuZG9tLW5vZGUubmFtZSAu
aWNvbik6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5k
b20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlKTogRGVsZXRlZC4KKyAgICAgICAgKGJvZHlbZGlyPXJ0
bF0gLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlzY2xvc3Vy
ZSk6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZTpmb2N1cyBsaS5z
ZWxlY3RlZCAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1
cmUuZXhwYW5kZWQpOiBEZWxldGVkLgorICAgICAgICAoLm5ldHdvcmstdGFibGUgPiAudGFibGU6
Zm9jdXMgbGkuc2VsZWN0ZWQgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlzY2xvc3VyZS5leHBhbmRl
ZCk6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZS5ncm91cGVkIC5k
YXRhLWNvbnRhaW5lciAuY2VsbC5uYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRh
YmxlID4gLnRhYmxlLmdyb3VwZWQgLmRhdGEtY29udGFpbmVyIC5jZWxsOm5vdCgucGFyZW50KS5u
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlLmdyb3VwZWQg
LmRhdGEtY29udGFpbmVyIC5jZWxsLmNoaWxkLm5hbWUpOiBEZWxldGVkLgorICAgICAgICAoLm5l
dHdvcmstdGFibGUgPiAudGFibGUgLmRhdGEtY29udGFpbmVyIC5jZWxsLm5hbWUgLnJhbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5kYXRhLWNvbnRhaW5l
ciAuY2VsbC5uYW1lIC5yYW5nZTo6YmVmb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3Jr
LXRhYmxlID4gLnRhYmxlOmZvY3VzIC5kYXRhLWNvbnRhaW5lciBsaS5zZWxlY3RlZCAuY2VsbC5u
YW1lIC5yYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZSBs
aTpub3QoLnNlbGVjdGVkKSAuY2VsbDptYXRjaGVzKC5jYWNoZS10eXBlLCAubXVsdGlwbGUpKTog
RGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5lcnJvcik6IERlbGV0
ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5kb21haW4gPiAubG9j
ayk6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZSBsaS5zZWxlY3Rl
ZCAuY2VsbC5kb21haW4gPiAubG9jayk6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJs
ZSA+IC50YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChib2R5
W2Rpcj1sdHJdIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzKTog
RGVsZXRlZC4KKyAgICAgICAgKGJvZHlbZGlyPXJ0bF0gLm5ldHdvcmstdGFibGUgPiAudGFibGUg
LmNlbGwubmFtZSA+IC5zdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAoLm5ldHdvcmstdGFibGUg
PiAudGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgLmluZGV0ZXJtaW5hdGUtcHJvZ3Jlc3Mtc3Bp
bm5lcik6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZS5zaG93aW5nLWRldGFpbCA+
IC50YWJsZSAuY2VsbDpub3QoLm5hbWUpKTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRh
YmxlLnNob3dpbmctZGV0YWlsID4gLnRhYmxlIC5yZXNpemVyOm5vdCg6Zmlyc3Qtb2YtdHlwZSkp
OiBEZWxldGVkLgorICAgICAgICAoLm5ldHdvcmstdGFibGUuc2hvd2luZy1kZXRhaWwgPiAudGFi
bGUgLnRpbWVsaW5lLXJ1bGVyKTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4g
LnRhYmxlIC5oZWFkZXIgLmNlbGwud2F0ZXJmYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3
b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGw6Zmlyc3Qtb2YtdHlwZSk6IERl
bGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5j
ZWxsLndhdGVyZmFsbCk6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJs
ZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lcik6IERl
bGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5j
ZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5kb20tZXZlbnQpOiBEZWxldGVk
LgorICAgICAgICAoLm5ldHdvcmstdGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53
YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuZG9tLWFjdGl2aXR5KTogRGVsZXRlZC4K
KyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0
ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmRvbS1hY3Rpdml0eS5wbGF5aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNl
bGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmFyZWEpOiBEZWxldGVkLgorICAg
ICAgICAoLm5ldHdvcmstdGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZh
bGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuYXJlYS5kb20tZnVsbHNjcmVlbik6IERlbGV0ZWQu
CisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndh
dGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5hcmVhLnBvd2VyLWVmZmljaWVudC1wbGF5
YmFjayk6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZSAudGltZWxp
bmUtcnVsZXIpOiBEZWxldGVkLgorICAgICAgICAoLm5ldHdvcmstdGFibGUgPiAudGFibGUgLnRp
bWVsaW5lLXJ1bGVyID4gLmhlYWRlcik6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJs
ZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jayArIC5ibG9jayk6IERlbGV0ZWQuCisgICAgICAg
ICgubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jazptYXRjaGVzKC5tb3Vz
ZS10cmFja2luZywgLmZpbGxlcikgKyAuYmxvY2s6bm90KC5tb3VzZS10cmFja2luZywgLmZpbGxl
ciksKTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZh
bGwgLmJsb2NrOmxhc3QtY2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoLm5ldHdvcmstdGFibGUg
PiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2sucmVxdWVzdCwpOiBEZWxldGVkLgorICAgICAgICAo
Lm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2subW91c2UtdHJhY2tpbmcp
OiBEZWxldGVkLgorICAgICAgICAoLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAu
YmxvY2suZmlsbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
IC53YXRlcmZhbGwgLmJsb2NrLnJlZGlyZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3Jr
LXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLnF1ZXVlKTogRGVsZXRlZC4KKyAgICAg
ICAgKC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLmRucyk6IERlbGV0
ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5j
b25uZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRl
cmZhbGwgLmJsb2NrLnNlY3VyZSk6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+
IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5yZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKC5u
ZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLnJlc3BvbnNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4gLnN0YXRpc3RpY3MpOiBEZWxldGVkLgorICAg
ICAgICAoLm5ldHdvcmstdGFibGUgPiAuc3RhdGlzdGljcyA+IC5zdGF0aXN0aWMpOiBEZWxldGVk
LgorICAgICAgICAoLm5ldHdvcmstdGFibGUgPiAuc3RhdGlzdGljcyA+IC5zdGF0aXN0aWNbaGlk
ZGVuXSk6IERlbGV0ZWQuCisgICAgICAgICgubmV0d29yay10YWJsZSA+IC5zdGF0aXN0aWNzID4g
LnN0YXRpc3RpYyA+IC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5uZXR3b3JrLXRhYmxlID4g
LnN0YXRpc3RpY3MgPiAuc3RhdGlzdGljID4gLnRleHQpOiBEZWxldGVkLgorICAgICAgICAoQG1l
ZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLm5ldHdvcmstdGFibGUgPiAudGFibGUg
LmNlbGwuZG9tYWluID4gLmxvY2spOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJz
LWNvbG9yLXNjaGVtZTogZGFyaykgLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmRhdGEtY29udGFp
bmVyIC5jZWxsLm5hbWUgLnJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVy
cy1jb2xvci1zY2hlbWU6IGRhcmspIC5uZXR3b3JrLXRhYmxlID4gLnN0YXRpc3RpY3MgPiAuc3Rh
dGlzdGljLmRvbWFpbi1jb3VudCA+IC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuTmV0
d29ya1RhYmxlQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuTmV0d29ya1RhYmxlQ29udGVudFZp
ZXcucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS50YWJsZVBvcHVsYXRlQ2VsbCk6CisgICAgICAgIChXSS5OZXR3b3JrVGFibGVD
b250ZW50Vmlldy5wcm90b3R5cGUuX2NoYW5nZUNvbGxlY3Rpb24pOgorICAgICAgICAoV0kuTmV0
d29ya1RhYmxlQ29udGVudFZpZXcucHJvdG90eXBlLmluaXRpYWxMYXlvdXQpOgorICAgICAgICAo
V0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcucHJvdG90eXBlLnByb2Nlc3NIQVIpOgorICAgICAg
ICAoV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcucHJvdG90eXBlLl9wcm9jZXNzUGVuZGluZ0Vu
dHJpZXMpOgorICAgICAgICAoV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcucHJvdG90eXBlLl91
cGRhdGVFbnRyeUZvclJlc291cmNlKToKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRW
aWV3LnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLk5ldHdv
cmtUYWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVzb3VyY2VUcmFuc2ZlclNpemVEaWRDaGFu
Z2UpOgorICAgICAgICAoV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5k
bGVSZXNvdXJjZUFkZGVkKToKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5faGFuZGxlRnJhbWVXYXNBZGRlZCk6CisgICAgICAgIChXSS5OZXR3b3JrVGFibGVD
b250ZW50Vmlldy5wcm90b3R5cGUuX2VudHJ5Rm9yUmVzb3VyY2UpOgorICAgICAgICAoV0kuTmV0
d29ya1RhYmxlQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVSZXNvdXJjZVNpemVEaWRDaGFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcucHJvdG90
eXBlLl91cGRhdGVTdGF0aXN0aWNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLk5ldHdvcmtUYWJs
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRlU3RhdGlzdGljKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc3RhcnRVcGRhdGluZ0xv
YWRUaW1lU3RhdGlzdGljKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRl
bnRWaWV3LnByb3RvdHlwZS5fc3RvcFVwZGF0aW5nTG9hZFRpbWVTdGF0aXN0aWMpOiBEZWxldGVk
LgorICAgICAgICAoV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVM
b2FkVGltZVN0YXRpc3RpYyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9OZXdUYWJDb250ZW50Vmlldy5jc3M6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBo
LmNzcy4KKyAgICAgICAgKC5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcpOgorICAgICAgICAoLm5l
dy10YWIudGFiLmNvbnRlbnQtdmlldyA+IC50YWItaXRlbSk6CisgICAgICAgICgubmV3LXRhYi50
YWIuY29udGVudC12aWV3ID4gLnRhYi1pdGVtLmRpc2FibGVkKToKKyAgICAgICAgKC5uZXctdGFi
LnRhYi5jb250ZW50LXZpZXcgPiAudGFiLWl0ZW0gPiAuYm94KToKKyAgICAgICAgKC5uZXctdGFi
LnRhYi5jb250ZW50LXZpZXcgPiAudGFiLWl0ZW06bm90KC5kaXNhYmxlZCk6aG92ZXIgPiAuYm94
KToKKyAgICAgICAgKC5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcgPiAudGFiLWl0ZW06bm90KC5k
aXNhYmxlZCk6YWN0aXZlID4gLmJveCk6CisgICAgICAgICgubmV3LXRhYi50YWIuY29udGVudC12
aWV3ID4gLnRhYi1pdGVtID4gLmJveCA+IGltZyk6CisgICAgICAgICgubmV3LXRhYi50YWIuY29u
dGVudC12aWV3ID4gLnRhYi1pdGVtID4gbGFiZWwpOgorICAgICAgICAoQG1lZGlhIChwcmVmZXJz
LWNvbG9yLXNjaGVtZTogZGFyaykgLm5ldy10YWIudGFiLmNvbnRlbnQtdmlldyk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmlldy5qczogQWRkZWQuCisgICAg
ICAgIChXSS5OZXdUYWJDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5OZXdUYWJDb250ZW50Vmll
dy50YWJJbmZvKToKKyAgICAgICAgKFdJLk5ld1RhYkNvbnRlbnRWaWV3LnNob3VsZFNhdmVUYWIp
OgorICAgICAgICAoV0kuTmV3VGFiQ29udGVudFZpZXcucHJvdG90eXBlLmdldCB0eXBlKToKKyAg
ICAgICAgKFdJLk5ld1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bik6CisgICAgICAgIChX
SS5OZXdUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuaGlkZGVuKToKKyAgICAgICAgKFdJLk5ld1Rh
YkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgc3VwcG9ydHNTcGxpdENvbnRlbnRCcm93c2VyKToK
KyAgICAgICAgKFdJLk5ld1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAg
ICAoV0kuTmV3VGFiQ29udGVudFZpZXcucHJvdG90eXBlLl9jcmVhdGVOZXdUYWJXaXRoVHlwZSk6
CisgICAgICAgIChXSS5OZXdUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuX2FsbG93YWJsZVRhYlR5
cGVzKToKKyAgICAgICAgKFdJLk5ld1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRlVGFi
SXRlbXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRlbS5q
czoKKyAgICAgICAgKFdJLlBpbm5lZFRhYkJhckl0ZW0pOgorICAgICAgICAoV0kuUGlubmVkVGFi
QmFySXRlbS5wcm90b3R5cGUuZnJvbVRhYkluZm8pOgorICAgICAgICAoV0kuUGlubmVkVGFiQmFy
SXRlbS5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV0kuUGlu
bmVkVGFiQmFySXRlbS5mcm9tVGFiQ29udGVudFZpZXcpOiBEZWxldGVkLgorICAgICAgICAoV0ku
UGlubmVkVGFiQmFySXRlbS50aXRsZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanM6CisgICAgICAgIChXSS5RdWlja0NvbnNv
bGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGguY3NzOgorICAgICAgICAoYm9keS53aW5kb3ctaW5hY3RpdmUgLnRpbWVs
aW5lLW92ZXJ2aWV3LWdyYXBoLnJlbmRlcmluZy1mcmFtZSA+IC5mcmFtZS1tYXJrZXIpOgorICAg
ICAgICAoYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0
aXZlKSAudGltZWxpbmUtb3ZlcnZpZXctZ3JhcGgucmVuZGVyaW5nLWZyYW1lID4gLmZyYW1lLW1h
cmtlcik6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hUYWJD
b250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLlNlYXJjaFRhYkNvbnRlbnRWaWV3KToKKyAgICAg
ICAgKFdJLlNlYXJjaFRhYkNvbnRlbnRWaWV3LnRhYkluZm8pOgorICAgICAgICAoV0kuU2VhcmNo
VGFiQ29udGVudFZpZXcuc2hvdWxkUGluVGFiKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlNlYXJj
aFRhYkNvbnRlbnRWaWV3LnNob3VsZFNhdmVUYWIpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLlNl
dHRpbmdzVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuU2V0dGluZ3NUYWJDb250ZW50Vmll
dy50YWJJbmZvKToKKyAgICAgICAgKFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcucHJvdG90eXBl
Ll9jcmVhdGVFeHBlcmltZW50YWxTZXR0aW5nc1ZpZXcpOgorICAgICAgICAoV0kuU2V0dGluZ3NU
YWJDb250ZW50Vmlldy5zaG91bGRQaW5UYWIpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvU2lkZWJhci5qczoKKyAgICAgICAgKFdJLlNpZGViYXIpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU2l6ZXNUb0ZpdE5hdmlnYXRpb25CYXIuanM6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3Bh
Y2VOYXZpZ2F0aW9uSXRlbS5jc3MuCisgICAgICAgIChXSS5TaXplc1RvRml0TmF2aWdhdGlvbkJh
ci5wcm90b3R5cGUuZ2V0IHNpemVzVG9GaXQpOgorICAgICAgICAoV0kuU2l6ZXNUb0ZpdE5hdmln
YXRpb25CYXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1RhYkNvbnRl
bnRWaWV3LmpzOgorICAgICAgICAoV0kuU291cmNlc1RhYkNvbnRlbnRWaWV3KToKKyAgICAgICAg
KFdJLlNvdXJjZXNUYWJDb250ZW50Vmlldy50YWJJbmZvKToKKyAgICAgICAgKFdJLlNvdXJjZXNU
YWJDb250ZW50Vmlldy5wcm90b3R5cGUucmV2ZWFsQW5kU2VsZWN0QnJlYWtwb2ludCk6CisgICAg
ICAgIChXSS5Tb3VyY2VzVGFiQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVEZWJ1Z2dlclBh
dXNlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5Tb3VyY2VzVGFiQ29udGVudFZpZXcucHJvdG90
eXBlLl9oYW5kbGVEZWJ1Z2dlclJlc3VtZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuU3RvcmFn
ZVRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlN0b3JhZ2VUYWJDb250ZW50Vmlldy50YWJJ
bmZvKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3M6CisgICAgICAg
ICgudGFiLWJhcik6CisgICAgICAgIChib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhcik6Cisg
ICAgICAgICgudGFiLWJhciA+IC50b3AtYm9yZGVyKToKKyAgICAgICAgKGJvZHkud2luZG93LWlu
YWN0aXZlIC50YWItYmFyID4gLnRvcC1ib3JkZXIpOgorICAgICAgICAoLnRhYi1iYXIgPiAuaXRl
bSk6CisgICAgICAgICgudGFiLWJhci5jYWxjdWxhdGUtd2lkdGggPiAuaXRlbSk6CisgICAgICAg
IChib2R5W2Rpcj1sdHJdIC50YWItYmFyID4gOm50aC1jaGlsZChuICsgMiBvZiAuaXRlbSksKToK
KyAgICAgICAgKGJvZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiA6bnRoLWNoaWxkKG4gKyAyIG9mIC5p
dGVtKSwpOgorICAgICAgICAoLnRhYi1iYXIgPiAuaXRlbS5waW5uZWQpOgorICAgICAgICAoLnRh
Yi1iYXIgPiAuaXRlbS5waW5uZWQudGFiLXBpY2tlcik6CisgICAgICAgICgudGFiLWJhciA+IC5p
dGVtOm5vdCguZGlzYWJsZWQpLnNlbGVjdGVkKToKKyAgICAgICAgKC50YWItYmFyOm5vdCguYW5p
bWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIpOgorICAgICAg
ICAoYm9keVtkaXI9bHRyXSAudGFiLWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNl
bGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyLCk6CisgICAgICAgIChib2R5W2Rpcj1ydGxdIC50YWIt
YmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92
ZXIsKToKKyAgICAgICAgKGJvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyID4gLml0ZW0pOgor
ICAgICAgICAoYm9keVtkaXI9bHRyXS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRlbSk6
CisgICAgICAgIChib2R5W2Rpcj1ydGxdLndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVt
KToKKyAgICAgICAgKGJvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyID4gLml0ZW0uc2VsZWN0
ZWQpOgorICAgICAgICAoLnRhYi1iYXIgPiAuaXRlbSA+IC5jbG9zZSk6CisgICAgICAgIChib2R5
Om5vdCgud2luZG93LWluYWN0aXZlKSAudGFiLWJhciA+IC5pdGVtOmhvdmVyID4gLmNsb3NlKToK
KyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC50YWItYmFyLnNpbmdsZS10YWIg
PiAuaXRlbS5kZWZhdWx0LXRhYjpob3ZlciA+IC5jbG9zZSk6CisgICAgICAgICgudGFiLWJhci5z
aW5nbGUtdGFiID4gLml0ZW0uZGVmYXVsdC10YWIgPiAuY2xvc2UpOgorICAgICAgICAoLnRhYi1i
YXIgPiAuaXRlbSA+IC5jbG9zZTpob3Zlcik6CisgICAgICAgICgudGFiLWJhciA+IC5pdGVtID4g
LmNsb3NlOmFjdGl2ZSk6CisgICAgICAgICgudGFiLWJhciA+IC5pdGVtID4gLmZsZXgtc3BhY2Up
OgorICAgICAgICAoLnRhYi1iYXIgPiAuaXRlbS5lcGhlbWVyYWwgPiAuZmxleC1zcGFjZTpsYXN0
LWNoaWxkKToKKyAgICAgICAgKC50YWItYmFyID4gLml0ZW0gPiAuaWNvbik6CisgICAgICAgICgu
dGFiLWJhciA+IC5pdGVtLnBpbm5lZCA+IC5pY29uKToKKyAgICAgICAgKC50YWItYmFyID4gLml0
ZW0uc2VsZWN0ZWQgPiAuaWNvbik6CisgICAgICAgICgudGFiLWJhciA+IC5pdGVtLmRpc2FibGVk
ID4gLmljb24pOgorICAgICAgICAoQG1lZGlhIG5vdCAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRh
cmspIC50YWItYmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNh
YmxlZCk6aG92ZXIgPiAuaWNvbik6CisgICAgICAgICgudGFiLWJhciA+IC5pdGVtID4gLnRpdGxl
KToKKyAgICAgICAgKC50YWItYmFyOm5vdCguY29sbGFwc2VkKSA+IC5pdGVtID4gLnRpdGxlKToK
KyAgICAgICAgKC50YWItYmFyID4gLml0ZW0gPiAudGl0bGUgPiAuY29udGVudCk6CisgICAgICAg
ICgudGFiLWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkKTpob3ZlciA+
IC50aXRsZSk6CisgICAgICAgICgudGFiLWJhciA+IC5pdGVtLnNlbGVjdGVkID4gLnRpdGxlKToK
KyAgICAgICAgKC50YWItYmFyLmNvbGxhcHNlZCA+IC5pdGVtKToKKyAgICAgICAgKC50YWItYmFy
LmNvbGxhcHNlZCA+IC5pdGVtOm5vdCgucGlubmVkKSA+IC5pY29uKToKKyAgICAgICAgKC50YWIt
YmFyLmNvbGxhcHNlZCA+IC5pdGVtID4gLmZsZXgtc3BhY2UpOgorICAgICAgICAoLnRhYi1iYXIu
Y29sbGFwc2VkID4gLml0ZW0gPiAuY2xvc2UpOgorICAgICAgICAoLnRhYi1iYXIuY29sbGFwc2Vk
ID4gLml0ZW06aG92ZXIgPiAuY2xvc2UpOgorICAgICAgICAoLnRhYi1iYXIuY29sbGFwc2VkID4g
Lml0ZW0uZXBoZW1lcmFsOmhvdmVyID4gLmljb24pOgorICAgICAgICAoLnRhYi1iYXIuY29sbGFw
c2VkID4gLml0ZW0uZXBoZW1lcmFsOmhvdmVyID4gLnRpdGxlKToKKyAgICAgICAgKC50YWItYmFy
LnN0YXRpYy1sYXlvdXQpOgorICAgICAgICAoLnRhYi1iYXIuc3RhdGljLWxheW91dCA+IC5pdGVt
KToKKyAgICAgICAgKC50YWItYmFyLmFuaW1hdGluZy5jbG9zaW5nLXRhYiA+IC5pdGVtKToKKyAg
ICAgICAgKC50YWItYmFyLmFuaW1hdGluZzptYXRjaGVzKC5leHBhbmRpbmctdGFicywgLmluc2Vy
dGluZy10YWIpID4gLml0ZW0pOgorICAgICAgICAoLnRhYi1iYXIuYW5pbWF0aW5nLmluc2VydGlu
Zy10YWIgPiAuaXRlbS5iZWluZy1pbnNlcnRlZCk6CisgICAgICAgICgudGFiLWJhci5kcmFnZ2lu
Zy10YWIgPiAuaXRlbS5zZWxlY3RlZCwpOgorICAgICAgICAoYm9keS53aW5kb3ctaW5hY3RpdmUg
LnRhYi1iYXIuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQsKToKKyAgICAgICAgKC50YWIt
YmFyLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkKToKKyAgICAgICAgKEBtZWRpYSAocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC50YWItYmFyID4gLml0ZW0pOgorICAgICAgICAoQG1l
ZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLnRhYi1iYXIgPiAuaXRlbSA+IC50aXRs
ZSk6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAudGFiLWJh
ciA+IC5pdGVtOm5vdCguZGlzYWJsZWQpLnNlbGVjdGVkKToKKyAgICAgICAgKEBtZWRpYSAocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC50YWItYmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVt
Om5vdCguc2VsZWN0ZWQpOmhvdmVyKToKKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1z
Y2hlbWU6IGRhcmspIC50YWItYmFyID4gLml0ZW0gPiAuY2xvc2UsKToKKyAgICAgICAgKEBtZWRp
YSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIGJvZHkud2luZG93LWluYWN0aXZlIC50YWIt
YmFyKToKKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIGJvZHku
d2luZG93LWluYWN0aXZlIC50YWItYmFyID4gLml0ZW0pOgorICAgICAgICAoQG1lZGlhIChwcmVm
ZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAu
aXRlbS5zZWxlY3RlZCk6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBk
YXJrKSBib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtID4gLnRpdGxlKToKKyAg
ICAgICAgKGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFj
dGl2ZSkgLnRhYi1iYXIpOiBEZWxldGVkLgorICAgICAgICAoLnRhYi1iYXIgPiAuYm9yZGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKC50YWItYmFyID4gLmJvcmRlci50b3ApOiBEZWxldGVkLgorICAg
ICAgICAoLnRhYi1iYXIgPiAuYm9yZGVyLmJvdHRvbSk6IERlbGV0ZWQuCisgICAgICAgIChib2R5
LmRvY2tlZC5ib3R0b20gLnRhYi1iYXIgPiAuYm9yZGVyLnRvcCk6IERlbGV0ZWQuCisgICAgICAg
IChib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUp
IC50YWItYmFyID4gLmJvcmRlcik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKC13ZWJraXQt
bWF4LWRldmljZS1waXhlbC1yYXRpbzogMSkgYm9keS5kb2NrZWQ6bWF0Y2hlcygucmlnaHQsIC5s
ZWZ0KTpub3QoLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLmJvcmRlci50b3Ap
OiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0
aW86IDIpIGJvZHkuZG9ja2VkOm1hdGNoZXMoLnJpZ2h0LCAubGVmdCk6bm90KC53aW5kb3ctZG9j
a2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC5ib3JkZXIudG9wKTogRGVsZXRlZC4KKyAgICAgICAg
KC50YWItYmFyID4gLm5hdmlnYXRpb24tYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKC50YWItYmFy
ID4gLm5hdmlnYXRpb24tYmFyID4gLml0ZW0uZ3JvdXAgPiAuaXRlbSk6IERlbGV0ZWQuCisgICAg
ICAgICgudGFiLWJhciA+IC5uYXZpZ2F0aW9uLWJhciA+IC5pdGVtLmdyb3VwID4gLml0ZW06bnRo
LWNoaWxkKDEgb2YgOm5vdCguaGlkZGVuKSkpOiBEZWxldGVkLgorICAgICAgICAoLnRhYi1iYXIg
PiAubmF2aWdhdGlvbi1iYXIgPiAuaXRlbS5ncm91cCA+IC5pdGVtOm50aC1sYXN0LWNoaWxkKDEg
b2YgOm5vdCguaGlkZGVuKSkpOiBEZWxldGVkLgorICAgICAgICAoLnRhYi1iYXIgPiAubmF2aWdh
dGlvbi1iYXIgLml0ZW0uZGl2aWRlcik6IERlbGV0ZWQuCisgICAgICAgIChib2R5Om1hdGNoZXMo
LndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLm5h
dmlnYXRpb24tYmFyID4gLml0ZW0uZGl2aWRlcik6IERlbGV0ZWQuCisgICAgICAgICgudGFiLWJh
ciA+IC50YWJzKTogRGVsZXRlZC4KKyAgICAgICAgKC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSk6
IERlbGV0ZWQuCisgICAgICAgICgudGFiLWJhciA+IC50YWJzLmNhbGN1bGF0ZS13aWR0aCA+IC5p
dGVtKTogRGVsZXRlZC4KKyAgICAgICAgKGJvZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiAudGFicyA+
IC5pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpLCk6IERlbGV0ZWQuCisgICAgICAgIChib2R5W2Rpcj1s
dHJdIC50YWItYmFyID4gLnRhYnM6bm90KC5oaWRlLWJvcmRlci1lbmQpID4gLml0ZW06bGFzdC1j
aGlsZCwpOiBEZWxldGVkLgorICAgICAgICAoLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtLnBpbm5l
ZCk6IERlbGV0ZWQuCisgICAgICAgICgudGFiLWJhciA+IC50YWJzID4gLml0ZW06bm90KC5kaXNh
YmxlZCkuc2VsZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoLnRhYi1iYXIgPiAudGFiczpub3Qo
LmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKGJvZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1h
dGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyLCk6IERlbGV0ZWQu
CisgICAgICAgIChib2R5W2Rpcj1sdHJdIC50YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcp
ID4gLml0ZW06bGFzdC1jaGlsZDpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyLCk6IERl
bGV0ZWQuCisgICAgICAgIChib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1k
b2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSk6IERlbGV0ZWQuCisgICAg
ICAgIChib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3Rp
dmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5zZWxlY3RlZCk6IERlbGV0ZWQuCisgICAgICAg
ICgudGFiLWJhciA+IC50YWJzID4gLml0ZW0gPiAuY2xvc2UpOiBEZWxldGVkLgorICAgICAgICAo
Ym9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtOmhvdmVy
ID4gLmNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+
IC5jbG9zZTpob3Zlcik6IERlbGV0ZWQuCisgICAgICAgICgudGFiLWJhciA+IC50YWJzID4gLml0
ZW0gPiAuY2xvc2U6YWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKC50YWItYmFyID4gLnRhYnMg
PiAuaXRlbSA+IC5mbGV4LXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKC50YWItYmFyID4gLnRh
YnMgPiAuaXRlbS5lcGhlbWVyYWwgPiAuZmxleC1zcGFjZTpsYXN0LWNoaWxkKTogRGVsZXRlZC4K
KyAgICAgICAgKC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC5pY29uKTogRGVsZXRlZC4KKyAg
ICAgICAgKC50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5waW5uZWQgPiAuaWNvbik6IERlbGV0ZWQu
CisgICAgICAgICgudGFiLWJhciA+IC50YWJzID4gLml0ZW0uc2VsZWN0ZWQgPiAuaWNvbik6IERl
bGV0ZWQuCisgICAgICAgICgudGFiLWJhciA+IC50YWJzID4gLml0ZW0uZGlzYWJsZWQgPiAuaWNv
bik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgbm90IChwcmVmZXJzLWNvbG9yLXNjaGVtZTog
ZGFyaykgLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVj
dGVkLCAuZGlzYWJsZWQpOmhvdmVyID4gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLnRhYi1i
YXIgPiAudGFicyA+IC5pdGVtID4gLnRpdGxlKTogRGVsZXRlZC4KKyAgICAgICAgKC50YWItYmFy
ID4gLnRhYnM6bm90KC5jb2xsYXBzZWQpID4gLml0ZW0gPiAudGl0bGUpOiBEZWxldGVkLgorICAg
ICAgICAoLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLnRpdGxlID4gLmNvbnRlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpu
b3QoLnNlbGVjdGVkKTpob3ZlciA+IC50aXRsZSk6IERlbGV0ZWQuCisgICAgICAgICgudGFiLWJh
ciA+IC50YWJzID4gLml0ZW0uc2VsZWN0ZWQgPiAudGl0bGUpOiBEZWxldGVkLgorICAgICAgICAo
LnRhYi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAuaXRlbSk6IERlbGV0ZWQuCisgICAgICAgICgu
dGFiLWJhciA+IC50YWJzLmNvbGxhcHNlZCA+IC5pdGVtOm5vdCgucGlubmVkKSA+IC5pY29uKTog
RGVsZXRlZC4KKyAgICAgICAgKC50YWItYmFyID4gLnRhYnMuY29sbGFwc2VkID4gLml0ZW0gPiAu
ZmxleC1zcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICgudGFiLWJhciA+IC50YWJzLmNvbGxhcHNl
ZCA+IC5pdGVtID4gLmNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKC50YWItYmFyID4gLnRhYnMu
Y29sbGFwc2VkID4gLml0ZW06aG92ZXIgPiAuY2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoLnRh
Yi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAuaXRlbS5lcGhlbWVyYWw6aG92ZXIgPiAuaWNvbik6
IERlbGV0ZWQuCisgICAgICAgICgudGFiLWJhciA+IC50YWJzLmNvbGxhcHNlZCA+IC5pdGVtLmVw
aGVtZXJhbDpob3ZlciA+IC50aXRsZSk6IERlbGV0ZWQuCisgICAgICAgICgudGFiLWJhciA+IC50
YWJzLnN0YXRpYy1sYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAoLnRhYi1iYXIgPiAudGFicy5z
dGF0aWMtbGF5b3V0ID4gLml0ZW0pOiBEZWxldGVkLgorICAgICAgICAoLnRhYi1iYXIgPiAudGFi
cy5hbmltYXRpbmcuY2xvc2luZy10YWIgPiAuaXRlbSk6IERlbGV0ZWQuCisgICAgICAgICgudGFi
LWJhciA+IC50YWJzLmFuaW1hdGluZzptYXRjaGVzKC5leHBhbmRpbmctdGFicywgLmluc2VydGlu
Zy10YWIpID4gLml0ZW0pOiBEZWxldGVkLgorICAgICAgICAoLnRhYi1iYXIgPiAudGFicy5hbmlt
YXRpbmcuaW5zZXJ0aW5nLXRhYiA+IC5pdGVtLmJlaW5nLWluc2VydGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKC50YWItYmFyID4gLnRhYnMuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQsKTog
RGVsZXRlZC4KKyAgICAgICAgKGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93
LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicy5kcmFnZ2luZy10YWIgPiAuaXRlbS5z
ZWxlY3RlZCwpOiBEZWxldGVkLgorICAgICAgICAoLnRhYi1iYXIgPiAudGFicy5kcmFnZ2luZy10
YWIgPiAuaXRlbS5zZWxlY3RlZCk6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMt
Y29sb3Itc2NoZW1lOiBkYXJrKSBib2R5LmRvY2tlZC5ib3R0b20gLnRhYi1iYXIgPiAuYm9yZGVy
LnRvcCk6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBk
YXJrKSAudGFiLWJhciA+IC50YWJzID4gLml0ZW0pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlh
IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4g
LnRpdGxlKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbTpub3QoLmRpc2FibGVkKS5zZWxlY3RlZCk6
IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAu
dGFiLWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQpOmhv
dmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRh
cmspIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC5jbG9zZSwpOiBEZWxldGVkLgorICAgICAg
ICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgYm9keTptYXRjaGVzKC53aW5k
b3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhcik6IERlbGV0ZWQu
CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSBib2R5Om1hdGNo
ZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4g
LnRhYnMgPiAuaXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3It
c2NoZW1lOiBkYXJrKSBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2Nr
ZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5zZWxlY3RlZCk6IERlbGV0ZWQu
CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSBib2R5Om1hdGNo
ZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4g
LnRhYnMgPiAuaXRlbSA+IC50aXRsZSk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9UYWJCYXIuanM6CisgICAgICAgIChXSS5UYWJCYXIpOgorICAgICAgICAoV0kuVGFi
QmFyLnByb3RvdHlwZS5pbnNlcnRUYWJCYXJJdGVtLmFuaW1hdGVUYWJzKToKKyAgICAgICAgKFdJ
LlRhYkJhci5wcm90b3R5cGUuaW5zZXJ0VGFiQmFySXRlbS5yZW1vdmVTdHlsZXMpOgorICAgICAg
ICAoV0kuVGFiQmFyLnByb3RvdHlwZS5pbnNlcnRUYWJCYXJJdGVtKToKKyAgICAgICAgKFdJLlRh
YkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFySXRlbS5hbmltYXRlVGFicyk6CisgICAgICAgIChX
SS5UYWJCYXIucHJvdG90eXBlLnJlbW92ZVRhYkJhckl0ZW0ucmVtb3ZlU3R5bGVzKToKKyAgICAg
ICAgKFdJLlRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFySXRlbSk6CisgICAgICAgIChXSS5U
YWJCYXIucHJvdG90eXBlLnNlbGVjdFRhYkJhckl0ZW0pOgorICAgICAgICAoV0kuVGFiQmFyLnBy
b3RvdHlwZS5nZXQgbm9ybWFsVGFiQ291bnQpOgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlw
ZS5nZXQgc2F2ZWFibGVUYWJDb3VudCk6CisgICAgICAgIChXSS5UYWJCYXIubGF5b3V0LmZvcmNl
SXRlbUhpZGRlbik6CisgICAgICAgIChXSS5UYWJCYXIubGF5b3V0KToKKyAgICAgICAgKFdJLlRh
YkJhci5wcm90b3R5cGUuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyk6CisgICAg
ICAgIChXSS5UYWJCYXIucHJvdG90eXBlLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZS4p
OgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVy
Q2xvc2UpOgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlQ2xpY2spOgorICAg
ICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlTW91c2VNb3ZlZCk6CisgICAgICAgIChX
SS5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdJLlRhYkJhci5w
cm90b3R5cGUuX2hhbmRsZU1vdXNlTGVhdmUpOgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlw
ZS5faGFuZGxlQ29udGV4dE1lbnUpOgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5hZGRO
YXZpZ2F0aW9uSXRlbUJlZm9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5UYWJCYXIucHJvdG90
eXBlLmFkZE5hdmlnYXRpb25JdGVtQWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV0kuVGFiQmFy
LnByb3RvdHlwZS5nZXQgdGFiQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuVGFiQmFyLnBy
b3RvdHlwZS5sYXlvdXQubWVhc3VyZUl0ZW1XaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5U
YWJCYXIucHJvdG90eXBlLmxheW91dCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5UYWJCYXIucHJv
dG90eXBlLmRpZExheW91dFN1YnRyZWUpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvVGFiQmFySXRlbS5qczoKKyAgICAgICAgKFdJLlRhYkJhckl0ZW0pOgorICAgICAg
ICAoV0kuVGFiQmFySXRlbS5wcm90b3R5cGUuc2V0IHJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAg
ICAgKFdJLlRhYkJhckl0ZW0ucHJvdG90eXBlLnNldCBkaXNhYmxlZCk6CisgICAgICAgIChXSS5U
YWJCYXJJdGVtLnByb3RvdHlwZS5nZXQgaXNEZWZhdWx0VGFiKToKKyAgICAgICAgKFdJLlRhYkJh
ckl0ZW0ucHJvdG90eXBlLnNldCBpc0RlZmF1bHRUYWIpOgorICAgICAgICAoV0kuVGFiQmFySXRl
bS5wcm90b3R5cGUuZ2V0IGhpZGRlbik6IERlbGV0ZWQuCisgICAgICAgIChXSS5UYWJCYXJJdGVt
LnByb3RvdHlwZS5zZXQgaGlkZGVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1RhYkJyb3dzZXIuanM6CisgICAgICAgIChXSS5UYWJCcm93c2VyLnByb3RvdHlwZS5h
ZGRUYWJGb3JDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5UYWJCcm93c2VyLnByb3RvdHlwZS5j
bG9zZVRhYkZvckNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlRhYkJyb3dzZXIucHJvdG90eXBl
Ll90YWJCYXJJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV0kuVGFiQnJvd3Nlci5fdGFiQmFySXRl
bVJlbW92ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXSS5UYWJDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5UYWJDb250ZW50
Vmlldy5zaG91bGRQaW5UYWIpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVPdmVydmlldy5jc3M6CisgICAgICAgICgudGltZWxpbmUtb3ZlcnZpZXcgPiAu
dHJlZS1vdXRsaW5lLnRpbWVsaW5lcyAuaXRlbS5zZWxlY3RlZCArIC5pdGVtLCk6CisgICAgICAg
IChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAudGltZWxpbmUtb3ZlcnZpZXcg
PiAudHJlZS1vdXRsaW5lLnRpbWVsaW5lcyAuaXRlbS5zZWxlY3RlZCArIC5pdGVtLCk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEZyYW1lLmNzczoKKyAgICAg
ICAgKGJvZHkud2luZG93LWluYWN0aXZlIC50aW1lbGluZS1yZWNvcmQtZnJhbWUuc2VsZWN0ZWQp
OgorICAgICAgICAoYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2Vk
LWluYWN0aXZlKSAudGltZWxpbmUtcmVjb3JkLWZyYW1lLnNlbGVjdGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuY3NzOgorICAgICAgICAo
Ym9keS53aW5kb3ctaW5hY3RpdmUgLnRpbWVsaW5lLXJ1bGVyID4gLmhlYWRlciA+IC5kaXZpZGVy
KToKKyAgICAgICAgKGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tl
ZC1pbmFjdGl2ZSkgLnRpbWVsaW5lLXJ1bGVyID4gLmhlYWRlciA+IC5kaXZpZGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXSS5UaW1lbGluZVRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlRp
bWVsaW5lVGFiQ29udGVudFZpZXcudGFiSW5mbyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9Ub29sYmFyLmNzczogQWRkZWQuCisgICAgICAgICgudG9vbGJhcik6CisgICAgICAgIChi
b2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhcik6CisgICAgICAgIChib2R5Lm1hYy1wbGF0Zm9y
bTpub3QoLmRvY2tlZCkgLnRvb2xiYXIpOgorICAgICAgICAoYm9keS5tYWMtcGxhdGZvcm06bm90
KC5kb2NrZWQpKToKKyAgICAgICAgKC50b29sYmFyIC5jb250cm9sLXNlY3Rpb24pOgorICAgICAg
ICAoLnRvb2xiYXIgLml0ZW0tc2VjdGlvbik6CisgICAgICAgICgudG9vbGJhciAuaXRlbS1zZWN0
aW9uLmxlZnQpOgorICAgICAgICAoLnRvb2xiYXIgLml0ZW0tc2VjdGlvbi5jZW50ZXItbGVmdCk6
CisgICAgICAgICgudG9vbGJhciAuaXRlbS1zZWN0aW9uLmNlbnRlci1yaWdodCk6CisgICAgICAg
ICgudG9vbGJhciAuaXRlbS1zZWN0aW9uLmNlbnRlcik6CisgICAgICAgICgudG9vbGJhciAuaXRl
bS1zZWN0aW9uLnJpZ2h0KToKKyAgICAgICAgKC50b29sYmFyIC5pdGVtKToKKyAgICAgICAgKC50
b29sYmFyIC5zZWFyY2gtYmFyKToKKyAgICAgICAgKC50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5w
dXRbdHlwZT0ic2VhcmNoIl0pOgorICAgICAgICAoLnRvb2xiYXIgLml0ZW0uYnV0dG9uLCk6Cisg
ICAgICAgICgudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdOmZvY3Vz
KToKKyAgICAgICAgKEBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSAu
dG9vbGJhciAuaXRlbS5idXR0b24sKToKKyAgICAgICAgKC50b29sYmFyIC5pdGVtLmJ1dHRvbjph
Y3RpdmUpOgorICAgICAgICAoYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLml0ZW0uYnV0
dG9uLCk6CisgICAgICAgIChAbWVkaWEgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzog
MikgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLml0ZW0uYnV0dG9uLCk6CisgICAgICAg
IChAbWVkaWEgKG1heC13aWR0aDogNTM5cHgpIC50b29sYmFyIC5pdGVtLmRvd25sb2FkKToKKyAg
ICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC50b29sYmFyKToKKyAg
ICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIGJvZHkud2luZG93LWlu
YWN0aXZlIC50b29sYmFyKToKKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIC50b29sYmFyIC5pdGVtLmJ1dHRvbiwpOgorICAgICAgICAoQG1lZGlhIChwcmVmZXJz
LWNvbG9yLXNjaGVtZTogZGFyaykgLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJz
ZWFyY2giXSk6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAu
dG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdOmZvY3VzKToKKyAgICAg
ICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC50b29sYmFyIC5zZWFyY2gt
YmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl06OnBsYWNlaG9sZGVyKToKKyAgICAgICAgKEBtZWRp
YSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIGJvZHkud2luZG93LWluYWN0aXZlIC50b29s
YmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl06OnBsYWNlaG9sZGVyKToKKyAg
ICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIGJvZHkud2luZG93LWlu
YWN0aXZlIC50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJr
aXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uKToKKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xv
ci1zY2hlbWU6IGRhcmspIC50b29sYmFyIC5kYXNoYm9hcmQtY29udGFpbmVyKToKKyAgICAgICAg
KEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC50b29sYmFyIC5pdGVtLmJ1dHRv
bjphY3RpdmUpOgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykg
Ym9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLml0ZW0uYnV0dG9uLCk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLlRvb2xi
YXIpOgorICAgICAgICAoV0kuVG9vbGJhci5wcm90b3R5cGUuYWRkVG9vbGJhckl0ZW0pOgorICAg
ICAgICAoV0kuVG9vbGJhci5wcm90b3R5cGUubGF5b3V0LmlzT3ZlcmZsb3dpbmdUb29sYmFyKToK
KyAgICAgICAgKFdJLlRvb2xiYXIucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9WYXJpYWJsZXMuY3NzOgorICAgICAgICAoOnJvb3QpOgorICAgICAgICAo
Ym9keS53aW5kb3ctaW5hY3RpdmUpOgorICAgICAgICAoYm9keS53aW5kb3ctaW5hY3RpdmUgKik6
CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSA6cm9vdCk6Cisg
ICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSBib2R5LndpbmRvdy1p
bmFjdGl2ZSk6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSBi
b2R5LndpbmRvdy1pbmFjdGl2ZSAqKToKKyAgICAgICAgKGJvZHk6bWF0Y2hlcygud2luZG93LWlu
YWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkpOiBEZWxldGVkLgorICAgICAgICAoYm9k
eTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAqKTog
RGVsZXRlZC4KKyAgICAgICAgKGJvZHkubWFjLXBsYXRmb3JtOm5vdCguZG9ja2VkKSk6IERlbGV0
ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSBib2R5Om1h
dGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpKTogRGVsZXRl
ZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIGJvZHk6bWF0
Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgKik6IERlbGV0
ZWQuCisKIDIwMjAtMDItMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBhbm90aGVyIFByb3RvY29sIFZlcnNpb24gKGlPUyAx
My40KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAxMTkzOTNkNzVhOTJlYmFkZmVhMGQ5ODBhNjFiOTMyNmM4ZTg3NTcy
Li45NWMzMWMzZGVjOTU4NDdhNDc3NzU3MWY2ZjFhNzA2YWM4ODY1YTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc4IEBACisyMDIwLTAyLTA3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZlcnQgcjI1NTU0NywgcjI1NTg5MCwgcjI1NTg5MiwgcjI1NTg5MywgYW5kIHIy
NTU5MDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNyZWF0ZVNjaGVtYSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZUFuZE1ha2VEb21h
aW5MaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25z
aGlwcyk6CisgICAgICAgIChXZWJLaXQ6OmpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRU
b3BQcmV2ZWxlbnRSZXNvdXJjZURheXNTaW5jZVVJIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblBy
ZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFpbik6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpj
bGVhclByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3Ry
YWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWlu
c1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
bkFzRmlyc3RQYXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3JhbmRmYXRoZXJpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVn
aXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcik6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVMYXN0U2Vlbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRW
ZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlzdGljc0NvdW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFp
blN0cmluZ0Zyb21Eb21haW5JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YXBwZW5kU3ViU3RhdGlzdGljTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzdGFydFdpbmRvd0RyYWcpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdp
bmRvd0RyYWcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
c3RhcnRXaW5kb3dEcmFnKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtU3RhcnRXaW5kb3dEcmFnKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZyk6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1TdGFydFdpbmRvd0RyYWcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0
b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJh
Zyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3RhcnRXaW5kb3dE
cmFnKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dC
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpzdGFydFdpbmRvd0RyYWcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oOgorCiAyMDIwLTAyLTA3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW0hhcmRlbmluZ10gVmFsaWRhdGUg
R2VvbG9jYXRpb24gYWNjZXNzIHBlcm1pc3Npb24gb24gVUlQcm9jZXNzIHNpZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0NoYW5nZUxvZwppbmRleCAwZTBkZWI3YzNhYjRmYWY1OWJhZWE5ODI4ZmY1ZDIyM2U4
NDg3OGU5Li5lM2M3ZWRiMzU2N2MxMjA1NTdhNDFjOGM5YzMxYzMyY2E4MWQxMWI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMDcgIEpvbiBM
ZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmVydCByMjU1NTQ3LCByMjU1ODkw
LCByMjU1ODkyLCByMjU1ODkzLCBhbmQgcjI1NTkwMQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRJT1MubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c3RhcnRXaW5k
b3dEcmFnKToKKwogMjAyMC0wMi0wMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSB0aGUgaXRlbXMgaW4gdGhlIHRvb2xiYXIg
aW50byB0aGUgdGFiIGJhciB0byBzYXZlIHZlcnRpY2FsIHNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggM2VkZWVhMTY4NGExNzM0NGRiNzRkNWVkMGRmNGQ0YzVkOGY2YjM5YS4u
YmViZmU3ZThiM2NlNDhiYTM4OGM0NDY3OWMzMjUwNTIzOWIxZjgzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTA3ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQgcjI1NTU0NywgcjI1NTg5MCwgcjI1NTg5
MiwgcjI1NTg5MywgYW5kIHIyNTU5MDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNzQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN0YXJ0V2luZG93RHJhZyk6CisKIDIwMjAtMDIt
MDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbSGFyZGVuaW5n
XSBWYWxpZGF0ZSBHZW9sb2NhdGlvbiBhY2Nlc3MgcGVybWlzc2lvbiBvbiBVSVByb2Nlc3Mgc2lk
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
cyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXggYjM5
Yjg4YTRlOTAyZjBjYjYxODkwNzYzM2ZmZjdmODcwMWYyNWI1NC4uNmQ3OWM1YzAyYTE5YzY2OWMz
NzdlNmMwNjBjMzJhNTQ1YmNlZWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZW4ubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCkBAIC0zNCwxMiArMzQsMTIgQEAKIC8qIFRleHQgdHJhY2sgY29udGFp
bnMgZm9yY2VkIHN1YnRpdGxlcyAqLwogIiVAIEZvcmNlZCIgPSAiJUAgRm9yY2VkIjsKIAotLyog
dmlzaWJsZSBuYW1lIG9mIHRoZSBuZXR3b3JrIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUg
YXBwbGljYXRpb24gbmFtZS4gKi8KLSIlQCBOZXR3b3JraW5nIiA9ICIlQCBOZXR3b3JraW5nIjsK
LQogLyogdmlzaWJsZSBuYW1lIG9mIHRoZSBHUFUgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRo
ZSBhcHBsaWNhdGlvbiBuYW1lLiAqLwogIiVAIEdyYXBoaWNzIGFuZCBNZWRpYSIgPSAiJUAgR3Jh
cGhpY3MgYW5kIE1lZGlhIjsKIAorLyogdmlzaWJsZSBuYW1lIG9mIHRoZSBuZXR3b3JrIHByb2Nl
c3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4gKi8KKyIlQCBOZXR3b3Jr
aW5nIiA9ICIlQCBOZXR3b3JraW5nIjsKKwogLyogVGV4dCB0cmFjayBjb250YWlucyBzdWJ0aXRs
ZXMgZm9yIHRoZSBkZWFmIGFuZCBoYXJkIG9mIGhlYXJpbmcgKi8KICIlQCBTREgiID0gIiVAIFNE
SCI7CiAKQEAgLTkxLDYgKzkxLDkgQEAKIC8qIE1lbnUgaXRlbSB0aXRsZSBmb3IgS0VZR0VOIHBv
cC11cCBtZW51ICovCiAiMjA0OCAoSGlnaCBHcmFkZSkiID0gIjIwNDggKEhpZ2ggR3JhZGUpIjsK
IAorLyogTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBp
biBLZXljaGFpbiAqLworIjxhcHBsaWNhdGlvbj4gV2ViQ3J5cHRvIE1hc3RlciBLZXkiID0gIjxh
cHBsaWNhdGlvbj4gV2ViQ3J5cHRvIE1hc3RlciBLZXkiOworCiAvKiB3aW5kb3cgdGl0bGUgZm9y
IGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSAq
LwogIjxmaWxlbmFtZT4gJWTDlyVkIHBpeGVscyIgPSAiPGZpbGVuYW1lPiAlZMOXJWQgcGl4ZWxz
IjsKIApAQCAtMzc2LDkgKzM3OSw2IEBACiAvKiBIaWRlIE1lZGlhIENvbnRyb2xzIGNvbnRleHQg
bWVudSBpdGVtICovCiAiSGlkZSBDb250cm9scyIgPSAiSGlkZSBDb250cm9scyI7CiAKLS8qIFRp
dGxlIGZvciBIaWRlIExpbmsgUHJldmlld3MgYWN0aW9uIGJ1dHRvbiAqLwotIkhpZGUgTGluayBQ
cmV2aWV3cyIgPSAiSGlkZSBMaW5rIFByZXZpZXdzIjsKLQogLyogbWVudSBpdGVtIHRpdGxlICov
CiAiSGlkZSBTcGVsbGluZyBhbmQgR3JhbW1hciIgPSAiSGlkZSBTcGVsbGluZyBhbmQgR3JhbW1h
ciI7CiAKQEAgLTcwMyw5ICs3MDMsNiBAQAogLyogU2hvdyBmb250cyBjb250ZXh0IG1lbnUgaXRl
bSAqLwogIlNob3cgRm9udHMiID0gIlNob3cgRm9udHMiOwogCi0vKiBUaXRsZSBmb3IgU2hvdyBM
aW5rIFByZXZpZXdzIGFjdGlvbiBidXR0b24gKi8KLSJTaG93IExpbmsgUHJldmlld3MiID0gIlNo
b3cgTGluayBQcmV2aWV3cyI7Ci0KIC8qIG1lbnUgaXRlbSB0aXRsZSAqLwogIlNob3cgU3BlbGxp
bmcgYW5kIEdyYW1tYXIiID0gIlNob3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIiOwogCkBAIC03NjAs
NiArNzU3LDkgQEAKIC8qIFN0b3Agc3BlYWtpbmcgY29udGV4dCBtZW51IGl0ZW0gKi8KICJTdG9w
IFNwZWFraW5nIiA9ICJTdG9wIFNwZWFraW5nIjsKIAorLyogVW5kbyBhY3Rpb24gbmFtZSAqLwor
IlN0cmlrZVRocm91Z2ggKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJTdHJpa2VUaHJvdWdoIjsKKwog
LyogTGFiZWwgZm9yIHN0cm9uZyBwYXNzd29yZC4gKi8KICJTdHJvbmcgUGFzc3dvcmQiID0gIlN0
cm9uZyBQYXNzd29yZCI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmgKaW5kZXggNmU0NzdlOWU1MGY5NzE4MjY3NTAwMmE1YjRkM2Y0
ZmJiMDVkNjg5Yy4uMTM3ZDBlNmMxZGFiNGJiZmVkNzA2OTYzZDRlNTA2ZmU3YmNjNzNkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgKQEAgLTU1LDYgKzU1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmcm9udGVu
ZExvYWRlZCgpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFdpbmRvd0RyYWcoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSA9IDA7CisK
ICAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgZGVidWdnYWJsZS4KICAgICB2aXJ0dWFsIGJv
b2wgaXNSZW1vdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVkU3Ry
aW5nc1VSTCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAyMDRmNTA1NjlmZTlj
NGE4MWFhMDRjZjhjYmE1YzE1Yjk3ODM0YzI1Li4wZDgzMTkyNTI3ODJkYTk1YTcyZWQzNmNhNWYw
NDhjN2NkOGM4NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0yNzAsNiArMjcwLDEzIEBAIHZv
aWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmlu
ZyYgdXJsKQogICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1l
TG9hZFJlcXVlc3QyKSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRmxvYXRSZWN0IGZyYW1lUmVj
dCA9IG1fZnJvbnRlbmRQYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CisgICAgZnJhbWVSZWN0
Lm1vdmUoeCwgeSk7CisgICAgbV9mcm9udGVuZFBhZ2UtPmNocm9tZSgpLnNldFdpbmRvd1JlY3Qo
ZnJhbWVSZWN0KTsKK30KKwogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzZXRB
dHRhY2hlZFdpbmRvdyhEb2NrU2lkZSBkb2NrU2lkZSkKIHsKICAgICBjb25zdCBjaGFyKiBzaWRl
ID0gInVuZG9ja2VkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCmluZGV4IDA1NWRmNDIwODkyMGY2Nzg3MjFiZDZl
M2ZmNTE3MjIzYjRhMmZmZTEuLjBlYzMyMGQ4OTM3ODQ1MTlhY2FhNTBhODJjZTE2YmU2MThhYjI4
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuaApAQCAtNjcsNiArNjcsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOwogCisgICAgdm9pZCBzdGFydFdp
bmRvd0RyYWcoKSBvdmVycmlkZSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVXaW5k
b3dCeShmbG9hdCB4LCBmbG9hdCB5KSBmaW5hbDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIGNv
bnN0IGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0U2V0RG9ja1NpZGUo
RG9ja1NpZGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCAyZjZlMTk2ZDFlYjk3NmUzYzYzMjY1MTg3NTA2MTFk
ZGQ1OTMxNDA1Li40MTY4Mzg5ZTQ1NDkwYzIxM2VjZDliNmE5MzY1NGIyNGEzNDY5OGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cApAQCAtMjU4LDYgKzI1OCwxOCBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2V0U2hl
ZXRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIHVuc2lnbmVkIHdpZHRoLCB1bnNpZwogICAgICAgICBt
X2NsaWVudC0+Y2hhbmdlU2hlZXRSZWN0KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzdGFydFdpbmRvd0RyYWcoKQorewor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnN0YXJ0V2luZG93RHJhZygpOwor
fQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZs
b2F0IHkpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bW92
ZVdpbmRvd0J5KHgsIHkpOworfQorCiBib29sIEluc3BlY3RvckZyb250ZW5kSG9zdDo6aXNSZW1v
dGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+aXNSZW1vdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aAppbmRleCA1ZTI3Y2M2NTk0MDlhYTkyM2U3YWY0MDk3ZGU4ODhkNmI3ODNhZWI1Li45ODA2OTg0
NTg0NTAzM2RkZDRkMWY5N2NmM2MzZTk0MDQyYTI4ODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC03Nyw2ICs3Nyw5IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0U2hlZXRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIHVuc2lnbmVk
IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwogCisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsK
KyAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdDsKKwogICAgIGJv
b2wgaXNSZW1vdGUoKSBjb25zdDsKICAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNv
bnN0OwogICAgIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNVUkwoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKaW5kZXggMzFk
OTgxNTA0MDVkYTQ1MGJlZDhiN2JjOTIzMDFhNGNkNmVjZjhkZC4uZDZjMDhlZTBmMzQyZTJhNWZi
NGUyYmEyZDc4MGM3ZTJlNTZjZDk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKQEAgLTU3LDYgKzU3LDkgQEAKIAogICAgIHZv
aWQgc2V0U2hlZXRSZWN0KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQg
eSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwogCisgICAgdm9p
ZCBzdGFydFdpbmRvd0RyYWcoKTsKKyAgICB2b2lkIG1vdmVXaW5kb3dCeSh1bnJlc3RyaWN0ZWQg
ZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOworCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaXNSZW1vdGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsb2Nh
bGl6ZWRTdHJpbmdzVVJMOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgYmFja2Vu
ZENvbW1hbmRzVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXph
dGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggYjI5Nzhl
MjlkYWUzOWE4NjdlYmI0NDI0NjEwYzllNDViODYzOGM5OS4uNTgzNTQ2OWI2YzBmNzVhYWViNGM5
MTdhMjZiNTM0NGMwYmRkODVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBA
IC00MCwxNCArNDAsOCBAQCBsb2NhbGl6ZWRTdHJpbmdzWyIlZCBXYXJuaW5nIl0gPSAiJWQgV2Fy
bmluZyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlZCBXYXJuaW5ncyJdID0gIiVkIFdhcm5pbmdzIjsK
IGxvY2FsaXplZFN0cmluZ3NbIiVkIFx4ZDcgJWQgcGl4ZWxzIl0gPSAiJWQgXHhkNyAlZCBwaXhl
bHMiOwogbG9jYWxpemVkU3RyaW5nc1siJWQgXHhkNyAlZCBwaXhlbHMgKE5hdHVyYWw6ICVkIFx4
ZDcgJWQgcGl4ZWxzKSJdID0gIiVkIFx4ZDcgJWQgcGl4ZWxzIChOYXR1cmFsOiAlZCBceGQ3ICVk
IHBpeGVscykiOwotbG9jYWxpemVkU3RyaW5nc1siJWQgZG9tYWluIl0gPSAiJWQgZG9tYWluIjsK
LWxvY2FsaXplZFN0cmluZ3NbIiVkIGRvbWFpbnMiXSA9ICIlZCBkb21haW5zIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIiVkIG1hdGNoZXMiXSA9ICIlZCBtYXRjaGVzIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IiVkIG9mICVkIl0gPSAiJWQgb2YgJWQiOwotbG9jYWxpemVkU3RyaW5nc1siJWQgcmVkaXJlY3Qi
XSA9ICIlZCByZWRpcmVjdCI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyIlZCByZWRpcmVjdHMiXSA9ICIl
ZCByZWRpcmVjdHMiOwotbG9jYWxpemVkU3RyaW5nc1siJWQgcmVzb3VyY2UiXSA9ICIlZCByZXNv
dXJjZSI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyIlZCByZXNvdXJjZXMiXSA9ICIlZCByZXNvdXJjZXMi
OwogbG9jYWxpemVkU3RyaW5nc1siJWRweCJdID0gIiVkcHgiOwogbG9jYWxpemVkU3RyaW5nc1si
JWRweFx1MDBCMiJdID0gIiVkcHhcdTAwQjIiOwogbG9jYWxpemVkU3RyaW5nc1siJXMgKCVzKSJd
ID0gIiVzICglcykiOwpAQCAtNjcsOCArNjEsNiBAQCBsb2NhbGl6ZWRTdHJpbmdzWyIlcyBjYW5u
b3QgYmUgbW9kaWZpZWQiXSA9ICIlcyBjYW5ub3QgYmUgbW9kaWZpZWQiOwogbG9jYWxpemVkU3Ry
aW5nc1siJXMgZGVsYXkiXSA9ICIlcyBkZWxheSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlcyBldmFs
XG4lcyBhc3luYyJdID0gIiVzIGV2YWxcbiVzIGFzeW5jIjsKIGxvY2FsaXplZFN0cmluZ3NbIiVz
IGludGVydmFsIl0gPSAiJXMgaW50ZXJ2YWwiOwotbG9jYWxpemVkU3RyaW5nc1siJXMgdG90YWwi
XSA9ICIlcyB0b3RhbCI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyIlcyB0cmFuc2ZlcnJlZCJdID0gIiVz
IHRyYW5zZmVycmVkIjsKIGxvY2FsaXplZFN0cmluZ3NbIiVzOiJdID0gIiVzOiI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyIoQWN0aW9uICVzKSJdID0gIihBY3Rpb24gJXMpIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIihEaXNrKSJdID0gIihEaXNrKSI7CkBAIC04NiwxNCArNzgsMTMgQEAgbG9jYWxpemVkU3Ry
aW5nc1siKHByb2dyYW0pIl0gPSAiKHByb2dyYW0pIjsKIGxvY2FsaXplZFN0cmluZ3NbIihzZXJ2
aWNlIHdvcmtlcikiXSA9ICIoc2VydmljZSB3b3JrZXIpIjsKIGxvY2FsaXplZFN0cmluZ3NbIih1
bmluaXRpYWxpemVkKSJdID0gIih1bmluaXRpYWxpemVkKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIs
ICJdID0gIiwgIjsKLWxvY2FsaXplZFN0cmluZ3NbIjAgQ29uc29sZSBlcnJvcnMiXSA9ICIwIENv
bnNvbGUgZXJyb3JzIjsKLWxvY2FsaXplZFN0cmluZ3NbIjAgQ29uc29sZSB3YXJuaW5ncyJdID0g
IjAgQ29uc29sZSB3YXJuaW5ncyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIxIG1hdGNoIl0gPSAiMSBt
YXRjaCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIyRCJdID0gIjJEIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkFjY2Vzc2liaWxpdHkiXSA9ICJBY2Nlc3NpYmlsaXR5IjsKIGxvY2FsaXplZFN0cmluZ3NbIkFj
dGlvbiJdID0gIkFjdGlvbiI7CiAvKiBUb29sdGlwIGZvciBhIHRpbWUgcmFuZ2UgYmFyIHRoYXQg
cmVwcmVzZW50cyB3aGVuIGEgQ1NTIGFuaW1hdGlvbi90cmFuc2l0aW9uIGlzIHJ1bm5pbmcgKi8K
IGxvY2FsaXplZFN0cmluZ3NbIkFjdGl2ZSJdID0gIkFjdGl2ZSI7Citsb2NhbGl6ZWRTdHJpbmdz
WyJBY3Rpdml0eSBWaWV3ZXIiXSA9ICJBY3Rpdml0eSBWaWV3ZXIiOwogbG9jYWxpemVkU3RyaW5n
c1siQWRkIl0gPSAiQWRkIjsKIGxvY2FsaXplZFN0cmluZ3NbIkFkZCAlcyBSdWxlIl0gPSAiQWRk
ICVzIFJ1bGUiOwogbG9jYWxpemVkU3RyaW5nc1siQWRkIEFjdGlvbiJdID0gIkFkZCBBY3Rpb24i
OwpAQCAtMjc0LDEwICsyNjUsNiBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJDbGljayB0byBjcmVhdGUg
YSBMb2NhbCBPdmVycmlkZSBmcm9tIHRoaXMgY29udGVudCJdID0gIkNsaWNrCiBsb2NhbGl6ZWRT
dHJpbmdzWyJDbGljayB0byBpbXBvcnQgYSBmaWxlIGFuZCBjcmVhdGUgYSBMb2NhbCBPdmVycmlk
ZVxuU2hpZnQtY2xpY2sgdG8gY3JlYXRlIGEgTG9jYWwgT3ZlcnJpZGUgZnJvbSB0aGlzIGNvbnRl
bnQiXSA9ICJDbGljayB0byBpbXBvcnQgYSBmaWxlIGFuZCBjcmVhdGUgYSBMb2NhbCBPdmVycmlk
ZVxuU2hpZnQtY2xpY2sgdG8gY3JlYXRlIGEgTG9jYWwgT3ZlcnJpZGUgZnJvbSB0aGlzIGNvbnRl
bnQiOwogbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gc2VsZWN0IGEgY29sb3IiXSA9ICJDbGlj
ayB0byBzZWxlY3QgYSBjb2xvciI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDbGljayB0byBzZWxlY3Qg
YSBjb2xvclxuU2hpZnQtY2xpY2sgdG8gc3dpdGNoIGNvbG9yIGZvcm1hdHMiXSA9ICJDbGljayB0
byBzZWxlY3QgYSBjb2xvclxuU2hpZnQtY2xpY2sgdG8gc3dpdGNoIGNvbG9yIGZvcm1hdHMiOwot
bG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gc2hvdyAlZCBlcnJvciBpbiB0aGUgQ29uc29sZSJd
ID0gIkNsaWNrIHRvIHNob3cgJWQgZXJyb3IgaW4gdGhlIENvbnNvbGUiOwotbG9jYWxpemVkU3Ry
aW5nc1siQ2xpY2sgdG8gc2hvdyAlZCBlcnJvcnMgaW4gdGhlIENvbnNvbGUiXSA9ICJDbGljayB0
byBzaG93ICVkIGVycm9ycyBpbiB0aGUgQ29uc29sZSI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJDbGlj
ayB0byBzaG93ICVkIHdhcm5pbmcgaW4gdGhlIENvbnNvbGUiXSA9ICJDbGljayB0byBzaG93ICVk
IHdhcm5pbmcgaW4gdGhlIENvbnNvbGUiOwotbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gc2hv
dyAlZCB3YXJuaW5ncyBpbiB0aGUgQ29uc29sZSJdID0gIkNsaWNrIHRvIHNob3cgJWQgd2Fybmlu
Z3MgaW4gdGhlIENvbnNvbGUiOwogbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gdmlldyB2YXJp
YWJsZSB2YWx1ZVxuU2hpZnQtY2xpY2sgdG8gcmVwbGFjZSB2YXJpYWJsZSB3aXRoIHZhbHVlIl0g
PSAiQ2xpY2sgdG8gdmlldyB2YXJpYWJsZSB2YWx1ZVxuU2hpZnQtY2xpY2sgdG8gcmVwbGFjZSB2
YXJpYWJsZSB3aXRoIHZhbHVlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsaWNrYWJsZSJdID0gIkNs
aWNrYWJsZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDbGllbnRzIl0gPSAiQ2xpZW50cyI7CkBAIC0z
NDgsNiArMzM1LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siQ3JlYXRlICVzIFJ1bGUiXSA9ICJDcmVh
dGUgJXMgUnVsZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDcmVhdGUgQnJlYWtwb2ludCJdID0gIkNy
ZWF0ZSBCcmVha3BvaW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIkNyZWF0ZSBMb2NhbCBPdmVycmlk
ZSJdID0gIkNyZWF0ZSBMb2NhbCBPdmVycmlkZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDcmVhdGUg
UmVzb3VyY2UiXSA9ICJDcmVhdGUgUmVzb3VyY2UiOworbG9jYWxpemVkU3RyaW5nc1siQ3JlYXRl
IGEgbmV3IHRhYiJdID0gIkNyZWF0ZSBhIG5ldyB0YWIiOwogbG9jYWxpemVkU3RyaW5nc1siQ3Jv
c3MtT3JpZ2luIFJlc3RyaWN0aW9ucyJdID0gIkNyb3NzLU9yaWdpbiBSZXN0cmljdGlvbnMiOwog
bG9jYWxpemVkU3RyaW5nc1siQ3VycmVudCJdID0gIkN1cnJlbnQiOwogbG9jYWxpemVkU3RyaW5n
c1siQ3VycmVudCBTdGF0ZSJdID0gIkN1cnJlbnQgU3RhdGUiOwpAQCAtMzY3LDYgKzM1NSw3IEBA
IGxvY2FsaXplZFN0cmluZ3NbIkRhdGFiYXNlIG5vIGxvbmdlciBoYXMgZXhwZWN0ZWQgdmVyc2lv
bi4iXSA9ICJEYXRhYmFzZSBubyBsb25nCiBsb2NhbGl6ZWRTdHJpbmdzWyJEYXRhYmFzZXMiXSA9
ICJEYXRhYmFzZXMiOwogbG9jYWxpemVkU3RyaW5nc1siRGF0ZSJdID0gIkRhdGUiOwogbG9jYWxp
emVkU3RyaW5nc1siRGVidWc6ICJdID0gIkRlYnVnOiAiOworbG9jYWxpemVkU3RyaW5nc1siRGVi
dWdnZXIgUGF1c2VkIl0gPSAiRGVidWdnZXIgUGF1c2VkIjsKIGxvY2FsaXplZFN0cmluZ3NbIkRl
YnVnZ2VyIFN0YXRlbWVudCJdID0gIkRlYnVnZ2VyIFN0YXRlbWVudCI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJEZWJ1Z2dlciBTdGF0ZW1lbnRzIl0gPSAiRGVidWdnZXIgU3RhdGVtZW50cyI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJEZWJ1Z2dlciBkaXNhYmxlZCBkdXJpbmcgQXVkaXQiXSA9ICJEZWJ1Z2dl
ciBkaXNhYmxlZCBkdXJpbmcgQXVkaXQiOwpAQCAtNDg3LDYgKzQ3Niw3IEBAIGxvY2FsaXplZFN0
cmluZ3NbIkVuYWJsZSBFdmVudCBMaXN0ZW5lciJdID0gIkVuYWJsZSBFdmVudCBMaXN0ZW5lciI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUgRXZlbnQgTGlzdGVuZXJzIl0gPSAiRW5hYmxlIEV2
ZW50IExpc3RlbmVycyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUgSW5zcGVjdG9yIEJvb3Rz
dHJhcCBTY3JpcHQiXSA9ICJFbmFibGUgSW5zcGVjdG9yIEJvb3RzdHJhcCBTY3JpcHQiOwogbG9j
YWxpemVkU3RyaW5nc1siRW5hYmxlIExvY2FsIE92ZXJyaWRlIl0gPSAiRW5hYmxlIExvY2FsIE92
ZXJyaWRlIjsKK2xvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBOZXcgVGFiIEJhciJdID0gIkVuYWJs
ZSBOZXcgVGFiIEJhciI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUgUHJldmlldyBGZWF0dXJl
cyJdID0gIkVuYWJsZSBQcmV2aWV3IEZlYXR1cmVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJs
ZSBQcm9ncmFtIl0gPSAiRW5hYmxlIFByb2dyYW0iOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxl
IFJ1bGUiXSA9ICJFbmFibGUgUnVsZSI7CkBAIC03MDksOCArNjk5LDYgQEAgbG9jYWxpemVkU3Ry
aW5nc1siTGl2ZSBBY3Rpdml0eSJdID0gIkxpdmUgQWN0aXZpdHkiOwogbG9jYWxpemVkU3RyaW5n
c1siTGl2ZSBTaXplIl0gPSAiTGl2ZSBTaXplIjsKIGxvY2FsaXplZFN0cmluZ3NbIkxvYWQgXHUy
MDE0ICVzIl0gPSAiTG9hZCBcdTIwMTQgJXMiOwogbG9jYWxpemVkU3RyaW5nc1siTG9hZCBjYW5j
ZWxsZWQiXSA9ICJMb2FkIGNhbmNlbGxlZCI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJMb2FkZWQgaW4g
JXMiXSA9ICJMb2FkZWQgaW4gJXMiOwotbG9jYWxpemVkU3RyaW5nc1siTG9hZGluZyBmb3IgJXMi
XSA9ICJMb2FkaW5nIGZvciAlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJMb2NhbCBGaWxlIl0gPSAi
TG9jYWwgRmlsZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJMb2NhbCBPdmVycmlkZSJdID0gIkxvY2Fs
IE92ZXJyaWRlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkxvY2FsIE92ZXJyaWRlXHUyMDI2Il0gPSAi
TG9jYWwgT3ZlcnJpZGVcdTIwMjYiOwpAQCAtNzc0LDYgKzc2Miw3IEBAIGxvY2FsaXplZFN0cmlu
Z3NbIk5ldHdvcmsiXSA9ICJOZXR3b3JrIjsKIGxvY2FsaXplZFN0cmluZ3NbIk5ldHdvcmsgSXNz
dWUiXSA9ICJOZXR3b3JrIElzc3VlIjsKIGxvY2FsaXplZFN0cmluZ3NbIk5ldHdvcmsgUmVxdWVz
dHMiXSA9ICJOZXR3b3JrIFJlcXVlc3RzIjsKIGxvY2FsaXplZFN0cmluZ3NbIk5ldHdvcmsgUmVx
dWVzdHM6Il0gPSAiTmV0d29yayBSZXF1ZXN0czoiOworbG9jYWxpemVkU3RyaW5nc1siTmV3IFRh
YiJdID0gIk5ldyBUYWIiOwogLyogQSBzdWJtZW51IGl0ZW0gb2YgJ0FkZCcgdG8gYWRkIERPTSBu
b2RlcyBhZnRlciB0aGUgc2VsZWN0ZWQgRE9NIG5vZGUgKi8KIGxvY2FsaXplZFN0cmluZ3NbIk5l
eHQgU2libGluZyJdID0gIk5leHQgU2libGluZyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJObyJdID0g
Ik5vIjsKQEAgLTEwOTIsMTUgKzEwODEsMjEgQEAgbG9jYWxpemVkU3RyaW5nc1siU2hvdyBTY29w
ZSBDaGFpbiBvbiBwYXVzZSJdID0gIlNob3cgU2NvcGUgQ2hhaW4gb24gcGF1c2UiOwogbG9jYWxp
emVkU3RyaW5nc1siU2hvdyBhbGwgYWN0aW9ucyJdID0gIlNob3cgYWxsIGFjdGlvbnMiOwogbG9j
YWxpemVkU3RyaW5nc1siU2hvdyBhbGwgcmVzb3VyY2VzIl0gPSAiU2hvdyBhbGwgcmVzb3VyY2Vz
IjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgY29tcG9zaXRpbmcgYm9yZGVycyJdID0gIlNob3cg
Y29tcG9zaXRpbmcgYm9yZGVycyI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGVycm9ycyBsb2dn
ZWQgdG8gdGhlIENvbnNvbGUiXSA9ICJTaG93IGVycm9ycyBsb2dnZWQgdG8gdGhlIENvbnNvbGUi
OwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBmdWxsIGNlcnRpZmljYXRlIl0gPSAiU2hvdyBmdWxs
IGNlcnRpZmljYXRlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgaGlkZGVuIHRhYnMiXSA9ICJT
aG93IGhpZGRlbiB0YWJzIjsKK2xvY2FsaXplZFN0cmluZ3NbIlNob3cgbWVzc2FnZXMgbG9nZ2Vk
IHRvIHRoZSBDb25zb2xlIl0gPSAiU2hvdyBtZXNzYWdlcyBsb2dnZWQgdG8gdGhlIENvbnNvbGUi
OworbG9jYWxpemVkU3RyaW5nc1siU2hvdyBuZXR3b3JrIGluZm9ybWF0aW9uIl0gPSAiU2hvdyBu
ZXR3b3JrIGluZm9ybWF0aW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgb25seSBmb3Igc2Vs
ZWN0ZWQgbm9kZSJdID0gIlNob3cgb25seSBmb3Igc2VsZWN0ZWQgbm9kZSI7Citsb2NhbGl6ZWRT
dHJpbmdzWyJTaG93IHBhZ2UgbG9hZCB0aW1pbmciXSA9ICJTaG93IHBhZ2UgbG9hZCB0aW1pbmci
OworbG9jYWxpemVkU3RyaW5nc1siU2hvdyBwYWdlIHJlc291cmNlcyJdID0gIlNob3cgcGFnZSBy
ZXNvdXJjZXMiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBwYWdlIHJ1bGVycyBhbmQgbm9kZSBi
b3JkZXIgbGluZXMiXSA9ICJTaG93IHBhZ2UgcnVsZXJzIGFuZCBub2RlIGJvcmRlciBsaW5lcyI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IHJ1bGVycyJdID0gIlNob3cgcnVsZXJzIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIlNob3cgdGhlIGRldGFpbHMgc2lkZWJhciAoJXMpIl0gPSAiU2hvdyB0aGUg
ZGV0YWlscyBzaWRlYmFyICglcykiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyB0aGUgbmF2aWdh
dGlvbiBzaWRlYmFyICglcykiXSA9ICJTaG93IHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IHRyYW5zcGFyZW5jeSBncmlkIl0gPSAiU2hvdyB0cmFu
c3BhcmVuY3kgZ3JpZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IHR5cGUgaW5mb3JtYXRpb24i
XSA9ICJTaG93IHR5cGUgaW5mb3JtYXRpb24iOworbG9jYWxpemVkU3RyaW5nc1siU2hvdyB3YXJu
aW5ncyBsb2dnZWQgdG8gdGhlIENvbnNvbGUiXSA9ICJTaG93IHdhcm5pbmdzIGxvZ2dlZCB0byB0
aGUgQ29uc29sZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93OiJdID0gIlNob3c6IjsKIGxvY2Fs
aXplZFN0cmluZ3NbIlNpdGUtc3BlY2lmaWMgSGFja3MiXSA9ICJTaXRlLXNwZWNpZmljIEhhY2tz
IjsKIGxvY2FsaXplZFN0cmluZ3NbIlNpemUiXSA9ICJTaXplIjsKQEAgLTEyOTUsNiArMTI5MCw3
IEBAIGxvY2FsaXplZFN0cmluZ3NbIlVzZSB0aGUgcmVzb3VyY2UgY2FjaGUgd2hlbiBsb2FkaW5n
IHJlc291cmNlcyJdID0gIlVzZSB0aGUgcmVzCiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2VyIEFnZW50
Il0gPSAiVXNlciBBZ2VudCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2VyIEFnZW50IFN0eWxlIFNo
ZWV0Il0gPSAiVXNlciBBZ2VudCBTdHlsZSBTaGVldCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2Vy
IEFnZW50OiJdID0gIlVzZXIgQWdlbnQ6IjsKK2xvY2FsaXplZFN0cmluZ3NbIlVzZXIgSW50ZXJm
YWNlOiJdID0gIlVzZXIgSW50ZXJmYWNlOiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2VyIFN0eWxl
IFNoZWV0Il0gPSAiVXNlciBTdHlsZSBTaGVldCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJWYWxpZCBG
cm9tIl0gPSAiVmFsaWQgRnJvbSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJWYWxpZCBVbnRpbCJdID0g
IlZhbGlkIFVudGlsIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvTWFpbi5qcwppbmRleCA5OTM1ZTBlNmYxNjk5ZmI1MTM2ZjhjZDE0ODUxMmI0ODc5NDVh
YWI1Li5lYWNlMTI2N2NhMDYxMDBmNmM3MGFmMzU0ZDIwNDdlOGQwNGZkZTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0xMjgs
NiArMTI4LDcgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgLy8gUmVnaXN0ZXIgZm9y
IGV2ZW50cy4KICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBXSS5fZGVidWdnZXJEaWRQYXVzZSk7CisgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlJlc3VtZWQsIFdJLl9kZWJ1Z2dlckRpZFJlc3VtZSk7CiAgICAgV0kuZG9tTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuSW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQs
IFdJLl9pbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZCk7CiAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuRE9NTm9kZVdhc0luc3BlY3RlZCwgV0kuX2Rv
bU5vZGVXYXNJbnNwZWN0ZWQpOwogICAgIFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuRE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0luc3Bl
Y3RlZCwgV0kuX2RvbVN0b3JhZ2VXYXNJbnNwZWN0ZWQpOwpAQCAtMTQ4LDcgKzE0OSw2IEBAIFdJ
LmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAgICAgV0kuVGltZWxpbmVUYWJDb250ZW50Vmlldy5U
eXBlLAogICAgICAgICBXSS5TdG9yYWdlVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgV0ku
R3JhcGhpY3NUYWJDb250ZW50Vmlldy5UeXBlLAotICAgICAgICBXSS5MYXllcnNUYWJDb250ZW50
Vmlldy5UeXBlLAogICAgICAgICBXSS5BdWRpdFRhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAg
IFdJLkNvbnNvbGVUYWJDb250ZW50Vmlldy5UeXBlLAogICAgIF0pOwpAQCAtMjM3LDYgKzIzNyw3
IEBAIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoInJlc2l6ZSIsIFdJLl93aW5kb3dSZXNpemVkKTsKICAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigia2V5ZG93biIsIFdJLl93aW5kb3dLZXlEb3duKTsKICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigia2V5dXAiLCBXSS5fd2luZG93S2V5VXApOworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCBXSS5fbW91c2VEb3duLCB0cnVlKTsKICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgV0kuX21vdXNlTW92ZWQsIHRydWUpOwogICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIFdJLl9wYWdlSGlkZGVuKTsKICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCBXSS5fY29udGV4dE1lbnVS
ZXF1ZXN0ZWQpOwpAQCAtMjc3LDggKzI3OCwxOSBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rp
b24oKQogICAgIFdJLnNldHRpbmdzLnNob3dXaGl0ZXNwYWNlQ2hhcmFjdGVycy5hZGRFdmVudExp
c3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgc2V0V2hpdGVzcGFjZUNoYXJhY3RlckNs
YXNzTmFtZSk7CiAgICAgc2V0V2hpdGVzcGFjZUNoYXJhY3RlckNsYXNzTmFtZSgpOwogCisgICAg
V0kuc2V0dGluZ3NUYWJDb250ZW50VmlldyA9IG5ldyBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3
OworCisgICAgV0kuX3NldHRpbmdzS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNo
b3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgV0ku
S2V5Ym9hcmRTaG9ydGN1dC5LZXkuQ29tbWEsIFdJLl9oYW5kbGVTZXR0aW5nc0tleWJvYXJkU2hv
cnRjdXQpOworCiAgICAgLy8gQ3JlYXRlIHRoZSB1c2VyIGludGVyZmFjZSBlbGVtZW50cy4KLSAg
ICBXSS50YWJCYXIgPSBuZXcgV0kuVGFiQmFyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWIt
YmFyIikpOworICAgIFdJLnRvb2xiYXIgPSBuZXcgV0kuVG9vbGJhcihkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidG9vbGJhciIpKTsKKworICAgIGlmIChXSS5zZXR0aW5ncy5leHBlcmltZW50YWxF
bmFibGVOZXdUYWJCYXIudmFsdWUpCisgICAgICAgIFdJLnRhYkJhciA9IG5ldyBXSS5UYWJCYXIo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhYi1iYXIiKSk7CisgICAgZWxzZSB7CisgICAgICAg
IFdJLnRhYkJhciA9IG5ldyBXSS5MZWdhY3lUYWJCYXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhYi1iYXIiKSk7CisgICAgICAgIFdJLnRhYkJhci5hZGRFdmVudExpc3RlbmVyKFdJLlRhYkJh
ci5FdmVudC5PcGVuRGVmYXVsdFRhYiwgV0kuX29wZW5EZWZhdWx0VGFiKTsKKyAgICB9CiAKICAg
ICBXSS5fY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIp
OwogICAgIFdJLl9jb250ZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAibWFpbiIpOwpA
QCAtMzMwLDYgKzM0Miw3IEBAIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgV0ku
X3Jlc2V0Wm9vbUtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5L
ZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICIwIiwgV0kuX3Jlc2V0
Wm9vbSk7CiAKICAgICBXSS5fc2hvd1RhYkF0SW5kZXhLZXlib2FyZFNob3J0Y3V0cyA9IFsxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5XS5tYXAoKGkpID0+IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0
KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdJLktleWJv
YXJkU2hvcnRjdXQuTW9kaWZpZXIuT3B0aW9uLCBgJHtpfWAsIChldmVudCkgPT4geyBXSS5fc2hv
d1RhYkF0SW5kZXhGcm9tU2hvcnRjdXQoaSk7IH0pKTsKKyAgICBXSS5fb3Blbk5ld1RhYktleWJv
YXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVy
Lk9wdGlvbiwgIlQiLCBXSS5fc2hvd05ld1RhYkZyb21TaG9ydGN1dCk7CiAKICAgICBXSS50YWJC
cm93c2VyID0gbmV3IFdJLlRhYkJyb3dzZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhYi1i
cm93c2VyIiksIFdJLnRhYkJhciwgV0kubmF2aWdhdGlvblNpZGViYXIsIFdJLmRldGFpbHNTaWRl
YmFyKTsKICAgICBXSS50YWJCcm93c2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFiQnJvd3Nlci5F
dmVudC5TZWxlY3RlZFRhYkNvbnRlbnRWaWV3RGlkQ2hhbmdlLCBXSS5fdGFiQnJvd3NlclNlbGVj
dGVkVGFiQ29udGVudFZpZXdEaWRDaGFuZ2UpOwpAQCAtMzU4LDEwOCArMzcxLDk0IEBAIFdJLmNv
bnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgV0kuc3RlcEludG9BbHRlcm5hdGVLZXlib2Fy
ZFNob3J0Y3V0ID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5N
b2RpZmllci5Db21tYW5kT3JDb250cm9sLCBXSS5LZXlib2FyZFNob3J0Y3V0LktleS5TZW1pY29s
b24sIFdJLmRlYnVnZ2VyU3RlcEludG8pOwogICAgIFdJLnN0ZXBPdXRBbHRlcm5hdGVLZXlib2Fy
ZFNob3J0Y3V0ID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5N
b2RpZmllci5TaGlmdCB8IFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29u
dHJvbCwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuU2VtaWNvbG9uLCBXSS5kZWJ1Z2dlclN0ZXBP
dXQpOwogCi0gICAgV0kuX3NldHRpbmdzS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2Fy
ZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwg
V0kuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuQ29tbWEsIFdJLl9oYW5kbGVTZXR0aW5nc0tleWJvYXJk
U2hvcnRjdXQpOworICAgIFdJLl9jbG9zZVRvb2xiYXJCdXR0b24gPSBuZXcgV0kuQ29udHJvbFRv
b2xiYXJJdGVtKCJkb2NrLWNsb3NlIiwgV0kuVUlTdHJpbmcoIkNsb3NlIiksICJJbWFnZXMvQ2xv
c2Uuc3ZnIiwgMTYsIDE0KTsKKyAgICBXSS5fY2xvc2VUb29sYmFyQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuY2xvc2UpOwog
Ci0gICAgV0kuX3RvZ2dsZVByZXZpb3VzRG9ja0NvbmZpZ3VyYXRpb25LZXlib2FyZFNob3J0Y3V0
ID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5D
b21tYW5kT3JDb250cm9sIHwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCwgIkQi
LCBXSS5fdG9nZ2xlUHJldmlvdXNEb2NrQ29uZmlndXJhdGlvbik7CisgICAgV0kuX3VuZG9ja1Rv
b2xiYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uVG9vbGJhckl0ZW0oInVuZG9jayIsIFdJLlVJU3Ry
aW5nKCJEZXRhY2ggaW50byBzZXBhcmF0ZSB3aW5kb3ciKSwgIkltYWdlcy9VbmRvY2suc3ZnIik7
CisgICAgV0kuX3VuZG9ja1Rvb2xiYXJCdXR0b24uZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBv
cG92ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFzc05hbWUpOworICAgIFdJLl91bmRvY2tUb29sYmFy
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xp
Y2tlZCwgV0kuX3VuZG9jayk7CiAKLSAgICBXSS5fY2xvc2VUYWJCYXJCdXR0b24gPSBuZXcgV0ku
QnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRvY2stY2xvc2UiLCBXSS5VSVN0cmluZygiQ2xvc2UiKSwg
IkltYWdlcy9DbG9zZUxhcmdlLnN2ZyIpOwotICAgIFdJLl9jbG9zZVRhYkJhckJ1dHRvbi5hZGRF
dmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLmNs
b3NlKTsKKyAgICBsZXQgZG9ja0ltYWdlID0gV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9
PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/ICJJbWFnZXMvRG9ja0xlZnQuc3ZnIiA6ICJJbWFn
ZXMvRG9ja1JpZ2h0LnN2ZyI7CisgICAgV0kuX2RvY2tUb1NpZGVUb29sYmFyQnV0dG9uID0gbmV3
IFdJLkJ1dHRvblRvb2xiYXJJdGVtKCJkb2NrLXJpZ2h0IiwgV0kuVUlTdHJpbmcoIkRvY2sgdG8g
c2lkZSBvZiB3aW5kb3ciKSwgZG9ja0ltYWdlKTsKKyAgICBXSS5fZG9ja1RvU2lkZVRvb2xiYXJC
dXR0b24uZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBvcG92ZXIuSWdub3JlQXV0b0Rpc21pc3ND
bGFzc05hbWUpOwogCi0gICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24gPSBuZXcgV0kuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0oImRvY2stcmlnaHQiLCBXSS5VSVN0cmluZygiRG9jayB0byBzaWRl
IG9mIHdpbmRvdyIpLCBXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlvdXRE
aXJlY3Rpb24uUlRMID8gIkltYWdlcy9Eb2NrTGVmdC5zdmciIDogIkltYWdlcy9Eb2NrUmlnaHQu
c3ZnIiwgMTgsIDE2KTsKLSAgICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7Ci0gICAg
V0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09
PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRMID8gV0kuX2RvY2tMZWZ0IDogV0kuX2RvY2tSaWdodCk7
CisgICAgbGV0IGRvY2tUb1NpZGVDYWxsYmFjayA9IFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9u
KCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwgPyBXSS5fZG9ja0xlZnQgOiBXSS5fZG9ja1Jp
Z2h0OworICAgIFdJLl9kb2NrVG9TaWRlVG9vbGJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJ
LkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIGRvY2tUb1NpZGVDYWxsYmFjayk7
CiAKLSAgICBXSS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0
aW9uSXRlbSgiZG9jay1ib3R0b20iLCBXSS5VSVN0cmluZygiRG9jayB0byBib3R0b20gb2Ygd2lu
ZG93IiksICJJbWFnZXMvRG9ja0JvdHRvbS5zdmciLCAxOCwgMTYpOwotICAgIFdJLl9kb2NrQm90
dG9tVGFiQmFyQnV0dG9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1
dG9EaXNtaXNzQ2xhc3NOYW1lKTsKLSAgICBXSS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRvbi5hZGRF
dmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl9k
b2NrQm90dG9tKTsKKyAgICBXSS5fZG9ja0JvdHRvbVRvb2xiYXJCdXR0b24gPSBuZXcgV0kuQnV0
dG9uVG9vbGJhckl0ZW0oImRvY2stYm90dG9tIiwgV0kuVUlTdHJpbmcoIkRvY2sgdG8gYm90dG9t
IG9mIHdpbmRvdyIpLCAiSW1hZ2VzL0RvY2tCb3R0b20uc3ZnIik7CisgICAgV0kuX2RvY2tCb3R0
b21Ub29sYmFyQnV0dG9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1
dG9EaXNtaXNzQ2xhc3NOYW1lKTsKKyAgICBXSS5fZG9ja0JvdHRvbVRvb2xiYXJCdXR0b24uYWRk
RXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5f
ZG9ja0JvdHRvbSk7CiAKLSAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRv
bk5hdmlnYXRpb25JdGVtKCJ1bmRvY2siLCBXSS5VSVN0cmluZygiRGV0YWNoIGludG8gc2VwYXJh
dGUgd2luZG93IiksICJJbWFnZXMvVW5kb2NrLnN2ZyIsIDE4LCAxNik7Ci0gICAgV0kuX3VuZG9j
a1RhYkJhckJ1dHRvbi5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRv
RGlzbWlzc0NsYXNzTmFtZSk7Ci0gICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRvbi5hZGRFdmVudExp
c3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl91bmRvY2sp
OwotCi0gICAgV0kudGFiQmFyLmFkZE5hdmlnYXRpb25JdGVtQmVmb3JlKG5ldyBXSS5Hcm91cE5h
dmlnYXRpb25JdGVtKFsKLSAgICAgICAgV0kuX2Nsb3NlVGFiQmFyQnV0dG9uLAotICAgICAgICBX
SS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbiwKLSAgICAgICAgV0kuX2RvY2tCb3R0b21UYWJCYXJC
dXR0b24sCi0gICAgICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24sCi0gICAgXSkpOworICAgIFdJ
Ll90b2dnbGVQcmV2aW91c0RvY2tDb25maWd1cmF0aW9uS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBX
SS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9y
Q29udHJvbCB8IFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQsICJEIiwgV0kuX3Rv
Z2dsZVByZXZpb3VzRG9ja0NvbmZpZ3VyYXRpb24pOwogCi0gICAgV0kuX2RvY2tEaXZpZGVyVGFi
QmFyTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV0kuRGl2aWRlck5hdmlnYXRpb25JdGVtOwotICAgIFdJ
LnRhYkJhci5hZGROYXZpZ2F0aW9uSXRlbUJlZm9yZShXSS5fZG9ja0RpdmlkZXJUYWJCYXJOYXZp
Z2F0aW9uSXRlbSk7CisgICAgbGV0IHJlbG9hZFRvb2xUaXA7CisgICAgaWYgKFdJLnNoYXJlZEFw
cC5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkKKyAgICAg
ICAgcmVsb2FkVG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJSZXN0YXJ0ICglcykiKS5mb3JtYXQoV0ku
X3JlbG9hZFBhZ2VLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKKyAgICBlbHNlCisgICAg
ICAgIHJlbG9hZFRvb2xUaXAgPSBXSS5VSVN0cmluZygiUmVsb2FkIHBhZ2UgKCVzKVxuUmVsb2Fk
IHBhZ2UgaWdub3JpbmcgY2FjaGUgKCVzKSIpLmZvcm1hdChXSS5fcmVsb2FkUGFnZUtleWJvYXJk
U2hvcnRjdXQuZGlzcGxheU5hbWUsIFdJLl9yZWxvYWRQYWdlRnJvbU9yaWdpbktleWJvYXJkU2hv
cnRjdXQuZGlzcGxheU5hbWUpOworICAgIFdJLl9yZWxvYWRUb29sYmFyQnV0dG9uID0gbmV3IFdJ
LkJ1dHRvblRvb2xiYXJJdGVtKCJyZWxvYWQiLCByZWxvYWRUb29sVGlwLCAiSW1hZ2VzL1JlbG9h
ZFRvb2xiYXIuc3ZnIik7CisgICAgV0kuX3JlbG9hZFRvb2xiYXJCdXR0b24uYWRkRXZlbnRMaXN0
ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fcmVsb2FkVG9v
bGJhckJ1dHRvbkNsaWNrZWQpOwogCi0gICAgbGV0IGluc3BlY3RlZFBhZ2VDb250cm9sTmF2aWdh
dGlvbkl0ZW1zID0gW107CisgICAgV0kuX2Rvd25sb2FkVG9vbGJhckJ1dHRvbiA9IG5ldyBXSS5C
dXR0b25Ub29sYmFySXRlbSgiZG93bmxvYWQiLCBXSS5VSVN0cmluZygiRG93bmxvYWQgV2ViIEFy
Y2hpdmUiKSwgIkltYWdlcy9Eb3dubG9hZEFycm93LnN2ZyIpOworICAgIFdJLl9kb3dubG9hZFRv
b2xiYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVu
dC5DbGlja2VkLCBXSS5fZG93bmxvYWRXZWJBcmNoaXZlKTsKIAogICAgIGxldCBlbGVtZW50U2Vs
ZWN0aW9uVG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJTdGFydCBlbGVtZW50IHNlbGVjdGlvbiAoJXMp
IikuZm9ybWF0KFdJLl9pbnNwZWN0TW9kZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwog
ICAgIGxldCBhY3RpdmF0ZWRFbGVtZW50U2VsZWN0aW9uVG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJT
dG9wIGVsZW1lbnQgc2VsZWN0aW9uICglcykiKS5mb3JtYXQoV0kuX2luc3BlY3RNb2RlS2V5Ym9h
cmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgV0kuX2luc3BlY3RNb2RlVGFiQmFyQnV0dG9u
ID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImluc3BlY3QiLCBlbGVtZW50
U2VsZWN0aW9uVG9vbFRpcCwgYWN0aXZhdGVkRWxlbWVudFNlbGVjdGlvblRvb2xUaXAsICJJbWFn
ZXMvQ3Jvc3NoYWlyLnN2ZyIpOwotICAgIFdJLl9pbnNwZWN0TW9kZVRhYkJhckJ1dHRvbi5hZGRF
dmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl90
b2dnbGVJbnNwZWN0TW9kZSk7Ci0gICAgaW5zcGVjdGVkUGFnZUNvbnRyb2xOYXZpZ2F0aW9uSXRl
bXMucHVzaChXSS5faW5zcGVjdE1vZGVUYWJCYXJCdXR0b24pOworICAgIFdJLl9pbnNwZWN0TW9k
ZVRvb2xiYXJCdXR0b24gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbSgiaW5zcGVj
dCIsIGVsZW1lbnRTZWxlY3Rpb25Ub29sVGlwLCBhY3RpdmF0ZWRFbGVtZW50U2VsZWN0aW9uVG9v
bFRpcCwgIkltYWdlcy9Dcm9zc2hhaXIuc3ZnIik7CisgICAgV0kuX2luc3BlY3RNb2RlVG9vbGJh
ckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNs
aWNrZWQsIFdJLl90b2dnbGVJbnNwZWN0TW9kZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmlzUmVtb3RlIHx8IFdJLmlzRGVidWdVSUVuYWJsZWQoKSkgewotICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgMTIuMik6IFBhZ2Uub3ZlcnJpZGVTZXR0aW5nIGRpZCBub3QgZXhp
c3QuCi0gICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIlBhZ2Uub3ZlcnJp
ZGVVc2VyQWdlbnQiKSAmJiBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIlBhZ2Uub3ZlcnJp
ZGVTZXR0aW5nIikpIHsKLSAgICAgICAgICAgIGNvbnN0IGRldmljZVNldHRpbmdzVG9vbHRpcCA9
IFdJLlVJU3RyaW5nKCJEZXZpY2UgU2V0dGluZ3MiKTsKLSAgICAgICAgICAgIFdJLl9kZXZpY2VT
ZXR0aW5nc1RhYkJhckJ1dHRvbiA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVt
KCJkZXZpY2Utc2V0dGluZ3MiLCBkZXZpY2VTZXR0aW5nc1Rvb2x0aXAsIGRldmljZVNldHRpbmdz
VG9vbHRpcCwgIkltYWdlcy9EZXZpY2Uuc3ZnIik7Ci0gICAgICAgICAgICBXSS5fZGV2aWNlU2V0
dGluZ3NUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5FdmVudC5DbGlja2VkLCBXSS5faGFuZGxlRGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0b25DbGlj
a2VkKTsKLSAgICAgICAgICAgIGluc3BlY3RlZFBhZ2VDb250cm9sTmF2aWdhdGlvbkl0ZW1zLnB1
c2goV0kuX2RldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uKTsKKyAgICAvLyBDT01QQVRJQklMSVRZ
IChpT1MgMTIuMik6IFBhZ2Uub3ZlcnJpZGVTZXR0aW5nIGRpZCBub3QgZXhpc3QuCisgICAgaWYg
KChJbnNwZWN0b3JGcm9udGVuZEhvc3QuaXNSZW1vdGUgfHwgV0kuaXNEZWJ1Z1VJRW5hYmxlZCgp
KSAmJiBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIlBhZ2Uub3ZlcnJpZGVVc2VyQWdlbnQi
KSAmJiBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIlBhZ2Uub3ZlcnJpZGVTZXR0aW5nIikp
IHsKKyAgICAgICAgY29uc3QgZGV2aWNlU2V0dGluZ3NUb29sdGlwID0gV0kuVUlTdHJpbmcoIkRl
dmljZSBTZXR0aW5ncyIpOworICAgICAgICBXSS5fZGV2aWNlU2V0dGluZ3NUb29sYmFyQnV0dG9u
ID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0oImRldmljZS1zZXR0aW5ncyIsIGRl
dmljZVNldHRpbmdzVG9vbHRpcCwgZGV2aWNlU2V0dGluZ3NUb29sdGlwLCAiSW1hZ2VzL0Rldmlj
ZS5zdmciKTsKKyAgICAgICAgV0kuX2RldmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbi5hZGRFdmVu
dExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl9oYW5k
bGVEZXZpY2VTZXR0aW5nc1Rvb2xiYXJCdXR0b25DbGlja2VkKTsKIAotICAgICAgICAgICAgV0ku
X2RldmljZVNldHRpbmdzUG9wb3ZlciA9IG51bGw7Ci0gICAgICAgIH0KKyAgICAgICAgV0kuX2Rl
dmljZVNldHRpbmdzUG9wb3ZlciA9IG51bGw7CisgICAgfQogCi0gICAgICAgIGxldCByZWxvYWRU
b29sVGlwOwotICAgICAgICBpZiAoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5E
ZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KQotICAgICAgICAgICAgcmVsb2FkVG9vbFRpcCA9IFdJ
LlVJU3RyaW5nKCJSZXN0YXJ0ICglcykiKS5mb3JtYXQoV0kuX3JlbG9hZFBhZ2VLZXlib2FyZFNo
b3J0Y3V0LmRpc3BsYXlOYW1lKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVsb2FkVG9v
bFRpcCA9IFdJLlVJU3RyaW5nKCJSZWxvYWQgcGFnZSAoJXMpXG5SZWxvYWQgcGFnZSBpZ25vcmlu
ZyBjYWNoZSAoJXMpIikuZm9ybWF0KFdJLl9yZWxvYWRQYWdlS2V5Ym9hcmRTaG9ydGN1dC5kaXNw
bGF5TmFtZSwgV0kuX3JlbG9hZFBhZ2VGcm9tT3JpZ2luS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5
TmFtZSk7Ci0gICAgICAgIFdJLl9yZWxvYWRUYWJCYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0oInJlbG9hZCIsIHJlbG9hZFRvb2xUaXAsICJJbWFnZXMvUmVsb2FkVG9vbGJh
ci5zdmciKTsKLSAgICAgICAgV0kuX3JlbG9hZFRhYkJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVy
KFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl9yZWxvYWRUYWJCYXJC
dXR0b25DbGlja2VkKTsKLSAgICAgICAgaW5zcGVjdGVkUGFnZUNvbnRyb2xOYXZpZ2F0aW9uSXRl
bXMucHVzaChXSS5fcmVsb2FkVGFiQmFyQnV0dG9uKTsKKyAgICBXSS5fdXBkYXRlUmVsb2FkVG9v
bGJhckJ1dHRvbigpOworICAgIFdJLl91cGRhdGVEb3dubG9hZFRvb2xiYXJCdXR0b24oKTsKKyAg
ICBXSS5fdXBkYXRlSW5zcGVjdE1vZGVUb29sYmFyQnV0dG9uKCk7CiAKLSAgICAgICAgV0kuX2Rv
d25sb2FkVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkb3dubG9h
ZCIsIFdJLlVJU3RyaW5nKCJEb3dubG9hZCBXZWIgQXJjaGl2ZSIpLCAiSW1hZ2VzL0Rvd25sb2Fk
QXJyb3cuc3ZnIik7Ci0gICAgICAgIFdJLl9kb3dubG9hZFRhYkJhckJ1dHRvbi5hZGRFdmVudExp
c3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl9kb3dubG9h
ZFdlYkFyY2hpdmUpOwotICAgICAgICBpbnNwZWN0ZWRQYWdlQ29udHJvbE5hdmlnYXRpb25JdGVt
cy5wdXNoKFdJLl9kb3dubG9hZFRhYkJhckJ1dHRvbik7Ci0gICAgfQorICAgIFdJLl9kYXNoYm9h
cmRzID0geworICAgICAgICBkZWZhdWx0OiBuZXcgV0kuRGVmYXVsdERhc2hib2FyZCwKKyAgICAg
ICAgZGVidWdnZXI6IG5ldyBXSS5EZWJ1Z2dlckRhc2hib2FyZCwKKyAgICB9OwogCi0gICAgV0ku
dGFiQmFyLmFkZE5hdmlnYXRpb25JdGVtQmVmb3JlKG5ldyBXSS5Hcm91cE5hdmlnYXRpb25JdGVt
KGluc3BlY3RlZFBhZ2VDb250cm9sTmF2aWdhdGlvbkl0ZW1zKSk7CisgICAgV0kuX2Rhc2hib2Fy
ZENvbnRhaW5lciA9IG5ldyBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3OworICAgIFdJLl9kYXNo
Ym9hcmRDb250YWluZXIuc2hvd0Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXSS5f
ZGFzaGJvYXJkcy5kZWZhdWx0KTsKIAotICAgIFdJLl9jb25zb2xlRGl2aWRlck5hdmlnYXRpb25J
dGVtID0gbmV3IFdJLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbTsKLSAgICBXSS50YWJCYXIuYWRkTmF2
aWdhdGlvbkl0ZW1CZWZvcmUoV0kuX2NvbnNvbGVEaXZpZGVyTmF2aWdhdGlvbkl0ZW0pOworICAg
IFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX2Nsb3NlVG9vbGJhckJ1dHRvbiwgV0kuVG9v
bGJhci5TZWN0aW9uLkNvbnRyb2wpOwogCi0gICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1
dHRvbiA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiY29uc29sZS13YXJuaW5ncyIsIFdJ
LlVJU3RyaW5nKCIwIENvbnNvbGUgd2FybmluZ3MiKSwgIkltYWdlcy9Jc3N1ZXNFbmFibGVkLnN2
ZyIpOwotICAgIFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24uaW1hZ2VUeXBlID0gV0ku
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uSW1hZ2VUeXBlLklNRzsKLSAgICBXSS5fY29uc29sZVdhcm5p
bmdzVGFiQmFyQnV0dG9uLmhpZGRlbiA9IGZhbHNlOwotICAgIFdJLl9jb25zb2xlV2FybmluZ3NU
YWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVu
dC5DbGlja2VkLCAoKSA9PiB7Ci0gICAgICAgIFdJLnNob3dDb25zb2xlVGFiKFdJLkxvZ0NvbnRl
bnRWaWV3LlNjb3Blcy5XYXJuaW5ncywgewotICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0ku
VGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkRhc2hib2FyZCwKLSAgICAgICAgfSk7
Ci0gICAgfSwgV0kpOwotCi0gICAgV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0b24gPSBuZXcg
V0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNvbnNvbGUtZXJyb3JzIiwgV0kuVUlTdHJpbmcoIjAg
Q29uc29sZSBlcnJvcnMiKSwgIkltYWdlcy9FcnJvcnNFbmFibGVkLnN2ZyIpOwotICAgIFdJLl9j
b25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLmltYWdlVHlwZSA9IFdJLkJ1dHRvbk5hdmlnYXRpb25J
dGVtLkltYWdlVHlwZS5JTUc7Ci0gICAgV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0b24uaGlk
ZGVuID0gZmFsc2U7Ci0gICAgV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0b24uYWRkRXZlbnRM
aXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCAoKSA9PiB7Ci0g
ICAgICAgIFdJLnNob3dDb25zb2xlVGFiKFdJLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5FcnJvcnMs
IHsKLSAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlv
bkluaXRpYXRvci5EYXNoYm9hcmQsCi0gICAgICAgIH0pOwotICAgIH0sIFdJKTsKKyAgICBXSS50
b29sYmFyLmFkZFRvb2xiYXJJdGVtKFdJLl91bmRvY2tUb29sYmFyQnV0dG9uLCBXSS5Ub29sYmFy
LlNlY3Rpb24uTGVmdCk7CisgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShXSS5fZG9ja1Rv
U2lkZVRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5MZWZ0KTsKKyAgICBXSS50b29s
YmFyLmFkZFRvb2xiYXJJdGVtKFdJLl9kb2NrQm90dG9tVG9vbGJhckJ1dHRvbiwgV0kuVG9vbGJh
ci5TZWN0aW9uLkxlZnQpOworCisgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShXSS5fcmVs
b2FkVG9vbGJhckJ1dHRvbiwgV0kuVG9vbGJhci5TZWN0aW9uLkNlbnRlckxlZnQpOworICAgIFdJ
LnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX2Rvd25sb2FkVG9vbGJhckJ1dHRvbiwgV0kuVG9v
bGJhci5TZWN0aW9uLkNlbnRlckxlZnQpOwogCi0gICAgV0kudGFiQmFyLmFkZE5hdmlnYXRpb25J
dGVtQmVmb3JlKG5ldyBXSS5Hcm91cE5hdmlnYXRpb25JdGVtKFsKLSAgICAgICAgV0kuX2NvbnNv
bGVXYXJuaW5nc1RhYkJhckJ1dHRvbiwKLSAgICAgICAgV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJC
dXR0b24sCi0gICAgXSkpOworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX2Rhc2hi
b2FyZENvbnRhaW5lci50b29sYmFySXRlbSwgV0kuVG9vbGJhci5TZWN0aW9uLkNlbnRlcik7CiAK
LSAgICBXSS5fdXBkYXRlSW5zcGVjdE1vZGVUYWJCYXJCdXR0b24oKTsKLSAgICBXSS5fdXBkYXRl
RG93bmxvYWRUYWJCYXJCdXR0b24oKTsKLSAgICBXSS5fdXBkYXRlUmVsb2FkVGFiQmFyQnV0dG9u
KCk7CisgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShXSS5faW5zcGVjdE1vZGVUb29sYmFy
QnV0dG9uLCBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyUmlnaHQpOwogCi0gICAgV0kuY29uc29s
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdl
QWRkZWQsIFdJLl91cGRhdGVDb25zb2xlVGFiQmFyQnV0dG9ucywgV0kpOwotICAgIFdJLmNvbnNv
bGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuUHJldmlv
dXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCBXSS5fdXBkYXRlQ29uc29sZVRhYkJhckJ1dHRv
bnMsIFdJKTsKLSAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNv
bGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIFdJLl91cGRhdGVDb25zb2xlVGFiQmFyQnV0dG9ucywg
V0kpOwotICAgIFdJLl91cGRhdGVDb25zb2xlVGFiQmFyQnV0dG9ucygpOworICAgIGlmIChXSS5f
ZGV2aWNlU2V0dGluZ3NUb29sYmFyQnV0dG9uKQorICAgICAgICBXSS50b29sYmFyLmFkZFRvb2xi
YXJJdGVtKFdJLl9kZXZpY2VTZXR0aW5nc1Rvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlv
bi5DZW50ZXJSaWdodCk7CiAKLSAgICBXSS5fZG9ja2VkUmVzaXplckVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZG9ja2VkLXJlc2l6ZXIiKTsKLSAgICBXSS5fZG9ja2VkUmVzaXpl
ckVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NO
YW1lKTsKLSAgICBXSS5fZG9ja2VkUmVzaXplckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgV0kuX2RvY2tlZFJlc2l6ZXJNb3VzZURvd24pOworICAgIFdJLl9zZWFyY2hUYWJD
b250ZW50VmlldyA9IG5ldyBXSS5TZWFyY2hUYWJDb250ZW50VmlldzsKKworICAgIGlmIChXSS5z
ZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXIudmFsdWUpIHsKKyAgICAgICAgV0ku
dGFiQnJvd3Nlci5hZGRUYWJGb3JDb250ZW50VmlldyhXSS5fc2VhcmNoVGFiQ29udGVudFZpZXcs
IHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKKyAgICAgICAgV0kudGFiQmFyLmFkZFRhYkJh
ckl0ZW0oV0kuc2V0dGluZ3NUYWJDb250ZW50Vmlldy50YWJCYXJJdGVtLCB7c3VwcHJlc3NBbmlt
YXRpb25zOiB0cnVlfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgaW5jcmVtZW50YWwg
PSBmYWxzZTsKKyAgICAgICAgV0kuX3NlYXJjaFRvb2xiYXJJdGVtID0gbmV3IFdJLlNlYXJjaEJh
cigiaW5zcGVjdG9yLXNlYXJjaCIsIFdJLlVJU3RyaW5nKCJTZWFyY2giKSwgaW5jcmVtZW50YWwp
OworICAgICAgICBXSS5fc2VhcmNoVG9vbGJhckl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5TZWFy
Y2hCYXIuRXZlbnQuVGV4dENoYW5nZWQsIFdJLl9zZWFyY2hUZXh0RGlkQ2hhbmdlKTsKKyAgICAg
ICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShXSS5fc2VhcmNoVG9vbGJhckl0ZW0sIFdJLlRv
b2xiYXIuU2VjdGlvbi5SaWdodCk7CisgICAgfQorCisgICAgbGV0IGRvY2tlZFJlc2l6ZXJFbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRvY2tlZC1yZXNpemVyIik7CisgICAgZG9j
a2VkUmVzaXplckVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNt
aXNzQ2xhc3NOYW1lKTsKKyAgICBkb2NrZWRSZXNpemVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZWRvd24iLCBXSS5fZG9ja2VkUmVzaXplck1vdXNlRG93bik7CiAKICAgICBXSS5fZG9j
a2luZ0F2YWlsYWJsZSA9IGZhbHNlOwogCkBAIC00NzksNiArNDc4LDcgQEAgV0kuY29udGVudExv
YWRlZCA9IGZ1bmN0aW9uKCkKICAgICAgICAgV0kuQXVkaXRUYWJDb250ZW50VmlldywKICAgICAg
ICAgV0kuQ29uc29sZVRhYkNvbnRlbnRWaWV3LAogICAgICAgICBXSS5TZWFyY2hUYWJDb250ZW50
VmlldywKKyAgICAgICAgV0kuTmV3VGFiQ29udGVudFZpZXcsCiAgICAgICAgIFdJLlNldHRpbmdz
VGFiQ29udGVudFZpZXcsCiAgICAgXTsKIApAQCAtNDkwLDEyICs0OTAsNiBAQCBXSS5jb250ZW50
TG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgV0kuX3BlbmRpbmdPcGVuVGFicyA9IFtdOwogCi0g
ICAgV0kuX3NlYXJjaFRhYkNvbnRlbnRWaWV3ID0gbmV3IFdJLlNlYXJjaFRhYkNvbnRlbnRWaWV3
OwotICAgIFdJLnRhYkJyb3dzZXIuYWRkVGFiRm9yQ29udGVudFZpZXcoV0kuX3NlYXJjaFRhYkNv
bnRlbnRWaWV3LCB7c3VwcHJlc3NBbmltYXRpb25zOiB0cnVlfSk7Ci0KLSAgICBXSS5fc2V0dGlu
Z3NUYWJDb250ZW50VmlldyA9IG5ldyBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3OwotICAgIFdJ
LnRhYkJyb3dzZXIuYWRkVGFiRm9yQ29udGVudFZpZXcoV0kuX3NldHRpbmdzVGFiQ29udGVudFZp
ZXcsIHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKLQogICAgIC8vIFByZXZpb3VzbHkgd2Ug
bWF5IGhhdmUgc3RvcmVkIGR1cGxpY2F0ZXMgaW4gV0kgc2V0dGluZy4gQXZvaWQgY3JlYXRpbmcg
ZHVwbGljYXRlIHRhYnMuCiAgICAgbGV0IG9wZW5UYWJUeXBlcyA9IFdJLl9vcGVuVGFic1NldHRp
bmcudmFsdWU7CiAgICAgbGV0IHNlZW5UYWJUeXBlcyA9IG5ldyBTZXQ7CkBAIC01MjMsMTYgKzUx
NywxMyBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgV0kuX3Jlc3RvcmVD
b29raWVGb3JPcGVuVGFicyhXSS5TdGF0ZVJlc3RvcmF0aW9uVHlwZS5Mb2FkKTsKIAotICAgIGlm
IChXSS50YWJCYXIubm9ybWFsVGFiQ291bnQpCi0gICAgICAgIFdJLnRhYkJhci5zZWxlY3RlZFRh
YkJhckl0ZW0gPSBXSS5fc2VsZWN0ZWRUYWJJbmRleFNldHRpbmcudmFsdWU7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIC8vIElmIG5vIHRhYnMgd2VyZSBhYmxlIHRvIGJlIHJlc3RvcmVkLCBzaG93IGFs
bCB0YWJzIHRoYXQgYXJlIGFsbG93ZWQuCi0gICAgICAgIGZvciAobGV0IHRhYlR5cGUgb2YgV0ku
X29wZW5UYWJzU2V0dGluZy5kZWZhdWx0VmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChXSS5pc05l
d1RhYldpdGhUeXBlQWxsb3dlZCh0YWJUeXBlKSkKLSAgICAgICAgICAgICAgICBXSS5jcmVhdGVO
ZXdUYWJXaXRoVHlwZSh0YWJUeXBlKQotICAgICAgICB9CisgICAgV0kudGFiQmFyLnNlbGVjdGVk
VGFiQmFySXRlbSA9IFdJLl9zZWxlY3RlZFRhYkluZGV4U2V0dGluZy52YWx1ZTsKKworICAgIGlm
ICghV0kudGFiQmFyLnNlbGVjdGVkVGFiQmFySXRlbSkKICAgICAgICAgV0kudGFiQmFyLnNlbGVj
dGVkVGFiQmFySXRlbSA9IDA7Ci0gICAgfQorCisgICAgaWYgKCFXSS50YWJCYXIubm9ybWFsVGFi
Q291bnQpCisgICAgICAgIFdJLnNob3dOZXdUYWJUYWIoe3N1cHByZXNzQW5pbWF0aW9uczogdHJ1
ZX0pOwogCiAgICAgLy8gTGlzdGVuIHRvIHRoZSBldmVudHMgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBz
YXZlZCB0YWJzIHRvIGF2b2lkIHJlY3Vyc2lvbi4KICAgICBXSS50YWJCYXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5UYWJCYXIuRXZlbnQuVGFiQmFySXRlbUFkZGVkLCBXSS5fcmVtZW1iZXJPcGVuVGFi
cyk7CkBAIC01NDIsMTcgKzUzMyw5IEBAIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAg
ICAgZnVuY3Rpb24gdXBkYXRlQ29uc29sZVNhdmVkUmVzdWx0UHJlZml4Q1NTVmFyaWFibGUoKSB7
CiAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoIi0tY29uc29sZS1zYXZl
ZC1yZXN1bHQtcHJlZml4IiwgIlwiIiArIFdJLlJ1bnRpbWVNYW5hZ2VyLnByZWZlcnJlZFNhdmVk
UmVzdWx0UHJlZml4KCkgKyAiXCIiKTsKICAgICB9Ci0KLSAgICBXSS5zZXR0aW5ncy5jb25zb2xl
U2F2ZWRSZXN1bHRBbGlhcy5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdl
ZCwgdXBkYXRlQ29uc29sZVNhdmVkUmVzdWx0UHJlZml4Q1NTVmFyaWFibGUsIFdJLnNldHRpbmdz
KTsKKyAgICBXSS5zZXR0aW5ncy5jb25zb2xlU2F2ZWRSZXN1bHRBbGlhcy5hZGRFdmVudExpc3Rl
bmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdXBkYXRlQ29uc29sZVNhdmVkUmVzdWx0UHJl
Zml4Q1NTVmFyaWFibGUpOwogICAgIHVwZGF0ZUNvbnNvbGVTYXZlZFJlc3VsdFByZWZpeENTU1Zh
cmlhYmxlKCk7CiAKLSAgICBmdW5jdGlvbiB1cGRhdGVab29tRmFjdG9yQ1NTVmFyaWFibGUoKSB7
Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoIi0tem9vbS1mYWN0b3Ii
LCBXSS5zZXR0aW5ncy56b29tRmFjdG9yLnZhbHVlKTsKLSAgICB9Ci0KLSAgICBXSS5zZXR0aW5n
cy56b29tRmFjdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB1
cGRhdGVab29tRmFjdG9yQ1NTVmFyaWFibGUsIFdJLnNldHRpbmdzKTsKLSAgICB1cGRhdGVab29t
RmFjdG9yQ1NTVmFyaWFibGUoKTsKLQogICAgIC8vIFNpZ25hbCB0aGF0IHRoZSBmcm9udGVuZCBp
cyBub3cgcmVhZHkgdG8gcmVjZWl2ZSBtZXNzYWdlcy4KICAgICBXSS5fYmFja2VuZFRhcmdldEF2
YWlsYWJsZVByb21pc2UucHJvbWlzZS50aGVuKCgpID0+IHsKICAgICAgICAgSW5zcGVjdG9yRnJv
bnRlbmRBUEkubG9hZENvbXBsZXRlZCgpOwpAQCAtNjg5LDEwICs2NzIsMTUgQEAgV0kuX3JlbWVt
YmVyT3BlblRhYnMgPSBmdW5jdGlvbigpCiAgICAgV0kuX29wZW5UYWJzU2V0dGluZy52YWx1ZSA9
IG9wZW5UYWJzOwogfTsKIAorV0kuX29wZW5EZWZhdWx0VGFiID0gZnVuY3Rpb24oZXZlbnQpCit7
CisgICAgV0kuc2hvd05ld1RhYlRhYih7c3VwcHJlc3NBbmltYXRpb25zOiB0cnVlfSk7Cit9Owor
CiBXSS5faGFuZGxlU2V0dGluZ3NLZXlib2FyZFNob3J0Y3V0ID0gZnVuY3Rpb24oZXZlbnQpCiB7
CiAgICAgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMkMiKSB7IC8vICIsIgotICAg
ICAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50VmlldyhXSS5fc2V0dGluZ3NUYWJD
b250ZW50VmlldywgeworICAgICAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50Vmll
dyhXSS5zZXR0aW5nc1RhYkNvbnRlbnRWaWV3LCB7CiAgICAgICAgICAgICBpbml0aWF0b3JIaW50
OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuS2V5Ym9hcmRTaG9ydGN1dCwK
ICAgICAgICAgfSk7CiAgICAgfQpAQCAtNzIwLDYgKzcwOCwyMCBAQCBXSS5fdHJ5VG9SZXN0b3Jl
UGVuZGluZ1RhYnMgPSBmdW5jdGlvbigpCiAgICAgfQogCiAgICAgV0kuX3BlbmRpbmdPcGVuVGFi
cyA9IHN0aWxsUGVuZGluZ09wZW5UYWJzOworCisgICAgaWYgKCFXSS5zZXR0aW5ncy5leHBlcmlt
ZW50YWxFbmFibGVOZXdUYWJCYXIudmFsdWUpCisgICAgICAgIFdJLnRhYkJhci51cGRhdGVOZXdU
YWJUYWJCYXJJdGVtU3RhdGUoKTsKK307CisKK1dJLnNob3dOZXdUYWJUYWIgPSBmdW5jdGlvbihv
cHRpb25zKQoreworICAgIGlmICghV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQoV0kuTmV3VGFi
Q29udGVudFZpZXcuVHlwZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGxldCB0YWJDb250ZW50
VmlldyA9IFdJLnRhYkJyb3dzZXIuYmVzdFRhYkNvbnRlbnRWaWV3Rm9yQ2xhc3MoV0kuTmV3VGFi
Q29udGVudFZpZXcpOworICAgIGlmICghdGFiQ29udGVudFZpZXcpCisgICAgICAgIHRhYkNvbnRl
bnRWaWV3ID0gbmV3IFdJLk5ld1RhYkNvbnRlbnRWaWV3OworICAgIFdJLnRhYkJyb3dzZXIuc2hv
d1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3LCBvcHRpb25zKTsKIH07CiAKIFdJLmlz
TmV3VGFiV2l0aFR5cGVBbGxvd2VkID0gZnVuY3Rpb24odGFiVHlwZSkKQEAgLTczNyw2ICs3Mzks
MTMgQEAgV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQgPSBmdW5jdGlvbih0YWJUeXBlKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmICh0YWJDbGFzcyA9PT0gV0ku
TmV3VGFiQ29udGVudFZpZXcpIHsKKyAgICAgICAgbGV0IGFsbFRhYnMgPSBBcnJheS5mcm9tKFdJ
Lmtub3duVGFiQ2xhc3NlcygpKTsKKyAgICAgICAgbGV0IGFkZGFibGVUYWJzID0gYWxsVGFicy5m
aWx0ZXIoKHRhYkNsYXNzKSA9PiAhdGFiQ2xhc3MudGFiSW5mbygpLmlzRXBoZW1lcmFsKTsKKyAg
ICAgICAgbGV0IGNhbk1ha2VOZXdUYWIgPSBhZGRhYmxlVGFicy5zb21lKCh0YWJDbGFzcykgPT4g
V0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQodGFiQ2xhc3MuVHlwZSkpOworICAgICAgICByZXR1
cm4gY2FuTWFrZU5ld1RhYjsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH07CiAKQEAgLTc4
MCw5ICs3ODksOSBAQCBXSS5hY3RpdmF0ZUV4dHJhRG9tYWlucyA9IGZ1bmN0aW9uKGRvbWFpbnMp
CiAgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5pbml0aWFsaXplVGFyZ2V0KFdJLm1haW5U
YXJnZXQpOwogICAgIH0KIAotICAgIFdJLl91cGRhdGVJbnNwZWN0TW9kZVRhYkJhckJ1dHRvbigp
OwotICAgIFdJLl91cGRhdGVEb3dubG9hZFRhYkJhckJ1dHRvbigpOwotICAgIFdJLl91cGRhdGVS
ZWxvYWRUYWJCYXJCdXR0b24oKTsKKyAgICBXSS5fdXBkYXRlUmVsb2FkVG9vbGJhckJ1dHRvbigp
OworICAgIFdJLl91cGRhdGVEb3dubG9hZFRvb2xiYXJCdXR0b24oKTsKKyAgICBXSS5fdXBkYXRl
SW5zcGVjdE1vZGVUb29sYmFyQnV0dG9uKCk7CiAKICAgICBXSS5fdHJ5VG9SZXN0b3JlUGVuZGlu
Z1RhYnMoKTsKIH07CkBAIC04NDIsNiArODUxLDggQEAgV0kudXBkYXRlRG9ja2VkU3RhdGUgPSBm
dW5jdGlvbihzaWRlKQogCiAgICAgV0kuZG9ja2VkID0gc2lkZSAhPT0gV0kuRG9ja0NvbmZpZ3Vy
YXRpb24uVW5kb2NrZWQ7CiAKKyAgICBXSS5faWdub3JlVG9vbGJhck1vZGVEaWRDaGFuZ2VFdmVu
dHMgPSB0cnVlOworCiAgICAgaWYgKHNpZGUgPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRv
bSkgewogICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoImRvY2tlZCIsIFdJLkRv
Y2tDb25maWd1cmF0aW9uLkJvdHRvbSk7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0
LnJlbW92ZSgid2luZG93LWluYWN0aXZlIiwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQsIFdJ
LkRvY2tDb25maWd1cmF0aW9uLkxlZnQpOwpAQCAtODU0LDYgKzg2NSw4IEBAIFdJLnVwZGF0ZURv
Y2tlZFN0YXRlID0gZnVuY3Rpb24oc2lkZSkKICAgICB9IGVsc2UKICAgICAgICAgZG9jdW1lbnQu
Ym9keS5jbGFzc0xpc3QucmVtb3ZlKCJkb2NrZWQiLCBXSS5Eb2NrQ29uZmlndXJhdGlvbi5SaWdo
dCwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdCwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9t
KTsKIAorICAgIFdJLl9pZ25vcmVUb29sYmFyTW9kZURpZENoYW5nZUV2ZW50cyA9IGZhbHNlOwor
CiAgICAgV0kuX3VwZGF0ZURvY2tOYXZpZ2F0aW9uSXRlbXMoKTsKIAogICAgIGlmICghV0kuZG9j
a2VkQ29uZmlndXJhdGlvblN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3NlcigpICYmICFXSS5kb2Vz
Q3VycmVudFRhYlN1cHBvcnRTcGxpdENvbnRlbnRCcm93c2VyKCkpCkBAIC0xMTE5LDEwICsxMTMy
LDEwIEBAIFdJLmlzU2hvd2luZ0xheWVyc1RhYiA9IGZ1bmN0aW9uKCkKIAogV0kuc2hvd1NldHRp
bmdzVGFiID0gZnVuY3Rpb24ob3B0aW9ucyA9IHt9KQogewotICAgIFdJLnRhYkJyb3dzZXIuc2hv
d1RhYkZvckNvbnRlbnRWaWV3KFdJLl9zZXR0aW5nc1RhYkNvbnRlbnRWaWV3LCBvcHRpb25zKTsK
KyAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50VmlldyhXSS5zZXR0aW5nc1RhYkNv
bnRlbnRWaWV3LCBvcHRpb25zKTsKIAogICAgIGlmIChvcHRpb25zLmJsYWNrYm94UGF0dGVyblRv
U2VsZWN0KQotICAgICAgICBXSS5fc2V0dGluZ3NUYWJDb250ZW50Vmlldy5zZWxlY3RCbGFja2Jv
eFBhdHRlcm4ob3B0aW9ucy5ibGFja2JveFBhdHRlcm5Ub1NlbGVjdCk7CisgICAgICAgIFdJLnNl
dHRpbmdzVGFiQ29udGVudFZpZXcuc2VsZWN0QmxhY2tib3hQYXR0ZXJuKG9wdGlvbnMuYmxhY2ti
b3hQYXR0ZXJuVG9TZWxlY3QpOwogfTsKIAogV0kuaW5kZW50U3RyaW5nID0gZnVuY3Rpb24oKQpA
QCAtMTM2NywxNCArMTM4MCwzNSBAQCBXSS5kZWJ1Z2dlclN0ZXBPdXQgPSBmdW5jdGlvbihldmVu
dCkKICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc3RlcE91dCgpOwogfTsKIAotV0kuX2ZvY3VzU2Vh
cmNoRmllbGQgPSBmdW5jdGlvbihldmVudCkKK1dJLl9zZWFyY2hUZXh0RGlkQ2hhbmdlID0gZnVu
Y3Rpb24oZXZlbnQpCiB7Ci0gICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXco
V0kuX3NlYXJjaFRhYkNvbnRlbnRWaWV3LCB7CisgICAgdmFyIHRhYkNvbnRlbnRWaWV3ID0gV0ku
dGFiQnJvd3Nlci5iZXN0VGFiQ29udGVudFZpZXdGb3JDbGFzcyhXSS5TZWFyY2hUYWJDb250ZW50
Vmlldyk7CisgICAgaWYgKCF0YWJDb250ZW50VmlldykKKyAgICAgICAgdGFiQ29udGVudFZpZXcg
PSBuZXcgV0kuU2VhcmNoVGFiQ29udGVudFZpZXc7CisKKyAgICB2YXIgc2VhcmNoUXVlcnkgPSBX
SS5fc2VhcmNoVG9vbGJhckl0ZW0udGV4dDsKKyAgICBXSS5fc2VhcmNoVG9vbGJhckl0ZW0udGV4
dCA9ICIiOworCisgICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcodGFiQ29u
dGVudFZpZXcsIHsKICAgICAgICAgLy8gQ2xhc3NpZnkgdGhpcyBhcyBhIGtleWJvYXJkIHNob3J0
Y3V0LCBhcyB0aGUgb25seSBvdGhlciB3YXkgdG8gZ2V0IHRvIFNlYXJjaCBUYWIgaXMgdmlhIFRh
YkJhciBpdHNlbGYuCiAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2
aWdhdGlvbkluaXRpYXRvci5LZXlib2FyZFNob3J0Y3V0LAogICAgIH0pOwogCi0gICAgV0kuX3Nl
YXJjaFRhYkNvbnRlbnRWaWV3LmZvY3VzU2VhcmNoRmllbGQoKTsKKyAgICB0YWJDb250ZW50Vmll
dy5wZXJmb3JtU2VhcmNoKHNlYXJjaFF1ZXJ5KTsKK307CisKK1dJLl9mb2N1c1NlYXJjaEZpZWxk
ID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgaWYgKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVu
YWJsZU5ld1RhYkJhci52YWx1ZSkKKyAgICAgICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29u
dGVudFZpZXcoV0kuX3NlYXJjaFRhYkNvbnRlbnRWaWV3KTsKKworICAgIGlmIChXSS50YWJCcm93
c2VyLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgaW5zdGFuY2VvZiBXSS5TZWFyY2hUYWJDb250ZW50
VmlldykgeworICAgICAgICBXSS50YWJCcm93c2VyLnNlbGVjdGVkVGFiQ29udGVudFZpZXcuZm9j
dXNTZWFyY2hGaWVsZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFdJLl9z
ZWFyY2hUb29sYmFySXRlbSkKKyAgICAgICAgV0kuX3NlYXJjaFRvb2xiYXJJdGVtLmZvY3VzKCk7
CiB9OwogCiBXSS5fZm9jdXNDaGFuZ2VkID0gZnVuY3Rpb24oZXZlbnQpCkBAIC0xNDgzLDkgKzE1
MTcsMTYgQEAgV0kuX2RlYnVnZ2VyRGlkUGF1c2UgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBX
SS5zaG93U291cmNlc1RhYih7c2hvd1Njb3BlQ2hhaW5TaWRlYmFyOiBXSS5zZXR0aW5ncy5zaG93
U2NvcGVDaGFpbk9uUGF1c2UudmFsdWV9KTsKIAorICAgIFdJLl9kYXNoYm9hcmRDb250YWluZXIu
c2hvd0Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXSS5fZGFzaGJvYXJkcy5kZWJ1
Z2dlcik7CisKICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYnJpbmdUb0Zyb250KCk7CiB9Owog
CitXSS5fZGVidWdnZXJEaWRSZXN1bWUgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBXSS5fZGFz
aGJvYXJkQ29udGFpbmVyLmNsb3NlRGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KFdJ
Ll9kYXNoYm9hcmRzLmRlYnVnZ2VyKTsKK307CisKIFdJLl9mcmFtZVdhc0FkZGVkID0gZnVuY3Rp
b24oZXZlbnQpCiB7CiAgICAgaWYgKCFXSS5fZnJhbWVJZGVudGlmaWVyVG9TaG93U291cmNlQ29k
ZVdoZW5BdmFpbGFibGUpCkBAIC0xNTExLDcgKzE1NTIsNyBAQCBXSS5fZnJhbWVXYXNBZGRlZCA9
IGZ1bmN0aW9uKGV2ZW50KQogCiBXSS5fbWFpbkZyYW1lRGlkQ2hhbmdlID0gZnVuY3Rpb24oZXZl
bnQpCiB7Ci0gICAgV0kuX3VwZGF0ZURvd25sb2FkVGFiQmFyQnV0dG9uKCk7CisgICAgV0kuX3Vw
ZGF0ZURvd25sb2FkVG9vbGJhckJ1dHRvbigpOwogCiAgICAgV0kudXBkYXRlV2luZG93VGl0bGUo
KTsKIH07CkBAIC0xNTI3LDcgKzE1NjgsNyBAQCBXSS5fbWFpblJlc291cmNlRGlkQ2hhbmdlID0g
ZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgIFdJLl9yZXN0b3JlQ29va2llRm9yT3BlblRhYnMoV0ku
U3RhdGVSZXN0b3JhdGlvblR5cGUuTmF2aWdhdGlvbik7CiAgICAgfSk7CiAKLSAgICBXSS5fdXBk
YXRlRG93bmxvYWRUYWJCYXJCdXR0b24oKTsKKyAgICBXSS5fdXBkYXRlRG93bmxvYWRUb29sYmFy
QnV0dG9uKCk7CiAKICAgICBXSS51cGRhdGVXaW5kb3dUaXRsZSgpOwogfTsKQEAgLTE1NDYsOCAr
MTU4Nyw2IEBAIFdJLl9yZXN0b3JlQ29va2llRm9yT3BlblRhYnMgPSBmdW5jdGlvbihyZXN0b3Jh
dGlvblR5cGUpCiAgICAgICAgIHZhciB0YWJDb250ZW50VmlldyA9IHRhYkJhckl0ZW0ucmVwcmVz
ZW50ZWRPYmplY3Q7CiAgICAgICAgIGlmICghKHRhYkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0ku
VGFiQ29udGVudFZpZXcpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghdGFi
Q29udGVudFZpZXcuY29uc3RydWN0b3Iuc2hvdWxkU2F2ZVRhYigpKQotICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIHRhYkNvbnRlbnRWaWV3LnJlc3RvcmVTdGF0ZUZyb21Db29raWUocmVz
dG9yYXRpb25UeXBlKTsKICAgICB9CiAKQEAgLTE1NjksOCArMTYwOCw2IEBAIFdJLl9zYXZlQ29v
a2llRm9yT3BlblRhYnMgPSBmdW5jdGlvbigpCiAgICAgICAgIHZhciB0YWJDb250ZW50VmlldyA9
IHRhYkJhckl0ZW0ucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgIGlmICghKHRhYkNvbnRlbnRW
aWV3IGluc3RhbmNlb2YgV0kuVGFiQ29udGVudFZpZXcpKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmICghdGFiQ29udGVudFZpZXcuY29uc3RydWN0b3Iuc2hvdWxkU2F2ZVRhYigp
KQotICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHRhYkNvbnRlbnRWaWV3LnNhdmVTdGF0
ZVRvQ29va2llKCk7CiAgICAgfQogfTsKQEAgLTE1OTUsNiArMTYzMiw3IEBAIFdJLl93aW5kb3dC
bHVycmVkID0gZnVuY3Rpb24oZXZlbnQpCiAKIFdJLl93aW5kb3dSZXNpemVkID0gZnVuY3Rpb24o
ZXZlbnQpCiB7CisgICAgV0kudG9vbGJhci51cGRhdGVMYXlvdXQoV0kuVmlldy5MYXlvdXRSZWFz
b24uUmVzaXplKTsKICAgICBXSS50YWJCYXIudXBkYXRlTGF5b3V0KFdJLlZpZXcuTGF5b3V0UmVh
c29uLlJlc2l6ZSk7CiAgICAgV0kuX3RhYkJyb3dzZXJTaXplRGlkQ2hhbmdlKCk7CiAgICAgV0ku
X3VwZGF0ZVNoZWV0UmVjdCgpOwpAQCAtMTYzOCw2ICsxNjc2LDEyIEBAIFdJLl93aW5kb3dLZXlV
cCA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIFdJLl91cGRhdGVNb2RpZmllcktleXMoZXZlbnQpOwog
fTsKIAorV0kuX21vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGlmIChXSS50b29s
YmFyLmVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkKKyAgICAgICAgV0kuX3Rvb2xiYXJN
b3VzZURvd24oZXZlbnQpOworfTsKKwogV0kuX21vdXNlTW92ZWQgPSBmdW5jdGlvbihldmVudCkK
IHsKICAgICBXSS5fdXBkYXRlTW9kaWZpZXJLZXlzKGV2ZW50KTsKQEAgLTE3MjIsMTggKzE3NjYs
MTYgQEAgV0kuX3RvZ2dsZVByZXZpb3VzRG9ja0NvbmZpZ3VyYXRpb24gPSBmdW5jdGlvbihldmVu
dCkKIFdJLl91cGRhdGVEb2NrTmF2aWdhdGlvbkl0ZW1zID0gZnVuY3Rpb24oKQogewogICAgIGlm
IChXSS5fZG9ja2luZ0F2YWlsYWJsZSB8fCBXSS5kb2NrZWQpIHsKLSAgICAgICAgV0kuX2Nsb3Nl
VGFiQmFyQnV0dG9uLmhpZGRlbiA9ICFXSS5kb2NrZWQ7Ci0gICAgICAgIFdJLl91bmRvY2tUYWJC
YXJCdXR0b24uaGlkZGVuID0gV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmln
dXJhdGlvbi5VbmRvY2tlZDsKLSAgICAgICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uaGlk
ZGVuID0gV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0
b207Ci0gICAgICAgIFdJLl9kb2NrVG9TaWRlVGFiQmFyQnV0dG9uLmhpZGRlbiA9IFdJLl9kb2Nr
Q29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQgfHwgV0kuX2RvY2tD
b25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0OworICAgICAgICBXSS5f
Y2xvc2VUb29sYmFyQnV0dG9uLmhpZGRlbiA9ICFXSS5kb2NrZWQ7CisgICAgICAgIFdJLl91bmRv
Y2tUb29sYmFyQnV0dG9uLmhpZGRlbiA9IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9j
a0NvbmZpZ3VyYXRpb24uVW5kb2NrZWQ7CisgICAgICAgIFdJLl9kb2NrQm90dG9tVG9vbGJhckJ1
dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0
aW9uLkJvdHRvbTsKKyAgICAgICAgV0kuX2RvY2tUb1NpZGVUb29sYmFyQnV0dG9uLmhpZGRlbiA9
IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQgfHwg
V0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0OwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIFdJLl9jbG9zZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwot
ICAgICAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7Ci0gICAgICAgIFdJ
Ll9kb2NrQm90dG9tVGFiQmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7Ci0gICAgICAgIFdJLl9kb2Nr
VG9TaWRlVGFiQmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7CisgICAgICAgIFdJLl9jbG9zZVRvb2xi
YXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgV0kuX3VuZG9ja1Rvb2xiYXJCdXR0b24u
aGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgV0kuX2RvY2tCb3R0b21Ub29sYmFyQnV0dG9uLmhpZGRl
biA9IHRydWU7CisgICAgICAgIFdJLl9kb2NrVG9TaWRlVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSB0
cnVlOwogICAgIH0KLQotICAgIFdJLl91cGRhdGVUYWJCYXJEaXZpZGVycygpOwogfTsKIAogV0ku
X3RhYkJyb3dzZXJTaXplRGlkQ2hhbmdlID0gZnVuY3Rpb24oKQpAQCAtMTc2Myw2ICsxODA1LDcg
QEAgV0kuX3NpZGViYXJXaWR0aERpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQogV0kuX3NldHVw
Vmlld0hpZXJhcmNoeSA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcm9vdFZpZXcgPSBXSS5WaWV3
LnJvb3RWaWV3KCk7CisgICAgcm9vdFZpZXcuYWRkU3VidmlldyhXSS50b29sYmFyKTsKICAgICBy
b290Vmlldy5hZGRTdWJ2aWV3KFdJLnRhYkJhcik7CiAgICAgcm9vdFZpZXcuYWRkU3VidmlldyhX
SS5uYXZpZ2F0aW9uU2lkZWJhcik7CiAgICAgcm9vdFZpZXcuYWRkU3VidmlldyhXSS50YWJCcm93
c2VyKTsKQEAgLTE3ODgsNiArMTgzMSwyMCBAQCBXSS5fdGFiQnJvd3NlclNlbGVjdGVkVGFiQ29u
dGVudFZpZXdEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKICAgICBXSS5oaWRlU3BsaXRDb25z
b2xlKCk7CiB9OwogCitXSS5fdG9vbGJhck1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQorewor
ICAgIGlmIChldmVudC5jdHJsS2V5KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoV0kuX2Rv
Y2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5SaWdodCB8fCBXSS5fZG9j
a0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChXSS5kb2NrZWQpCisgICAgICAgIFdJLl9kb2NrZWRSZXNpemVyTW91
c2VEb3duKGV2ZW50KTsKKyAgICBlbHNlCisgICAgICAgIFdJLl9tb3ZlV2luZG93TW91c2VEb3du
KGV2ZW50KTsKK307CisKIFdJLl9kb2NrZWRSZXNpemVyTW91c2VEb3duID0gZnVuY3Rpb24oZXZl
bnQpCiB7CiAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQpAQCAt
MTc5Nyw3ICsxODU0LDggQEAgV0kuX2RvY2tlZFJlc2l6ZXJNb3VzZURvd24gPSBmdW5jdGlvbihl
dmVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gT25seSBzdGFydCBkcmFnZ2luZyBpZiB0
aGUgdGFyZ2V0IGlzIG9uZSBvZiB0aGUgZWxlbWVudHMgdGhhdCB3ZSBleHBlY3QuCi0gICAgaWYg
KGV2ZW50LnRhcmdldCAhPT0gV0kuX2RvY2tlZFJlc2l6ZXJFbGVtZW50KQorICAgIGlmIChldmVu
dC50YXJnZXQuaWQgIT09ICJkb2NrZWQtcmVzaXplciIgJiYgIWV2ZW50LnRhcmdldC5jbGFzc0xp
c3QuY29udGFpbnMoInRvb2xiYXIiKSAmJgorICAgICAgICAhZXZlbnQudGFyZ2V0LmNsYXNzTGlz
dC5jb250YWlucygiZmxleGlibGUtc3BhY2UiKSAmJiAhZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5j
b250YWlucygiaXRlbS1zZWN0aW9uIikpCiAgICAgICAgIHJldHVybjsKIAogICAgIGV2ZW50W1dJ
LlBvcG92ZXIuRXZlbnRQcmV2ZW50RGlzbWlzc1N5bWJvbF0gPSB0cnVlOwpAQCAtMTg2NSw2ICsx
OTIzLDU0IEBAIFdJLl9kb2NrZWRSZXNpemVyTW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCiAg
ICAgV0kuZWxlbWVudERyYWdTdGFydChyZXNpemVyRWxlbWVudCwgZG9ja2VkUmVzaXplckRyYWcs
IGRvY2tlZFJlc2l6ZXJEcmFnRW5kLCBldmVudCwgV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBX
SS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b20gPyAicm93LXJlc2l6ZSIgOiAiY29sLXJlc2l6ZSIp
OwogfTsKIAorV0kuX21vdmVXaW5kb3dNb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkKK3sKKyAg
ICBjb25zb2xlLmFzc2VydCghV0kuZG9ja2VkKTsKKworICAgIGlmIChldmVudC5idXR0b24gIT09
IDAgfHwgZXZlbnQuY3RybEtleSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gT25seSBzdGFy
dCBkcmFnZ2luZyBpZiB0aGUgdGFyZ2V0IGlzIG9uZSBvZiB0aGUgZWxlbWVudHMgdGhhdCB3ZSBl
eHBlY3QuCisgICAgaWYgKCFldmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0b29sYmFy
IikgJiYgIWV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImZsZXhpYmxlLXNwYWNlIikg
JiYKKyAgICAgICAgIWV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoIml0ZW0tc2VjdGlv
biIpKQorICAgICAgICByZXR1cm47CisKKyAgICBldmVudFtXSS5Qb3BvdmVyLkV2ZW50UHJldmVu
dERpc21pc3NTeW1ib2xdID0gdHJ1ZTsKKworICAgIGlmIChXSS5QbGF0Zm9ybS5uYW1lID09PSAi
bWFjIikgeworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3RhcnRXaW5kb3dEcmFnKCk7
CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICB2YXIgbGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOworICAgIHZhciBsYXN0U2Ny
ZWVuWSA9IGV2ZW50LnNjcmVlblk7CisKKyAgICBmdW5jdGlvbiB0b29sYmFyRHJhZyhldmVudCkK
KyAgICB7CisgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdmFyIHggPSBldmVudC5zY3JlZW5YIC0gbGFzdFNjcmVlblg7CisgICAg
ICAgIHZhciB5ID0gZXZlbnQuc2NyZWVuWSAtIGxhc3RTY3JlZW5ZOworCisgICAgICAgIEluc3Bl
Y3RvckZyb250ZW5kSG9zdC5tb3ZlV2luZG93QnkoeCwgeSk7CisKKyAgICAgICAgbGFzdFNjcmVl
blggPSBldmVudC5zY3JlZW5YOworICAgICAgICBsYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVlblk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gdG9vbGJhckRyYWdFbmQoZXZlbnQpCisgICAgeworICAg
ICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIFdJLmVsZW1lbnREcmFnRW5kKGV2ZW50KTsKKyAgICB9CisKKyAgICBXSS5lbGVtZW50RHJh
Z1N0YXJ0KGV2ZW50LnRhcmdldCwgdG9vbGJhckRyYWcsIHRvb2xiYXJEcmFnRW5kLCBldmVudCwg
ImRlZmF1bHQiKTsKK307CisKIFdJLl9kb21TdG9yYWdlV2FzSW5zcGVjdGVkID0gZnVuY3Rpb24o
ZXZlbnQpCiB7CiAgICAgV0kuc2hvd1N0b3JhZ2VUYWIoe2luaXRpYXRvckhpbnQ6IFdJLlRhYkJy
b3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5JbnNwZWN0fSk7CkBAIC0xODkzLDcgKzE5OTks
NyBAQCBXSS5fZG9tTm9kZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2ZW50KQogCiBXSS5faW5z
cGVjdE1vZGVTdGF0ZUNoYW5nZWQgPSBmdW5jdGlvbihldmVudCkKIHsKLSAgICBXSS5faW5zcGVj
dE1vZGVUYWJCYXJCdXR0b24uYWN0aXZhdGVkID0gV0kuZG9tTWFuYWdlci5pbnNwZWN0TW9kZUVu
YWJsZWQ7CisgICAgV0kuX2luc3BlY3RNb2RlVG9vbGJhckJ1dHRvbi5hY3RpdmF0ZWQgPSBXSS5k
b21NYW5hZ2VyLmluc3BlY3RNb2RlRW5hYmxlZDsKIH07CiAKIFdJLl90b2dnbGVJbnNwZWN0TW9k
ZSA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMTkwMSw3ICsyMDA3LDcgQEAgV0kuX3RvZ2dsZUluc3Bl
Y3RNb2RlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgV0kuZG9tTWFuYWdlci5pbnNwZWN0TW9kZUVu
YWJsZWQgPSAhV0kuZG9tTWFuYWdlci5pbnNwZWN0TW9kZUVuYWJsZWQ7CiB9OwogCi1XSS5faGFu
ZGxlRGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0b25DbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCitX
SS5faGFuZGxlRGV2aWNlU2V0dGluZ3NUb29sYmFyQnV0dG9uQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2
ZW50KQogewogICAgIGlmIChXSS5fZGV2aWNlU2V0dGluZ3NQb3BvdmVyKSB7CiAgICAgICAgIFdJ
Ll9kZXZpY2VTZXR0aW5nc1BvcG92ZXIuZGlzbWlzcygpOwpAQCAtMTkxMiw3ICsyMDE4LDcgQEAg
V0kuX2hhbmRsZURldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2
ZW50KQogICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKIAogICAgIGZ1
bmN0aW9uIHVwZGF0ZUFjdGl2YXRlZFN0YXRlKCkgewotICAgICAgICBXSS5fZGV2aWNlU2V0dGlu
Z3NUYWJCYXJCdXR0b24uYWN0aXZhdGVkID0gV0kuX292ZXJyaWRlbkRldmljZVVzZXJBZ2VudCB8
fCBXSS5fb3ZlcnJpZGVuRGV2aWNlU2V0dGluZ3Muc2l6ZSA+IDA7CisgICAgICAgIFdJLl9kZXZp
Y2VTZXR0aW5nc1Rvb2xiYXJCdXR0b24uYWN0aXZhdGVkID0gV0kuX292ZXJyaWRlbkRldmljZVVz
ZXJBZ2VudCB8fCBXSS5fb3ZlcnJpZGVuRGV2aWNlU2V0dGluZ3Muc2l6ZSA+IDA7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gYXBwbHlPdmVycmlkZGVuVXNlckFnZW50KHZhbHVlLCBmb3JjZSkgewpA
QCAtMTk5MCwxMCArMjA5NiwxMCBAQCBXSS5faGFuZGxlRGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0
b25DbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgfQogCiAgICAgZnVuY3Rpb24gY2FsY3Vs
YXRlVGFyZ2V0RnJhbWUoKSB7Ci0gICAgICAgIHJldHVybiBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50
UmVjdChXSS5fZGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0b24uZWxlbWVudC5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKSkucGFkKDIpOworICAgICAgICByZXR1cm4gV0kuUmVjdC5yZWN0RnJvbUNsaWVu
dFJlY3QoV0kuX2RldmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbi5lbGVtZW50LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBwcmVmZXJyZWRFZGdlcyA9IFtXSS5S
ZWN0RWRnZS5NQVhfWSwgV0kuUmVjdEVkZ2UuTUFYX1hdOworICAgIGNvbnN0IHByZWZlcnJlZEVk
Z2VzID0gW1dJLlJlY3RFZGdlLk1BWF9ZLCBXSS5SZWN0RWRnZS5NSU5fWCwgV0kuUmVjdEVkZ2Uu
TUFYX1hdOwogCiAgICAgV0kuX2RldmljZVNldHRpbmdzUG9wb3ZlciA9IG5ldyBXSS5Qb3BvdmVy
KFdJKTsKICAgICBXSS5fZGV2aWNlU2V0dGluZ3NQb3BvdmVyLndpbmRvd1Jlc2l6ZUhhbmRsZXIg
PSBmdW5jdGlvbihldmVudCkgewpAQCAtMjIwMCw3ICsyMzA2LDcgQEAgV0kuX3JlbG9hZFBhZ2VG
cm9tT3JpZ2luID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgdGFyZ2V0LlBhZ2VBZ2VudC5yZWxvYWQu
aW52b2tlKHtpZ25vcmVDYWNoZTogdHJ1ZX0pOwogfTsKIAotV0kuX3JlbG9hZFRhYkJhckJ1dHRv
bkNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKK1dJLl9yZWxvYWRUb29sYmFyQnV0dG9uQ2xpY2tl
ZCA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZEhvc3QuaW5z
cGVjdGlvbkxldmVsID4gMSkgewogICAgICAgICBXSS5fcmVsb2FkSW5zcGVjdGVkSW5zcGVjdG9y
KCk7CkBAIC0yMjEyLDEwNiArMjMxOCwyOSBAQCBXSS5fcmVsb2FkVGFiQmFyQnV0dG9uQ2xpY2tl
ZCA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIHRhcmdldC5QYWdlQWdlbnQucmVsb2FkLmludm9rZSh7
aWdub3JlQ2FjaGU6IFdJLm1vZGlmaWVyS2V5cy5zaGlmdEtleX0pOwogfTsKIAotV0kuX3VwZGF0
ZVJlbG9hZFRhYkJhckJ1dHRvbiA9IGZ1bmN0aW9uKCkKK1dJLl91cGRhdGVSZWxvYWRUb29sYmFy
QnV0dG9uID0gZnVuY3Rpb24oKQogewotICAgIGlmICghV0kuX3JlbG9hZFRhYkJhckJ1dHRvbikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgV0kuX3JlbG9hZFRhYkJhckJ1dHRvbi5oaWRkZW4gPSAh
SW5zcGVjdG9yQmFja2VuZC5oYXNEb21haW4oIlBhZ2UiKTsKLSAgICBXSS5fdXBkYXRlVGFiQmFy
RGl2aWRlcnMoKTsKKyAgICBXSS5fcmVsb2FkVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSAhSW5zcGVj
dG9yQmFja2VuZC5oYXNEb21haW4oIlBhZ2UiKTsKIH07CiAKLVdJLl91cGRhdGVEb3dubG9hZFRh
YkJhckJ1dHRvbiA9IGZ1bmN0aW9uKCkKK1dJLl91cGRhdGVEb3dubG9hZFRvb2xiYXJCdXR0b24g
PSBmdW5jdGlvbigpCiB7Ci0gICAgaWYgKCFXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24pCi0gICAg
ICAgIHJldHVybjsKLQogICAgIGlmICghSW5zcGVjdG9yQmFja2VuZC5oYXNEb21haW4oIlBhZ2Ui
KSkgewotICAgICAgICBXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAg
ICAgICAgV0kuX3VwZGF0ZVRhYkJhckRpdmlkZXJzKCk7CisgICAgICAgIFdJLl9kb3dubG9hZFRv
b2xiYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGlmIChXSS5fZG93bmxvYWRpbmdQYWdlKSB7Ci0gICAgICAgIFdJLl9kb3dubG9hZFRhYkJhckJ1
dHRvbi5lbmFibGVkID0gZmFsc2U7CisgICAgICAgIFdJLl9kb3dubG9hZFRvb2xiYXJCdXR0b24u
ZW5hYmxlZCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV0kuX2Rvd25s
b2FkVGFiQmFyQnV0dG9uLmVuYWJsZWQgPSBXSS5jYW5BcmNoaXZlTWFpbkZyYW1lKCk7Ci19Owot
Ci1XSS5fdXBkYXRlSW5zcGVjdE1vZGVUYWJCYXJCdXR0b24gPSBmdW5jdGlvbigpCi17Ci0gICAg
V0kuX2luc3BlY3RNb2RlVGFiQmFyQnV0dG9uLmhpZGRlbiA9ICFJbnNwZWN0b3JCYWNrZW5kLmhh
c0RvbWFpbigiRE9NIik7Ci0gICAgV0kuX3VwZGF0ZVRhYkJhckRpdmlkZXJzKCk7Ci19OwotCi1X
SS5fdXBkYXRlVGFiQmFyRGl2aWRlcnMgPSBmdW5jdGlvbigpCi17Ci0gICAgbGV0IGNsb3NlSGlk
ZGVuID0gV0kuX2Nsb3NlVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgZG9ja1RvU2lkZUhp
ZGRlbiA9IFdJLl9kb2NrVG9TaWRlVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgZG9ja0Jv
dHRvbUhpZGRlbiA9IFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQg
dW5kb2NrSGlkZGVuID0gV0kuX3VuZG9ja1RhYkJhckJ1dHRvbi5oaWRkZW47Ci0KLSAgICBsZXQg
aW5zcGVjdE1vZGVIaWRkZW4gPSBXSS5faW5zcGVjdE1vZGVUYWJCYXJCdXR0b24uaGlkZGVuOwot
ICAgIGxldCBkZXZpY2VTZXR0aW5nc0hpZGRlbiA9IFdJLl9kZXZpY2VTZXR0aW5nc1RhYkJhckJ1
dHRvbiAmJiBXSS5fZGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0b24uaGlkZGVuOwotICAgIGxldCBy
ZWxvYWRIaWRkZW4gPSBXSS5fcmVsb2FkVGFiQmFyQnV0dG9uICYmIFdJLl9yZWxvYWRUYWJCYXJC
dXR0b24uaGlkZGVuOwotICAgIGxldCBkb3dubG9hZEhpZGRlbiA9IFdJLl9kb3dubG9hZFRhYkJh
ckJ1dHRvbiAmJiBXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24uaGlkZGVuOwotCi0gICAgbGV0IHdh
cm5pbmdzSGlkZGVuID0gV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5oaWRkZW47Ci0g
ICAgbGV0IGVycm9yc0hpZGRlbiA9IFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLmhpZGRl
bjsKLQotICAgIC8vIEhpZGUgdGhlIGRpdmlkZXIgaWYgZXZlcnl0aGluZyB0byB0aGUgbGVmdCBp
cyBoaWRkZW4gT1IgaWYgZXZlcnl0aGluZyB0byB0aGUgcmlnaHQgaXMgaGlkZGVuLgotICAgIFdJ
Ll9kb2NrRGl2aWRlclRhYkJhck5hdmlnYXRpb25JdGVtLmhpZGRlbiA9IChjbG9zZUhpZGRlbiAm
JiBkb2NrVG9TaWRlSGlkZGVuICYmIGRvY2tCb3R0b21IaWRkZW4gJiYgdW5kb2NrSGlkZGVuKSB8
fCAoaW5zcGVjdE1vZGVIaWRkZW4gJiYgZGV2aWNlU2V0dGluZ3NIaWRkZW4gJiYgcmVsb2FkSGlk
ZGVuICYmIGRvd25sb2FkSGlkZGVuICYmIHdhcm5pbmdzSGlkZGVuICYmIGVycm9yc0hpZGRlbik7
Ci0gICAgV0kuX2NvbnNvbGVEaXZpZGVyTmF2aWdhdGlvbkl0ZW0uaGlkZGVuID0gKGNsb3NlSGlk
ZGVuICYmIGRvY2tUb1NpZGVIaWRkZW4gJiYgZG9ja0JvdHRvbUhpZGRlbiAmJiB1bmRvY2tIaWRk
ZW4gJiYgaW5zcGVjdE1vZGVIaWRkZW4gJiYgZGV2aWNlU2V0dGluZ3NIaWRkZW4gJiYgcmVsb2Fk
SGlkZGVuICYmIGRvd25sb2FkSGlkZGVuKSB8fCAod2FybmluZ3NIaWRkZW4gJiYgZXJyb3JzSGlk
ZGVuKTsKLQotICAgIFdJLnRhYkJhci5uZWVkc0xheW91dCgpOworICAgIFdJLl9kb3dubG9hZFRv
b2xiYXJCdXR0b24uZW5hYmxlZCA9IFdJLmNhbkFyY2hpdmVNYWluRnJhbWUoKTsKIH07CiAKLVdJ
Ll91cGRhdGVDb25zb2xlVGFiQmFyQnV0dG9ucyA9IGZ1bmN0aW9uKCkKK1dJLl91cGRhdGVJbnNw
ZWN0TW9kZVRvb2xiYXJCdXR0b24gPSBmdW5jdGlvbigpCiB7Ci0gICAgZnVuY3Rpb24gcHVsc2Uo
ZWxlbWVudCkgewotICAgICAgICAvLyBXZSBuZWVkIHRvIGZvcmNlIGEgc3R5bGUgaW52YWxpZGF0
aW9uIGluIHRoZSBjYXNlIHdoZXJlIHdlIGFscmVhZHkKLSAgICAgICAgLy8gd2VyZSBhbmltYXRp
bmcgdGhpcyBpdGVtIGFmdGVyIHdlJ3ZlIHJlbW92ZWQgdGhlIHB1bHNpbmcgQ1NTIGNsYXNzLgot
ICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInB1bHNpbmciKSkgewotICAg
ICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJwdWxzaW5nIik7Ci0gICAgICAgICAg
ICBlbGVtZW50LnJlY2FsY3VsYXRlU3R5bGVzKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsICgpID0+IHsKLSAg
ICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInB1bHNpbmciKTsKLSAgICAg
ICAgICAgIH0sIHtvbmNlOiB0cnVlfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBlbGVtZW50LmNs
YXNzTGlzdC5hZGQoInB1bHNpbmciKTsKLSAgICB9Ci0gICAgbGV0IHdhcm5pbmdDb3VudCA9IFdJ
LmNvbnNvbGVNYW5hZ2VyLndhcm5pbmdDb3VudDsKLSAgICBpZiAod2FybmluZ0NvdW50KSB7Ci0g
ICAgICAgIGxldCB3YXJuaW5nRm9ybWF0ID0gKHdhcm5pbmdDb3VudCA9PT0gMSkgPyBXSS5VSVN0
cmluZygiQ2xpY2sgdG8gc2hvdyAlZCB3YXJuaW5nIGluIHRoZSBDb25zb2xlIikgOiBXSS5VSVN0
cmluZygiQ2xpY2sgdG8gc2hvdyAlZCB3YXJuaW5ncyBpbiB0aGUgQ29uc29sZSIpOwotICAgICAg
ICBXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9uLnRvb2x0aXAgPSB3YXJuaW5nRm9ybWF0
LmZvcm1hdCh3YXJuaW5nQ291bnQpOwotICAgICAgICBXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFy
QnV0dG9uLmhpZGRlbiA9IGZhbHNlOwotCi0gICAgICAgIGlmICh3YXJuaW5nQ291bnQgIT09IFdJ
Ll9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24uX19sYXN0V2FybmluZ0NvdW50KQotICAgICAg
ICAgICAgcHVsc2UoV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5lbGVtZW50KTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9uLmhpZGRl
biA9IHRydWU7Ci0gICAgfQotCi0gICAgbGV0IGVycm9yQ291bnQgPSBXSS5jb25zb2xlTWFuYWdl
ci5lcnJvckNvdW50OwotICAgIGlmIChlcnJvckNvdW50KSB7Ci0gICAgICAgIGxldCBlcnJvckZv
cm1hdCA9IChlcnJvckNvdW50ID09PSAxKSA/IFdJLlVJU3RyaW5nKCJDbGljayB0byBzaG93ICVk
IGVycm9yIGluIHRoZSBDb25zb2xlIikgOiBXSS5VSVN0cmluZygiQ2xpY2sgdG8gc2hvdyAlZCBl
cnJvcnMgaW4gdGhlIENvbnNvbGUiKTsKLSAgICAgICAgV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJC
dXR0b24udG9vbHRpcCA9IGVycm9yRm9ybWF0LmZvcm1hdChlcnJvckNvdW50KTsKLSAgICAgICAg
V0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0b24uaGlkZGVuID0gZmFsc2U7Ci0KLSAgICAgICAg
aWYgKGVycm9yQ291bnQgIT09IFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLl9fbGFzdEVy
cm9yQ291bnQpCi0gICAgICAgICAgICBwdWxzZShXSS5fY29uc29sZUVycm9yc1RhYkJhckJ1dHRv
bi5lbGVtZW50KTsKLSAgICB9IGVsc2UgewotICAgICAgICBXSS5fY29uc29sZUVycm9yc1RhYkJh
ckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwotICAgIH0KLQotICAgIFdJLl91cGRhdGVUYWJCYXJEaXZp
ZGVycygpOwotCi0gICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5fX2xhc3RXYXJu
aW5nQ291bnQgPSB3YXJuaW5nQ291bnQ7Ci0gICAgV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0
b24uX19sYXN0RXJyb3JDb3VudCA9IGVycm9yQ291bnQ7CisgICAgV0kuX2luc3BlY3RNb2RlVG9v
bGJhckJ1dHRvbi5oaWRkZW4gPSAhSW5zcGVjdG9yQmFja2VuZC5oYXNEb21haW4oIkRPTSIpOwog
fTsKIAogV0kuX3Nob3dDb25zb2xlVGFiID0gZnVuY3Rpb24oZXZlbnQpCkBAIC0yNjY4LDkgKzI2
OTcsMTQgQEAgV0kuc2V0TGF5b3V0RGlyZWN0aW9uID0gZnVuY3Rpb24odmFsdWUpCiAgICAgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LnJlb3BlbigpOwogfTsKIAorV0kuX3Nob3dOZXdUYWJGcm9tU2hv
cnRjdXQgPSBmdW5jdGlvbigpCit7CisgICAgV0kuc2hvd05ld1RhYlRhYih7aW5pdGlhdG9ySGlu
dDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLktleWJvYXJkU2hvcnRjdXR9
KTsKK30KKwogV0kuX3Nob3dUYWJBdEluZGV4RnJvbVNob3J0Y3V0ID0gZnVuY3Rpb24oaSkKIHsK
LSAgICBpZiAoaSA8PSBXSS50YWJCYXIudGFiQ291bnQpIHsKKyAgICBpZiAoaSA8PSBXSS50YWJC
YXIudGFiQmFySXRlbXMubGVuZ3RoKSB7CiAgICAgICAgIFdJLnRhYkJhci5zZWxlY3RUYWJCYXJJ
dGVtKGkgLSAxLCB7CiAgICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRh
Yk5hdmlnYXRpb25Jbml0aWF0b3IuS2V5Ym9hcmRTaG9ydGN1dCwKICAgICAgICAgfSk7CkBAIC0z
MTIwLDEyICszMTU0LDEyIEBAIFdJLnJldmVydERPTUNoYW5nZXMgPSBmdW5jdGlvbihkb21DaGFu
Z2VzKQogV0kuYXJjaGl2ZU1haW5GcmFtZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXSS5fZG93bmxv
YWRpbmdQYWdlID0gdHJ1ZTsKLSAgICBXSS5fdXBkYXRlRG93bmxvYWRUYWJCYXJCdXR0b24oKTsK
KyAgICBXSS5fdXBkYXRlRG93bmxvYWRUb29sYmFyQnV0dG9uKCk7CiAKICAgICBsZXQgdGFyZ2V0
ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CiAgICAgdGFyZ2V0LlBhZ2VBZ2VudC5hcmNoaXZl
KChlcnJvciwgZGF0YSkgPT4gewogICAgICAgICBXSS5fZG93bmxvYWRpbmdQYWdlID0gZmFsc2U7
Ci0gICAgICAgIFdJLl91cGRhdGVEb3dubG9hZFRhYkJhckJ1dHRvbigpOworICAgICAgICBXSS5f
dXBkYXRlRG93bmxvYWRUb29sYmFyQnV0dG9uKCk7CiAKICAgICAgICAgaWYgKGVycm9yKQogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IDFhZjg3YTgzY2U4ZTY1OTBjZjI5ZmFjZGM4MzE3
MmRhNTM3MTg2YjkuLmQ0YzE1NGQ5NzM5ZjhjZDJkN2U4ZTBmNGU1MWViOGRkOGNmYjY5ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGlu
Zy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRp
bmcuanMKQEAgLTIxNyw2ICsyMTcsNyBAQCBXSS5zZXR0aW5ncyA9IHsKIAogICAgIC8vIEV4cGVy
aW1lbnRhbAogICAgIGV4cGVyaW1lbnRhbEVuYWJsZVByZXZpZXdGZWF0dXJlczogbmV3IFdJLlNl
dHRpbmcoImV4cGVyaW1lbnRhbC1lbmFibGUtcHJldmlldy1mZWF0dXJlcyIsIHRydWUpLAorICAg
IGV4cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhcjogbmV3IFdJLlNldHRpbmcoImV4cGVyaW1lbnRh
bC1lbmFibGUtbmV3LXRhYi1iYXIiLCBmYWxzZSksCiAgICAgZXhwZXJpbWVudGFsRW5hYmxlU3R5
bGVzSnVtcFRvRWZmZWN0aXZlOiBuZXcgV0kuU2V0dGluZygiZXhwZXJpbWVudGFsLXN0eWxlcy1q
dW1wLXRvLWVmZmVjdGl2ZSIsIGZhbHNlKSwKIAogICAgIC8vIFByb3RvY29sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xl
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0NvbnNvbGVNYW5hZ2VyLmpzCmluZGV4IDgyZmJiZjE1NzBjNDk5ZmEzYTIxMTMyMmViNTdl
NTNjZWY2YmE1ZDYuLmQ5MGU5YWFmMzQ0MDQxZmNiMjk0YzY3MGZkNjM4NmUwZWU3MWMyZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NvbnNvbGVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0NvbnNvbGVNYW5hZ2VyLmpzCkBAIC0zMCwxMSArMzAsOCBAQCBXSS5D
b25zb2xlTWFuYWdlciA9IGNsYXNzIENvbnNvbGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgewogICAgICAgICBzdXBlcigpOwogCi0gICAgICAgIHRoaXMuX3dhcm5pbmdDb3VudCA9IDA7
Ci0gICAgICAgIHRoaXMuX2Vycm9yQ291bnQgPSAwOwogICAgICAgICB0aGlzLl9pc3N1ZXMgPSBb
XTsKIAotICAgICAgICB0aGlzLl9sYXN0TWVzc2FnZUxldmVsID0gbnVsbDsKICAgICAgICAgdGhp
cy5fY2xlYXJNZXNzYWdlc1JlcXVlc3RlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9pc05ld1Bh
Z2VPclJlbG9hZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9yZW1vdGVPYmplY3RzVG9SZWxlYXNl
ID0gbnVsbDsKQEAgLTY1LDggKzYyLDYgQEAgV0kuQ29uc29sZU1hbmFnZXIgPSBjbGFzcyBDb25z
b2xlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQg
d2FybmluZ0NvdW50KCkgeyByZXR1cm4gdGhpcy5fd2FybmluZ0NvdW50OyB9Ci0gICAgZ2V0IGVy
cm9yQ291bnQoKSB7IHJldHVybiB0aGlzLl9lcnJvckNvdW50OyB9CiAgICAgZ2V0IGN1c3RvbUxv
Z2dpbmdDaGFubmVscygpIHsgcmV0dXJuIHRoaXMuX2N1c3RvbUxvZ2dpbmdDaGFubmVsczsgfQog
ICAgIGdldCBsb2dDaGFubmVsU291cmNlcygpIHsgcmV0dXJuIHRoaXMuX2xvZ2dpbmdDaGFubmVs
U291cmNlczsgfQogCkBAIC0xMDEsMTEgKzk2LDkgQEAgV0kuQ29uc29sZU1hbmFnZXIgPSBjbGFz
cyBDb25zb2xlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIGxldCBtZXNzYWdl
ID0gbmV3IFdJLkNvbnNvbGVNZXNzYWdlKHRhcmdldCwgc291cmNlLCBsZXZlbCwgdGV4dCwgdHlw
ZSwgdXJsLCBsaW5lLCBjb2x1bW4sIHJlcGVhdENvdW50LCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNl
LCBudWxsKTsKIAotICAgICAgICB0aGlzLl9pbmNyZW1lbnRNZXNzYWdlTGV2ZWxDb3VudChtZXNz
YWdlLmxldmVsLCBtZXNzYWdlLnJlcGVhdENvdW50KTsKLQogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIHtt
ZXNzYWdlfSk7CiAKLSAgICAgICAgaWYgKG1lc3NhZ2UubGV2ZWwgPT09IFdJLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nIHx8IG1lc3NhZ2UubGV2ZWwgPT09IFdJLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcikgeworICAgICAgICBpZiAobWVzc2FnZS5sZXZlbCA9
PT0gIndhcm5pbmciIHx8IG1lc3NhZ2UubGV2ZWwgPT09ICJlcnJvciIpIHsKICAgICAgICAgICAg
IGxldCBpc3N1ZSA9IG5ldyBXSS5Jc3N1ZU1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAgICB0
aGlzLl9pc3N1ZXMucHVzaChpc3N1ZSk7CiAKQEAgLTEyNywxMiArMTIwLDggQEAgV0kuQ29uc29s
ZU1hbmFnZXIgPSBjbGFzcyBDb25zb2xlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICAgICAgLy8gRnJvbnRlbmQgcmVxdWVzdGVkICJjbGVhciBjb25zb2xlIiBhbmQgQmFja2VuZCBz
dWNjZXNzZnVsbHkgY29tcGxldGVkIHRoZSByZXF1ZXN0LgogICAgICAgICAgICAgdGhpcy5fY2xl
YXJNZXNzYWdlc1JlcXVlc3RlZCA9IGZhbHNlOwogCi0gICAgICAgICAgICB0aGlzLl93YXJuaW5n
Q291bnQgPSAwOwotICAgICAgICAgICAgdGhpcy5fZXJyb3JDb3VudCA9IDA7CiAgICAgICAgICAg
ICB0aGlzLl9pc3N1ZXMgPSBbXTsKIAotICAgICAgICAgICAgdGhpcy5fbGFzdE1lc3NhZ2VMZXZl
bCA9IG51bGw7Ci0KICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkNvbnNvbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgLy8gUmVjZWl2ZWQgYW4gdW5yZXF1ZXN0ZWQgY2xlYXIgY29uc29sZSBldmVudC4KQEAg
LTE0NSw4ICsxMzQsNiBAQCBXSS5Db25zb2xlTWFuYWdlciA9IGNsYXNzIENvbnNvbGVNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBtZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkKGNvdW50
KQogICAgIHsKLSAgICAgICAgdGhpcy5faW5jcmVtZW50TWVzc2FnZUxldmVsQ291bnQodGhpcy5f
bGFzdE1lc3NhZ2VMZXZlbCwgMSk7Ci0KICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRV
cGRhdGVkLCB7Y291bnR9KTsKICAgICB9CiAKQEAgLTE4MiwyMCArMTY5LDYgQEAgV0kuQ29uc29s
ZU1hbmFnZXIgPSBjbGFzcyBDb25zb2xlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAg
Ly8gUHJpdmF0ZQogCi0gICAgX2luY3JlbWVudE1lc3NhZ2VMZXZlbENvdW50KGxldmVsLCBjb3Vu
dCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobGV2ZWwpIHsKLSAgICAgICAgY2FzZSBXSS5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZzoKLSAgICAgICAgICAgIHRoaXMuX3dhcm5p
bmdDb3VudCArPSBjb3VudDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdJLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcjoKLSAgICAgICAgICAgIHRoaXMuX2Vycm9y
Q291bnQgKz0gY291bnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuX2xhc3RNZXNzYWdlTGV2ZWwgPSBsZXZlbDsKLSAgICB9Ci0KICAgICBfZGVsYXllZE1l
c3NhZ2VzQ2xlYXJlZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faXNOZXdQYWdlT3JSZWxv
YWQpIHsKQEAgLTIwNSwxMiArMTc4LDggQEAgV0kuQ29uc29sZU1hbmFnZXIgPSBjbGFzcyBDb25z
b2xlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHRoaXMuX3dhcm5pbmdDb3VudCA9IDA7Ci0gICAgICAgIHRoaXMu
X2Vycm9yQ291bnQgPSAwOwogICAgICAgICB0aGlzLl9pc3N1ZXMgPSBbXTsKIAotICAgICAgICB0
aGlzLl9sYXN0TWVzc2FnZUxldmVsID0gbnVsbDsKLQogICAgICAgICAvLyBBIGNvbnNvbGUuY2xl
YXIoKSBvciBjb21tYW5kIGxpbmUgY2xlYXIoKSBoYXBwZW5lZC4KICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVi
dWcvQm9vdHN0cmFwLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVi
dWcvQm9vdHN0cmFwLmpzCmluZGV4IDUwNTNhODI3NjlkY2JiMWFkYjA2NDBkZDc1ZmIxOWM4Yzk3
ZDMwZDguLjYzNzZlMzUxM2M4Mjk4NzhkOWY5ZTQ3ODA3NjYyZWRhMjhhOTdmYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Zy9Cb290c3Ry
YXAuanMKQEAgLTU2LDcgKzU2LDcgQEAgV0kucnVuQm9vdHN0cmFwT3BlcmF0aW9ucyA9IGZ1bmN0
aW9uKCkgewogICAgIGNvbnN0IER1bXBNZXNzYWdlc1N0YXRlID0ge09mZjogIm9mZiIsIEZpbHRl
cmluZzogImZpbHRlcmluZyIsIEV2ZXJ5dGhpbmc6ICJldmVyeXRoaW5nIn07CiAgICAgY29uc3Qg
ZHVtcE1lc3NhZ2VzVG9vbFRpcCA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCJFbmFibGUgZHVtcCBp
bnNwZWN0b3IgbWVzc2FnZXMgdG8gY29uc29sZS5cblNoaWZ0LWNsaWNrIHRvIGR1bXAgYWxsIGlu
c3BlY3RvciBtZXNzYWdlcyB3aXRoIG5vIGZpbHRlcmluZy4iKTsKICAgICBjb25zdCBkdW1wTWVz
c2FnZXNBY3RpdmF0ZWRUb29sVGlwID0gV0kudW5sb2NhbGl6ZWRTdHJpbmcoIkRpc2FibGUgZHVt
cCBpbnNwZWN0b3IgbWVzc2FnZXMgdG8gY29uc29sZSIpOwotICAgIGxldCBkdW1wTWVzc2FnZXNU
YWJCYXJOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVt
KCJkdW1wLW1lc3NhZ2VzIiwgZHVtcE1lc3NhZ2VzVG9vbFRpcCwgZHVtcE1lc3NhZ2VzQWN0aXZh
dGVkVG9vbFRpcCwgIkltYWdlcy9Db25zb2xlLnN2ZyIpOworICAgIGxldCBkdW1wTWVzc2FnZXNU
b29sYmFySXRlbSA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtKCJkdW1wLW1lc3Nh
Z2VzIiwgZHVtcE1lc3NhZ2VzVG9vbFRpcCwgZHVtcE1lc3NhZ2VzQWN0aXZhdGVkVG9vbFRpcCwg
IkltYWdlcy9Db25zb2xlLnN2ZyIpOwogCiAgICAgZnVuY3Rpb24gZHVtcE1lc3NhZ2VzQ3VycmVu
dFN0YXRlKCkgewogICAgICAgICBpZiAoIUluc3BlY3RvckJhY2tlbmQuZHVtcEluc3BlY3RvclBy
b3RvY29sTWVzc2FnZXMpCkBAIC03MiwyNiArNzIsMjcgQEAgV0kucnVuQm9vdHN0cmFwT3BlcmF0
aW9ucyA9IGZ1bmN0aW9uKCkgewogICAgICAgICBjYXNlIER1bXBNZXNzYWdlc1N0YXRlLk9mZjoK
ICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2Fn
ZXMgPSBmYWxzZTsKICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZmlsdGVyTXVsdGlwbGV4
aW5nQmFja2VuZEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSBmYWxzZTsKLSAgICAgICAgICAg
IGR1bXBNZXNzYWdlc1RhYkJhck5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IGZhbHNlOwotICAg
ICAgICAgICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0uZWxlbWVudC5maXJzdENo
aWxkLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJjb2xvciIpOworICAgICAgICAgICAgZHVtcE1lc3Nh
Z2VzVG9vbGJhckl0ZW0uYWN0aXZhdGVkID0gZmFsc2U7CisgICAgICAgICAgICBkdW1wTWVzc2Fn
ZXNUb29sYmFySXRlbS5lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJjb2xvciIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRHVtcE1lc3NhZ2VzU3RhdGUuRmlsdGVyaW5n
OgogICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNz
YWdlcyA9IHRydWU7CiAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmZpbHRlck11bHRpcGxl
eGluZ0JhY2tlbmRJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gdHJ1ZTsKLSAgICAgICAgICAg
IGR1bXBNZXNzYWdlc1RhYkJhck5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IHRydWU7Ci0gICAg
ICAgICAgICBkdW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9uSXRlbS5lbGVtZW50LmZpcnN0Q2hp
bGQuc3R5bGUucmVtb3ZlUHJvcGVydHkoImNvbG9yIik7CisgICAgICAgICAgICBkdW1wTWVzc2Fn
ZXNUb29sYmFySXRlbS5hY3RpdmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgZHVtcE1lc3NhZ2Vz
VG9vbGJhckl0ZW0uZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiY29sb3IiKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIER1bXBNZXNzYWdlc1N0YXRlLkV2ZXJ5dGhpbmc6
CiAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3Nh
Z2VzID0gdHJ1ZTsKICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZmlsdGVyTXVsdGlwbGV4
aW5nQmFja2VuZEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSBmYWxzZTsKLSAgICAgICAgICAg
IGR1bXBNZXNzYWdlc1RhYkJhck5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IHRydWU7Ci0gICAg
ICAgICAgICBkdW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9uSXRlbS5lbGVtZW50LmZpcnN0Q2hp
bGQuc3R5bGUuY29sb3IgPSAicmdiKDE2NCwgNDEsIDE1NCkiOworICAgICAgICAgICAgZHVtcE1l
c3NhZ2VzVG9vbGJhckl0ZW0uYWN0aXZhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGR1bXBNZXNz
YWdlc1Rvb2xiYXJJdGVtLmVsZW1lbnQuc3R5bGUuY29sb3IgPSAicmdiKDE2NCwgNDEsIDE1NCki
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWdub3JlQ2hhbmdlc1Rv
U3RhdGUgPSBmYWxzZTsKICAgICB9CiAKLSAgICBkdW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9u
SXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNr
ZWQsICgpID0+IHsKKyAgICBXSS50b29sYmFyLmFkZFRvb2xiYXJJdGVtKGR1bXBNZXNzYWdlc1Rv
b2xiYXJJdGVtLCBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyUmlnaHQpOworICAgIGR1bXBNZXNz
YWdlc1Rvb2xiYXJJdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RXZlbnQuQ2xpY2tlZCwgKCkgPT4gewogICAgICAgICBsZXQgbmV4dFN0YXRlOwogICAgICAgICBz
d2l0Y2ggKGR1bXBNZXNzYWdlc0N1cnJlbnRTdGF0ZSgpKSB7CiAgICAgICAgIGNhc2UgRHVtcE1l
c3NhZ2VzU3RhdGUuT2ZmOgpAQCAtMTE2LDIxICsxMTcsMTYgQEAgV0kucnVuQm9vdHN0cmFwT3Bl
cmF0aW9ucyA9IGZ1bmN0aW9uKCkgewogICAgIC8vIE5leHQgTGV2ZWwgSW5zcGVjdG9yLgogICAg
IGxldCBpbnNwZWN0aW9uTGV2ZWwgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaW5zcGVjdGlvbkxl
dmVsOwogICAgIGNvbnN0IGluc3BlY3RJbnNwZWN0b3JUb29sVGlwID0gV0kudW5sb2NhbGl6ZWRT
dHJpbmcoIk9wZW4gV2ViIEluc3BlY3RvciBbJWRdIikuZm9ybWF0KGluc3BlY3Rpb25MZXZlbCAr
IDEpOwotICAgIGxldCBpbnNwZWN0SW5zcGVjdG9yVGFiQmFyTmF2aWdhdGlvbkl0ZW0gPSBuZXcg
V0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImluc3BlY3QtaW5zcGVjdG9yIiwgaW5zcGVjdEluc3Bl
Y3RvclRvb2xUaXApOwotICAgIGluc3BlY3RJbnNwZWN0b3JUYWJCYXJOYXZpZ2F0aW9uSXRlbS5l
bGVtZW50LnRleHRDb250ZW50ID0gaW5zcGVjdGlvbkxldmVsICsgMTsKLSAgICBpbnNwZWN0SW5z
cGVjdG9yVGFiQmFyTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCAoKSA9PiB7CisgICAgbGV0IGluc3BlY3RJbnNwZWN0
b3JUb29sYmFySXRlbSA9IG5ldyBXSS5CdXR0b25Ub29sYmFySXRlbSgiaW5zcGVjdC1pbnNwZWN0
b3IiLCBpbnNwZWN0SW5zcGVjdG9yVG9vbFRpcCk7CisgICAgV0kudG9vbGJhci5hZGRUb29sYmFy
SXRlbShpbnNwZWN0SW5zcGVjdG9yVG9vbGJhckl0ZW0sIFdJLlRvb2xiYXIuU2VjdGlvbi5DZW50
ZXJSaWdodCk7CisgICAgaW5zcGVjdEluc3BlY3RvclRvb2xiYXJJdGVtLmVsZW1lbnQudGV4dENv
bnRlbnQgPSBpbnNwZWN0aW9uTGV2ZWwgKyAxOworICAgIGluc3BlY3RJbnNwZWN0b3JUb29sYmFy
SXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNr
ZWQsICgpID0+IHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmluc3BlY3RJbnNwZWN0
b3IoKTsKICAgICB9KTsKIAotICAgIGxldCBncm91cE5hdmlnYXRpb25JdGVtID0gbmV3IFdJLkdy
b3VwTmF2aWdhdGlvbkl0ZW0oWwotICAgICAgICBkdW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9u
SXRlbSwKLSAgICAgICAgaW5zcGVjdEluc3BlY3RvclRhYkJhck5hdmlnYXRpb25JdGVtLAotICAg
IF0pOwotICAgIFdJLnRhYkJhci5hZGROYXZpZ2F0aW9uSXRlbUFmdGVyKGdyb3VwTmF2aWdhdGlv
bkl0ZW0pOwotCiAgICAgZnVuY3Rpb24gdXBkYXRlRGVidWdVSSgpIHsKLSAgICAgICAgZ3JvdXBO
YXZpZ2F0aW9uSXRlbS5oaWRkZW4gPSAhV0kuc2hvd0RlYnVnVUlTZXR0aW5nLnZhbHVlOwotICAg
ICAgICBXSS50YWJCYXIubmVlZHNMYXlvdXQoKTsKKyAgICAgICAgZHVtcE1lc3NhZ2VzVG9vbGJh
ckl0ZW0uaGlkZGVuID0gIVdJLnNob3dEZWJ1Z1VJU2V0dGluZy52YWx1ZTsKKyAgICAgICAgaW5z
cGVjdEluc3BlY3RvclRvb2xiYXJJdGVtLmhpZGRlbiA9ICFXSS5zaG93RGVidWdVSVNldHRpbmcu
dmFsdWU7CiAgICAgfQogCiAgICAgV0kuc2hvd0RlYnVnVUlTZXR0aW5nLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCAoKSA9PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiLnN2ZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9OZXdUYWIuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ4YzZmMjI1YmFhM2ZkMjBlM2E4NmI0MDU0MWEyMDQ1ZDE4NzY3Y2QKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiLnN2
ZwpAQCAtMCwwICsxLDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+
Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
LS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InJvb3QiIHZl
cnNpb249IjEuMSIgdmlld0JveD0iMCAwIDE2IDE2Ij4KKyAgICA8cmVjdCBmaWxsPSJub25lIiBz
dHJva2U9ImN1cnJlbnRDb2xvciIgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIxNSIgaGVpZ2h0PSIx
NSIgcng9IjIiLz4KKyAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIg
ZD0iTSA4IDMgTCA4IDEzIE0gMyA4IEwgMTMgOCIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiUGx1cy5zdmcgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiUGx1cy5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjYxNmE4YTQyMjczMmI0M2E4NzY1ZTFhYjBhY2M5NGFkMGY2ZWUyYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdl
cy9OZXdUYWJQbHVzLnN2ZwpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgaWQ9InJvb3QiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDE1IDE1Ij4KKyAgICA8cGF0
aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTSA3LjUgMiBWIDEzIE0gMiA3
LjUgSCAxMyIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9JbWFnZXMvT3JpZ2luLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0ltYWdlcy9PcmlnaW4uc3ZnCmluZGV4IGY2ODUzZWI1NGUwYmE1ODZkNmRkYjI0
YWNmZTA3ODJlNmRmNGVhZmIuLjUwM2RjMjViZTE2YTFjNTYyYjE3NWQ4NGQyM2ViMjdkYTNkNzdl
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdl
cy9PcmlnaW4uc3ZnCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9PcmlnaW4uc3ZnCkBAIC0xLDYgKzEsNiBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0idXRmLTgiPz4KIDwhLS0gQ29weXJpZ2h0IMKpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLiAtLT4KLTxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiBpZD0icm9vdCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNjQgNjQiPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAw
IDY0IDY0Ij4KICAgICA8ZGVmcz4KICAgICAgICAgPHJhZGlhbEdyYWRpZW50IGlkPSJncmFkaWVu
dCIgY3g9IjU4LjYlIiBjeT0iMjcuNzQlIiBmeD0iNTguNiUiIGZ5PSIyNy43NCUiIHI9IjU3LjUl
IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAuNTksIDAuMjgpLCByb3RhdGUoOTguNjEp
LCBzY2FsZSgxLCAwLjk4KSwgdHJhbnNsYXRlKC0wLjU5LCAtMC4yOCkiPgogICAgICAgICAgICAg
PHN0b3Agc3RvcC1jb2xvcj0icmdiKDE2OCwgMTcxLCAxODIpIiBvZmZzZXQ9IjAlIi8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvU2VhcmNo
UmVzdWx0cy5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
U2VhcmNoUmVzdWx0cy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA4MmMyNDZiZjc3ZTlhMDc3YTU4OTU1NGUy
YzIyYzAwZWIyZWU4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0ltYWdlcy9TZWFyY2hSZXN1bHRzLnN2ZwpAQCAtMCwwICsxLDcgQEAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InJvb3QiIHZlcnNpb249IjEuMSIgdmlld0JveD0i
MCAwIDE2IDE2Ij4KKyAgICA8cmVjdCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIg
eD0iMC41IiB5PSIwLjUiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgcng9IjIiLz4KKyAgICA8Y2ly
Y2xlIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBjeD0iNyIgY3k9IjciIHI9IjMi
Lz4KKyAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTSA5LjUg
OS41IEwgMTIuNSAxMi41Ii8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Tb3VyY2VzUGF1c2VkLnN2ZyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Tb3VyY2VzUGF1c2VkLnN2ZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTliYzU0NzJlY2FlMTBlZDkyNjI4MTcyNTVhNzhkNTE5
ZThhYjI4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvU291cmNlc1BhdXNlZC5z
dmcKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9IlVURi04Ij8+Ci08IS0tIENvcHlyaWdodCDCqSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gLS0+Ci08c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgaWQ9InJvb3QiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDE2IDE2Ij4KLSAgICA8cGF0
aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTSA3LjcgMTQuNSAyLjUgMTQu
NSAyLjUgMS41IDkuNSAxLjUgMTMuNSA1LjUgMTMuNSA4LjgiLz4KLSAgICA8cGF0aCBmaWxsPSJj
dXJyZW50Q29sb3IiIGQ9Ik0gOS4wIDMuMCBMIDkuMCA2LjAgTCAxMi4wIDYuMCBaIi8+Ci0gICAg
PGNpcmNsZSBmaWxsPSJub25lIiBjeD0iMTAuNSIgY3k9IjExLjUiIHI9IjQiIHN0cm9rZT0iY3Vy
cmVudENvbG9yIi8+Ci0gICAgPHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gOS41IDku
NSBMIDkuNSAxMy41IE0gMTEuNSA5LjUgTCAxMS41IDEzLjUiLz4KLTwvc3ZnPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDEzZjQyM2FkZmY1
YjRjYWM2ZmEzNDUzYzU2ZGQxZGY4YzUwZTUzYWYuLjQ5ZDE4MDMzYmRiNzczOWM5M2VmZmZjYmZm
MjhlYTI2NGQ2OWM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwKQEAgLTQ3LDYgKzQ3LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5jc3MiPgogICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyI+
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9CdXR0b25OYXZpZ2F0aW9u
SXRlbS5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQnV0dG9u
VG9vbGJhckl0ZW0uY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L0NQVVRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvQ1BVVGltZWxpbmVWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9DUFVVc2FnZUNvbWJpbmVkVmlldy5jc3MiPgpAQCAtNzksNiAr
ODAsNyBAQAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ29udGVudEJy
b3dzZXJUYWJDb250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iVmlld3MvQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9IlZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uY3NzIj4KICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRE9NQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9E
T01FdmVudHNCcmVha2Rvd25WaWV3LmNzcyI+CkBAIC04OCw5ICs5MCwxMiBAQAogICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmNzcyI+
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9ET01UcmVlQ29udGVudFZp
ZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RPTVRyZWVP
dXRsaW5lLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9EYXNo
Ym9hcmRDb250YWluZXJWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9EYXRhR3JpZC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvRGF0YWJhc2VDb250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmNzcyI+CisgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuY3NzIj4K
KyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RlZmF1bHREYXNoYm9hcmRW
aWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9EZXRhaWxz
U2VjdGlvbi5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGl2
aWRlck5hdmlnYXRpb25JdGVtLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9Ecm9wWm9uZVZpZXcuY3NzIj4KQEAgLTE1MSw2ICsxNTYsNyBAQAogICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL05ldHdvcmtUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGguY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL05ldHdvcmtUaW1lbGluZVZpZXcuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9PYmplY3RQcmV2aWV3Vmlldy5jc3MiPgogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVu
dC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvT2JqZWN0VHJl
ZU1hcEVudHJ5VHJlZUVsZW1lbnQuY3NzIj4KQEAgLTIzMSw2ICsyMzcsNyBAQAogICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVGltZWxpbmVWaWV3LmNz
cyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UaXRsZVZpZXcuY3Nz
Ij4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Rvb2xiYXIuY3NzIj4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1RyZWVFbGVtZW50U3RhdHVz
QnV0dG9uLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UcmVl
T3V0bGluZS5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHlw
ZVRva2VuVmlldy5jc3MiPgpAQCAtMzk1LDcgKzQwMiw5IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9ET01UcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RhdGFi
YXNlT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RhdGFiYXNl
VGFibGVPYmplY3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRGVidWdn
ZXJEYXNoYm9hcmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRGVidWdn
ZXJEYXRhLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RlZmF1bHREYXNo
Ym9hcmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRXZlbnRCcmVha3Bv
aW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0V4ZWN1dGlvbkNvbnRl
eHQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRXhlY3V0aW9uQ29udGV4
dExpc3QuanMiPjwvc2NyaXB0PgpAQCAtNTI0LDYgKzUzMyw4IEBACiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1RyZWVPdXRsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
VHJlZU91dGxpbmVHcm91cC5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
TGVnYWN5VGFiQmFyLmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9CdXR0
b25OYXZpZ2F0aW9uSXRlbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Rh
dGFiYXNlVXNlclF1ZXJ5Vmlld0Jhc2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9EYXRhYmFzZVVzZXJRdWVyeUVycm9yVmlldy5qcyI+PC9zY3JpcHQ+CkBAIC01NDYsNiAr
NTU3LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRm9sZGVyaXplZFRyZWVFbGVtZW50Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTmV0d29ya0RldGFpbFZpZXcuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9OZXdUYWJDb250ZW50Vmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVs
ZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Tb3VyY2VDb2RlVHJl
ZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9TdG9yYWdlVHJl
ZUVsZW1lbnQuanMiPjwvc2NyaXB0PgpAQCAtNTg3LDYgKzU5OSw3IEBACiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0xvY2FsUmVtb3RlT2JqZWN0Q29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogCiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL0FjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVt
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQW5pbWF0aW9uQ29sbGVjdGlv
bkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQW5pbWF0
aW9uQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Bbmlt
YXRpb25EZXRhaWxzU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KQEAgLTYwNSw2ICs2MTgsNyBA
QAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9CdXR0b25Ub29sYmFySXRlbS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NQVVRpbWVsaW5lT3ZlcnZpZXdH
cmFwaC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NQVVRpbWVsaW5lVmll
dy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NQVVVzYWdlQ29tYmluZWRW
aWV3LmpzIj48L3NjcmlwdD4KQEAgLTY0MCw2ICs2NTQsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NvbnRleHRNZW51LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
Q29udGV4dE1lbnVVdGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Db250cm9sVG9vbGJhckl0ZW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgpAQCAt
NjUzLDExICs2NjgsMTUgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRE9NVHJlZUVsZW1lbnRQ
YXRoQ29tcG9uZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRE9NVHJl
ZU91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9ET01UcmVlVXBk
YXRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Rhc2hib2FyZENvbnRh
aW5lclZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXNoYm9hcmRW
aWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGF0YWJhc2VDb250ZW50
Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlSG9zdFRy
ZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGF0YWJhc2VU
YWJsZUNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGF0
YWJhc2VUYWJsZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvRGF0YWJhc2VUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvRHJvcFpvbmVWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvRWRpdGFibGVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgpAQCAtODMxLDYgKzg1MCw3
IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RpbWVsaW5lUnVsZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UaXRsZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9Ub2dnbGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Rvb2xiYXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1R5cGVUb2tlblZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9UeXBlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgpAQCAtOTExLDcgKzkzMSw3
IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImRvY2tlZC1yZXNpemVyIj48L2Rpdj4KLTxk
aXYgaWQ9InVuZG9ja2VkLXRpdGxlLWFyZWEiPjwvZGl2PgorPGRpdiBpZD0idG9vbGJhciI+PC9k
aXY+CiA8ZGl2IGlkPSJ0YWItYmFyIj48L2Rpdj4KIDxkaXYgaWQ9Im1haW4iPgogICAgIDxkaXYg
aWQ9ImNvbnRlbnQiPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFzaGJvYXJkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFzaGJvYXJkLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0
MTFiMTBmYmUzMTdkNWMzNjJlNzE1MTQwNzQxNDA2NjZlNzY1NWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVidWdnZXJEYXNo
Ym9hcmQuanMKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkRlYnVnZ2VyRGFzaGJv
YXJkID0gY2xhc3MgRGVidWdnZXJEYXNoYm9hcmQKK3sKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJv
YXJkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM4Y2I5ZjU2MzZkNDBlMzljN2UzOTJlYTczZmE1ZjUwMTVkMTI2
NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcwpAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitXSS5EZWZhdWx0RGFzaGJvYXJkID0gY2xhc3MgRGVmYXVsdERh
c2hib2FyZCBleHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fd2FpdGluZ0ZvckZpcnN0TWFpblJlc291
cmNlVG9TdGFydFRyYWNraW5nU2l6ZSA9IHRydWU7CisKKyAgICAgICAgLy8gTmVjZXNzYXJ5IGV2
ZW50IHJlcXVpcmVkIHRvIHRyYWNrIHBhZ2UgbG9hZCB0aW1lIGFuZCByZXNvdXJjZSBzaXplcy4K
KyAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVz
b3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisgICAg
ICAgIFdJLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRpbWVsaW5lTWFuYWdl
ci5FdmVudC5DYXB0dXJpbmdTdGF0ZUNoYW5nZWQsIHRoaXMuX2hhbmRsZVRpbWVsaW5lQ2FwdHVy
aW5nU3RhdGVDaGFuZ2VkLCB0aGlzKTsKKworICAgICAgICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJl
cXVpcmVkIHRvIHRyYWNrIGxvYWQgb2YgcmVzb3VyY2VzLgorICAgICAgICBXSS5GcmFtZS5hZGRF
dmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQsIHRoaXMuX3Jlc291
cmNlV2FzQWRkZWQsIHRoaXMpOworICAgICAgICBXSS5UYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihX
SS5UYXJnZXQuRXZlbnQuUmVzb3VyY2VBZGRlZCwgdGhpcy5fcmVzb3VyY2VXYXNBZGRlZCwgdGhp
cyk7CisgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29y
a01hbmFnZXIuRXZlbnQuRnJhbWVXYXNBZGRlZCwgdGhpcy5fZnJhbWVXYXNBZGRlZCwgdGhpcyk7
CisKKyAgICAgICAgLy8gTmVjZXNzYXJ5IGV2ZW50cyByZXF1aXJlZCB0byB0cmFjayBjb25zb2xl
IG1lc3NhZ2VzLgorICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkNvbnNvbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX2NvbnNvbGVXYXNDbGVhcmVkLCB0
aGlzKTsKKyAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25z
b2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQs
IHRoaXMpOworICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhp
cy5fY29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZCwgdGhpcyk7CisKKyAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgd29ya2luZyBhcm91bmQgdGhlIG9yZGVyIG9mIGV2ZW50cy4gTm9ybWFsIHBhZ2Ug
bmF2aWdhdGlvbgorICAgICAgICAvLyB0cmlnZ2VycyBhIE1haW5SZXNvdXJjZSBjaGFuZ2UgYW5k
IHRoZW4gYSBNYWluRnJhbWUgY2hhbmdlLiBQYWdlIFRyYW5zaXRpb24KKyAgICAgICAgLy8gdHJp
Z2dlcnMgYSBNYWluRnJhbWUgY2hhbmdlIHRoZW4gYSBNYWluUmVzb3VyY2UgY2hhbmdlLgorICAg
ICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCA9IGZhbHNlOworCisgICAgICAgIFdJ
Lm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXSS5Ob3RpZmljYXRpb24uVHJhbnNpdGlv
blBhZ2VUYXJnZXQsIHRoaXMuX3RyYW5zaXRpb25QYWdlVGFyZ2V0LCB0aGlzKTsKKworICAgICAg
ICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IDA7CisgICAgICAgIHRoaXMuX3Jlc291cmNlc1NpemUg
PSAwOworICAgICAgICB0aGlzLl90aW1lID0gMDsKKyAgICAgICAgdGhpcy5fbG9ncyA9IDA7Cisg
ICAgICAgIHRoaXMuX2Vycm9ycyA9IDA7CisgICAgICAgIHRoaXMuX2lzc3VlcyA9IDA7CisgICAg
fQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgcmVzb3VyY2VzQ291bnQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc0NvdW50OworICAgIH0KKworICAgIHNldCByZXNv
dXJjZXNDb3VudCh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvdW50ID0g
dmFsdWU7CisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBnZXQg
cmVzb3VyY2VzU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzU2l6
ZTsKKyAgICB9CisKKyAgICBzZXQgcmVzb3VyY2VzU2l6ZSh2YWx1ZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX3Jlc291cmNlc1NpemUgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5n
ZSgpOworICAgIH0KKworICAgIGdldCB0aW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll90aW1lOworICAgIH0KKworICAgIHNldCB0aW1lKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhp
cy5fdGltZSA9IHZhbHVlOworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7CisgICAgfQor
CisgICAgZ2V0IGxvZ3MoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xvZ3M7CisgICAg
fQorCisgICAgc2V0IGxvZ3ModmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9sb2dzID0gdmFs
dWU7CisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBnZXQgZXJy
b3JzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lcnJvcnM7CisgICAgfQorCisgICAg
c2V0IGVycm9ycyh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2Vycm9ycyA9IHZhbHVlOwor
ICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgZ2V0IGlzc3Vlcygp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faXNzdWVzOworICAgIH0KKworICAgIHNldCBp
c3N1ZXModmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9pc3N1ZXMgPSB2YWx1ZTsKKyAgICAg
ICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAg
IF9kYXRhRGlkQ2hhbmdlKCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkRlZmF1bHREYXNoYm9hcmQuRXZlbnQuRGF0YURpZENoYW5nZSk7CisgICAgfQor
CisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKKworICAgICAgICBp
ZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmICghdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQpIHsKKyAgICAgICAgICAg
IHRoaXMuX3RpbWUgPSAwOworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ291bnQgPSAxOwor
ICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzU2l6ZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5G
cmFtZS5tYWluUmVzb3VyY2Uuc2l6ZSB8fCAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgdHJhY2sgcmVzb3VyY2Ugc2l6ZXMgb24gZnJlc2ggbG9hZHMuCisgICAgICAg
IGlmICh0aGlzLl93YWl0aW5nRm9yRmlyc3RNYWluUmVzb3VyY2VUb1N0YXJ0VHJhY2tpbmdTaXpl
KSB7CisgICAgICAgICAgICB0aGlzLl93YWl0aW5nRm9yRmlyc3RNYWluUmVzb3VyY2VUb1N0YXJ0
VHJhY2tpbmdTaXplID0gZmFsc2U7CisgICAgICAgICAgICBXSS5SZXNvdXJjZS5hZGRFdmVudExp
c3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LlNpemVEaWRDaGFuZ2UsIHRoaXMuX3Jlc291cmNlU2l6
ZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hh
bmdlKCk7CisKKyAgICAgICAgaWYgKCF0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkKKyAg
ICAgICAgICAgIHRoaXMuX3N0YXJ0VXBkYXRpbmdUaW1lKCk7CisKKyAgICAgICAgaWYgKHRoaXMu
X3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0KQorICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmlu
Z1BhZ2VUYXJnZXQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBfaGFuZGxlVGltZWxpbmVDYXB0dXJp
bmdTdGF0ZUNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoV0kudGltZWxpbmVNYW5h
Z2VyLmlzQ2FwdHVyaW5nKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gSWYg
cmVjb3JkaW5nIHN0b3BzLCB3ZSBzaG91bGQgc3RvcCB0aGUgdGltZXIgaWYgaXQgaGFzbid0IHN0
b3BwZWQgYWxyZWFkeS4KKyAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nVGltZSgpOworICAgIH0K
KworICAgIF9yZXNvdXJjZVdhc0FkZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgKyt0aGlzLnJl
c291cmNlc0NvdW50OworICAgIH0KKworICAgIF9mcmFtZVdhc0FkZGVkKGV2ZW50KQorICAgIHsK
KyAgICAgICAgKyt0aGlzLnJlc291cmNlc0NvdW50OworICAgIH0KKworICAgIF9yZXNvdXJjZVNp
emVEaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnVybENv
bXBvbmVudHMuc2NoZW1lID09PSAiZGF0YSIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgbGV0IGRlbHRhID0gZXZlbnQudGFyZ2V0LnNpemUgLSBldmVudC5kYXRhLnByZXZpb3VzU2l6
ZTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWlzTmFOKGRlbHRhKSwgIlJlc291cmNlIHNpemUg
Y2hhbmdlIHNob3VsZCBuZXZlciBiZSBOYU4uIik7CisgICAgICAgIHRoaXMucmVzb3VyY2VzU2l6
ZSArPSBkZWx0YTsKKyAgICB9CisKKyAgICBfc3RhcnRVcGRhdGluZ1RpbWUoKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nVGltZSgpOworCisgICAgICAgIHRoaXMudGltZSA9IDA7
CisKKyAgICAgICAgdGhpcy5fdGltZWxpbmVCYXNlVGltZSA9IERhdGUubm93KCk7CisgICAgICAg
IHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5ID0gNTA7CisgICAgICAgIHRoaXMuX3RpbWVJbnRlcnZh
bElkZW50aWZpZXIgPSBzZXRJbnRlcnZhbCh0aGlzLl91cGRhdGVUaW1lLmJpbmQodGhpcyksIHRo
aXMuX3RpbWVJbnRlcnZhbERlbGF5KTsKKyAgICB9CisKKyAgICBfc3RvcFVwZGF0aW5nVGltZSgp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZpZXIpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lSW50ZXJ2
YWxJZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5fdGltZUludGVydmFsSWRlbnRpZmllciA9IHVu
ZGVmaW5lZDsKKyAgICB9CisKKyAgICBfdXBkYXRlVGltZSgpCisgICAgeworICAgICAgICB2YXIg
ZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gdGhpcy5fdGltZWxpbmVCYXNlVGltZTsKKworICAgICAg
ICB2YXIgdGltZUludGVydmFsRGVsYXkgPSB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheTsKKyAgICAg
ICAgaWYgKGR1cmF0aW9uID49IDEwMDApIC8vIDEgc2Vjb25kCisgICAgICAgICAgICB0aW1lSW50
ZXJ2YWxEZWxheSA9IDEwMDsKKyAgICAgICAgZWxzZSBpZiAoZHVyYXRpb24gPj0gNjAwMDApIC8v
IDYwIHNlY29uZHMKKyAgICAgICAgICAgIHRpbWVJbnRlcnZhbERlbGF5ID0gMTAwMDsKKyAgICAg
ICAgZWxzZSBpZiAoZHVyYXRpb24gPj0gMzYwMDAwMCkgLy8gMSBtaW51dGUKKyAgICAgICAgICAg
IHRpbWVJbnRlcnZhbERlbGF5ID0gMTAwMDA7CisKKyAgICAgICAgaWYgKHRpbWVJbnRlcnZhbERl
bGF5ICE9PSB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheSkgeworICAgICAgICAgICAgdGhpcy5fdGlt
ZUludGVydmFsRGVsYXkgPSB0aW1lSW50ZXJ2YWxEZWxheTsKKworICAgICAgICAgICAgY2xlYXJJ
bnRlcnZhbCh0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRoaXMu
X3RpbWVJbnRlcnZhbElkZW50aWZpZXIgPSBzZXRJbnRlcnZhbCh0aGlzLl91cGRhdGVUaW1lLmJp
bmQodGhpcyksIHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5KTsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7CisgICAgICAgIHZh
ciBtYWluRnJhbWVTdGFydFRpbWUgPSBtYWluRnJhbWUubWFpblJlc291cmNlLmZpcnN0VGltZXN0
YW1wOworICAgICAgICB2YXIgbWFpbkZyYW1lTG9hZEV2ZW50VGltZSA9IG1haW5GcmFtZS5sb2Fk
RXZlbnRUaW1lc3RhbXA7CisKKyAgICAgICAgaWYgKGlzTmFOKG1haW5GcmFtZVN0YXJ0VGltZSkg
fHwgaXNOYU4obWFpbkZyYW1lTG9hZEV2ZW50VGltZSkpIHsKKyAgICAgICAgICAgIHRoaXMudGlt
ZSA9IGR1cmF0aW9uIC8gMTAwMDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMudGltZSA9IG1haW5GcmFtZUxvYWRFdmVudFRpbWUgLSBtYWluRnJhbWVTdGFy
dFRpbWU7CisKKyAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nVGltZSgpOworICAgIH0KKworICAg
IF9jb25zb2xlTWVzc2FnZUFkZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIG1lc3NhZ2Ug
PSBldmVudC5kYXRhLm1lc3NhZ2U7CisgICAgICAgIHRoaXMuX2xhc3RDb25zb2xlTWVzc2FnZVR5
cGUgPSBtZXNzYWdlLmxldmVsOworICAgICAgICB0aGlzLl9pbmNyZW1lbnRDb25zb2xlTWVzc2Fn
ZVR5cGUobWVzc2FnZS5sZXZlbCwgbWVzc2FnZS5yZXBlYXRDb3VudCk7CisgICAgfQorCisgICAg
X2NvbnNvbGVNZXNzYWdlV2FzUmVwZWF0ZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9p
bmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGUodGhpcy5fbGFzdENvbnNvbGVNZXNzYWdlVHlwZSwg
MSk7CisgICAgfQorCisgICAgX2luY3JlbWVudENvbnNvbGVNZXNzYWdlVHlwZSh0eXBlLCBpbmNy
ZW1lbnQpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOgorICAgICAgICBjYXNlIFdJLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5JbmZvOgorICAgICAgICBjYXNlIFdJLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VMZXZlbC5EZWJ1ZzoKKyAgICAgICAgICAgIHRoaXMubG9ncyArPSBpbmNyZW1lbnQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXSS5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlTGV2ZWwuV2FybmluZzoKKyAgICAgICAgICAgIHRoaXMuaXNzdWVzICs9IGluY3JlbWVudDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdJLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VMZXZlbC5FcnJvcjoKKyAgICAgICAgICAgIHRoaXMuZXJyb3JzICs9IGluY3JlbWVudDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgX2NvbnNvbGVXYXNDbGVh
cmVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fbG9ncyA9IDA7CisgICAgICAgIHRoaXMu
X2lzc3VlcyA9IDA7CisgICAgICAgIHRoaXMuX2Vycm9ycyA9IDA7CisgICAgICAgIHRoaXMuX2Rh
dGFEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBfdHJhbnNpdGlvblBhZ2VUYXJnZXQoKQorICAg
IHsKKyAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQgPSB0cnVlOworCisgICAg
ICAgIHRoaXMuX3RpbWUgPSAwOworICAgICAgICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IDA7Cisg
ICAgICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSAwOworCisgICAgICAgIHRoaXMuX2RhdGFEaWRD
aGFuZ2UoKTsKKyAgICB9Cit9OworCitXSS5EZWZhdWx0RGFzaGJvYXJkLkV2ZW50ID0geworICAg
IERhdGFEaWRDaGFuZ2U6ICJkZWZhdWx0LWRhc2hib2FyZC1kYXRhLWRpZC1jaGFuZ2UiCit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQWN0
aXZhdGVCdXR0b25Ub29sYmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU3
NTQyY2Y0ZTUyN2FmZTQwZjU0NTMzYWFjYTk5NzRhYzA0NTYwNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9u
VG9vbGJhckl0ZW0uanMKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkFj
dGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0gPSBjbGFzcyBBY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVt
IGV4dGVuZHMgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbQoreworICAgIGNvbnN0cnVj
dG9yKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwg
cm9sZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBh
Y3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwgMTYsIDE2LCByb2xlKTsKKyAgICB9Cit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXVkaXRUYWJD
b250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0F1ZGl0VGFiQ29udGVudFZpZXcuanMKaW5kZXggNTMyZDBjM2FlZmU3OWE3MzUyOGZiZmJjYmMy
MTIxNmQ2NjI4ODBmMi4uMjE1ZGJhNTI3Njg2YWY3YjY1ZTM3NWFkMzFmYjFlYTQ4MTI5NjJmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXVk
aXRUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9BdWRpdFRhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNyw5ICsyNyw3IEBAIFdJLkF1
ZGl0VGFiQ29udGVudFZpZXcgPSBjbGFzcyBBdWRpdFRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0ku
Q29udGVudEJyb3dzZXJUYWJDCiB7CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAg
c3VwZXIoQXVkaXRUYWJDb250ZW50Vmlldy50YWJJbmZvKCksIHsKLSAgICAgICAgICAgIG5hdmln
YXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcjogV0kuQXVkaXROYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLAotICAgICAgICB9KTsKKyAgICAgICAgc3VwZXIoImF1ZGl0IiwgWyJhdWRpdCJdLCBXSS5H
ZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhXSS5BdWRpdFRhYkNvbnRlbnRWaWV3LnRhYklu
Zm8oKSksIFdJLkF1ZGl0TmF2aWdhdGlvblNpZGViYXJQYW5lbCk7CiAKICAgICAgICAgdGhpcy5f
c3RhcnRTdG9wU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXSS5LZXli
b2FyZFNob3J0Y3V0LktleS5TcGFjZSwgdGhpcy5faGFuZGxlU3BhY2UuYmluZCh0aGlzKSk7CiAg
ICAgICAgIHRoaXMuX3N0YXJ0U3RvcFNob3J0Y3V0LmltcGxpY2l0bHlQcmV2ZW50c0RlZmF1bHQg
PSBmYWxzZTsKQEAgLTQxLDcgKzM5LDYgQEAgV0kuQXVkaXRUYWJDb250ZW50VmlldyA9IGNsYXNz
IEF1ZGl0VGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlclRhYkMKICAgICBz
dGF0aWMgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWRl
bnRpZmllcjogQXVkaXRUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJ
bWFnZXMvQXVkaXQuc3ZnIiwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiQXVkaXQi
KSwKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmNzcwppbmRleCA4
MTZjY2Q2YjQxYzdjNmVlYzgzNDY1N2FiOThkOWU2NjQ4MzAxMDI4Li4xNDcwYmIyMDYxZDAwZTk3
MzdhNzVlY2I0YzI4ZGU0MzQ1ZWRjYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5jc3MKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uY3NzCkBAIC00MSwxMCArNDEsNiBAQAogICAgIC13ZWJraXQtcGFkZGluZy1zdGFydDogNHB4
OwogfQogCi0udGFiLWJhciA+IC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24uaW1hZ2UtYW5k
LXRleHQgPiBzcGFuIHsKLSAgICBwYWRkaW5nLWJvdHRvbTogMDsKLX0KLQogLm5hdmlnYXRpb24t
YmFyIC5pdGVtLmJ1dHRvbi50ZXh0LW9ubHkgewogICAgIHBhZGRpbmc6IDFweCA4cHggM3B4Owog
ICAgIG1hcmdpbjogMCAycHg7IC8qIFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5n
ZXQgdG90YWxNYXJnaW4gKi8KQEAgLTc4LDI5ICs3NCw4IEBACiAgICAgY29sb3I6IHZhcigtLWds
eXBoLWNvbG9yLWRpc2FibGVkKTsKIH0KIAotLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbiA+
IGltZyB7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiAxMDAlOwotfQotCi0ubmF2aWdh
dGlvbi1iYXIgLml0ZW0uYnV0dG9uLmRpc2FibGVkID4gaW1nIHsKLSAgICBvcGFjaXR5OiAwLjM7
Ci19Ci0KLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFj
dGl2ZSkgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbiA+IGltZyB7Ci0gICAgb3BhY2l0eTog
MC42OwotfQotCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQt
aW5hY3RpdmUpIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24uZGlzYWJsZWQgPiBpbWcgewot
ICAgIG9wYWNpdHk6IDAuMTg7Ci19Ci0KIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRh
cmspIHsKICAgICAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uIHsKICAgICAgICAgY29sb3I6
IHZhcigtLXRleHQtY29sb3Itc2Vjb25kYXJ5KTsKICAgICB9Ci0KLSAgICAubmF2aWdhdGlvbi1i
YXIgLml0ZW0uYnV0dG9uLmRpc2FibGVkID4gaW1nIHsKLSAgICAgICAgZmlsdGVyOiBpbnZlcnQo
KTsKLSAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzCmluZGV4IDFiNzBk
NDZmOTMzNTI2NjM4ZmM1NmNhYzQ1MWFkZTY5ODZlMmViMjYuLjBhNzM3MmNlNzhkM2UxZDM1MTE2
MTkzOTQyY2FhNDJjZjU0NWZjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmpz
CkBAIC00OCw4ICs0OCw2IEBAIFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtID0gY2xhc3MgQnV0dG9u
TmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uSXRlbQogCiAgICAgICAgIHRoaXMu
YnV0dG9uU3R5bGUgPSB0aGlzLl9pbWFnZSA/IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxl
LkltYWdlIDogV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGUuVGV4dDsKIAotICAgICAgICB0
aGlzLmltYWdlVHlwZSA9IHRoaXMuX2ltYWdlID8gV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uSW1h
Z2VUeXBlLlNWRyA6IG51bGw7Ci0KICAgICAgICAgaWYgKHRoaXMuYnV0dG9uU3R5bGUgPT09IFdJ
LkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlLkltYWdlKQogICAgICAgICAgICAgdGhpcy50b29s
dGlwID0gdG9vbFRpcE9yTGFiZWw7CiAgICAgfQpAQCAtMTI1LDI3ICsxMjMsNiBAQCBXSS5CdXR0
b25OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIEJ1dHRvbk5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV0ku
TmF2aWdhdGlvbkl0ZW0KICAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci5uZWVk
c0xheW91dCgpOwogICAgIH0KIAotICAgIGdldCBpbWFnZVR5cGUoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2ltYWdlVHlwZTsKLSAgICB9Ci0KLSAgICBzZXQgaW1hZ2VUeXBlKGltYWdl
VHlwZSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFpbWFnZVR5cGUgfHwgT2JqZWN0
LnZhbHVlcyhXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5JbWFnZVR5cGUpLmluY2x1ZGVzKGltYWdl
VHlwZSksIGltYWdlVHlwZSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFpbWFnZVR5cGUgfHwg
KHRoaXMuX2J1dHRvblN0eWxlID09PSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZS5JbWFn
ZSB8fCB0aGlzLl9idXR0b25TdHlsZSA9PT0gV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGUu
SW1hZ2VBbmRUZXh0KSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2ltYWdlVHlwZSA9PT0gaW1hZ2VU
eXBlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2ltYWdlVHlwZSA9IGlt
YWdlVHlwZTsKLQotICAgICAgICB0aGlzLl91cGRhdGUoKTsKLQotICAgICAgICBpZiAodGhpcy5w
YXJlbnROYXZpZ2F0aW9uQmFyKQotICAgICAgICAgICAgdGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFy
Lm5lZWRzTGF5b3V0KCk7Ci0gICAgfQotCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBnZXQgdG90
YWxNYXJnaW4oKQpAQCAtMTc3LDIyICsxNTQsMTAgQEAgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0g
PSBjbGFzcyBCdXR0b25OYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdJLk5hdmlnYXRpb25JdGVtCiAg
ICAgICAgIGlmICh0aGlzLl9idXR0b25TdHlsZSA9PT0gV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
U3R5bGUuVGV4dCkKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMu
X2xhYmVsOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN3aXRjaCAodGhpcy5faW1hZ2VU
eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIG51bGw6Ci0gICAgICAgICAgICBjYXNlIFdJLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLkltYWdlVHlwZS5TVkc6IHsKLSAgICAgICAgICAgICAgICBsZXQgZ2x5
cGhFbGVtZW50ID0gV0kuSW1hZ2VVdGlsaXRpZXMudXNlU1ZHU3ltYm9sKHRoaXMuX2ltYWdlLCAi
Z2x5cGgiKTsKLSAgICAgICAgICAgICAgICBnbHlwaEVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlz
Ll9pbWFnZVdpZHRoICsgInB4IjsKLSAgICAgICAgICAgICAgICBnbHlwaEVsZW1lbnQuc3R5bGUu
aGVpZ2h0ID0gdGhpcy5faW1hZ2VIZWlnaHQgKyAicHgiOwotICAgICAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZChnbHlwaEVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjYXNlIFdJLkJ1dHRvbk5hdmlnYXRpb25J
dGVtLkltYWdlVHlwZS5JTUc6IHsKLSAgICAgICAgICAgICAgICBsZXQgaW1nID0gdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKLSAgICAgICAg
ICAgICAgICBpbWcuc3JjID0gdGhpcy5faW1hZ2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgZ2x5cGhFbGVtZW50
ID0gV0kuSW1hZ2VVdGlsaXRpZXMudXNlU1ZHU3ltYm9sKHRoaXMuX2ltYWdlLCAiZ2x5cGgiKTsK
KyAgICAgICAgICAgIGdseXBoRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX2ltYWdlV2lkdGgg
KyAicHgiOworICAgICAgICAgICAgZ2x5cGhFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuX2lt
YWdlSGVpZ2h0ICsgInB4IjsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChn
bHlwaEVsZW1lbnQpOwogCiAgICAgICAgICAgICBpZiAodGhpcy5fYnV0dG9uU3R5bGUgPT09IFdJ
LkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlLkltYWdlQW5kVGV4dCkgewogICAgICAgICAgICAg
ICAgIGxldCBsYWJlbEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpKTsKQEAgLTIxMSw4ICsxNzYsMyBAQCBXSS5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5TdHlsZSA9IHsKICAgICBUZXh0OiAidGV4dC1vbmx5IiwKICAgICBJbWFnZUFu
ZFRleHQ6ICJpbWFnZS1hbmQtdGV4dCIsCiB9OwotCi1XSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5J
bWFnZVR5cGUgPSB7Ci0gICAgU1ZHOiAiaW1hZ2UtdHlwZS1zdmciLAotICAgIElNRzogImltYWdl
LXR5cGUtaW1nIiwKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9CdXR0b25Ub29sYmFySXRlbS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25Ub29sYmFySXRlbS5jc3MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2QxYzZkNjhjNDZiNzNhODNmYWNkNzI5NGI3ZmY0YTk0Njc4ZmFmMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xi
YXJJdGVtLmNzcwpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudG9vbGJhciAu
aXRlbS5idXR0b24geworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAganVzdGlmeS1jb250
ZW50OiBjZW50ZXI7CisKKyAgICBtYXJnaW46IDRweDsKKyAgICBwYWRkaW5nOiAwIDEwcHg7CisK
KyAgICBjb2xvcjogaHNsKDAsIDAlLCA0NSUpOworfQorCisudG9vbGJhciAuaXRlbS5idXR0b246
bm90KC5kaXNhYmxlZCk6YWN0aXZlIHsKKyAgICBjb2xvcjogaHNsKDAsIDAlLCAzMCUpOworfQor
CisudG9vbGJhciAuaXRlbS5idXR0b246bm90KC5kaXNhYmxlZCk6bWF0Y2hlcyg6Zm9jdXMsIC5h
Y3RpdmF0ZS5hY3RpdmF0ZWQpIHsKKyAgICBjb2xvcjogdmFyKC0tZ2x5cGgtY29sb3ItYWN0aXZl
KTsKK30KKworLnRvb2xiYXIgLml0ZW0uYnV0dG9uID4gLmdseXBoIHsKKyAgICB3aWR0aDogMTZw
eDsKKyAgICBoZWlnaHQ6IDE2cHg7Cit9CisKK2JvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFy
IC5pdGVtLmJ1dHRvbiB7CisgICAgb3BhY2l0eTogMC42NTsKK30KKworLnRvb2xiYXIgLml0ZW0u
YnV0dG9uLmRpc2FibGVkIHsKKyAgICBvcGFjaXR5OiAwLjU1ICFpbXBvcnRhbnQ7Cit9CisKK2Jv
ZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5pdGVtLmJ1dHRvbi5kaXNhYmxlZCB7CisgICAg
b3BhY2l0eTogMC4zNSAhaW1wb3J0YW50OworfQorCitAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSB7CisgICAgLnRvb2xiYXIgLml0ZW0uYnV0dG9uIHsKKyAgICAgICAgY29sb3I6
IHZhcigtLWNvbG9yLWJ1dHRvbik7CisgICAgfQorCisgICAgLnRvb2xiYXIgLml0ZW0uYnV0dG9u
Om5vdCguZGlzYWJsZWQpOmFjdGl2ZSB7CisgICAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1idXR0
b24tYWN0aXZlKTsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICAgICAgYmFj
a2dyb3VuZDogdmFyKC0tYnV0dG9uLWJhY2tncm91bmQtY29sb3ItcHJlc3NlZCk7CisgICAgfQor
CisgICAgYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSkgLnRvb2xiYXIgLml0ZW0uYnV0dG9uOm5v
dCguZGlzYWJsZWQpOm1hdGNoZXMoOmZvY3VzLCAuYWN0aXZhdGUuYWN0aXZhdGVkKSA+IC5nbHlw
aCB7CisgICAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjM1KTsKKyAgICB9Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25Ub29s
YmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1
dHRvblRvb2xiYXJJdGVtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNGY2ZDBhMWJiNmZkNmY1NTNiNjRiYjY4
NmMzNTViNTAyMDg3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25Ub29sYmFySXRlbS5qcwpAQCAtMCwwICsxLDMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV0kuQnV0dG9uVG9vbGJhckl0ZW0gPSBjbGFzcyBCdXR0b25U
b29sYmFySXRlbSBleHRlbmRzIFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtCit7CisgICAgY29uc3Ry
dWN0b3IoaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIHJvbGUpCisgICAgeworICAgICAgICBz
dXBlcihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgMTYsIDE2LCByb2xlKTsKKyAgICB9Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29uc29sZVRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29uc29sZVRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IGY2OGE5ZmFjMjdiYjU0
ZjJkZWFhMjA1NTUzYzMyNGU5NWZkZjZiNWEuLjEyNTk4NmE2NmJkMjFlMmEzN2FmNjZkZWM4YTA1
MjcyNzZkYWJhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnNvbGVUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanMKQEAgLTI1
LDE1ICsyNSwxNiBAQAogCiBXSS5Db25zb2xlVGFiQ29udGVudFZpZXcgPSBjbGFzcyBDb25zb2xl
VGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3CiB7
Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCiAgICAgewot
ICAgICAgICBzdXBlcihDb25zb2xlVGFiQ29udGVudFZpZXcudGFiSW5mbygpLCB7ZGlzYWJsZUJh
Y2tGb3J3YXJkOiB0cnVlfSk7CisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRh
YkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuQ29uc29sZVRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7
CisKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAiY29uc29sZSIsICJjb25zb2xlIiwgdGFi
QmFySXRlbSwgbnVsbCwgbnVsbCwgdHJ1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHRhYkluZm8o
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50aWZpZXI6IENvbnNv
bGVUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvQ29uc29s
ZS5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJDb25zb2xlIiksCiAgICAg
ICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5qcwpp
bmRleCBiYzNkNTE4YWZmOWU5MWJmNzFhYTVkYTUzYWViYzRiZjA1NDFiNDJmLi4yZDc1YzBkYTY2
NDBiMzc1Yjg0YmI0MmYxMzY4MTkxYTQ4ZDk2NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
bnRCcm93c2VyVGFiQ29udGVudFZpZXcuanMKQEAgLTI1LDE5ICsyNSwyNSBAQAogCiBXSS5Db250
ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudEJyb3dzZXJUYWJDb250ZW50
VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc3RydWN0b3IodGFiSW5m
bywge25hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciwgZGV0YWlsc1NpZGViYXJQYW5l
bENvbnN0cnVjdG9ycywgZGlzYWJsZUJhY2tGb3J3YXJkLCBmbGV4aWJsZU5hdmlnYXRpb25JdGVt
fSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIHN0eWxlQ2xhc3NOYW1lcywgdGFi
QmFySXRlbSwgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJh
clBhbmVsQ29uc3RydWN0b3JzLCBkaXNhYmxlQmFja0ZvcndhcmQsIGZsZXhpYmxlTmF2aWdhdGlv
bkl0ZW0pCiAgICAgewotICAgICAgICBzdXBlcih0YWJJbmZvLCB7bmF2aWdhdGlvblNpZGViYXJQ
YW5lbENvbnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzfSk7CisgICAg
ICAgIGlmICh0eXBlb2Ygc3R5bGVDbGFzc05hbWVzID09PSAic3RyaW5nIikKKyAgICAgICAgICAg
IHN0eWxlQ2xhc3NOYW1lcyA9IFtzdHlsZUNsYXNzTmFtZXNdOwogCi0gICAgICAgIGNvbnN0IGNv
bnRlbnRCcm93c2VyRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIGNvbnN0IGRpc2FibGVGaW5kQmFu
bmVyID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyID0gbmV3IFdJLkNvbnRl
bnRCcm93c2VyKGNvbnRlbnRCcm93c2VyRWxlbWVudCwgdGhpcywgZGlzYWJsZUJhY2tGb3J3YXJk
LCBkaXNhYmxlRmluZEJhbm5lciwgZmxleGlibGVOYXZpZ2F0aW9uSXRlbSk7CisgICAgICAgIHN0
eWxlQ2xhc3NOYW1lcy5wdXNoKCJjb250ZW50LWJyb3dzZXIiKTsKKworICAgICAgICB2YXIgY29u
dGVudEJyb3dzZXIgPSBuZXcgV0kuQ29udGVudEJyb3dzZXIobnVsbCwgbnVsbCwgZGlzYWJsZUJh
Y2tGb3J3YXJkLCBmYWxzZSwgZmxleGlibGVOYXZpZ2F0aW9uSXRlbSk7CisKKyAgICAgICAgc3Vw
ZXIoaWRlbnRpZmllciwgc3R5bGVDbGFzc05hbWVzLCB0YWJCYXJJdGVtLCBuYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsQ29uc3RydWN0b3IsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMpOwor
CisgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyID0gY29udGVudEJyb3dzZXI7CisgICAgICAg
IHRoaXMuX2NvbnRlbnRCcm93c2VyLmRlbGVnYXRlID0gdGhpczsKIAogICAgICAgICB0aGlzLl9p
Z25vcmVOYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29sbGFwc2VkRXZlbnQgPSBmYWxzZTsKICAgICAg
ICAgdGhpcy5faWdub3JlRGV0YWlsc1NpZGViYXJQYW5lbENvbGxhcHNlZEV2ZW50ID0gZmFsc2U7
CiAgICAgICAgIHRoaXMuX2lnbm9yZURldGFpbHNTaWRlYmFyUGFuZWxTZWxlY3RlZEV2ZW50ID0g
ZmFsc2U7CiAKLSAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkRGV0YWlsc1NpZGViYXJQYW5lbFNl
dHRpbmcgPSBuZXcgV0kuU2V0dGluZyh0aGlzLl9pZGVudGlmaWVyICsgIi1sYXN0LXNlbGVjdGVk
LWRldGFpbHMtc2lkZWJhci1wYW5lbCIsIG51bGwpOworICAgICAgICB0aGlzLl9sYXN0U2VsZWN0
ZWREZXRhaWxzU2lkZWJhclBhbmVsU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50aWZpZXIg
KyAiLWxhc3Qtc2VsZWN0ZWQtZGV0YWlscy1zaWRlYmFyLXBhbmVsIiwgbnVsbCk7CiAKICAgICAg
ICAgdGhpcy5fY29udGVudEJyb3dzZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db250ZW50QnJvd3Nl
ci5FdmVudC5DdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50
QnJvd3NlckN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAg
ICB0aGlzLl9jb250ZW50QnJvd3Nlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnRlbnRCcm93c2Vy
LkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fY29udGVudEJyb3dzZXJD
dXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMpOwpAQCAtNDYsNyArNTIsNyBAQCBXSS5D
b250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudEJyb3dzZXJUYWJDb250
ZW50VmlldyBleHRlbmRzIFdJLgogICAgICAgICAvLyBFeHBsaWNpdGx5IHVwZGF0ZSB0aGUgcGF0
aCBmb3IgdGhlIG5hdmlnYXRpb24gYmFyIHRvIHByZXZlbnQgaXQgZnJvbSBzaG93aW5nIHVwIGFz
IGJsYW5rLgogICAgICAgICB0aGlzLl9jb250ZW50QnJvd3Nlci51cGRhdGVIaWVyYXJjaGljYWxQ
YXRoRm9yQ3VycmVudENvbnRlbnRWaWV3KCk7CiAKLSAgICAgICAgaWYgKHRoaXMuX25hdmlnYXRp
b25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcikgeworICAgICAgICBpZiAobmF2aWdhdGlvblNpZGVi
YXJQYW5lbENvbnN0cnVjdG9yKSB7CiAgICAgICAgICAgICBsZXQgc2hvd1Rvb2xUaXAgPSBXSS5V
SVN0cmluZygiU2hvdyB0aGUgbmF2aWdhdGlvbiBzaWRlYmFyICglcykiKS5mb3JtYXQoV0kubmF2
aWdhdGlvblNpZGViYXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKICAgICAgICAgICAg
IGxldCBoaWRlVG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJIaWRlIHRoZSBuYXZpZ2F0aW9uIHNpZGVi
YXIgKCVzKSIpLmZvcm1hdChXSS5uYXZpZ2F0aW9uU2lkZWJhcktleWJvYXJkU2hvcnRjdXQuZGlz
cGxheU5hbWUpOwogICAgICAgICAgICAgbGV0IGltYWdlID0gV0kucmVzb2x2ZWRMYXlvdXREaXJl
Y3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/ICJJbWFnZXMvVG9nZ2xlUmlnaHRT
aWRlYmFyLnN2ZyIgOiAiSW1hZ2VzL1RvZ2dsZUxlZnRTaWRlYmFyLnN2ZyI7CkBAIC02Miw3ICs2
OCw3IEBAIFdJLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50QnJv
d3NlclRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuCiAgICAgICAgICAgICBXSS5uYXZpZ2F0aW9u
U2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdJLlNpZGViYXIuRXZlbnQuQ29sbGFwc2VkU3RhdGVE
aWRDaGFuZ2UsIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2Us
IHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMuX2RldGFpbHNTaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvcnMubGVuZ3RoKSB7CisgICAgICAgIGlmIChkZXRhaWxzU2lkZWJhclBhbmVs
Q29uc3RydWN0b3JzICYmIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMubGVuZ3RoKSB7
CiAgICAgICAgICAgICBsZXQgc2hvd1Rvb2xUaXAgPSBXSS5VSVN0cmluZygiU2hvdyB0aGUgZGV0
YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQoV0kuZGV0YWlsc1NpZGViYXJLZXlib2FyZFNob3J0
Y3V0LmRpc3BsYXlOYW1lKTsKICAgICAgICAgICAgIGxldCBoaWRlVG9vbFRpcCA9IFdJLlVJU3Ry
aW5nKCJIaWRlIHRoZSBkZXRhaWxzIHNpZGViYXIgKCVzKSIpLmZvcm1hdChXSS5kZXRhaWxzU2lk
ZWJhcktleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwogICAgICAgICAgICAgbGV0IGltYWdl
ID0gV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJU
TCA/ICJJbWFnZXMvVG9nZ2xlTGVmdFNpZGViYXIuc3ZnIiA6ICJJbWFnZXMvVG9nZ2xlUmlnaHRT
aWRlYmFyLnN2ZyI7CkBAIC04MCw4ICs4Niw2IEBAIFdJLkNvbnRlbnRCcm93c2VyVGFiQ29udGVu
dFZpZXcgPSBjbGFzcyBDb250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuCiAg
ICAgICAgICAgICBXSS5kZXRhaWxzU2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdJLlNpZGViYXIu
RXZlbnQuU2lkZWJhclBhbmVsU2VsZWN0ZWQsIHRoaXMuX2RldGFpbHNTaWRlYmFyUGFuZWxTZWxl
Y3RlZCwgdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiY29udGVudC1icm93c2VyIik7Ci0KICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMu
X2NvbnRlbnRCcm93c2VyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5jc3MgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uY3Nz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhMjM5YTE2NmIyZGNlMGY5NmEwZTJlMDVjMDM2YWYxODExYjIyMzUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250cm9sVG9vbGJhckl0ZW0uY3NzCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKy50b29sYmFyIC5pdGVtLmNvbnRyb2wgeworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cisg
ICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisKKyAgICBwYWRkaW5nOiAwIDJweDsKKworICAg
IG9wYWNpdHk6IDAuNTsKK30KKworLnRvb2xiYXIuc21hbGwtc2l6ZSAuaXRlbS5jb250cm9sIHsK
KyAgICBwYWRkaW5nOiAycHg7Cit9CisKKy50b29sYmFyIC5pdGVtLmNvbnRyb2w6aG92ZXIgewor
ICAgIG9wYWNpdHk6IDAuNzU7Cit9CisKKy50b29sYmFyIC5pdGVtLmNvbnRyb2w6YWN0aXZlIHsK
KyAgICBvcGFjaXR5OiAxOworfQorCisudG9vbGJhciAuaXRlbS5jb250cm9sID4gLmdseXBoIHsK
KyAgICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisKKyAgICBiYWNrZ3JvdW5kLXJl
cGVhdDogbm8tcmVwZWF0OworICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7
Cit9CisKK2JvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5pdGVtLmNvbnRyb2wgeworICAg
IG9wYWNpdHk6IDAuMzU7Cit9CisKKy50b29sYmFyIC5pdGVtLmNvbnRyb2wuZGlzYWJsZWQgewor
ICAgIG9wYWNpdHk6IDAuMzUgIWltcG9ydGFudDsKK30KKworYm9keS53aW5kb3ctaW5hY3RpdmUg
LnRvb2xiYXIgLml0ZW0uY29udHJvbC5kaXNhYmxlZCB7CisgICAgb3BhY2l0eTogMC4yICFpbXBv
cnRhbnQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M0Mjhj
OGFiMTNkMmE1ZWRjYjFkMGQxODFlNGI5YWVkZGI3OGI4YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRyb2xUb29sYmFySXRl
bS5qcwpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuQ29udHJvbFRvb2xi
YXJJdGVtID0gY2xhc3MgQ29udHJvbFRvb2xiYXJJdGVtIGV4dGVuZHMgV0kuQnV0dG9uTmF2aWdh
dGlvbkl0ZW0KK3sKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwg
aW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVy
LCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIGZhbHNlKTsKKyAgICB9
CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGdldCBhZGRpdGlvbmFsQ2xhc3NOYW1lcygpCisg
ICAgeworICAgICAgICByZXR1cm4gWyJjb250cm9sIl07CisgICAgfQorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50
Vmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01U
cmVlQ29udGVudFZpZXcuY3NzCmluZGV4IGM4OWU5ZDBmMzlmMWViMWJmOWMyYzZiMTkzZWZmNDRl
NDNjODg2ZTcuLjQxM2QwNmQyM2QxYjIxNWI4NmQzYzRiZTVlMTFjOTUwNDg1MjdlNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVD
b250ZW50Vmlldy5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmNzcwpAQCAtNTksNyArNTksNyBAQCBib2R5W2Rpcj1y
dGxdIC5jb250ZW50LXZpZXcuZG9tLXRyZWUgLnRyZWUtb3V0bGluZS5kb20gbGkgLnN0YXR1cy1p
bWFnZSB7CiAgICAgZmlsbDogdmFyKC0tYnJlYWtwb2ludC1jb2xvcik7CiB9CiAKLWJvZHk6bm90
KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAuY29udGVudC12aWV3
LmRvbS10cmVlIC50cmVlLW91dGxpbmUuZG9tOmZvY3VzIGxpOm1hdGNoZXMoLnNlbGVjdGVkLCAu
aG92ZXJlZCkgLnN0YXR1cy1pbWFnZS5icmVha3BvaW50IHsKK2JvZHk6bm90KC53aW5kb3ctaW5h
Y3RpdmUpIC5jb250ZW50LXZpZXcuZG9tLXRyZWUgLnRyZWUtb3V0bGluZS5kb206Zm9jdXMgbGk6
bWF0Y2hlcyguc2VsZWN0ZWQsIC5ob3ZlcmVkKSAuc3RhdHVzLWltYWdlLmJyZWFrcG9pbnQgewog
ICAgIHN0cm9rZTogdmFyKC0tc2VsZWN0ZWQtZm9yZWdyb3VuZC1jb2xvcik7CiB9CiAKQEAgLTc2
LDcgKzc2LDcgQEAgYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5h
Y3RpdmUpIC5jb250ZW50LXZpZXcuZG9tLXRyZWUgLnRyZWUKICAgICBzdHJva2U6IHZhcigtLWJy
ZWFrcG9pbnQtY29sb3IpOwogfQogCi1ib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAud2luZG93
LWRvY2tlZC1pbmFjdGl2ZSkgLmNvbnRlbnQtdmlldy5kb20tdHJlZSAudHJlZS1vdXRsaW5lLmRv
bTpmb2N1cyBsaTptYXRjaGVzKC5zZWxlY3RlZCwgLmhvdmVyZWQpIC5zdGF0dXMtaW1hZ2UuYnJl
YWtwb2ludC5zdWJ0cmVlIHsKK2JvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC5jb250ZW50LXZp
ZXcuZG9tLXRyZWUgLnRyZWUtb3V0bGluZS5kb206Zm9jdXMgbGk6bWF0Y2hlcyguc2VsZWN0ZWQs
IC5ob3ZlcmVkKSAuc3RhdHVzLWltYWdlLmJyZWFrcG9pbnQuc3VidHJlZSB7CiAgICAgc3Ryb2tl
OiB2YXIoLS1zZWxlY3RlZC1mb3JlZ3JvdW5kLWNvbG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVy
Vmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNo
Ym9hcmRDb250YWluZXJWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2NiYTdmYjhlODU4NzFlODJkOGFi
NzlkNDM4MDk3MWY4OGRjZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5jc3MKQEAgLTAs
MCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy50b29sYmFyIC5kYXNoYm9hcmQtY29udGFp
bmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgbWFyZ2luOiA0cHg7CisgICAgaGVp
Z2h0OiAyMnB4OworCisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIG92ZXJmbG93OiBoaWRk
ZW47Cit9CisKK2JvZHk6bWF0Y2hlcygucGFnZSwgLndlYi1wYWdlKSAudG9vbGJhciAuZGFzaGJv
YXJkLWNvbnRhaW5lciB7CisgICAgd2lkdGg6IDM2dnc7CisgICAgbWluLXdpZHRoOiAzNTBweDsK
K30KKworYm9keTpub3QoLnBhZ2UsIC53ZWItcGFnZSkgLnRvb2xiYXIgLmRhc2hib2FyZC1jb250
YWluZXIgeworICAgIHdpZHRoOiAyNXZ3OworICAgIG1pbi13aWR0aDogMTc1cHg7Cit9CisKKy50
b29sYmFyLmNvbGxhcHNlZCAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgbWluLXdpZHRoOiAx
NzVweCAhaW1wb3J0YW50OworICAgIHdpZHRoOiAxNzVweCAhaW1wb3J0YW50OworfQorCisvKiBE
ZWZhdWx0IHN0eWxlcyBmb3IgZGFzaGJvYXJkcyAqLworLnRvb2xiYXIgLmRhc2hib2FyZCB7Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBib3R0b206IDA7CisgICAg
bGVmdDogMDsKKyAgICByaWdodDogMDsKKyAgICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDEwcHg7
CisgICAgLXdlYmtpdC1wYWRkaW5nLWVuZDogNXB4OworICAgIGFuaW1hdGlvbi1kdXJhdGlvbjog
MC40czsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC52aXNpYmxlIHsKKyAgICB6LWluZGV4OiAx
OyAvKiBFc3RhYmxpc2ggYSBzdGFja2luZyBjb250ZXh0LiAqLworfQorCisudG9vbGJhciAuZGFz
aGJvYXJkOm5vdCgudmlzaWJsZSkgeworICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKK30K
KworLnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1vdXQtdXAgeworICAgIGFuaW1hdGlvbi1uYW1l
OiBzbGlkZS10b3AtZWRnZTsKKyAgICBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOworfQor
CisudG9vbGJhciAuZGFzaGJvYXJkLnNsaWRlLW91dC1kb3duIHsKKyAgICBhbmltYXRpb24tbmFt
ZTogc2xpZGUtYm90dG9tLWVkZ2U7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuc2xpZGUtaW4t
dXAgeworICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZS1ib3R0b20tZWRnZTsKKyAgICBhbmltYXRp
b24tZGlyZWN0aW9uOiByZXZlcnNlOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLnNsaWRlLWlu
LWRvd24geworICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZS10b3AtZWRnZTsKK30KKworQGtleWZy
YW1lcyBzbGlkZS10b3AtZWRnZSB7CisgICAgZnJvbSB7CisgICAgICAgIHRyYW5zZm9ybTogdHJh
bnNsYXRlWSgtMzBweCk7CisgICAgfQorICAgIHRvIHsKKyAgICAgICAgdHJhbnNmb3JtOiB0cmFu
c2xhdGVZKDApOworICAgIH0KK30KKworQGtleWZyYW1lcyBzbGlkZS1ib3R0b20tZWRnZSB7Cisg
ICAgZnJvbSB7CisgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKKyAgICB9CisgICAg
dG8geworICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7CisgICAgfQorfQorCisu
ZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdyB7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHdpZHRoOiAxOXB4OworICAgIHRvcDogMDsKKyAgICBib3R0b206IDA7CisgICAg
cGFkZGluZzogNHB4IDA7CisgICAgb3BhY2l0eTogMC42OworCisgICAgei1pbmRleDogMjsKKyAg
ICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIGJhY2tncm91bmQtc2l6ZTogOHB4
OworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9JbWFnZXMvVXBEb3duQXJyb3dzLnN2Zyk7
CisKKyAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5OworICAgIHRyYW5zaXRpb24tZHVy
YXRpb246IDAuMnM7CisgICAgYmFja2dyb3VuZC1jbGlwOiBjb250ZW50LWJveDsKKworICAgIC0t
ZGFzaGJvYXJkLWFkdmFuY2UtYXJyb3ctb2Zmc2V0LWVuZDogMHB4OworfQorCitib2R5W2Rpcj1s
dHJdIC5kYXNoYm9hcmQtY29udGFpbmVyIC5hZHZhbmNlLWFycm93IHsKKyAgICByaWdodDogdmFy
KC0tZGFzaGJvYXJkLWFkdmFuY2UtYXJyb3ctb2Zmc2V0LWVuZCk7Cit9CisKK2JvZHlbZGlyPXJ0
bF0gLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3cgeworICAgIGxlZnQ6IHZhcigt
LWRhc2hib2FyZC1hZHZhbmNlLWFycm93LW9mZnNldC1lbmQpOworfQorCisuZGFzaGJvYXJkLWNv
bnRhaW5lciAuYWR2YW5jZS1hcnJvdzpob3ZlciB7CisgICAgb3BhY2l0eTogMC44OworfQorCisu
ZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdzphY3RpdmUgeworICAgIG9wYWNpdHk6
IDE7Cit9CisKKy5kYXNoYm9hcmQtY29udGFpbmVyIC5hZHZhbmNlLWFycm93LmluYWN0aXZlIHsK
KyAgICBvcGFjaXR5OiAwOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisuZGFzaGJv
YXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdy5hZHZhbmNlLWZvcndhcmQgeworICAgIHRvcDog
MDsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNHB4OworfQorCisuZGFzaGJvYXJkLWNv
bnRhaW5lciAuYWR2YW5jZS1hcnJvdy5hZHZhbmNlLWJhY2t3YXJkIHsKKyAgICBib3R0b206IDA7
CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC00cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJv
YXJkQ29udGFpbmVyVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTczMDcwMWM2Y2E0OTBjZDUzMTA0YjVi
MmZjMzQ4MWE4OWIyMDg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcwpAQCAtMCwwICsx
LDI4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldyA9IGNs
YXNzIERhc2hib2FyZENvbnRhaW5lclZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25z
dHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3Rvb2xi
YXJJdGVtID0gbmV3IFdJLk5hdmlnYXRpb25JdGVtKCJkYXNoYm9hcmQtY29udGFpbmVyIiwgImdy
b3VwIiwgV0kuVUlTdHJpbmcoIkFjdGl2aXR5IFZpZXdlciIpKTsKKworICAgICAgICB0aGlzLl9h
ZHZhbmNlRm9yd2FyZEFycm93RWxlbWVudCA9IHRoaXMuX3Rvb2xiYXJJdGVtLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgICAgICB0aGlzLl9h
ZHZhbmNlRm9yd2FyZEFycm93RWxlbWVudC5jbGFzc05hbWUgPSAiYWR2YW5jZS1hcnJvdyBhZHZh
bmNlLWZvcndhcmQiOworICAgICAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0VsZW1lbnQg
PSB0aGlzLl90b29sYmFySXRlbS5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpKTsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50
LmNsYXNzTmFtZSA9ICJhZHZhbmNlLWFycm93IGFkdmFuY2UtYmFja3dhcmQiOworCisgICAgICAg
IHRoaXMuX2FkdmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5fYWR2YW5jZUZvcndhcmRBcnJvd0NsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgICAg
IHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKworICAg
ICAgICAvLyBSZXByZXNlbnRzIGN1cnJlbnRseSBvcGVuIGRhc2hib2FyZHMsIHdpdGggdGhlIG1v
c3QgcmVjZW50IGVudHJpZXMgYXBwZW5kZWQgdG8gdGhlIGVuZC4KKyAgICAgICAgdGhpcy5fZGFz
aGJvYXJkU3RhY2sgPSBbXTsKKyAgICAgICAgdGhpcy5fY3VycmVudEluZGV4ID0gLTE7CisKKyAg
ICAgICAgdGhpcy5fdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpOworICAgIH0KKworICAg
IC8vIFB1YmxpYworCisgICAgZ2V0IHRvb2xiYXJJdGVtKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl90b29sYmFySXRlbTsKKyAgICB9CisKKyAgICBnZXQgY3VycmVudERhc2hib2FyZFZp
ZXcoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRJbmRleCA9PT0gLTEpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gdGhpcy5fZGFzaGJvYXJkU3Rh
Y2tbdGhpcy5fY3VycmVudEluZGV4XTsKKyAgICB9CisKKyAgICBzaG93RGFzaGJvYXJkVmlld0Zv
clJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgdmFy
IGRhc2hib2FyZFZpZXcgPSB0aGlzLl9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Qo
cmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICBpZiAoIWRhc2hib2FyZFZpZXcpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBpZiAodGhpcy5jdXJyZW50RGFzaGJvYXJkVmll
dyA9PT0gZGFzaGJvYXJkVmlldykKKyAgICAgICAgICAgIHJldHVybiBkYXNoYm9hcmRWaWV3Owor
CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2Rhc2hib2FyZFN0YWNrLmluZGV4T2YoZGFzaGJv
YXJkVmlldyk7CisgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRBdEluZGV4KGluZGV4KTsKKyAg
ICAgICAgcmV0dXJuIGRhc2hib2FyZFZpZXc7CisgICAgfQorCisgICAgaGlkZURhc2hib2FyZFZp
ZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAg
IHZhciBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyA9IHRydWU7CisgICAgICAgIHZhciBkYXNoYm9h
cmRWaWV3ID0gdGhpcy5fZGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2Vu
dGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyk7CisKKyAgICAgICAgaWYgKHRoaXMu
Y3VycmVudERhc2hib2FyZFZpZXcgIT09IGRhc2hib2FyZFZpZXcpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY3VycmVudEluZGV4ID4gMCk7Cisg
ICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRBdEluZGV4KHRoaXMuX2N1cnJlbnRJbmRleCAtIDEp
OworICAgIH0KKworICAgIGNsb3NlRGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJl
cHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgdmFyIG9ubHlSZXR1cm5FeGlzdGluZ1Zp
ZXdzID0gdHJ1ZTsKKyAgICAgICAgdmFyIGRhc2hib2FyZFZpZXcgPSB0aGlzLl9kYXNoYm9hcmRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlSZXR1cm5FeGlz
dGluZ1ZpZXdzKTsKKyAgICAgICAgaWYgKCFkYXNoYm9hcmRWaWV3KQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX2Nsb3NlRGFzaGJvYXJkVmlldyhkYXNoYm9hcmRWaWV3KTsK
KyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfYWR2YW5jZUZvcndhcmRBcnJvd0NsaWNr
ZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZEF0SW5kZXgodGhpcy5fY3Vy
cmVudEluZGV4ICsgMSk7CisgICAgfQorCisgICAgX2FkdmFuY2VCYWNrd2FyZEFycm93Q2xpY2tl
ZCgpCisgICAgeworICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkQXRJbmRleCh0aGlzLl9jdXJy
ZW50SW5kZXggLSAxKTsKKyAgICB9CisKKyAgICBfZGlzbWlzc0FkdmFuY2VBcnJvd3MoKQorICAg
IHsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkluYWN0aXZlU3R5bGVDbGFzc05hbWUpOworICAg
ICAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0VsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5E
YXNoYm9hcmRDb250YWluZXJWaWV3LkluYWN0aXZlU3R5bGVDbGFzc05hbWUpOworICAgIH0KKwor
ICAgIF91cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5KCkKKyAgICB7CisgICAgICAgIHZhciBj
YW5BZHZhbmNlRm9yd2FyZCA9IHRoaXMuX2N1cnJlbnRJbmRleCA8IHRoaXMuX2Rhc2hib2FyZFN0
YWNrLmxlbmd0aCAtIDE7CisgICAgICAgIHZhciBjYW5BZHZhbmNlQmFja3dhcmQgPSB0aGlzLl9j
dXJyZW50SW5kZXggPiAwOworICAgICAgICB0aGlzLl9hZHZhbmNlRm9yd2FyZEFycm93RWxlbWVu
dC5jbGFzc0xpc3QudG9nZ2xlKFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHls
ZUNsYXNzTmFtZSwgIWNhbkFkdmFuY2VGb3J3YXJkKTsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUJh
Y2t3YXJkQXJyb3dFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV0kuRGFzaGJvYXJkQ29udGFpbmVy
Vmlldy5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lLCAhY2FuQWR2YW5jZUJhY2t3YXJkKTsKKyAgICB9
CisKKyAgICBfZGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2Jq
ZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICAvLyBJdGVyYXRlIG92ZXIgYWxsIGtu
b3duIGRhc2hib2FyZCB2aWV3cyBhbmQgc2VlIGlmIGFueSBhcmUgZm9yIHRoaXMgb2JqZWN0Lgor
ICAgICAgICBmb3IgKHZhciBkYXNoYm9hcmRWaWV3IG9mIHRoaXMuX2Rhc2hib2FyZFN0YWNrKSB7
CisgICAgICAgICAgICBpZiAoZGFzaGJvYXJkVmlldy5yZXByZXNlbnRlZE9iamVjdCA9PT0gcmVw
cmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRhc2hib2FyZFZpZXc7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAob25seVJldHVybkV4aXN0aW5nVmlld3MpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICAvLyBObyBleGlzdGluZyBjb250ZW50IHZpZXcg
Zm91bmQsIG1ha2UgYSBuZXcgb25lLgorICAgICAgICBkYXNoYm9hcmRWaWV3ID0gV0kuRGFzaGJv
YXJkVmlldy5jcmVhdGUocmVwcmVzZW50ZWRPYmplY3QpOworCisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGRhc2hib2FyZFZpZXcsICJVbmtub3duIHJlcHJlc2VudGVkT2JqZWN0IiwgcmVwcmVzZW50
ZWRPYmplY3QpOworICAgICAgICBpZiAoIWRhc2hib2FyZFZpZXcpCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICB0aGlzLl9kYXNoYm9hcmRTdGFjay5wdXNoKGRhc2hib2FyZFZp
ZXcpOworICAgICAgICB0aGlzLl90b29sYmFySXRlbS5lbGVtZW50LmFwcGVuZENoaWxkKGRhc2hi
b2FyZFZpZXcuZWxlbWVudCk7CisKKyAgICAgICAgcmV0dXJuIGRhc2hib2FyZFZpZXc7CisgICAg
fQorCisgICAgX3Nob3dEYXNoYm9hcmRBdEluZGV4KGluZGV4KQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoaW5kZXggPj0gMCAmJiBpbmRleCA8PSB0aGlzLl9kYXNoYm9hcmRTdGFjay5s
ZW5ndGggLSAxKTsKKworICAgICAgICBpZiAodGhpcy5fY3VycmVudEluZGV4ID09PSBpbmRleCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgYWR2YW5jZURpcmVjdGlvbiA9IG51
bGw7CisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPCBpbmRleCkKKyAgICAgICAgICAg
IGFkdmFuY2VEaXJlY3Rpb24gPSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJl
Y3Rpb24uRm9yd2FyZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWR2YW5jZURpcmVjdGlv
biA9IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVjdGlvbi5CYWNrd2FyZDsK
KyAgICAgICAgdmFyIGluaXRpYWxEaXJlY3Rpb24gPSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3
LkFkdmFuY2VEaXJlY3Rpb24uTm9uZTsKKyAgICAgICAgdmFyIGlzSW5pdGlhbERhc2hib2FyZCA9
IHRoaXMuX2N1cnJlbnRJbmRleCA9PT0gLTE7CisgICAgICAgIGlmICghaXNJbml0aWFsRGFzaGJv
YXJkKQorICAgICAgICAgICAgdGhpcy5faGlkZURhc2hib2FyZFZpZXcodGhpcy5jdXJyZW50RGFz
aGJvYXJkVmlldywgYWR2YW5jZURpcmVjdGlvbik7CisKKyAgICAgICAgdGhpcy5fY3VycmVudElu
ZGV4ID0gaW5kZXg7CisgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRWaWV3KHRoaXMuY3VycmVu
dERhc2hib2FyZFZpZXcsIGlzSW5pdGlhbERhc2hib2FyZCA/IGluaXRpYWxEaXJlY3Rpb24gOiBh
ZHZhbmNlRGlyZWN0aW9uKTsKKyAgICB9CisKKyAgICBfc2hvd0Rhc2hib2FyZFZpZXcoZGFzaGJv
YXJkVmlldywgYWR2YW5jZURpcmVjdGlvbikKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGRhc2hib2FyZFZpZXcgaW5zdGFuY2VvZiBXSS5EYXNoYm9hcmRWaWV3KTsKKworICAgICAgICBk
YXNoYm9hcmRWaWV3LnNob3duKCk7CisgICAgICAgIHRoaXMuX2Rpc21pc3NBZHZhbmNlQXJyb3dz
KCk7CisKKyAgICAgICAgdmFyIGFuaW1hdGlvbkNsYXNzID0gbnVsbDsKKyAgICAgICAgaWYgKGFk
dmFuY2VEaXJlY3Rpb24gPT09IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVj
dGlvbi5Gb3J3YXJkKQorICAgICAgICAgICAgYW5pbWF0aW9uQ2xhc3MgPSBXSS5EYXNoYm9hcmRD
b250YWluZXJWaWV3LkZvcndhcmRJbmNvbWluZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lOworICAg
ICAgICBpZiAoYWR2YW5jZURpcmVjdGlvbiA9PT0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5B
ZHZhbmNlRGlyZWN0aW9uLkJhY2t3YXJkKQorICAgICAgICAgICAgYW5pbWF0aW9uQ2xhc3MgPSBX
SS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkJhY2t3YXJkSW5jb21pbmdEYXNoYm9hcmRTdHlsZUNs
YXNzTmFtZTsKKworICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpczsKKyAgICAgICAgZGFzaGJv
YXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5W
aXNpYmxlRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUpOworCisgICAgICAgIGZ1bmN0aW9uIGFuaW1h
dGlvbkVuZGVkKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBkYXNo
Ym9hcmRWaWV3LmVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5k
IiwgYW5pbWF0aW9uRW5kZWQpOworICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoYW5pbWF0aW9uQ2xhc3MpOworICAgICAgICAgICAgY29udGFpbmVyLl91
cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
YW5pbWF0aW9uQ2xhc3MpIHsKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKGFuaW1hdGlvbkNsYXNzKTsKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLCBhbmltYXRpb25FbmRlZCk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGFzaGJvYXJkVmlldzsKKyAgICB9CisKKyAgICBf
aGlkZURhc2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldywgYWR2YW5jZURpcmVjdGlvbiwgY2FsbGJh
Y2spCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9hcmRWaWV3IGluc3RhbmNl
b2YgV0kuRGFzaGJvYXJkVmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY3VycmVu
dERhc2hib2FyZFZpZXcgPT09IGRhc2hib2FyZFZpZXcpOworCisgICAgICAgIGRhc2hib2FyZFZp
ZXcuaGlkZGVuKCk7CisgICAgICAgIHRoaXMuX2Rpc21pc3NBZHZhbmNlQXJyb3dzKCk7CisKKyAg
ICAgICAgdmFyIGFuaW1hdGlvbkNsYXNzID0gbnVsbDsKKyAgICAgICAgaWYgKGFkdmFuY2VEaXJl
Y3Rpb24gPT09IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVjdGlvbi5Gb3J3
YXJkKQorICAgICAgICAgICAgYW5pbWF0aW9uQ2xhc3MgPSBXSS5EYXNoYm9hcmRDb250YWluZXJW
aWV3LkZvcndhcmRPdXRnb2luZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lOworICAgICAgICBpZiAo
YWR2YW5jZURpcmVjdGlvbiA9PT0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGly
ZWN0aW9uLkJhY2t3YXJkKQorICAgICAgICAgICAgYW5pbWF0aW9uQ2xhc3MgPSBXSS5EYXNoYm9h
cmRDb250YWluZXJWaWV3LkJhY2t3YXJkT3V0Z29pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZTsK
KworICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpczsKKworICAgICAgICBmdW5jdGlvbiBhbmlt
YXRpb25FbmRlZChldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZGFz
aGJvYXJkVmlldy5lbGVtZW50KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVu
ZCIsIGFuaW1hdGlvbkVuZGVkKTsKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKGFuaW1hdGlvbkNsYXNzKTsKKyAgICAgICAgICAgIGRhc2hib2FyZFZp
ZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuVmlz
aWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIGNvbnRhaW5lci5fdXBk
YXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpOworCisgICAgICAgICAgICBpZiAodHlwZW9mIGNh
bGxiYWNrID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoYW5pbWF0aW9uQ2xhc3MpIHsKKyAgICAgICAgICAgIGRhc2hi
b2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKGFuaW1hdGlvbkNsYXNzKTsKKyAgICAgICAg
ICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQi
LCBhbmltYXRpb25FbmRlZCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZGFzaGJvYXJk
Vmlldy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5W
aXNpYmxlRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUpOworICAgIH0KKworICAgIF9jbG9zZURhc2hi
b2FyZFZpZXcoZGFzaGJvYXJkVmlldykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRh
c2hib2FyZFZpZXcgaW5zdGFuY2VvZiBXSS5EYXNoYm9hcmRWaWV3KTsKKworICAgICAgICBmdW5j
dGlvbiBkaXNzb2NpYXRlRGFzaGJvYXJkVmlldygpIHsKKyAgICAgICAgICAgIGRhc2hib2FyZFZp
ZXcuY2xvc2VkKCk7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZChkYXNoYm9hcmRWaWV3LmVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIGluZGV4ID0gdGhpcy5fZGFzaGJvYXJkU3RhY2suaW5kZXhPZihkYXNoYm9hcmRWaWV3
KTsKKworICAgICAgICBpZiAodGhpcy5jdXJyZW50RGFzaGJvYXJkVmlldyA9PT0gZGFzaGJvYXJk
VmlldykgeworICAgICAgICAgICAgdmFyIGRpcmVjdGlvbiA9IFdJLkRhc2hib2FyZENvbnRhaW5l
clZpZXcuQWR2YW5jZURpcmVjdGlvbi5CYWNrd2FyZDsKKyAgICAgICAgICAgIHRoaXMuX2hpZGVE
YXNoYm9hcmRWaWV3KHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcsIGRpcmVjdGlvbiwgZGlzc29j
aWF0ZURhc2hib2FyZFZpZXcpOworICAgICAgICAgICAgdGhpcy5fZGFzaGJvYXJkU3RhY2suc3Bs
aWNlKGluZGV4LCAxKTsKKyAgICAgICAgICAgIC0tdGhpcy5fY3VycmVudEluZGV4OworICAgICAg
ICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZFZpZXcodGhpcy5jdXJyZW50RGFzaGJvYXJkVmlldywg
ZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX2Rhc2hib2FyZFN0YWNrLnNwbGljZShpbmRleCwgMSk7CisgICAgICAgIGlmICh0aGlzLl9j
dXJyZW50SW5kZXggPiBpbmRleCkKKyAgICAgICAgICAgIC0tdGhpcy5fY3VycmVudEluZGV4Owor
ICAgICAgICBkaXNzb2NpYXRlRGFzaGJvYXJkVmlldy5jYWxsKHRoaXMpOworCisgICAgICAgIHRo
aXMuX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsKKyAgICB9Cit9OworCitXSS5EYXNo
Ym9hcmRDb250YWluZXJWaWV3LlZpc2libGVEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSA9ICJ2aXNp
YmxlIjsKK1dJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSA9
ICJpbmFjdGl2ZSI7CisKK1dJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVjdGlv
biA9IHsKKyAgICBGb3J3YXJkOiBTeW1ib2woImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZh
bmNlLWRpcmVjdGlvbi1mb3J3YXJkIiksCisgICAgQmFja3dhcmQ6IFN5bWJvbCgiZGFzaGJvYXJk
LWNvbnRhaW5lci12aWV3LWFkdmFuY2UtZGlyZWN0aW9uLWJhY2t3YXJkIiksCisgICAgTm9uZTog
U3ltYm9sKCJkYXNoYm9hcmQtY29udGFpbmVyLXZpZXctYWR2YW5jZS1kaXJlY3Rpb24tbm9uZSIp
Cit9OworCitXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkZvcndhcmRJbmNvbWluZ0Rhc2hib2Fy
ZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLWluLWRvd24iOworV0kuRGFzaGJvYXJkQ29udGFpbmVy
Vmlldy5CYWNrd2FyZEluY29taW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtaW4t
dXAiOworV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5Gb3J3YXJkT3V0Z29pbmdEYXNoYm9hcmRT
dHlsZUNsYXNzTmFtZSA9ICJzbGlkZS1vdXQtZG93biI7CitXSS5EYXNoYm9hcmRDb250YWluZXJW
aWV3LkJhY2t3YXJkT3V0Z29pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSA9ICJzbGlkZS1vdXQt
dXAiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGFzaGJvYXJkVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY0NWNiYTJjYzNhZmMwNzRiZmJl
NjY0YzI5NTRlZTY1ZDVlMmJiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMKQEAgLTAsMCArMSw4MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV0kuRGFzaGJvYXJkVmlldyA9IGNsYXNzIERhc2hib2FyZFZp
ZXcgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVj
dCwgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlkZW50aWZpZXIp
OworCisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fcmVwcmVzZW50ZWRPYmplY3Qg
PSByZXByZXNlbnRlZE9iamVjdDsKKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiZGFzaGJvYXJkIik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChpZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBjcmVhdGUocmVw
cmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRl
ZE9iamVjdCk7CisKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0ku
RGVmYXVsdERhc2hib2FyZCkKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuRGVmYXVsdERhc2hi
b2FyZFZpZXcocmVwcmVzZW50ZWRPYmplY3QpOworCisgICAgICAgIGlmIChyZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdJLkRlYnVnZ2VyRGFzaGJvYXJkKQorICAgICAgICAgICAgcmV0dXJu
IG5ldyBXSS5EZWJ1Z2dlckRhc2hib2FyZFZpZXcocmVwcmVzZW50ZWRPYmplY3QpOworCisgICAg
ICAgIHRocm93ICJDYW4ndCBtYWtlIGEgRGFzaGJvYXJkVmlldyBmb3IgYW4gdW5rbm93biByZXBy
ZXNlbnRlZE9iamVjdC4iOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVsZW1l
bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAg
Z2V0IHJlcHJlc2VudGVkT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXBy
ZXNlbnRlZE9iamVjdDsKKyAgICB9CisKKyAgICBzaG93bigpCisgICAgeworICAgICAgICAvLyBJ
bXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGhpZGRlbigpCisgICAgewor
ICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGNsb3Nl
ZCgpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgIH0K
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjdh
NjhhMDY0ZWQxY2ZmNjg0OWRlY2Q2YmMxYjAyZjE0MTI0ODU1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJEYXNoYm9h
cmRWaWV3LmNzcwpAQCAtMCwwICsxLDE5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWJ1Z2dlciB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBmbGV4LXdyYXA6
IG5vd3JhcDsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKKyAgICBhbGlnbi1pdGVtczog
Y2VudGVyOworICAgIC13ZWJraXQtcGFkZGluZy1zdGFydDogNXB4OworICAgIC13ZWJraXQtcGFk
ZGluZy1lbmQ6IDEycHg7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGNvbG9yOiBoc2wo
MCwgMCUsIDIzJSk7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubWVzc2FnZSB7CisgICAg
Zm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24t
YmFyIHsKKyAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDRweDsKKyAgICBib3JkZXI6IDA7Cit9CisK
Ky50b29sYmFyOm5vdCguc21hbGwtc2l6ZSkgLmRhc2hib2FyZC5kZWJ1Z2dlciAubmF2aWdhdGlv
bi1iYXIgeworICAgIG1hcmdpbi10b3A6IDFweDsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciAu
bmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uIHsKKyAgICBmbGV4LWRpcmVjdGlvbjogcm93Owor
ICAgIHdpZHRoOiAxNnB4OworICAgIGhlaWdodDogMTZweDsKKyAgICBjdXJzb3I6IHBvaW50ZXI7
CisgICAgcGFkZGluZzogMDsKKyAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKKyAgICBiYWNr
Z3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7CisgICAgYm94LXNoYWRvdzogbm9uZSAhaW1w
b3J0YW50OworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5i
dXR0b24gPiAuZ2x5cGggeworICAgIHdpZHRoOiAxNnB4OworICAgIGhlaWdodDogMTZweDsKKyAg
ICBhbmltYXRpb24tbmFtZTogcHVsc2UtcGF1c2UtYnV0dG9uOworICAgIGFuaW1hdGlvbi1kdXJh
dGlvbjogMXM7CisgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7CisgICAg
YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CisgICAgYW5pbWF0aW9uLWRpcmVj
dGlvbjogYWx0ZXJuYXRlOworICAgIGNvbG9yOiBoc2woMjA3LCA0NiUsIDU5JSk7Cit9CisKK2Jv
ZHkud2luZG93LWluYWN0aXZlIC5kYXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24tYmFyIC5p
dGVtLmJ1dHRvbiA+IC5nbHlwaCB7CisgICAgYW5pbWF0aW9uLW5hbWU6IG5vbmU7Cit9CisKKy5k
YXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmRlYnVnZ2VyLWRhc2hib2Fy
ZC1wYXVzZS5hY3RpdmF0ZWQgeworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ryb2tlOiB2YXIoLS1n
bHlwaC1jb2xvci1hY3RpdmUpOworfQorCitAa2V5ZnJhbWVzIHB1bHNlLXBhdXNlLWJ1dHRvbiB7
CisgICAgZnJvbSB7IG9wYWNpdHk6IDAuNzsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfQorICAgIHRv
IHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOyB9Cit9CisKKy5kYXNoYm9hcmQu
ZGVidWdnZXIgPiAuZGl2aWRlciB7CisgICAgd2lkdGg6IDFweDsKKyAgICBoZWlnaHQ6IDEwMCU7
CisKKyAgICBtYXJnaW46IDAgMTBweDsKKworICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1n
cmFkaWVudChoc2woMCwgMCUsIDc0JSksIGhzbCgwLCAwJSwgNzQlKSk7CisgICAgYmFja2dyb3Vu
ZC1zaXplOiAxMDAlIDY2JTsKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAg
IGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciA+
IGRpdiB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAg
IGZsZXg6IG5vbmU7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24geworICAg
IG92ZXJmbG93OiBoaWRkZW47CisgICAgZmxleDogaW5pdGlhbDsKK30KKworLmRhc2hib2FyZC5k
ZWJ1Z2dlciA+IC5sb2NhdGlvbiA+ICogeworICAgIGZsZXg6IG5vbmU7Cit9CisKKy5kYXNoYm9h
cmQuZGVidWdnZXIgPiAubG9jYXRpb24gPiA6Zmlyc3QtY2hpbGQgeworICAgIGFsaWduLXNlbGY6
IGNlbnRlcjsKKyAgICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7Cit9CisKKy8qIEFk
ZCBzcGFjaW5nIGJldHdlZW4gdGhlIGVsbGlwc2lzJ2QgbG9jYXRpb24gYW5kIHRoZSB1cC9kb3du
IGFycm93cy4gKi8KKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gPiA6bGFzdC1jaGls
ZCB7CisgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiA1cHg7Cit9CisKKy50b29sYmFyOm5vdCguc21h
bGwtc2l6ZSkgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiA6bm90KDpmaXJzdC1jaGls
ZCkgeworICAgIG1hcmdpbi10b3A6IDFweDsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5s
b2NhdGlvbiBpbWcuaWNvbiB7CisgICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAxNnB4Owor
fQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIDptYXRjaGVzKC5mdW5jdGlvbi1p
Y29uLCAuZXZlbnQtbGlzdGVuZXItaWNvbikgeworICAgIC13ZWJraXQtbWFyZ2luLWVuZDogNXB4
OworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIC5mdW5jdGlvbi1uYW1lIHsK
KyAgICBjb2xvcjogaHNsKDAsIDAlLCAxMSUpOworICAgIHBhZGRpbmctYm90dG9tOiAxcHg7Cit9
CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gLmZ1bmN0aW9uLW5hbWU6OmFmdGVy
IHsKKyAgICBjb250ZW50OiAiXDAwQTBcMjAxNFwwMEEwIjsgLyogJm5ic3A7Jm1kYXNoOyZuYnNw
OyAqLzsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiAuZ28tdG8tbGluayB7
CisgICAgcGFkZGluZy1ib3R0b206IDFweDsKKyAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1j
b2xvcjogaHNsKDAsIDAlLCA2NiUpOworCisgICAgZmxleDogaW5pdGlhbDsKKyAgICB0ZXh0LW92
ZXJmbG93OiBlbGxpcHNpczsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworfQorCisudG9vbGJhci5j
b2xsYXBzZWQgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IDpub3QoLm1lc3NhZ2UsIC5uYXZpZ2F0aW9u
LWJhcikgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b29sYmFyLnNtYWxsLXNpemUgLmRh
c2hib2FyZC5kZWJ1Z2dlciA+IC5tZXNzYWdlIHsKKyAgICBmb250LXNpemU6IDEwcHg7Cit9CisK
Ky50b29sYmFyLnNtYWxsLXNpemUgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiBpbWcu
aWNvbiwKKy50b29sYmFyLnNtYWxsLXNpemUgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlv
biA+IDpmaXJzdC1jaGlsZCB7CisgICAgd2lkdGg6IDE0cHg7CisgICAgaGVpZ2h0OiAxNHB4Owor
fQorCitAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CisgICAgLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWJ1Z2dlciB7CisgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsK
KyAgICB9CisKKyAgICAuZGFzaGJvYXJkLmRlYnVnZ2VyIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5i
dXR0b24gPiAuZ2x5cGggeworICAgICAgICBjb2xvcjogdmFyKC0tZ2x5cGgtY29sb3ItYWN0aXZl
KTsKKyAgICB9CisKKyAgICAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIC5mdW5jdGlv
bi1uYW1lIHsKKyAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3ItYWN0aXZlKTsKKyAgICB9
CisKKyAgICAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIC5nby10by1saW5rIHsKKyAg
ICAgICAgcGFkZGluZy1ib3R0b206IDFweDsKKyAgICAgICAgLXdlYmtpdC10ZXh0LWRlY29yYXRp
b24tY29sb3I6IHZhcigtLXRleHQtY29sb3Itc2Vjb25kYXJ5KTsKKyAgICB9CisKKyAgICAuZGFz
aGJvYXJkLmRlYnVnZ2VyID4gLmRpdmlkZXIgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBs
aW5lYXItZ3JhZGllbnQodmFyKC0tdGV4dC1jb2xvci10ZXJ0aWFyeSksIHZhcigtLXRleHQtY29s
b3ItdGVydGlhcnkpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjEwMzI2Nzc5ZGYzNDNlMTg1YmRjY2RjYzZjZTM2Mjc0ZTcyYTBhMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5qcwpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV0kuRGVidWdnZXJEYXNoYm9hcmRWaWV3ID0gY2xhc3MgRGVidWdnZXJEYXNoYm9h
cmRWaWV3IGV4dGVuZHMgV0kuRGFzaGJvYXJkVmlldworeworICAgIGNvbnN0cnVjdG9yKHJlcHJl
c2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QsICJk
ZWJ1Z2dlciIpOworCisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMu
X3JlYnVpbGRMb2NhdGlvbiwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9
IG5ldyBXSS5OYXZpZ2F0aW9uQmFyOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKKworICAgICAgICB2YXIgdG9vbHRpcCA9IFdJ
LlVJU3RyaW5nKCJDb250aW51ZSBzY3JpcHQgZXhlY3V0aW9uICglcyBvciAlcykiKS5mb3JtYXQo
V0kucGF1c2VPclJlc3VtZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUsIFdJLnBhdXNlT3JS
ZXN1bWVBbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKKyAgICAgICAgdGhp
cy5fZGVidWdnZXJSZXN1bWVCdXR0b25JdGVtID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uTmF2aWdh
dGlvbkl0ZW0oImRlYnVnZ2VyLWRhc2hib2FyZC1wYXVzZSIsIHRvb2x0aXAsIHRvb2x0aXAsICJJ
bWFnZXMvUmVzdW1lLnN2ZyIsIDE1LCAxNSk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyUmVzdW1l
QnV0dG9uSXRlbS5hY3RpdmF0ZWQgPSB0cnVlOworICAgICAgICB0aGlzLl9kZWJ1Z2dlclJlc3Vt
ZUJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVu
dC5DbGlja2VkLCB0aGlzLl9yZXN1bWVCdXR0b25DbGlja2VkLCB0aGlzKTsKKyAgICAgICAgdGhp
cy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9kZWJ1Z2dlclJlc3VtZUJ1
dHRvbkl0ZW0pOworCisgICAgICAgIHZhciBtZXNzYWdlID0gdGhpcy5fbWVzc2FnZUVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgbWVzc2FnZS5jbGFzc0xp
c3QuYWRkKCJtZXNzYWdlIik7CisgICAgICAgIG1lc3NhZ2UudGl0bGUgPSBtZXNzYWdlLnRleHRD
b250ZW50ID0gV0kuVUlTdHJpbmcoIkRlYnVnZ2VyIFBhdXNlZCIpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQobWVzc2FnZSk7CisKKyAgICAgICAgdmFyIGRpdmlkZXJFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdmlkZXJFbGVtZW50
LmNsYXNzTGlzdC5hZGQoImRpdmlkZXIiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKGRpdmlkZXJFbGVtZW50KTsKKworICAgICAgICB2YXIgbG9jYXRpb25FbGVtZW50ID0gdGhp
cy5fbG9jYXRpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
ICAgIGxvY2F0aW9uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsb2NhdGlvbiIpOworICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobG9jYXRpb25FbGVtZW50KTsKKworICAgICAgICB0aGlz
Ll9yZWJ1aWxkTG9jYXRpb24oKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGNsb3Nl
ZCgpCisgICAgeworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cihudWxsLCBudWxsLCB0aGlzKTsKKworICAgICAgICBzdXBlci5jbG9zZWQoKTsKKyAgICB9CisK
KyAgICAvLyBQcml2YXRlCisKKyAgICBfcmVidWlsZExvY2F0aW9uKCkKKyAgICB7CisgICAgICAg
IGlmICghV0kuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9sb2NhdGlvbkVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsK
KworICAgICAgICB2YXIgY2FsbEZyYW1lID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxG
cmFtZTsKKyAgICAgICAgdmFyIGZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWUg
fHwgV0kuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7CisKKyAgICAgICAgdmFyIGlj
b25DbGFzc05hbWUgPSBXSS5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuRnVuY3Rpb25JY29uU3R5bGVD
bGFzc05hbWU7CisKKyAgICAgICAgLy8gVGhpcyBpcyBtb3JlIHRoYW4gbGlrZWx5IGFuIGV2ZW50
IGxpc3RlbmVyIGZ1bmN0aW9uIHdpdGggYW4gIm9uIiBwcmVmaXggYW5kIGl0IGlzCisgICAgICAg
IC8vIGFzIGxvbmcgb3IgbG9uZ2VyIHRoYW4gdGhlIHNob3J0ZXN0IGV2ZW50IGxpc3RlbmVyIG5h
bWUgLS0gIm9uY3V0Ii4KKyAgICAgICAgaWYgKGNhbGxGcmFtZS5mdW5jdGlvbk5hbWUgJiYgY2Fs
bEZyYW1lLmZ1bmN0aW9uTmFtZS5zdGFydHNXaXRoKCJvbiIpICYmIGNhbGxGcmFtZS5mdW5jdGlv
bk5hbWUubGVuZ3RoID49IDUpCisgICAgICAgICAgICBpY29uQ2xhc3NOYW1lID0gV0kuRGVidWdn
ZXJEYXNoYm9hcmRWaWV3LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05hbWU7CisKKyAgICAg
ICAgdmFyIGljb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
ICAgIGljb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoaWNvbkNsYXNzTmFtZSk7CisgICAgICAgIHRo
aXMuX2xvY2F0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChpY29uRWxlbWVudCk7CisKKyAgICAgICAg
dmFyIGljb25JbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAg
ICAgICAgaWNvbkltYWdlRWxlbWVudC5jbGFzc05hbWUgPSAiaWNvbiI7CisgICAgICAgIGljb25F
bGVtZW50LmFwcGVuZENoaWxkKGljb25JbWFnZUVsZW1lbnQpOworCisgICAgICAgIHZhciBuYW1l
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBuYW1lRWxl
bWVudC5hcHBlbmQoZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgbmFtZUVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiZnVuY3Rpb24tbmFtZSIpOworICAgICAgICB0aGlzLl9sb2NhdGlvbkVsZW1lbnQuYXBw
ZW5kQ2hpbGQobmFtZUVsZW1lbnQpOworCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAg
ICAgICAgICBkb250RmxvYXQ6IHRydWUsCisgICAgICAgICAgICBpZ25vcmVOZXR3b3JrVGFiOiB0
cnVlLAorICAgICAgICAgICAgaWdub3JlU2VhcmNoVGFiOiB0cnVlLAorICAgICAgICB9OworICAg
ICAgICBsZXQgbGlua0VsZW1lbnQgPSBXSS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb25MaW5rKFdJ
LmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUuc291cmNlQ29kZUxvY2F0aW9uLCBvcHRp
b25zKTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25FbGVtZW50LmFwcGVuZENoaWxkKGxpbmtFbGVt
ZW50KTsKKyAgICB9CisKKyAgICBfcmVzdW1lQnV0dG9uQ2xpY2tlZCgpCisgICAgeworICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgfQorfTsKKworV0kuRGVidWdnZXJE
YXNoYm9hcmRWaWV3LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lID0gV0kuQ2FsbEZyYW1lVmll
dy5GdW5jdGlvbkljb25TdHlsZUNsYXNzTmFtZTsKK1dJLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5F
dmVudExpc3RlbmVySWNvblN0eWxlQ2xhc3NOYW1lID0gV0kuQ2FsbEZyYW1lVmlldy5FdmVudExp
c3RlbmVySWNvblN0eWxlQ2xhc3NOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuY3NzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcu
Y3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVlOTQzZmVjOGI4ODc2MGY4ZjE4M2EyMmMxOTViOWE3MDAyN2VmMzMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5jc3MKQEAgLTAsMCArMSwyMTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK2JvZHk6bWF0Y2hlcygucGFnZSwgLndlYi1wYWdlKSAudG9vbGJhci5jb2xsYXBz
ZWQgLmRhc2hib2FyZC5kZWZhdWx0ID4gOm1hdGNoZXMoLnJlc291cmNlc1NpemUsIC50aW1lLCAu
bG9ncykgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK2JvZHk6bm90KC5wYWdlLCAud2ViLXBh
Z2UpIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IDptYXRjaGVzKC5yZXNvdXJjZXNDb3Vu
dCwgLnJlc291cmNlc1NpemUsIC50aW1lKSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0IHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGZsZXgt
Zmxvdzogcm93IG5vd3JhcDsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKK30KKworLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0geworICAgIGxpbmUtaGVpZ2h0OiAxM3B4
OworCisgICAgbWFyZ2luOiAxcHggMDsKKyAgICBwYWRkaW5nOiAwIDVweDsKKworICAgIGRpc3Bs
YXk6IGZsZXg7CisKKyAgICBtaW4td2lkdGg6IDQ1cHg7CisKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6
IGNlbnRlcjsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworCisgICAgYm9yZGVyLXJhZGl1czog
NHB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OworCisgICAgZm9udC1mYW1p
bHk6IC13ZWJraXQtc3lzdGVtLWZvbnQsIHNhbnMtc2VyaWY7CisgICAgZm9udC12YXJpYW50LW51
bWVyaWM6IHRhYnVsYXItbnVtczsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4g
Om1hdGNoZXMoLnRpbWUsIC5yZXNvdXJjZXNTaXplKSB7CisgICAgbWluLXdpZHRoOiA3MHB4Owor
fQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkOmhvdmVyIHsK
KyAgICBib3JkZXI6IDFweCBzb2xpZCBoc2xhKDAsIDAlLCAwJSwgMC4xKTsKK30KKworLnRvb2xi
YXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDphY3RpdmUgeworICAgIGJvcmRl
cjogMXB4IHNvbGlkIGhzbGEoMCwgMCUsIDAlLCAwLjIpOworfQorCisudG9vbGJhciAuZGFzaGJv
YXJkLmRlZmF1bHQgPiAuaXRlbSA+ICogeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgYWxpZ24t
aXRlbXM6IGNlbnRlcjsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0g
PiBpbWcgeworICAgIG9wYWNpdHk6IDAuMjsKKyAgICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6
IDE2cHg7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CisKKy50b29sYmFyIC5kYXNoYm9h
cmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQgPiBpbWcgeworICAgIG9wYWNpdHk6IDAuNTsKK30K
KworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDpob3ZlciA+IGlt
ZyB7CisgICAgb3BhY2l0eTogMC42NTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0
ID4gLml0ZW0gPiBkaXYgeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleDogMTsKKyAgICAt
d2Via2l0LXBhZGRpbmctc3RhcnQ6IDJweDsKKyAgICBjb2xvcjogaHNsYSgwLCAwJSwgMCUsIDAu
Mik7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQgPiBk
aXYgeworICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC43KTsKK30KKworLnRvb2xiYXIgLmRh
c2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDpob3ZlciA+IGRpdiB7CisgICAgY29sb3I6
IGhzbGEoMCwgMCUsIDAlLCAwLjg1KTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0
ID4gLnJlc291cmNlc0NvdW50ID4gaW1nIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1Jl
c291cmNlcy5zdmcpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAudGltZSA+
IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UaW1lLnN2Zyk7Cit9CisKKy50b29s
YmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5sb2dzID4gaW1nIHsKKyAgICBjb250ZW50OiB1cmwo
Li4vSW1hZ2VzL0xvZ3Muc3ZnKTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4g
LnJlc291cmNlc1NpemUgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvV2VpZ2h0
LnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMgPiBpbWcg
eworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvRXJyb3JzLnN2Zyk7Cit9CisKKy50b29sYmFy
IC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMuZW5hYmxlZCA+IGltZyB7CisgICAgY29udGVu
dDogdXJsKC4uL0ltYWdlcy9FcnJvcnNFbmFibGVkLnN2Zyk7CisgICAgb3BhY2l0eTogMC45Owor
fQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3JzLmVuYWJsZWQ6aG92ZXIg
PiBpbWcgeworICAgIG9wYWNpdHk6IDE7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVs
dCA+IC5lcnJvcnMuZW5hYmxlZCA+IGRpdiB7CisgICAgY29sb3I6IGhzbGEoMzU5LCA1NyUsIDUw
JSwgMC45KTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmVycm9ycy5lbmFi
bGVkOmhvdmVyID4gZGl2IHsKKyAgICBjb2xvcjogaHNsKDM1OSwgNTclLCA1MCUpOworfQorCisu
dG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzID4gaW1nIHsKKyAgICBjb250ZW50
OiB1cmwoLi4vSW1hZ2VzL0lzc3Vlcy5zdmcpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRl
ZmF1bHQgPiAuaXNzdWVzLmVuYWJsZWQgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFn
ZXMvSXNzdWVzRW5hYmxlZC5zdmcpOworICAgIG9wYWNpdHk6IDAuOTsKK30KKworLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWZhdWx0ID4gLmlzc3Vlcy5lbmFibGVkOmhvdmVyID4gaW1nIHsKKyAgICBv
cGFjaXR5OiAxOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzLmVu
YWJsZWQgPiBkaXYgeworICAgIGNvbG9yOiBoc2xhKDQzLCA5NiUsIDQ0JSwgMC45KTsKK30KKwor
LnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmlzc3Vlcy5lbmFibGVkOmhvdmVyID4gZGl2
IHsKKyAgICBjb2xvcjogaHNsKDQzLCA5NiUsIDQ0JSk7Cit9CisKKy8qIFN0eWxlcyBmb3IgdGhl
IHB1bHNpbmcgYW5pbWF0ZWQgc3RhdGUgb2YgY29uc29sZSBpdGVtcyAqLworCisudG9vbGJhciAu
ZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5wdWxzaW5nIHsKKyAgICBhbmltYXRpb24tbmFtZTog
Y29uc29sZS1pdGVtLXB1bHNlOworICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMC43NXM7Cit9CisK
K0BrZXlmcmFtZXMgY29uc29sZS1pdGVtLXB1bHNlIHsKKyAgICA1MCUgeyBvcGFjaXR5OiAwLjY7
IH0KK30KKworQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgeworICAgIC50b29s
YmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtID4gZGl2IHsKKyAgICAgICAgLyogRklYTUU6
IGludHJvZHVjZSBhIHZhcmlhYmxlIGZvciBvcGFjaXR5IGFuZCB1c2UgaXQgZm9yIGJvdGggdGV4
dCBhbmQgaWNvbnMgKi8KKyAgICAgICAgY29sb3I6IGhzbGEoMCwgMTAwJSwgMTAwJSwgMC4yKTsK
KyAgICB9CisKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVk
ID4gZGl2IHsKKyAgICAgICAgY29sb3I6IHZhcigtLWdseXBoLWNvbG9yKTsKKyAgICB9CisKKyAg
ICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkOmhvdmVyIHsKKyAg
ICAgICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsIDAlLCB2YXIoLS1mb3JlZ3JvdW5kLWxpZ2h0bmVz
cyksIDAuMSk7CisgICAgfQorCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0
ZW0uZW5hYmxlZDpob3ZlciA+IGRpdiB7CisgICAgICAgIGNvbG9yOiBoc2xhKDAsIDEwMCUsIDEw
MCUsIDAuODUpOworICAgIH0KKworICAgIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5y
ZXNvdXJjZXNDb3VudCA+IGltZywKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAu
cmVzb3VyY2VzU2l6ZSA+IGltZywKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAu
dGltZSA+IGltZywKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAubG9ncyA+IGlt
ZywKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3JzOm5vdCguZW5hYmxl
ZCkgPiBpbWcsCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmlzc3Vlczpub3Qo
LmVuYWJsZWQpID4gaW1nIHsKKyAgICAgICAgZmlsdGVyOiB2YXIoLS1maWx0ZXItaW52ZXJ0KTsK
KyAgICB9CisKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkIC5pdGVtLmJ1dHRvbiwKKyAgICAudG9v
bGJhciAuZGFzaGJvYXJkIC5pdGVtLmJ1dHRvbjphY3RpdmUgeworICAgICAgICBiYWNrZ3JvdW5k
OiBub25lOworICAgIH0KKworICAgIC5kYXNoYm9hcmQtY29udGFpbmVyIC5hZHZhbmNlLWFycm93
IHsKKyAgICAgICAgZmlsdGVyOiB2YXIoLS1maWx0ZXItaW52ZXJ0KTsKKyAgICB9Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0
RGFzaGJvYXJkVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MjQ5MzI4OTMzN2Q5YjRk
MmJiNTc4NjIyNDYzZGE4NzQ3OGI0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5qcwpAQCAt
MCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkRlZmF1bHREYXNo
Ym9hcmRWaWV3ID0gY2xhc3MgRGVmYXVsdERhc2hib2FyZFZpZXcgZXh0ZW5kcyBXSS5EYXNoYm9h
cmRWaWV3Cit7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAg
ICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCwgImRlZmF1bHQiKTsKKworICAgICAgICByZXBy
ZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkRlZmF1bHREYXNoYm9hcmQuRXZlbnQu
RGF0YURpZENoYW5nZSwgKCkgPT4geyB0aGlzLl91cGRhdGVEaXNwbGF5U29vbigpOyB9KTsKKyAg
ICAgICAgdGhpcy5fc2NoZWR1bGVkVXBkYXRlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKworICAg
ICAgICB0aGlzLl9pdGVtcyA9IHsKKyAgICAgICAgICAgIHJlc291cmNlc0NvdW50OiB7CisgICAg
ICAgICAgICAgICAgdG9vbHRpcDogV0kuVUlTdHJpbmcoIlNob3cgcGFnZSByZXNvdXJjZXMiKSwK
KyAgICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9yZXNvdXJjZXNJdGVtV2FzQ2xpY2tlZAor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHJlc291cmNlc1NpemU6IHsKKyAgICAgICAgICAg
ICAgICB0b29sdGlwOiBXSS5VSVN0cmluZygiU2hvdyBuZXR3b3JrIGluZm9ybWF0aW9uIiksCisg
ICAgICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fbmV0d29ya0l0ZW1XYXNDbGlja2VkCisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgdGltZTogeworICAgICAgICAgICAgICAgIHRvb2x0aXA6
IFdJLlVJU3RyaW5nKCJTaG93IHBhZ2UgbG9hZCB0aW1pbmciKSwKKyAgICAgICAgICAgICAgICBo
YW5kbGVyOiB0aGlzLl90aW1lbGluZUl0ZW1XYXNDbGlja2VkCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgbG9nczogeworICAgICAgICAgICAgICAgIHRvb2x0aXA6IFdJLlVJU3RyaW5nKCJT
aG93IG1lc3NhZ2VzIGxvZ2dlZCB0byB0aGUgQ29uc29sZSIpLAorICAgICAgICAgICAgICAgIGhh
bmRsZXI6IHRoaXMuX2NvbnNvbGVJdGVtV2FzQ2xpY2tlZC5iaW5kKHRoaXMsIFdJLkxvZ0NvbnRl
bnRWaWV3LlNjb3Blcy5Mb2dzKQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGVycm9yczog
eworICAgICAgICAgICAgICAgIHRvb2x0aXA6IFdJLlVJU3RyaW5nKCJTaG93IGVycm9ycyBsb2dn
ZWQgdG8gdGhlIENvbnNvbGUiKSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9jb25z
b2xlSXRlbVdhc0NsaWNrZWQuYmluZCh0aGlzLCBXSS5Mb2dDb250ZW50Vmlldy5TY29wZXMuRXJy
b3JzKQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGlzc3VlczogeworICAgICAgICAgICAg
ICAgIHRvb2x0aXA6IFdJLlVJU3RyaW5nKCJTaG93IHdhcm5pbmdzIGxvZ2dlZCB0byB0aGUgQ29u
c29sZSIpLAorICAgICAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX2NvbnNvbGVJdGVtV2FzQ2xp
Y2tlZC5iaW5kKHRoaXMsIFdJLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5XYXJuaW5ncykKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMuX2l0
ZW1zKQorICAgICAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudEZvck5hbWVkSXRlbShuYW1lKTsK
KyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfdXBkYXRlRGlzcGxheVNvb24oKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc2NoZWR1bGVkVXBkYXRlSWRlbnRpZmllciA9
IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl91cGRhdGVEaXNwbGF5LmJpbmQodGhpcykpOwor
ICAgIH0KKworICAgIF91cGRhdGVEaXNwbGF5KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NjaGVk
dWxlZFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisKKyAgICAgICAgdmFyIGRhc2hib2Fy
ZCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisKKyAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkg
b2YgWyJsb2dzIiwgImlzc3VlcyIsICJlcnJvcnMiXSkKKyAgICAgICAgICAgIHRoaXMuX3NldENv
bnNvbGVJdGVtVmFsdWUoY2F0ZWdvcnksIGRhc2hib2FyZFtjYXRlZ29yeV0pOworCisgICAgICAg
IHZhciB0aW1lSXRlbSA9IHRoaXMuX2l0ZW1zLnRpbWU7CisgICAgICAgIHRpbWVJdGVtLnRleHQg
PSBkYXNoYm9hcmQudGltZSA/IE51bWJlci5zZWNvbmRzVG9TdHJpbmcoZGFzaGJvYXJkLnRpbWUp
IDogZW1EYXNoOworICAgICAgICB0aGlzLl9zZXRJdGVtRW5hYmxlZCh0aW1lSXRlbSwgZGFzaGJv
YXJkLnRpbWUgPiAwKTsKKworICAgICAgICB2YXIgY291bnRJdGVtID0gdGhpcy5faXRlbXMucmVz
b3VyY2VzQ291bnQ7CisgICAgICAgIGNvdW50SXRlbS50ZXh0ID0gTnVtYmVyLmFiYnJldmlhdGUo
ZGFzaGJvYXJkLnJlc291cmNlc0NvdW50KTsKKyAgICAgICAgdGhpcy5fc2V0SXRlbUVuYWJsZWQo
Y291bnRJdGVtLCBkYXNoYm9hcmQucmVzb3VyY2VzQ291bnQgPiAwKTsKKworICAgICAgICB2YXIg
c2l6ZUl0ZW0gPSB0aGlzLl9pdGVtcy5yZXNvdXJjZXNTaXplOworICAgICAgICBzaXplSXRlbS50
ZXh0ID0gZGFzaGJvYXJkLnJlc291cmNlc1NpemUgPyBOdW1iZXIuYnl0ZXNUb1N0cmluZyhkYXNo
Ym9hcmQucmVzb3VyY2VzU2l6ZSwgZmFsc2UpIDogZW1EYXNoOworICAgICAgICB0aGlzLl9zZXRJ
dGVtRW5hYmxlZChzaXplSXRlbSwgZGFzaGJvYXJkLnJlc291cmNlc1NpemUgPiAwKTsKKyAgICB9
CisKKyAgICBfYXBwZW5kRWxlbWVudEZvck5hbWVkSXRlbShuYW1lKQorICAgIHsKKyAgICAgICAg
dmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1tuYW1lXTsKKworICAgICAgICBpdGVtLmNvbnRhaW5lciA9
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikp
OworICAgICAgICBpdGVtLmNvbnRhaW5lci5jbGFzc05hbWUgPSAiaXRlbSAiICsgbmFtZTsKKwor
ICAgICAgICBpdGVtLmNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbWciKSk7CisKKyAgICAgICAgaXRlbS5vdXRsZXQgPSBpdGVtLmNvbnRhaW5lci5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisKKyAgICAgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGl0ZW0sICJ0ZXh0IiwgeworICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihu
ZXdUZXh0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5ld1RleHQgPSBuZXdUZXh0
LnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgaWYgKG5ld1RleHQgPT09IGl0ZW0ub3V0bGV0
LnRleHRDb250ZW50KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgaXRlbS5vdXRsZXQudGV4dENvbnRlbnQgPSBuZXdUZXh0OworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKworICAgICAgICBpdGVtLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIChldmVudCkgPT4geworICAgICAgICAgICAgdGhpcy5faXRlbVdhc0NsaWNrZWQobmFtZSk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIF9pdGVtV2FzQ2xpY2tlZChuYW1lKQorICAgIHsK
KyAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1tuYW1lXTsKKyAgICAgICAgaWYgKCFpdGVt
LmNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoV0kuRGVmYXVsdERhc2hib2FyZFZpZXcuRW5h
YmxlZEl0ZW1TdHlsZUNsYXNzTmFtZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKGl0ZW0uaGFuZGxlcikKKyAgICAgICAgICAgIGl0ZW0uaGFuZGxlci5jYWxsKHRoaXMpOwor
ICAgIH0KKworICAgIF9yZXNvdXJjZXNJdGVtV2FzQ2xpY2tlZCgpCisgICAgeworICAgICAgICBX
SS5zaG93U291cmNlc1RhYih7aW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0
aW9uSW5pdGlhdG9yLkRhc2hib2FyZH0pOworICAgIH0KKworICAgIF9uZXR3b3JrSXRlbVdhc0Ns
aWNrZWQoKQorICAgIHsKKyAgICAgICAgV0kuc2hvd05ldHdvcmtUYWIoe2luaXRpYXRvckhpbnQ6
IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5EYXNoYm9hcmR9KTsKKyAgICB9
CisKKyAgICBfdGltZWxpbmVJdGVtV2FzQ2xpY2tlZCgpCisgICAgeworICAgICAgICBXSS5zaG93
VGltZWxpbmVUYWIoe2luaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbklu
aXRpYXRvci5EYXNoYm9hcmR9KTsKKyAgICB9CisKKyAgICBfY29uc29sZUl0ZW1XYXNDbGlja2Vk
KHNjb3BlKQorICAgIHsKKyAgICAgICAgV0kuc2hvd0NvbnNvbGVUYWIoc2NvcGUsIHsKKyAgICAg
ICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRv
ci5EYXNoYm9hcmQsCisgICAgICAgIH0pOworICAgIH0KKworICAgIF9zZXRDb25zb2xlSXRlbVZh
bHVlKGl0ZW1OYW1lLCBuZXdWYWx1ZSkKKyAgICB7CisgICAgICAgIHZhciBpVmFyTmFtZSA9ICJf
IiArIGl0ZW1OYW1lOworICAgICAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHRoaXNbaVZhck5hbWVd
OworICAgICAgICB0aGlzW2lWYXJOYW1lXSA9IG5ld1ZhbHVlOworCisgICAgICAgIHZhciBpdGVt
ID0gdGhpcy5faXRlbXNbaXRlbU5hbWVdOworICAgICAgICBpdGVtLnRleHQgPSBOdW1iZXIuYWJi
cmV2aWF0ZShuZXdWYWx1ZSk7CisgICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKGl0ZW0sIG5l
d1ZhbHVlID4gMCk7CisKKyAgICAgICAgaWYgKG5ld1ZhbHVlIDw9IHByZXZpb3VzVmFsdWUpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGl0ZW0uY29udGFp
bmVyOworCisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZGVkKGV2ZW50KQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBjb250YWluZXIpIHsKKyAgICAgICAg
ICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgicHVsc2luZyIpOworICAgICAgICAg
ICAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLCBhbmlt
YXRpb25FbmRlZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBu
ZWVkIHRvIGZvcmNlIGEgc3R5bGUgaW52YWxpZGF0aW9uIGluIHRoZSBjYXNlIHdoZXJlIHdlIGFs
cmVhZHkKKyAgICAgICAgLy8gd2VyZSBhbmltYXRpbmcgdGhpcyBpdGVtIGFmdGVyIHdlJ3ZlIHJl
bW92ZWQgdGhlIHB1bHNpbmcgQ1NTIGNsYXNzLgorICAgICAgICBpZiAoY29udGFpbmVyLmNsYXNz
TGlzdC5jb250YWlucygicHVsc2luZyIpKSB7CisgICAgICAgICAgICBjb250YWluZXIuY2xhc3NM
aXN0LnJlbW92ZSgicHVsc2luZyIpOworICAgICAgICAgICAgY29udGFpbmVyLnJlY2FsY3VsYXRl
U3R5bGVzKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50
TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsIGFuaW1hdGlvbkVuZGVkKTsKKworICAgICAgICBjb250
YWluZXIuY2xhc3NMaXN0LmFkZCgicHVsc2luZyIpOworICAgIH0KKworICAgIF9zZXRJdGVtRW5h
YmxlZChpdGVtLCBlbmFibGVkKQorICAgIHsKKyAgICAgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAg
ICAgICAgIGl0ZW0uY29udGFpbmVyLnRpdGxlID0gaXRlbS50b29sdGlwOworICAgICAgICAgICAg
aXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmFkZChXSS5EZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFi
bGVkSXRlbVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGl0
ZW0uY29udGFpbmVyLnRpdGxlID0gIiI7CisgICAgICAgICAgICBpdGVtLmNvbnRhaW5lci5jbGFz
c0xpc3QucmVtb3ZlKFdJLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFz
c05hbWUpOworICAgICAgICB9CisgICAgfQorfTsKKworV0kuRGVmYXVsdERhc2hib2FyZFZpZXcu
RW5hYmxlZEl0ZW1TdHlsZUNsYXNzTmFtZSA9ICJlbmFibGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRl
bS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EaXZpZGVy
TmF2aWdhdGlvbkl0ZW0uY3NzCmluZGV4IDBjNzc2NjgwNmVjMTJlYjVkODAzYjFiMDBmM2I4NjEw
MGYwNTk4NGYuLjIzNzkyZDI4OTNiODNhNWExZDgzYmFkZjg5MWY0MDI2NTJiM2Q2NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJO
YXZpZ2F0aW9uSXRlbS5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzcwpAQCAtMjUsOCArMjUsMTEgQEAKIAog
Lm5hdmlnYXRpb24tYmFyIC5pdGVtLmRpdmlkZXIgewogICAgIHdpZHRoOiAxcHg7Ci0gICAgaGVp
Z2h0OiAxNnB4OwotICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgNzQlKTsKKyAgICBo
ZWlnaHQ6IDEwMCU7CisgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KGhzbCgw
LCAwJSwgNzQlKSwgaHNsKDAsIDAlLCA3NCUpKTsKKyAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUg
MTZweDsKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIGJhY2tncm91bmQt
cG9zaXRpb246IGNlbnRlcjsKIH0KIAogQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwt
cmF0aW86IDIpIHsKQEAgLTM3LDYgKzQwLDcgQEAKIAogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNj
aGVtZTogZGFyaykgewogICAgIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5kaXZpZGVyIHsKLSAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCA0MCUpOworICAgICAgICAtLWRpdmlkZXIt
YmFja2dyb3VuZDogaHNsKDAsIDAlLCA0MCUpOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBs
aW5lYXItZ3JhZGllbnQodmFyKC0tZGl2aWRlci1iYWNrZ3JvdW5kKSwgdmFyKC0tZGl2aWRlci1i
YWNrZ3JvdW5kKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcu
anMKaW5kZXggZmYyMWNmMDI1ZjJlNTQxMmYwOWRiZTdkZjVkNjUyNGFhODdmODVjNC4uNjI3Mjk3
ZmM3N2RhNzJmOGJjNmNiZmQ1M2FkNWQwMzM1MWU5MDg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNUYWJDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FbGVtZW50
c1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNSwxOCArMjUsMTUgQEAKIAogV0kuRWxlbWVudHNUYWJD
b250ZW50VmlldyA9IGNsYXNzIEVsZW1lbnRzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0
cnVjdG9yKGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBsZXQgZGV0YWlsc1NpZGViYXJQYW5l
bENvbnN0cnVjdG9ycyA9IFsKLSAgICAgICAgICAgIFdJLlJ1bGVzU3R5bGVEZXRhaWxzU2lkZWJh
clBhbmVsLAotICAgICAgICAgICAgV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNTaWRlYmFyUGFuZWws
Ci0gICAgICAgICAgICBXSS5DaGFuZ2VzRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAg
IFdJLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICBdOworICAgICAgICBsZXQg
dGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLkVsZW1lbnRz
VGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKworICAgICAgICBsZXQgZGV0YWlsc1NpZGViYXJQ
YW5lbENvbnN0cnVjdG9ycyA9IFtXSS5SdWxlc1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCwgV0ku
Q29tcHV0ZWRTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLkNoYW5nZXNEZXRhaWxzU2lkZWJh
clBhbmVsLCBXSS5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbF07CiAgICAgICAgIGlmIChJbnNw
ZWN0b3JCYWNrZW5kLmhhc0RvbWFpbigiTGF5ZXJUcmVlIikpCiAgICAgICAgICAgICBkZXRhaWxz
U2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLnB1c2goV0kuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQ
YW5lbCk7CiAKLSAgICAgICAgc3VwZXIoRWxlbWVudHNUYWJDb250ZW50Vmlldy50YWJJbmZvKCks
IHtkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLCBkaXNhYmxlQmFja0ZvcndhcmQ6IHRy
dWV9KTsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAiZWxlbWVudHMiLCAiZWxlbWVudHMi
LCB0YWJCYXJJdGVtLCBudWxsLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLCB0cnVl
KTsKIAogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdv
cmtNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hh
bmdlLCB0aGlzKTsKICAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5F
dmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwg
dGhpcyk7CkBAIC00NSw3ICs0Miw2IEBAIFdJLkVsZW1lbnRzVGFiQ29udGVudFZpZXcgPSBjbGFz
cyBFbGVtZW50c1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzCiAgICAgc3Rh
dGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50
aWZpZXI6IEVsZW1lbnRzVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgICAgIGltYWdlOiAi
SW1hZ2VzL0VsZW1lbnRzLnN2ZyIsCiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIkVs
ZW1lbnRzIiksCiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0uY3NzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmxleGlibGVTcGFjZU5hdmln
YXRpb25JdGVtLmNzcwppbmRleCA1ZmE5MjJlMDEwNTIxOGRmYzU4ZTZlNmVmODU3Y2I3ZWM4MmY0
YjE3Li4wMzQ0MDVlNWY0MmM3MzRjMjc2M2I0ZWZkYzczYzI5MTcyYjcyNTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNl
TmF2aWdhdGlvbkl0ZW0uY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5jc3MKQEAgLTIzLDE0ICsyMywx
NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS5uYXZpZ2F0
aW9uLWJhciAuaXRlbS5mbGV4aWJsZS1zcGFjZSB7Cis6bWF0Y2hlcygubmF2aWdhdGlvbi1iYXIs
IC50b29sYmFyKSAuaXRlbS5mbGV4aWJsZS1zcGFjZSB7CiAgICAgZmxleDogMTsKIH0KIAotLm5h
dmlnYXRpb24tYmFyIC5pdGVtLmZsZXhpYmxlLXNwYWNlLmFsaWduLXN0YXJ0ID4gLml0ZW0gewor
Om1hdGNoZXMoLm5hdmlnYXRpb24tYmFyLCAudG9vbGJhcikgLml0ZW0uZmxleGlibGUtc3BhY2Uu
YWxpZ24tc3RhcnQgPiAuaXRlbSB7CiAgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiBhdXRvOwogfQog
Ci0ubmF2aWdhdGlvbi1iYXIgLml0ZW0uZmxleGlibGUtc3BhY2UuYWxpZ24tZW5kID4gLml0ZW0g
eworOm1hdGNoZXMoLm5hdmlnYXRpb24tYmFyLCAudG9vbGJhcikgLml0ZW0uZmxleGlibGUtc3Bh
Y2UuYWxpZ24tZW5kID4gLml0ZW0gewogICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiBhdXRvOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
R2VuZXJhbFRhYkJhckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9HZW5lcmFsVGFiQmFySXRlbS5qcwppbmRleCA3N2Y1YzRmMTg1OTU5ZjM2Y2M2OWFi
ZmJjNDY4OTliMjdjNWIzYzJkLi42ZDNhYzA3ODYwNDY4OTEyMTFkZDljN2IxODYyNGY3OGYzZjdk
NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9HZW5lcmFsVGFiQmFySXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9HZW5lcmFsVGFiQmFySXRlbS5qcwpAQCAtMjYsMTEgKzI2LDEyIEBACiAK
IFdJLkdlbmVyYWxUYWJCYXJJdGVtID0gY2xhc3MgR2VuZXJhbFRhYkJhckl0ZW0gZXh0ZW5kcyBX
SS5UYWJCYXJJdGVtCiB7Ci0gICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QsIGltYWdl
LCB0aXRsZSwge2lzRXBoZW1lcmFsfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGltYWdlLCB0aXRs
ZSwgaXNFcGhlbWVyYWwgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIHN1cGVyKHJlcHJlc2VudGVk
T2JqZWN0LCBpbWFnZSwgdGl0bGUpOworICAgICAgICBzdXBlcihpbWFnZSwgdGl0bGUpOwogCiAg
ICAgICAgIHRoaXMuX2lzRXBoZW1lcmFsID0gaXNFcGhlbWVyYWw7CisKICAgICAgICAgaWYgKHRo
aXMuX2lzRXBoZW1lcmFsKSB7CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiZXBoZW1lcmFsIik7CiAKQEAgLTQzLDE2ICs0NCw5IEBAIFdJLkdlbmVyYWxUYWJCYXJJdGVt
ID0gY2xhc3MgR2VuZXJhbFRhYkJhckl0ZW0gZXh0ZW5kcyBXSS5UYWJCYXJJdGVtCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICAvLyBTdGF0aWMKLQotICAgIHN0YXRpYyBmcm9tVGFiQ29udGVudFZp
ZXcodGFiQ29udGVudFZpZXcpCisgICAgc3RhdGljIGZyb21UYWJJbmZvKHtpbWFnZSwgdGl0bGUs
IGlzRXBoZW1lcmFsfSkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhYkNvbnRlbnRW
aWV3IGluc3RhbmNlb2YgV0kuVGFiQ29udGVudFZpZXcpOwotCi0gICAgICAgIGxldCB7aW1hZ2Us
IHRpdGxlfSA9IHRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnRhYkluZm8oKTsKLSAgICAgICAg
cmV0dXJuIG5ldyBXSS5HZW5lcmFsVGFiQmFySXRlbSh0YWJDb250ZW50VmlldywgaW1hZ2UsIHRp
dGxlLCB7Ci0gICAgICAgICAgICBpc0VwaGVtZXJhbDogIXRhYkNvbnRlbnRWaWV3LmNvbnN0cnVj
dG9yLnNob3VsZFNhdmVUYWIoKSwKLSAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBuZXcgV0ku
R2VuZXJhbFRhYkJhckl0ZW0oaW1hZ2UsIHRpdGxlLCBpc0VwaGVtZXJhbCk7CiAgICAgfQogCiAg
ICAgLy8gUHVibGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhpY3NUYWJDb250ZW50Vmlldy5qcwppbmRleCBj
YzAyOWUzOGUwM2ZhYjA2MTljMWY2MDVjNGI1ODViMTE1NWFlZTc4Li4yZTZkODU3MjI2Nzk4MzBl
NGE2NTc3MTk3ZDlhOTI4NTM4MjcwM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYXBoaWNzVGFiQ29udGVu
dFZpZXcuanMKQEAgLTI3LDE2ICsyNywxNyBAQCBXSS5HcmFwaGljc1RhYkNvbnRlbnRWaWV3ID0g
Y2xhc3MgR3JhcGhpY3NUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93cwogewog
ICAgIGNvbnN0cnVjdG9yKCkKICAgICB7Ci0gICAgICAgIHN1cGVyKEdyYXBoaWNzVGFiQ29udGVu
dFZpZXcudGFiSW5mbygpLCB7Ci0gICAgICAgICAgICBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29u
c3RydWN0b3I6IFdJLkNhbnZhc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgIGRldGFpbHNTaWRl
YmFyUGFuZWxDb25zdHJ1Y3RvcnM6IFsKLSAgICAgICAgICAgICAgICBXSS5SZWNvcmRpbmdTdGF0
ZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICAgICAgV0kuUmVjb3JkaW5nVHJhY2VE
ZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgICAgIFdJLkNhbnZhc0RldGFpbHNTaWRl
YmFyUGFuZWwsCi0gICAgICAgICAgICAgICAgV0kuQW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQYW5l
bCwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBkaXNhYmxlQmFja0ZvcndhcmQ6IHRydWUs
Ci0gICAgICAgIH0pOworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJ
dGVtLmZyb21UYWJJbmZvKFdJLkdyYXBoaWNzVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKwor
ICAgICAgICBjb25zdCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IgPSBXSS5DYW52
YXNTaWRlYmFyUGFuZWw7CisgICAgICAgIGNvbnN0IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1
Y3RvcnMgPSBbCisgICAgICAgICAgICBXSS5SZWNvcmRpbmdTdGF0ZURldGFpbHNTaWRlYmFyUGFu
ZWwsCisgICAgICAgICAgICBXSS5SZWNvcmRpbmdUcmFjZURldGFpbHNTaWRlYmFyUGFuZWwsCisg
ICAgICAgICAgICBXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsLAorICAgICAgICAgICAgV0ku
QW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQYW5lbCwKKyAgICAgICAgXTsKKyAgICAgICAgY29uc3Qg
ZGlzYWJsZUJhY2tGb3J3YXJkID0gdHJ1ZTsKKyAgICAgICAgc3VwZXIoImdyYXBoaWNzIiwgWyJn
cmFwaGljcyJdLCB0YWJCYXJJdGVtLCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3Is
IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMsIGRpc2FibGVCYWNrRm9yd2FyZCk7CiAK
ICAgICAgICAgdGhpcy5fY2FudmFzZXNUcmVlT3V0bGluZSA9IG5ldyBXSS5UcmVlT3V0bGluZTsK
ICAgICAgICAgdGhpcy5fY2FudmFzZXNUcmVlT3V0bGluZS5hbGxvd3NSZXBlYXRTZWxlY3Rpb24g
PSB0cnVlOwpAQCAtNjQsNyArNjUsNiBAQCBXSS5HcmFwaGljc1RhYkNvbnRlbnRWaWV3ID0gY2xh
c3MgR3JhcGhpY3NUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93cwogICAgIHN0
YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVu
dGlmaWVyOiBHcmFwaGljc1RhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTog
IkltYWdlcy9HcmFwaGljcy5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJH
cmFwaGljcyIpLAogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvR3JvdXBOYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyb3VwTmF2aWdhdGlvbkl0ZW0uanMKaW5k
ZXggNWM2MDRkOWZmMWQ4M2U5MjExMjFiOWY5OGE5YjA5MjNmMzE5MDk0YS4uZWJiODhkODYxZTJl
NGM1NWU3ZGZiNTFmMTAzNTljMWY2YTU3MWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JvdXBOYXZpZ2F0aW9uSXRlbS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hcm91cE5hdmlnYXRpb25J
dGVtLmpzCkBAIC01MSwxNiArNTEsNiBAQCBXSS5Hcm91cE5hdmlnYXRpb25JdGVtID0gY2xhc3Mg
R3JvdXBOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdJLk5hdmlnYXRpb25JdGVtCiAgICAgICAgIHRo
aXMuX25lZWRzVXBkYXRlID0gdHJ1ZTsKICAgICB9CiAKLSAgICBnZXQgaGlkZGVuKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBzdXBlci5oaWRkZW4gfHwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmV2
ZXJ5KChpdGVtKSA9PiBpdGVtLmhpZGRlbik7Ci0gICAgfQotCi0gICAgc2V0IGhpZGRlbihmbGFn
KQotICAgIHsKLSAgICAgICAgc3VwZXIuaGlkZGVuID0gZmxhZzsKLSAgICB9Ci0KICAgICBnZXQg
d2lkdGgoKQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlSXRlbXMoKTsKQEAgLTc3LDExICs2
Nyw2IEBAIFdJLkdyb3VwTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBHcm91cE5hdmlnYXRpb25JdGVt
IGV4dGVuZHMgV0kuTmF2aWdhdGlvbkl0ZW0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgZ2V0
IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBbImdyb3VwIl07
Ci0gICAgfQotCiAgICAgdXBkYXRlKG9wdGlvbnMgPSB7fSkKICAgICB7CiAgICAgICAgIHN1cGVy
LnVwZGF0ZShvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzVGFiQ29udGVudFZpZXcuanMKaW5kZXgg
MmJjMGM5YjQzNTBjYzcxYjM0Yzg3MDMzMGI4ZGQ2MjI2NDkzMDM3MS4uMmVhZmY1ZDk1MDU3YTQ4
OGUwYjllMDhkNjQ0N2ZmN2VlMjE4YjFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzVGFiQ29udGVudFZp
ZXcuanMKQEAgLTI3LDkgKzI3LDEyIEBAIFdJLkxheWVyc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
TGF5ZXJzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlclRhCiB7CiAgICAg
Y29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgc3VwZXIoTGF5ZXJzVGFiQ29udGVudFZpZXcu
dGFiSW5mbygpLCB7Ci0gICAgICAgICAgICBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3Jz
OiBbV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsXSwKLSAgICAgICAgfSk7CisgICAgICAgIGxl
dCB0YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuTGF5ZXJz
VGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKworICAgICAgICBjb25zdCBuYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsQ29uc3RydWN0b3IgPSBudWxsOworICAgICAgICBjb25zdCBkZXRhaWxzU2lkZWJh
clBhbmVsQ29uc3RydWN0b3JzID0gW1dJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5lbF07CisgICAg
ICAgIGNvbnN0IGRpc2FibGVCYWNrRm9yd2FyZCA9IHRydWU7CisgICAgICAgIHN1cGVyKCJsYXll
cnMiLCAibGF5ZXJzIiwgdGFiQmFySXRlbSwgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVj
dG9yLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLCBkaXNhYmxlQmFja0ZvcndhcmQp
OwogCiAgICAgICAgIHRoaXMuX2xheWVyRGV0YWlsc1NpZGViYXJQYW5lbCA9IHRoaXMuZGV0YWls
c1NpZGViYXJQYW5lbHNbMF07CiAgICAgICAgIHRoaXMuX2xheWVyRGV0YWlsc1NpZGViYXJQYW5l
bC5hZGRFdmVudExpc3RlbmVyKFdJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5FdmVudC5TZWxl
Y3RlZExheWVyQ2hhbmdlZCwgdGhpcy5fZGV0YWlsc1NpZGViYXJTZWxlY3RlZExheWVyQ2hhbmdl
ZCwgdGhpcyk7CkBAIC00Myw3ICs0Niw2IEBAIFdJLkxheWVyc1RhYkNvbnRlbnRWaWV3ID0gY2xh
c3MgTGF5ZXJzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlclRhCiAgICAg
c3RhdGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlk
ZW50aWZpZXI6IExheWVyc1RhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTog
IkltYWdlcy9MYXllcnMuc3ZnIiwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiTGF5
ZXJzIiksCiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9MZWdhY3lUYWJCYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lUYWJCYXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQxYmJkZDlk
MjJmZDgwMjRiMmZmMjg5ZjAzMzU5Y2YwZjI4Yjg5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeVRhYkJhci5qcwpAQCAt
MCwwICsxLDg3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkxlZ2FjeVRhYkJhciA9IGNsYXNzIExlZ2Fj
eVRhYkJhciBleHRlbmRzIFdJLlZpZXcKK3sKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCB0YWJC
YXJJdGVtcykKKyAgICB7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOworCisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItYmFyIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFibGlzdCIpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhp
cykpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
Ll9oYW5kbGVDbGljay5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9oYW5kbGVNb3VzZUxlYXZlLmJpbmQodGhpcykp
OworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0
aGlzLl9oYW5kbGVDb250ZXh0TWVudS5iaW5kKHRoaXMpKTsKKworICAgICAgICB0aGlzLmVsZW1l
bnQuY3JlYXRlQ2hpbGQoImRpdiIsICJ0b3AtYm9yZGVyIik7CisKKyAgICAgICAgdGhpcy5fdGFi
QmFySXRlbXMgPSBbXTsKKyAgICAgICAgdGhpcy5faGlkZGVuVGFiQmFySXRlbXMgPSBbXTsKKwor
ICAgICAgICBpZiAodGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHRhYkJhckl0
ZW0gaW4gdGFiQmFySXRlbXMpCisgICAgICAgICAgICAgICAgdGhpcy5hZGRUYWJCYXJJdGVtKHRh
YkJhckl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5hZGRUYWJCYXJJdGVtKFdJLnNl
dHRpbmdzVGFiQ29udGVudFZpZXcudGFiQmFySXRlbSwge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1
ZX0pOworCisgICAgICAgIHRoaXMuX25ld1RhYlRhYkJhckl0ZW0gPSBuZXcgV0kuUGlubmVkVGFi
QmFySXRlbSgiSW1hZ2VzL05ld1RhYlBsdXMuc3ZnIiwgV0kuVUlTdHJpbmcoIkNyZWF0ZSBhIG5l
dyB0YWIiKSk7CisgICAgICAgIHRoaXMuX25ld1RhYlRhYkJhckl0ZW0uZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWVudGVyIiwgdGhpcy5faGFuZGxlTmV3VGFiTW91c2VFbnRlci5iaW5k
KHRoaXMpKTsKKyAgICAgICAgdGhpcy5fbmV3VGFiVGFiQmFySXRlbS5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlTmV3VGFiQ2xpY2suYmluZCh0aGlzKSk7Cisg
ICAgICAgIHRoaXMuYWRkVGFiQmFySXRlbSh0aGlzLl9uZXdUYWJUYWJCYXJJdGVtLCB7c3VwcHJl
c3NBbmltYXRpb25zOiB0cnVlfSk7CisKKyAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFiQmFySXRl
bSA9IG5ldyBXSS5QaW5uZWRUYWJCYXJJdGVtKCJJbWFnZXMvVGFiUGlja2VyLnN2ZyIsIFdJLlVJ
U3RyaW5nKCJTaG93IGhpZGRlbiB0YWJzIikpOworICAgICAgICB0aGlzLl90YWJQaWNrZXJUYWJC
YXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLXBpY2tlciIpOworICAgICAgICB0aGlz
LmFkZFRhYkJhckl0ZW0odGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSwge3N1cHByZXNzQW5pbWF0
aW9uczogdHJ1ZX0pOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IG5ld1RhYlRh
YkJhckl0ZW0oKSB7IHJldHVybiB0aGlzLl9uZXdUYWJUYWJCYXJJdGVtOyB9CisKKyAgICB1cGRh
dGVOZXdUYWJUYWJCYXJJdGVtU3RhdGUoKQorICAgIHsKKyAgICAgICAgbGV0IG5ld1RhYkV4aXN0
cyA9ICFXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZChXSS5OZXdUYWJDb250ZW50Vmlldy5UeXBl
KTsKKyAgICAgICAgdGhpcy5fbmV3VGFiVGFiQmFySXRlbS5kaXNhYmxlZCA9IG5ld1RhYkV4aXN0
czsKKyAgICB9CisKKyAgICBhZGRUYWJCYXJJdGVtKHRhYkJhckl0ZW0sIG9wdGlvbnMgPSB7fSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmluc2VydFRhYkJhckl0ZW0odGFiQmFySXRlbSwg
dGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoLCBvcHRpb25zKTsKKyAgICB9CisKKyAgICBpbnNlcnRU
YWJCYXJJdGVtKHRhYkJhckl0ZW0sIGluZGV4LCBvcHRpb25zID0ge30pCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0YWJCYXJJdGVtIGluc3RhbmNlb2YgV0kuVGFiQmFySXRlbSk7Cisg
ICAgICAgIGlmICghKHRhYkJhckl0ZW0gaW5zdGFuY2VvZiBXSS5UYWJCYXJJdGVtKSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGlmICh0YWJCYXJJdGVtLnBhcmVudFRhYkJh
ciA9PT0gdGhpcykKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGlmICh0aGlz
Ll90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlcikgeworICAgICAgICAgICAgLy8gRGVs
YXkgYWRkaW5nIHRoZSBuZXcgdGFiIHVudGlsIHdlIGNhbiBleHBhbmQgdGhlIHRhYnMgYWZ0ZXIg
YSBjbG9zZWQgdGFiLgorICAgICAgICAgICAgdGhpcy5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVy
Q2xvc2UoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICB0aGlzLmluc2VydFRhYkJhckl0
ZW0odGFiQmFySXRlbSwgaW5kZXgsIG9wdGlvbnMpOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0YWJCYXJJdGVtLnBh
cmVudFRhYkJhcikKKyAgICAgICAgICAgIHRhYkJhckl0ZW0ucGFyZW50VGFiQmFyLnJlbW92ZVRh
YkJhckl0ZW0odGFiQmFySXRlbSk7CisKKyAgICAgICAgdGFiQmFySXRlbS5wYXJlbnRUYWJCYXIg
PSB0aGlzOworCisgICAgICAgIGluZGV4ID0gTnVtYmVyLmNvbnN0cmFpbihpbmRleCwgMCwgdGhp
cy5ub3JtYWxUYWJDb3VudCk7CisKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoImFuaW1hdGluZyIpKSB7CisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykpOworICAgICAgICAgICAgb3B0aW9ucy5zdXBwcmVz
c0FuaW1hdGlvbnMgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGJlZm9yZVRhYlNp
emVzQW5kUG9zaXRpb25zOworICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25z
KQorICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRU
YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKworICAgICAgICB0aGlzLl90YWJCYXJJdGVt
cy5zcGxpY2UoaW5kZXgsIDAsIHRhYkJhckl0ZW0pOworCisgICAgICAgIHZhciBuZXh0U2libGlu
ZyA9IHRoaXMuX3RhYkJhckl0ZW1zW2luZGV4ICsgMV07CisgICAgICAgIGxldCBuZXh0U2libGlu
Z0VsZW1lbnQgPSBuZXh0U2libGluZyA/IG5leHRTaWJsaW5nLmVsZW1lbnQgOiB0aGlzLl90YWJC
YXJJdGVtcy5sYXN0VmFsdWUuZWxlbWVudDsKKworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNv
bnRhaW5zKG5leHRTaWJsaW5nRWxlbWVudCkpCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuaW5z
ZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRhYkJhckl0ZW0u
ZWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmds
ZS10YWIiLCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSk7CisKKyAgICAgICAgdGFi
QmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxsOworICAgICAgICB0YWJCYXJJdGVtLmVs
ZW1lbnQuc3R5bGUud2lkdGggPSBudWxsOworCisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJz
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFu
aW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImluc2Vy
dGluZy10YWIiKTsKKworICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQ
b3NpdGlvbnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyk7CisKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5
bGVzTGlzdGVuZXIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVz
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
InN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKCJpbnNlcnRpbmctdGFiIik7CisKKyAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJiZWluZy1pbnNlcnRlZCIpOworCisgICAgICAgICAgICB0aGlzLl9j
bGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworCisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0
eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVz
c0FuaW1hdGlvbnMpIHsKKyAgICAgICAgICAgIHZhciBhZnRlclRhYlNpemVzQW5kUG9zaXRpb25z
ID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAg
ICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgICAgIGxldCB0YWJCYXJJdGVtcyA9
IHRoaXMuX3RhYkJhckl0ZW1zRnJvbUxlZnRUb1JpZ2h0KCk7CisgICAgICAgICAgICBsZXQgcHJl
dmlvdXNUYWJCYXJJdGVtID0gdGFiQmFySXRlbXNbdGFiQmFySXRlbXMuaW5kZXhPZih0YWJCYXJJ
dGVtKSAtIDFdIHx8IG51bGw7CisgICAgICAgICAgICBsZXQgcHJldmlvdXNUYWJCYXJJdGVtU2l6
ZUFuZFBvc2l0aW9uID0gcHJldmlvdXNUYWJCYXJJdGVtID8gYmVmb3JlVGFiU2l6ZXNBbmRQb3Np
dGlvbnMuZ2V0KHByZXZpb3VzVGFiQmFySXRlbSkgOiBudWxsOworCisgICAgICAgICAgICBpZiAo
cHJldmlvdXNUYWJCYXJJdGVtU2l6ZUFuZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIGJlZm9y
ZVRhYlNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJCYXJJdGVtLCB7bGVmdDogcHJldmlvdXNUYWJC
YXJJdGVtU2l6ZUFuZFBvc2l0aW9uLmxlZnQgKyBwcmV2aW91c1RhYkJhckl0ZW1TaXplQW5kUG9z
aXRpb24ud2lkdGgsIHdpZHRoOiAwfSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMuc2V0KHRhYkJhckl0ZW0sIHtsZWZ0OiAwLCB3
aWR0aDogMH0pOworCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3Rh
dGljLWxheW91dCIpOworICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImJlaW5nLWluc2VydGVkIik7CisKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRl
bVNpemVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKKworICAgICAg
ICAgICAgdmFyIHJlbW92ZVN0eWxlc0xpc3RlbmVyID0gcmVtb3ZlU3R5bGVzLmJpbmQodGhpcyk7
CisKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlVGFicy5iaW5kKHRo
aXMpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CisK
KyAgICAgICAgaWYgKCEodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0p
KQorICAgICAgICAgICAgdGhpcy51cGRhdGVOZXdUYWJUYWJCYXJJdGVtU3RhdGUoKTsKKworICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYWJCYXIuRXZlbnQuVGFiQmFy
SXRlbUFkZGVkLCB7dGFiQmFySXRlbX0pOworCisgICAgICAgIHJldHVybiB0YWJCYXJJdGVtOwor
ICAgIH0KKworICAgIHJlbW92ZVRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5kZXgsIG9wdGlvbnMg
PSB7fSkKKyAgICB7CisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gdGhpcy5fZmluZFRhYkJhckl0
ZW0odGFiQmFySXRlbU9ySW5kZXgpOworICAgICAgICBpZiAoIXRhYkJhckl0ZW0gfHwgdGFiQmFy
SXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pCisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKworICAgICAgICB0YWJCYXJJdGVtLnBhcmVudFRhYkJhciA9IG51bGw7CisKKyAgICAg
ICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSA9PT0gdGFiQmFySXRlbSkgeworICAgICAg
ICAgICAgdmFyIGluZGV4ID0gdGhpcy5fdGFiQmFySXRlbXMuaW5kZXhPZih0YWJCYXJJdGVtKTsK
KyAgICAgICAgICAgIHZhciBuZXh0VGFiQmFySXRlbSA9IHRoaXMuX3RhYkJhckl0ZW1zW2luZGV4
ICsgMV07CisgICAgICAgICAgICBpZiAoIW5leHRUYWJCYXJJdGVtIHx8IG5leHRUYWJCYXJJdGVt
IGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAgICBuZXh0VGFi
QmFySXRlbSA9IHRoaXMuX3RhYkJhckl0ZW1zW2luZGV4IC0gMV07CisKKyAgICAgICAgICAgIGxl
dCBpbml0aWF0b3JIaW50ID0gb3B0aW9ucy5pbml0aWF0b3JIaW50IHx8IFdJLlRhYkJyb3dzZXIu
VGFiTmF2aWdhdGlvbkluaXRpYXRvci5Vbmtub3duOworICAgICAgICAgICAgdGhpcy5zZWxlY3RU
YWJCYXJJdGVtKG5leHRUYWJCYXJJdGVtLCB7aW5pdGlhdG9ySGludH0pOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIp
KSB7CisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVtb3ZlU3R5bGVzLmJpbmQo
dGhpcykpOworICAgICAgICAgICAgb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMgPSB0cnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zOworICAg
ICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zKQorICAgICAgICAgICAgYmVmb3Jl
VGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3Np
dGlvbnMoKTsKKworICAgICAgICAvLyBTdWJ0cmFjdCAxIGZyb20gbm9ybWFsVGFiQ291bnQgc2lu
Y2UgYXJyYXlzIGJlZ2luIGluZGV4aW5nIGF0IDAuCisgICAgICAgIGxldCB3YXNMYXN0Tm9ybWFs
VGFiID0gdGhpcy5fdGFiQmFySXRlbXMuaW5kZXhPZih0YWJCYXJJdGVtKSA9PT0gdGhpcy5ub3Jt
YWxUYWJDb3VudCAtIDE7CisKKyAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMucmVtb3ZlKHRhYkJh
ckl0ZW0pOworICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQucmVtb3ZlKCk7CisKKyAgICAgICAg
dmFyIGhhc01vcmVUaGFuT25lTm9ybWFsVGFiID0gdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxU
YWIoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIi
LCAhaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOworCisgICAgICAgIGNvbnN0IHNob3VsZE9wZW5E
ZWZhdWx0VGFiID0gIXRhYkJhckl0ZW0uaXNEZWZhdWx0VGFiICYmICF0aGlzLm5vcm1hbFRhYkNv
dW50OworICAgICAgICBpZiAoc2hvdWxkT3BlbkRlZmF1bHRUYWIpCisgICAgICAgICAgICBvcHRp
b25zLnN1cHByZXNzQW5pbWF0aW9ucyA9IHRydWU7CisKKyAgICAgICAgaWYgKCFoYXNNb3JlVGhh
bk9uZU5vcm1hbFRhYiB8fCB3YXNMYXN0Tm9ybWFsVGFiIHx8ICFvcHRpb25zLnN1cHByZXNzRXhw
YW5zaW9uKSB7CisgICAgICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zKSB7
CisgICAgICAgICAgICAgICAgdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIg
PSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNs
b3NlKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKKworICAgICAgICAgICAgdGhpcy51cGRh
dGVOZXdUYWJUYWJCYXJJdGVtU3RhdGUoKTsKKworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1SZW1vdmVkLCB7dGFiQmFy
SXRlbX0pOworCisgICAgICAgICAgICBpZiAoc2hvdWxkT3BlbkRlZmF1bHRUYWIpCisgICAgICAg
ICAgICAgICAgdGhpcy5fb3BlbkRlZmF1bHRUYWIoKTsKKworICAgICAgICAgICAgcmV0dXJuIHRh
YkJhckl0ZW07CisgICAgICAgIH0KKworICAgICAgICB2YXIgbGFzdE5vcm1hbFRhYkJhckl0ZW07
CisKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQorICAgICAgICB7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2xvc2luZy10YWIiKTsKKworICAgICAgICAgICAg
Ly8gRm9yIFJUTCwgd2UgbmVlZCB0byBwbGFjZSBleHRyYSBzcGFjZSBiZXR3ZWVuIHBpbm5lZCB0
YWIgYW5kIGZpcnN0IG5vcm1hbCB0YWIuCisgICAgICAgICAgICAvLyBGcm9tIGxlZnQgdG8gcmln
aHQgdGhlcmUgaXMgcGlubmVkIHRhYnMsIGV4dHJhIHNwYWNlLCB0aGVuIG5vcm1hbCB0YWJzLiBD
b21wdXRlCisgICAgICAgICAgICAvLyBob3cgbXVjaCBleHRyYSBzcGFjZSB3ZSBuZWVkIHRvIGFk
ZGl0aW9uYWxseSBhZGQgZm9yIG5vcm1hbCB0YWIgaXRlbXMuCisgICAgICAgICAgICBsZXQgZXh0
cmFTcGFjZUJldHdlZW5Ob3JtYWxBbmRQaW5uZWRUYWJzID0gMDsKKyAgICAgICAgICAgIGlmIChX
SS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRMKSB7
CisgICAgICAgICAgICAgICAgZXh0cmFTcGFjZUJldHdlZW5Ob3JtYWxBbmRQaW5uZWRUYWJzID0g
dGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOworICAgICAgICAgICAg
ICAgIGZvciAobGV0IGN1cnJlbnRUYWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zRnJvbUxl
ZnRUb1JpZ2h0KCkpCisgICAgICAgICAgICAgICAgICAgIGV4dHJhU3BhY2VCZXR3ZWVuTm9ybWFs
QW5kUGlubmVkVGFicyAtPSBjdXJyZW50VGFiQmFySXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpLndpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgbGVmdCA9
IDA7CisgICAgICAgICAgICBmb3IgKGxldCBjdXJyZW50VGFiQmFySXRlbSBvZiB0aGlzLl90YWJC
YXJJdGVtc0Zyb21MZWZ0VG9SaWdodCgpKSB7CisgICAgICAgICAgICAgICAgbGV0IHNpemVBbmRQ
b3NpdGlvbiA9IGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zLmdldChjdXJyZW50VGFiQmFySXRl
bSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIShjdXJyZW50VGFiQmFySXRlbSBpbnN0YW5jZW9m
IFdJLlBpbm5lZFRhYkJhckl0ZW0pKSB7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUYWJC
YXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IGV4dHJhU3BhY2VCZXR3ZWVuTm9ybWFsQW5kUGlu
bmVkVGFicyArIGxlZnQgKyAicHgiOworICAgICAgICAgICAgICAgICAgICBsZWZ0ICs9IHNpemVB
bmRQb3NpdGlvbi53aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgbGFzdE5vcm1hbFRhYkJhckl0
ZW0gPSBjdXJyZW50VGFiQmFySXRlbTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgbGVmdCA9IHNpemVBbmRQb3NpdGlvbi5sZWZ0ICsgc2l6ZUFuZFBvc2l0aW9u
LndpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgc2VsZWN0ZWQgdGFi
IGFuZCBsYXN0IHRhYiBuZWVkIHRvIGRyYXcgYSByaWdodCBib3JkZXIgYXMgd2VsbCwgc28gbWFr
ZSB0aGVtIDFweCB3aWRlci4KKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0
ZW0pCisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5
bGUud2lkdGggPSAocGFyc2VGbG9hdCh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5z
dHlsZS53aWR0aCkgKyAxKSArICJweCI7CisKKyAgICAgICAgICAgIGlmIChsYXN0Tm9ybWFsVGFi
QmFySXRlbSAhPT0gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgIGxh
c3ROb3JtYWxUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9hdChsYXN0
Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoKSArIDEpICsgInB4IjsKKworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25F
bmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biByZW1vdmVTdHlsZXMoKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGUgc2VsZWN0ZWQg
dGFiIG5lZWRzIHRvIHN0b3AgZHJhd2luZyB0aGUgcmlnaHQgYm9yZGVyLCBzbyBtYWtlIGl0IDFw
eCBzbWFsbGVyLiBPbmx5IGlmIGl0IGlzbid0IHRoZSBsYXN0LgorICAgICAgICAgICAgaWYgKHRo
aXMuX3NlbGVjdGVkVGFiQmFySXRlbSAmJiB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gIT09IGxh
c3ROb3JtYWxUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFy
SXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQodGhpcy5fc2VsZWN0ZWRUYWJC
YXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgpIC0gMSkgKyAicHgiOworCisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY2xvc2luZy10YWIiKTsKKworICAgICAgICAg
ICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKKworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92
ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5l
cik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25z
KSB7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91
dCIpOworCisgICAgICAgICAgICB0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRl
ciA9IHRydWU7CisKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9z
aXRpb25zKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKKworICAgICAgICAgICAgdmFyIHJl
bW92ZVN0eWxlc0xpc3RlbmVyID0gcmVtb3ZlU3R5bGVzLmJpbmQodGhpcyk7CisKKyAgICAgICAg
ICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlVGFicy5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CisKKyAgICAgICAgdGhp
cy51cGRhdGVOZXdUYWJUYWJCYXJJdGVtU3RhdGUoKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5UYWJCYXIuRXZlbnQuVGFiQmFySXRlbVJlbW92ZWQsIHt0YWJC
YXJJdGVtfSk7CisKKyAgICAgICAgaWYgKHNob3VsZE9wZW5EZWZhdWx0VGFiKQorICAgICAgICAg
ICAgdGhpcy5fb3BlbkRlZmF1bHRUYWIoKTsKKworICAgICAgICByZXR1cm4gdGFiQmFySXRlbTsK
KyAgICB9CisKKyAgICBzZWxlY3RQcmV2aW91c1RhYigpCisgICAgeworICAgICAgICBpZiAodGhp
cy5fdGFiQmFySXRlbXMubGVuZ3RoIDw9IDEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLl90YWJCYXJJdGVtcy5pbmRleE9mKHRoaXMuX3NlbGVj
dGVkVGFiQmFySXRlbSk7CisgICAgICAgIHZhciBuZXdJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChuZXdJbmRleCA9PT0gMCkKKyAgICAgICAgICAgICAg
ICBuZXdJbmRleCA9IHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aCAtIDE7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbmV3SW5kZXgtLTsKKworICAgICAgICAgICAgaWYgKCEodGhp
cy5fdGFiQmFySXRlbXNbbmV3SW5kZXhdIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gd2hpbGUgKG5ld0luZGV4ICE9PSBz
dGFydEluZGV4KTsKKworICAgICAgICBpZiAobmV3SW5kZXggPT09IHN0YXJ0SW5kZXgpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSB0aGlz
Ll90YWJCYXJJdGVtc1tuZXdJbmRleF07CisgICAgfQorCisgICAgc2VsZWN0TmV4dFRhYigpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIDw9IDEpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLl90YWJCYXJJdGVt
cy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSk7CisgICAgICAgIHZhciBuZXdJbmRl
eCA9IHN0YXJ0SW5kZXg7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChuZXdJbmRleCA9
PT0gdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgICAgICBuZXdJbmRl
eCA9IDA7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3SW5kZXgrKzsKKwor
ICAgICAgICAgICAgaWYgKCEodGhpcy5fdGFiQmFySXRlbXNbbmV3SW5kZXhdIGluc3RhbmNlb2Yg
V0kuUGlubmVkVGFiQmFySXRlbSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0g
d2hpbGUgKG5ld0luZGV4ICE9PSBzdGFydEluZGV4KTsKKworICAgICAgICBpZiAobmV3SW5kZXgg
PT09IHN0YXJ0SW5kZXgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5zZWxl
Y3RlZFRhYkJhckl0ZW0gPSB0aGlzLl90YWJCYXJJdGVtc1tuZXdJbmRleF07CisgICAgfQorCisg
ICAgZ2V0IHNlbGVjdGVkVGFiQmFySXRlbSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtOworICAgIH0KKworICAgIHNldCBzZWxlY3RlZFRhYkJhckl0ZW0o
dGFiQmFySXRlbU9ySW5kZXgpCisgICAgeworICAgICAgICB0aGlzLnNlbGVjdFRhYkJhckl0ZW0o
dGFiQmFySXRlbU9ySW5kZXgpOworICAgIH0KKworICAgIHNlbGVjdFRhYkJhckl0ZW0odGFiQmFy
SXRlbU9ySW5kZXgsIG9wdGlvbnMgPSB7fSkKKyAgICB7CisgICAgICAgIGxldCB0YWJCYXJJdGVt
ID0gdGhpcy5fZmluZFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5kZXgpOworICAgICAgICBpZiAo
dGFiQmFySXRlbSA9PT0gdGhpcy5fbmV3VGFiVGFiQmFySXRlbSB8fCB0YWJCYXJJdGVtID09PSB0
aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtKSB7CisgICAgICAgICAgICAvLyBHZXQgdGhlIGxhc3Qg
bm9ybWFsIHRhYiBpdGVtIGlmIHRoZSBpdGVtIGlzIG5vdCBzZWxlY3RhYmxlLgorICAgICAgICAg
ICAgdGFiQmFySXRlbSA9IHRoaXMuX3RhYkJhckl0ZW1zW3RoaXMubm9ybWFsVGFiQ291bnQgLSAx
XTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gPT09
IHRhYkJhckl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHByZXZpb3Vz
VGFiQmFySXRlbSA9IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbTsKKworICAgICAgICBpZiAodGhp
cy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJ
dGVtLnNlbGVjdGVkID0gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVt
ID0gdGFiQmFySXRlbSB8fCBudWxsOworCisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJh
ckl0ZW0pIHsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5zZWxlY3RlZCA9
IHRydWU7CisgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQu
Y2xhc3NMaXN0LmNvbnRhaW5zKCJoaWRkZW4iKSkKKyAgICAgICAgICAgICAgICB0aGlzLm5lZWRz
TGF5b3V0KCk7CisgICAgICAgIH0KKworICAgICAgICBsZXQgaW5pdGlhdG9ySGludCA9IG9wdGlv
bnMuaW5pdGlhdG9ySGludCB8fCBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3Iu
VW5rbm93bjsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFy
LkV2ZW50LlRhYkJhckl0ZW1TZWxlY3RlZCwge3ByZXZpb3VzVGFiQmFySXRlbSwgaW5pdGlhdG9y
SGludH0pOworICAgIH0KKworICAgIGdldCB0YWJCYXJJdGVtcygpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fdGFiQmFySXRlbXM7CisgICAgfQorCisgICAgZ2V0IG5vcm1hbFRhYkNvdW50
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtcy5maWx0ZXIoKGl0ZW0p
ID0+ICEoaXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pKS5sZW5ndGg7CisgICAg
fQorCisgICAgZ2V0IHNhdmVhYmxlVGFiQ291bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3RhYkJhckl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5yZXByZXNlbnRlZE9iamVjdCAm
JiBpdGVtLnJlcHJlc2VudGVkT2JqZWN0LmNvbnN0cnVjdG9yLnNob3VsZFNhdmVUYWIoKSkubGVu
Z3RoOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAgbGF5b3V0KCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0
IikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImNhbGN1bGF0ZS13aWR0aCIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgiY29sbGFwc2VkIik7CisKKyAgICAgICAgZnVuY3Rpb24gZm9yY2VJdGVtSGlkZGVu
KGl0ZW0sIGhpZGRlbikgeworICAgICAgICAgICAgaXRlbS5lbGVtZW50LmNsYXNzTGlzdC50b2dn
bGUoImhpZGRlbiIsICEhaGlkZGVuKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0IGl0
ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpCisgICAgICAgICAgICBmb3JjZUl0ZW1IaWRkZW4oaXRl
bSwgaXRlbSA9PT0gdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSk7CisKKyAgICAgICAgZnVuY3Rp
b24gbWVhc3VyZUl0ZW1XaWR0aChpdGVtKSB7CisgICAgICAgICAgICBpZiAoIWl0ZW1bV0kuVGFi
QmFyLkNhY2hlZFdpZHRoU3ltYm9sXSkKKyAgICAgICAgICAgICAgICBpdGVtW1dJLlRhYkJhci5D
YWNoZWRXaWR0aFN5bWJvbF0gPSBpdGVtLmVsZW1lbnQucmVhbE9mZnNldFdpZHRoOworICAgICAg
ICAgICAgcmV0dXJuIGl0ZW1bV0kuVGFiQmFyLkNhY2hlZFdpZHRoU3ltYm9sXTsKKyAgICAgICAg
fQorCisgICAgICAgIGxldCByZWNhbGN1bGF0ZUl0ZW1XaWR0aHMgPSAoKSA9PiB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMucmVkdWNlKCh0b3RhbCwgaXRlbSkgPT4gewor
ICAgICAgICAgICAgICAgIGl0ZW1bV0kuVGFiQmFyLkNhY2hlZFdpZHRoU3ltYm9sXSA9IHVuZGVm
aW5lZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWwgKyBtZWFzdXJlSXRlbVdpZHRoKGl0
ZW0pOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH07CisKKyAgICAgICAgdGhpcy5faGlk
ZGVuVGFiQmFySXRlbXMgPSBbXTsKKworICAgICAgICBsZXQgdG90YWxJdGVtV2lkdGggPSByZWNh
bGN1bGF0ZUl0ZW1XaWR0aHMoKTsKKyAgICAgICAgbGV0IGJhcldpZHRoID0gdGhpcy5lbGVtZW50
LnJlYWxPZmZzZXRXaWR0aDsKKworICAgICAgICBpZiAodG90YWxJdGVtV2lkdGggPiBiYXJXaWR0
aCkgeworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbGxhcHNlZCIp
OworICAgICAgICAgICAgdG90YWxJdGVtV2lkdGggPSByZWNhbGN1bGF0ZUl0ZW1XaWR0aHMoKTsK
KyAgICAgICAgICAgIGlmICh0b3RhbEl0ZW1XaWR0aCA+IGJhcldpZHRoKSB7CisgICAgICAgICAg
ICAgICAgZm9yY2VJdGVtSGlkZGVuKHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0sIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCArPSBtZWFzdXJlSXRlbVdpZHRoKHRoaXMu
X3RhYlBpY2tlclRhYkJhckl0ZW0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQg
dGFiQmFySXRlbXMgPSB0aGlzLl90YWJCYXJJdGVtc0Zyb21MZWZ0VG9SaWdodCgpOworICAgICAg
ICAgICAgbGV0IGluZGV4ID0gdGFiQmFySXRlbXMubGVuZ3RoOworICAgICAgICAgICAgd2hpbGUg
KHRvdGFsSXRlbVdpZHRoID4gYmFyV2lkdGggJiYgLS1pbmRleCA+PSAwKSB7CisgICAgICAgICAg
ICAgICAgbGV0IGl0ZW0gPSB0YWJCYXJJdGVtc1tpbmRleF07CisgICAgICAgICAgICAgICAgaWYg
KGl0ZW0gPT09IHRoaXMuc2VsZWN0ZWRUYWJCYXJJdGVtIHx8IGl0ZW0gaW5zdGFuY2VvZiBXSS5Q
aW5uZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgICAgIHRvdGFsSXRlbVdpZHRoIC09IG1lYXN1cmVJdGVtV2lkdGgoaXRlbSk7CisgICAg
ICAgICAgICAgICAgZm9yY2VJdGVtSGlkZGVuKGl0ZW0sIHRydWUpOworCisgICAgICAgICAgICAg
ICAgdGhpcy5faGlkZGVuVGFiQmFySXRlbXMucHVzaChpdGVtKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjYWxjdWxh
dGUtd2lkdGgiKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfdGFiQmFySXRlbXNG
cm9tTGVmdFRvUmlnaHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLnJlc29sdmVkTGF5b3V0
RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5MVFIgPyB0aGlzLl90YWJCYXJJdGVt
cyA6IHRoaXMuX3RhYkJhckl0ZW1zLnNsaWNlKCkucmV2ZXJzZSgpOworICAgIH0KKworICAgIF9m
aW5kVGFiQmFySXRlbSh0YWJCYXJJdGVtT3JJbmRleCkKKyAgICB7CisgICAgICAgIGlmICh0eXBl
b2YgdGFiQmFySXRlbU9ySW5kZXggPT09ICJudW1iZXIiKQorICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX3RhYkJhckl0ZW1zW3RhYkJhckl0ZW1PckluZGV4XSB8fCBudWxsOworCisgICAgICAgIGlm
ICh0YWJCYXJJdGVtT3JJbmRleCBpbnN0YW5jZW9mIFdJLlRhYkJhckl0ZW0pIHsKKyAgICAgICAg
ICAgIGlmICh0aGlzLl90YWJCYXJJdGVtcy5pbmNsdWRlcyh0YWJCYXJJdGVtT3JJbmRleCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRhYkJhckl0ZW1PckluZGV4OworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgX2hhc01vcmVUaGFuT25lTm9ybWFsVGFi
KCkKKyAgICB7CisgICAgICAgIGxldCBub3JtYWxUYWJDb3VudCA9IDA7CisgICAgICAgIGZvciAo
bGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgIGlmICh0
YWJCYXJJdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgKytub3JtYWxUYWJDb3VudDsKKyAgICAgICAgICAg
IGlmIChub3JtYWxUYWJDb3VudCA+PSAyKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIF9vcGVuRGVm
YXVsdFRhYigpCisgICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5UYWJCYXIuRXZlbnQuT3BlbkRlZmF1bHRUYWIpOworICAgIH0KKworICAgIF9yZWNvcmRUYWJC
YXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKQorICAgIHsKKyAgICAgICAgdmFyIHRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucyA9IG5ldyBNYXA7CisKKyAgICAgICAgY29uc3QgYmFyUmVjdCA9IHRo
aXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKworICAgICAgICBmb3IgKHZhciB0
YWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICB2YXIgYm91bmRp
bmdSZWN0ID0gdGFiQmFySXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAg
ICAgICAgICAgdGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJCYXJJdGVtLCB7bGVm
dDogYm91bmRpbmdSZWN0LmxlZnQgLSBiYXJSZWN0LmxlZnQsIHdpZHRoOiBib3VuZGluZ1JlY3Qu
d2lkdGh9KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0YWJCYXJJdGVtU2l6ZXNBbmRQ
b3NpdGlvbnM7CisgICAgfQorCisgICAgX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25z
KHRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucywgc2tpcFRhYkJhckl0ZW0pCisgICAgeworICAg
ICAgICBmb3IgKHZhciBbdGFiQmFySXRlbSwgc2l6ZUFuZFBvc2l0aW9uXSBvZiB0YWJCYXJJdGVt
U2l6ZXNBbmRQb3NpdGlvbnMpIHsKKyAgICAgICAgICAgIGlmIChza2lwVGFiQmFySXRlbSAmJiB0
YWJCYXJJdGVtID09PSBza2lwVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gc2l6ZUFuZFBvc2l0
aW9uLmxlZnQgKyAicHgiOworICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndp
ZHRoID0gc2l6ZUFuZFBvc2l0aW9uLndpZHRoICsgInB4IjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIF9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhza2lwVGFiQmFySXRlbSkKKyAg
ICB7CisgICAgICAgIGZvciAodmFyIHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsK
KyAgICAgICAgICAgIGlmIChza2lwVGFiQmFySXRlbSAmJiB0YWJCYXJJdGVtID09PSBza2lwVGFi
QmFySXRlbSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHRhYkJhckl0
ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbnVsbDsKKyAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxl
bWVudC5zdHlsZS53aWR0aCA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfZmluaXNo
RXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UoYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpCisgICAg
eworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7
CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNl
TW91c2VFbnRlcik7CisgICAgICAgICAgICB0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91
c2VFbnRlciA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAoIWJlZm9yZVRhYlNpemVzQW5kUG9z
aXRpb25zKQorICAgICAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhp
cy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAg
ICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworCisgICAgICAgICAg
ICB2YXIgYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyA9IHRoaXMuX3JlY29yZFRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucygpOworCisgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucyhiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyk7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworCisgICAgICAg
ICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7CisgICAgICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImV4cGFuZGluZy10YWJzIik7CisK
KyAgICAgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhh
ZnRlclRhYlNpemVzQW5kUG9zaXRpb25zKTsKKworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlz
dGVuZXIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiByZW1vdmVTdHls
ZXMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRpbmctdGFicyIpOworCisgICAgICAgICAgICAg
ICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKworICAgICAgICAg
ICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1l
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxl
c0xpc3RlbmVyKTsKKworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHJlbW92ZVN0eWxlc0xpc3RlbmVyID0gcmVtb3ZlU3R5bGVzLmJp
bmQodGhpcyk7CisKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlVGFi
cy5iaW5kKHRoaXMpKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICBfaGFu
ZGxlTW91c2VEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgLy8gT25seSBjb25zaWRlciBsZWZ0
IG1vdXNlIGNsaWNrcyBmb3IgdGFiIG1vdmVtZW50LgorICAgICAgICBpZiAoZXZlbnQuYnV0dG9u
ICE9PSAwIHx8IGV2ZW50LmN0cmxLZXkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bGV0IGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoIi4iICsgV0kuVGFiQmFySXRl
bS5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGlmICghaXRlbUVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBpdGVtRWxlbWVudFtXSS5UYWJC
YXJJdGVtLkVsZW1lbnRSZWZlcmVuY2VTeW1ib2xdOworICAgICAgICBpZiAoIXRhYkJhckl0ZW0p
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRhYkJhckl0ZW0uZGlzYWJsZWQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRhYkJhckl0ZW0gPT09IHRoaXMu
X25ld1RhYlRhYkJhckl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRh
YkJhckl0ZW0gPT09IHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0pIHsKKyAgICAgICAgICAgIGlm
ICghdGhpcy5faGlkZGVuVGFiQmFySXRlbXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgaWYgKHRoaXMuX2lnbm9yZVRhYlBpY2tlck1vdXNlRG93bikKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZVRhYlBpY2tl
ck1vdXNlRG93biA9IHRydWU7CisKKyAgICAgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdJLkNv
bnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CisgICAgICAgICAgICBjb250ZXh0TWVu
dS5hZGRCZWZvcmVTaG93Q2FsbGJhY2soKCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuX2ln
bm9yZVRhYlBpY2tlck1vdXNlRG93biA9IGZhbHNlOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5faGlkZGVuVGFiQmFySXRlbXMpIHsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGl0ZW0udGl0bGUsICgpID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RUYWJCYXJJdGVtKGl0ZW0sIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlv
bkluaXRpYXRvci5Db250ZXh0TWVudSwKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRleHRNZW51LnNo
b3coKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBjbG9z
ZUJ1dHRvbkVsZW1lbnQgPSBldmVudC50YXJnZXQuY2xvc2VzdCgiLiIgKyBXSS5UYWJCYXJJdGVt
LkNsb3NlQnV0dG9uU3R5bGVDbGFzc05hbWUpOworICAgICAgICBpZiAoY2xvc2VCdXR0b25FbGVt
ZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuc2VsZWN0VGFiQmFySXRl
bSh0YWJCYXJJdGVtLCB7CisgICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2Vy
LlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuVGFiQ2xpY2ssCisgICAgICAgIH0pOworCisgICAgICAg
IGlmICh0YWJCYXJJdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSB8fCAhdGhpcy5f
aGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLl9maXJzdE5vcm1hbFRhYkl0ZW1JbmRleCA9IDA7CisgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl90YWJCYXJJdGVtc1tpXSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHRoaXMuX2ZpcnN0Tm9ybWFs
VGFiSXRlbUluZGV4ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5fbW91c2VJc0Rvd24gPSB0cnVlOworCisgICAgICAgIHRoaXMuX21vdXNlTW92ZWRF
dmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlTW91c2VNb3ZlZC5iaW5kKHRoaXMpOworICAgICAg
ICB0aGlzLl9tb3VzZVVwRXZlbnRMaXN0ZW5lciA9IHRoaXMuX2hhbmRsZU1vdXNlVXAuYmluZCh0
aGlzKTsKKworICAgICAgICAvLyBSZWdpc3RlciB0aGVzZSBsaXN0ZW5lcnMgb24gdGhlIGRvY3Vt
ZW50IHNvIHdlIGNhbiB0cmFjayB0aGUgbW91c2UgaWYgaXQgbGVhdmVzIHRoZSB0YWIgYmFyLgor
ICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9tb3Vz
ZU1vdmVkRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNldXAiLCB0aGlzLl9tb3VzZVVwRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisKKyAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0
aW9uKCk7CisgICAgfQorCisgICAgX2hhbmRsZUNsaWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAg
dmFyIGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoIi4iICsgV0kuVGFiQmFySXRl
bS5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGlmICghaXRlbUVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdmFyIHRhYkJhckl0ZW0gPSBpdGVtRWxlbWVudFtXSS5UYWJC
YXJJdGVtLkVsZW1lbnRSZWZlcmVuY2VTeW1ib2xdOworICAgICAgICBpZiAoIXRhYkJhckl0ZW0p
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRhYkJhckl0ZW0uZGlzYWJsZWQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgY2xpY2tlZE1pZGRsZUJ1dHRv
biA9IGV2ZW50LmJ1dHRvbiA9PT0gMTsKKworICAgICAgICB2YXIgY2xvc2VCdXR0b25FbGVtZW50
ID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoIi4iICsgV0kuVGFiQmFySXRlbS5DbG9zZUJ1dHRvblN0
eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKGNsb3NlQnV0dG9uRWxlbWVudCB8fCBjbGlja2Vk
TWlkZGxlQnV0dG9uKSB7CisgICAgICAgICAgICAvLyBEaXNhbGxvdyBjbG9zaW5nIHRoZSBkZWZh
dWx0IHRhYiBpZiBpdCBpcyB0aGUgb25seSB0YWIuCisgICAgICAgICAgICBpZiAodGFiQmFySXRl
bS5pc0RlZmF1bHRUYWIgJiYgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic2luZ2xl
LXRhYiIpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKCFldmVu
dC5hbHRLZXkpIHsKKyAgICAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHsKKyAgICAgICAgICAg
ICAgICAgICAgc3VwcHJlc3NFeHBhbnNpb246IHRydWUsCisgICAgICAgICAgICAgICAgICAgIGlu
aXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5UYWJDbGlj
aywKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFiQmFy
SXRlbSh0YWJCYXJJdGVtLCBvcHRpb25zKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLl90YWJCYXJJdGVtcy5s
ZW5ndGggLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAgICAgIGxldCBpdGVtID0gdGhp
cy5fdGFiQmFySXRlbXNbaV07CisgICAgICAgICAgICAgICAgaWYgKGl0ZW0gPT09IHRhYkJhckl0
ZW0gfHwgaXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFiQmFySXRlbShp
dGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIF9oYW5kbGVNb3Vz
ZU1vdmVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9u
ID09PSAwKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbW91c2VJc0Rvd24pOworICAg
ICAgICBpZiAoIXRoaXMuX21vdXNlSXNEb3duKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSk7CisgICAgICAgIGlm
ICghdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOworCisgICAgICAgIGlmICghdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3Rh
dGljLWxheW91dCIpKSB7CisgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0Fu
ZFBvc2l0aW9ucyh0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKSk7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nLXRhYiIpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX21vdXNlT2Zmc2V0ID09PSB1bmRlZmluZWQp
CisgICAgICAgICAgICB0aGlzLl9tb3VzZU9mZnNldCA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5fc2Vs
ZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQudG90YWxPZmZzZXRMZWZ0OworCisgICAgICAgIHZhciB0
YWJCYXJNb3VzZU9mZnNldCA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5lbGVtZW50LnRvdGFsT2Zmc2V0
TGVmdDsKKyAgICAgICAgdmFyIG5ld0xlZnQgPSB0YWJCYXJNb3VzZU9mZnNldCAtIHRoaXMuX21v
dXNlT2Zmc2V0OworCisgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnN0
eWxlLmxlZnQgPSBuZXdMZWZ0ICsgInB4IjsKKworICAgICAgICB2YXIgc2VsZWN0ZWRUYWJNaWRY
ID0gbmV3TGVmdCArICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5yZWFsT2Zmc2V0
V2lkdGggLyAyKTsKKworICAgICAgICB2YXIgY3VycmVudEluZGV4ID0gdGhpcy5fdGFiQmFySXRl
bXMuaW5kZXhPZih0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pOworICAgICAgICB2YXIgbmV3SW5k
ZXggPSBjdXJyZW50SW5kZXg7CisKKyAgICAgICAgZm9yIChsZXQgdGFiQmFySXRlbSBvZiB0aGlz
Ll90YWJCYXJJdGVtcykgeworICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0gPT09IHRoaXMuX3Nl
bGVjdGVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgdmFyIHRhYkJhckl0ZW1SZWN0ID0gdGFiQmFySXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpOworCisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRUYWJNaWRYIDwgdGFiQmFySXRl
bVJlY3QubGVmdCB8fCBzZWxlY3RlZFRhYk1pZFggPiB0YWJCYXJJdGVtUmVjdC5yaWdodCkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgbmV3SW5kZXggPSB0aGlzLl90
YWJCYXJJdGVtcy5pbmRleE9mKHRhYkJhckl0ZW0pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBTdWJ0cmFjdCAxIGZyb20gbm9ybWFsVGFiQ291bnQgc2luY2Ug
YXJyYXlzIGJlZ2luIGluZGV4aW5nIGF0IDAuCisgICAgICAgIG5ld0luZGV4ID0gTnVtYmVyLmNv
bnN0cmFpbihuZXdJbmRleCwgdGhpcy5fZmlyc3ROb3JtYWxUYWJJdGVtSW5kZXgsIHRoaXMubm9y
bWFsVGFiQ291bnQgLSAxKTsKKworICAgICAgICBpZiAoY3VycmVudEluZGV4ID09PSBuZXdJbmRl
eCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl90YWJCYXJJdGVtcy5zcGxp
Y2UoY3VycmVudEluZGV4LCAxKTsKKyAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMuc3BsaWNlKG5l
d0luZGV4LCAwLCB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pOworCisgICAgICAgIGxldCBuZXh0
U2libGluZyA9IHRoaXMuX3RhYkJhckl0ZW1zW25ld0luZGV4ICsgMV07CisgICAgICAgIGxldCBu
ZXh0U2libGluZ0VsZW1lbnQgPSBuZXh0U2libGluZyA/IG5leHRTaWJsaW5nLmVsZW1lbnQgOiB0
aGlzLl9uZXdUYWJUYWJCYXJJdGVtLmVsZW1lbnQ7CisKKyAgICAgICAgdGhpcy5lbGVtZW50Lmlu
c2VydEJlZm9yZSh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdF
bGVtZW50KTsKKworICAgICAgICAvLyBGSVhNRTogQW5pbWF0ZSB0aGUgdGFicyB0aGF0IG1vdmUg
dG8gbWFrZSByb29tIGZvciB0aGUgc2VsZWN0ZWQgdGFiLiBUaGlzIHdhcyBjYXVzaW5nIG1lIHRy
b3VibGUgd2hlbiBJIHRyaWVkLgorCisgICAgICAgIGxldCBsZWZ0ID0gMDsKKyAgICAgICAgZm9y
IChsZXQgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtc0Zyb21MZWZ0VG9SaWdodCgpKSB7
CisgICAgICAgICAgICBpZiAodGFiQmFySXRlbSAhPT0gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVt
ICYmIHRhYkJhckl0ZW0gIT09IHRoaXMuX25ld1RhYlRhYkJhckl0ZW0gJiYgcGFyc2VGbG9hdCh0
YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCkgIT09IGxlZnQpCisgICAgICAgICAgICAgICAg
dGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBsZWZ0ICsgInB4IjsKKyAgICAgICAgICAg
IGxlZnQgKz0gcGFyc2VGbG9hdCh0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgX2hhbmRsZU1vdXNlVXAoZXZlbnQpCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24gPT09IDApOworICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9tb3VzZUlzRG93bik7CisgICAgICAgIGlmICghdGhpcy5fbW91c2VJc0Rvd24p
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoImRyYWdnaW5nLXRhYiIpOworCisgICAgICAgIGlmICghdGhpcy5fdGFiQW5pbWF0ZWRD
bG9zZWRTaW5jZU1vdXNlRW50ZXIpIHsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJh
ckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bGV0IGxlZnQgPSAwOworICAgICAgICAgICAgZm9yIChsZXQgdGFiQmFySXRlbSBvZiB0aGlzLl90
YWJCYXJJdGVtc0Zyb21MZWZ0VG9SaWdodCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRhYkJh
ckl0ZW0gPT09IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAgICAgICAg
dGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBsZWZ0ICsgInB4IjsKKyAgICAgICAgICAg
ICAgICBsZWZ0ICs9IHBhcnNlRmxvYXQodGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX21vdXNlSXNEb3duID0g
ZmFsc2U7CisgICAgICAgIHRoaXMuX21vdXNlT2Zmc2V0ID0gdW5kZWZpbmVkOworCisgICAgICAg
IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX21vdXNlTW92
ZWRFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0
ZW5lcigibW91c2V1cCIsIHRoaXMuX21vdXNlVXBFdmVudExpc3RlbmVyLCB0cnVlKTsKKworICAg
ICAgICB0aGlzLl9tb3VzZU1vdmVkRXZlbnRMaXN0ZW5lciA9IG51bGw7CisgICAgICAgIHRoaXMu
X21vdXNlVXBFdmVudExpc3RlbmVyID0gbnVsbDsKKworICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOworICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKworICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYWJCYXIuRXZlbnQuVGFiQmFySXRlbXNSZW9y
ZGVyZWQpOworICAgIH0KKworICAgIF9oYW5kbGVNb3VzZUxlYXZlKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuX21vdXNlSXNEb3duIHx8ICF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNp
bmNlTW91c2VFbnRlciB8fCAhdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGlj
LWxheW91dCIpIHx8IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFRoaXMgZXZlbnQgY2FuIHN0aWxs
IGZpcmUgd2hlbiB0aGUgbW91c2UgaXMgaW5zaWRlIHRoZSBlbGVtZW50IGlmIERPTSBub2RlcyBh
cmUgYWRkZWQsIHJlbW92ZWQgb3IgZ2VuZXJhbGx5IGNoYW5nZSBpbnNpZGUuCisgICAgICAgIC8v
IENoZWNrIGlmIHRoZSBtb3VzZSByZWFsbHkgZGlkIGxlYXZlIHRoZSBlbGVtZW50IGJ5IGNoZWNr
aW5nIHRoZSBib3VuZHMuCisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIGEgV2ViS2l0IGJ1ZyBv
ciBjb3JyZWN0IGJlaGF2aW9yPworICAgICAgICBjb25zdCBiYXJSZWN0ID0gdGhpcy5lbGVtZW50
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBjb25zdCBuZXdUYWJJdGVtUmVjdCA9
IHRoaXMuX25ld1RhYlRhYkJhckl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsK
KyAgICAgICAgaWYgKGV2ZW50LnBhZ2VZID4gYmFyUmVjdC50b3AgJiYgZXZlbnQucGFnZVkgPCBi
YXJSZWN0LmJvdHRvbSAmJiBldmVudC5wYWdlWCA+IGJhclJlY3QubGVmdCAmJiBldmVudC5wYWdl
WCA8IChuZXdUYWJJdGVtUmVjdCA/IG5ld1RhYkl0ZW1SZWN0LnJpZ2h0IDogYmFyUmVjdC5yaWdo
dCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZmluaXNoRXhwYW5kaW5n
VGFic0FmdGVyQ2xvc2UoKTsKKyAgICB9CisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnUoZXZlbnQp
CisgICAgeworICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXSS5Db250ZXh0TWVudS5jcmVhdGVG
cm9tRXZlbnQoZXZlbnQpOworCisgICAgICAgIGZvciAobGV0IHRhYkNsYXNzIG9mIFdJLmtub3du
VGFiQ2xhc3NlcygpKSB7CisgICAgICAgICAgICBpZiAoIXRhYkNsYXNzLmlzVGFiQWxsb3dlZCgp
IHx8IHRhYkNsYXNzLnRhYkluZm8oKS5pc0VwaGVtZXJhbCkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgbGV0IG9wZW5UYWJCYXJJdGVtID0gbnVsbDsKKyAgICAgICAg
ICAgIGZvciAobGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKKyAgICAgICAg
ICAgICAgICBsZXQgdGFiQ29udGVudFZpZXcgPSB0YWJCYXJJdGVtLnJlcHJlc2VudGVkT2JqZWN0
OworICAgICAgICAgICAgICAgIGlmICghKHRhYkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0kuVGFi
Q29udGVudFZpZXcpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIGlmICh0YWJDb250ZW50Vmlldy50eXBlID09PSB0YWJDbGFzcy5UeXBlKSB7CisgICAg
ICAgICAgICAgICAgICAgIG9wZW5UYWJCYXJJdGVtID0gdGFiQmFySXRlbTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0odGFiQ2xhc3MudGFiSW5mbygp
LnRpdGxlLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKG9wZW5UYWJCYXJJdGVtKQorICAg
ICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYkJhckl0ZW0ob3BlblRhYkJhckl0ZW0pOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgV0kuY3JlYXRlTmV3VGFi
V2l0aFR5cGUodGFiQ2xhc3MuVHlwZSwge3Nob3VsZFNob3dOZXdUYWI6IHRydWV9KTsKKyAgICAg
ICAgICAgIH0sICEhb3BlblRhYkJhckl0ZW0pOworICAgICAgICB9CisgICAgfQorCisgICAgX2hh
bmRsZU5ld1RhYkNsaWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgbGV0IG9wdGlvbnMgPSB7aW5p
dGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLlRhYkNsaWNr
fTsKKyAgICAgICAgV0kuc2hvd05ld1RhYlRhYihvcHRpb25zKTsKKyAgICB9CisKKyAgICBfaGFu
ZGxlTmV3VGFiTW91c2VFbnRlcihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fdGFi
QW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRh
aW5zKCJhbmltYXRpbmciKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9m
aW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZSgpOworICAgIH0KK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NYWluLmNzcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01haW4uY3NzCmluZGV4IGM5ZTcz
ODM0ZTg2NGE4NzgzMGY0NzRkNjAzYWFjMDc3ZTIxZDM1YmMuLjEwY2Q2NGE0NTU5MDk5NWNkYTQ5
MDI5MjFlMWJmOTgxNTAzYWY5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL01haW4uY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL01haW4uY3NzCkBAIC02NCw2ICs2NCwxMCBAQCBib2R5IHsKICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yLWNvbnRlbnQpOwogfQog
Citib2R5LmRvY2tlZC5ib3R0b20geworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1i
b3JkZXItY29sb3IpOworfQorCiBib2R5LmRvY2tlZC5yaWdodCB7CiAgICAgYm9yZGVyLWxlZnQ6
IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogfQpAQCAtMTA5LDIzICsxMTMsMTIgQEAg
Ym9keS5kb2NrZWQubGVmdCAjZG9ja2VkLXJlc2l6ZXIgewogICAgIGN1cnNvcjogY29sLXJlc2l6
ZTsKIH0KIAotI3VuZG9ja2VkLXRpdGxlLWFyZWEgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6IHZh
cigtLXVuZG9ja2VkLXRpdGxlLWFyZWEtaGVpZ2h0KTsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOiBs
aW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDkyJSksIGhzbCgwLCAwJSwgODcl
KSk7Ci0gICAgYm94LXNoYWRvdzogaW5zZXQgaHNsYSgwLCAwJSwgMTAwJSwgMC41KSAwIDFweCAx
cHg7Ci19Ci0KLWJvZHkuZG9ja2VkICN1bmRvY2tlZC10aXRsZS1hcmVhIHsKLSAgICBkaXNwbGF5
OiBub25lOworYm9keS5kb2NrZWQuYm90dG9tICN0b29sYmFyIHsKKyAgICBjdXJzb3I6IHJvdy1y
ZXNpemU7CiB9CiAKLWJvZHkud2luZG93LWluYWN0aXZlICN1bmRvY2tlZC10aXRsZS1hcmVhIHsK
LSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDk2JSk7Ci0gICAgYmFja2dyb3VuZC1p
bWFnZTogbm9uZTsKK2JvZHkuZG9ja2VkLmJvdHRvbSAjdG9vbGJhciAuaXRlbTpub3QoLmZsZXhp
YmxlLXNwYWNlKSB7CisgICAgY3Vyc29yOiBkZWZhdWx0OwogfQogCiBpbnB1dFt0eXBlPXJhbmdl
XSB7CkBAIC0xNDQsNyArMTM3LDcgQEAgaW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVy
LXJ1bm5hYmxlLXRyYWNrIHsKIAogI21haW4gewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAg
ICB0b3A6IGNhbGModmFyKC0tdW5kb2NrZWQtdGl0bGUtYXJlYS1oZWlnaHQpICsgdmFyKC0tdGFi
LWJhci1oZWlnaHQpKTsKKyAgICB0b3A6IGNhbGModmFyKC0tdG9vbGJhci1oZWlnaHQpICsgdmFy
KC0tdGFiLWJhci1oZWlnaHQpKTsKICAgICBsZWZ0OiAwOwogICAgIHJpZ2h0OiAwOwogICAgIGJv
dHRvbTogMDsKQEAgLTQ4MiwxNSArNDc1LDYgQEAgYm9keVtkaXI9cnRsXSBbZGlyPWx0cl0gLmdv
LXRvLWFycm93IHsKICAgICB9CiB9CiAKLUBrZXlmcmFtZXMgdGFiLWJhci1jb25zb2xlLWl0ZW0t
cHVsc2UgewotICAgIDUwJSB7IG9wYWNpdHk6IDAuNjsgfQotfQotCi0udGFiLWJhciA+IC5uYXZp
Z2F0aW9uLWJhciA6bWF0Y2hlcyguY29uc29sZS13YXJuaW5ncywgLmNvbnNvbGUtZXJyb3JzKTpu
b3QoLmRpc2FibGVkKS5wdWxzaW5nIHsKLSAgICBhbmltYXRpb24tbmFtZTogdGFiLWJhci1jb25z
b2xlLWl0ZW0tcHVsc2U7Ci0gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjc1czsKLX0KLQogLmRl
dmljZS1zZXR0aW5ncy1jb250ZW50IHsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgcGFk
ZGluZzogMCA0cHg7CkBAIC01NTUsMTUgKzUzOSw2IEBAIGJvZHlbZGlyPXJ0bF0gLmRldmljZS1z
ZXR0aW5ncy1jb250ZW50ID4gLnJlZmVyZW5jZS1wYWdlLWxpbmstY29udGFpbmVyIHsKIH0KIAog
QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAgICN1bmRvY2tlZC10aXRs
ZS1hcmVhIHsKLSAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJv
dHRvbSwgaHNsKDAsIDAlLCAyNiUpLCBoc2woMCwgMCUsIDIzJSkpOwotICAgICAgICBib3gtc2hh
ZG93OiBub25lOwotICAgIH0KLQotICAgIGJvZHkud2luZG93LWluYWN0aXZlICN1bmRvY2tlZC10
aXRsZS1hcmVhIHsKLSAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1j
b2xvcik7Ci0gICAgfQotCiAgICAgLmdvLXRvLWFycm93IHsKICAgICAgICAgZmlsdGVyOiBpbnZl
cnQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwppbmRleCAzNDNlZDFkYTMxZmIzYzAyMWE5
YjE5YTEwOTI1MjIxZTJhOTRkZWY3Li5hMjY5Njg2ZDM5N2NiMjIyYWUwZjA4NmQ1MDUxODE1NGY4
NmU4OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9OYXZpZ2F0aW9uQmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKQEAgLTI1LDcgKzI1LDcgQEAKIAogV0kuTmF2
aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXSS5WaWV3CiB7Ci0gICAg
Y29uc3RydWN0b3IoZWxlbWVudCwge3JvbGUsIHNpemVzVG9GaXR9ID0ge30pCisgICAgY29uc3Ry
dWN0b3IoZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1zLCByb2xlLCBsYWJlbCkKICAgICB7CiAgICAg
ICAgIHN1cGVyKGVsZW1lbnQpOwogCkBAIC0zNCw2ICszNCw4IEBAIFdJLk5hdmlnYXRpb25CYXIg
PSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV0kuVmlldwogCiAgICAgICAgIGlmIChyb2xl
KQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUpOwor
ICAgICAgICBpZiAobGFiZWwpCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRl
KCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJmb2N1cyIsIHRoaXMuX2ZvY3VzLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAgICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyLmJpbmQodGhp
cyksIGZhbHNlKTsKQEAgLTQzLDE5ICs0NSwyMSBAQCBXSS5OYXZpZ2F0aW9uQmFyID0gY2xhc3Mg
TmF2aWdhdGlvbkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgdGhpcy5fbW91c2VNb3ZlZEV2
ZW50TGlzdGVuZXIgPSB0aGlzLl9tb3VzZU1vdmVkLmJpbmQodGhpcyk7CiAgICAgICAgIHRoaXMu
X21vdXNlVXBFdmVudExpc3RlbmVyID0gdGhpcy5fbW91c2VVcC5iaW5kKHRoaXMpOwogCi0gICAg
ICAgIHRoaXMuX3NpemVzVG9GaXQgPSBzaXplc1RvRml0IHx8IGZhbHNlOwogICAgICAgICB0aGlz
Ll9taW5pbXVtV2lkdGggPSBOYU47CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcyA9IFtd
OwogICAgICAgICB0aGlzLl9zZWxlY3RlZE5hdmlnYXRpb25JdGVtID0gbnVsbDsKKworICAgICAg
ICBpZiAobmF2aWdhdGlvbkl0ZW1zKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG5hdmlnYXRpb25JdGVtcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLmFkZE5h
dmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtc1tpXSk7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAotICAgIGdldCBzaXplc1RvRml0KCkgeyByZXR1cm4gdGhpcy5fc2l6ZXNU
b0ZpdDsgfQotCiAgICAgYWRkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0sIHBhcmVudEVs
ZW1lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5pbnNlcnROYXZpZ2F0aW9uSXRlbShu
YXZpZ2F0aW9uSXRlbSwgSW5maW5pdHksIHBhcmVudEVsZW1lbnQpOworICAgICAgICByZXR1cm4g
dGhpcy5pbnNlcnROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbSwgdGhpcy5fbmF2aWdhdGlv
bkl0ZW1zLmxlbmd0aCwgcGFyZW50RWxlbWVudCk7CiAgICAgfQogCiAgICAgaW5zZXJ0TmF2aWdh
dGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0sIGluZGV4LCBwYXJlbnRFbGVtZW50KQpAQCAtNjksNyAr
NzMsNyBAQCBXSS5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdJ
LlZpZXcKIAogICAgICAgICBuYXZpZ2F0aW9uSXRlbS5kaWRBdHRhY2godGhpcyk7CiAKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoIWlzRmluaXRlKGluZGV4KSB8fCAoaW5kZXggPj0gMCAmJiBpbmRl
eCA8PSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoKSk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPD0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCk7
CiAgICAgICAgIGluZGV4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oaW5kZXgsIHRoaXMuX25hdmln
YXRpb25JdGVtcy5sZW5ndGgpKTsKIAogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMuc3Bs
aWNlKGluZGV4LCAwLCBuYXZpZ2F0aW9uSXRlbSk7CkBAIC0xNjQsNiArMTY4LDEyIEBAIFdJLk5h
dmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAg
ICByZXR1cm4gdGhpcy5fbWluaW11bVdpZHRoOwogICAgIH0KIAorICAgIGdldCBzaXplc1RvRml0
KCkKKyAgICB7CisgICAgICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBmaW5kTmF2aWdhdGlvbkl0ZW0oaWRl
bnRpZmllcikKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIG1hdGNoaW5nU2VsZk9yQ2hpbGQoaXRl
bSkgewpAQCAtMjE0LDcgKzIyNCw3IEBAIFdJLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0
aW9uQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgaXRlbS51cGRhdGUoe2V4cGFuZE9u
bHk6IHRydWV9KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLl9zaXplc1RvRml0KQor
ICAgICAgICBpZiAodGhpcy5zaXplc1RvRml0KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGxldCB2aXNpYmxlTmF2aWdhdGlvbkl0ZW1zID0gdGhpcy5fdmlzaWJsZU5hdmlnYXRpb25J
dGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL05ldHdvcmtEZXRhaWxWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05ldHdvcmtEZXRhaWxWaWV3LmNzcwppbmRleCBjMDJlY2I4NjZlNDQxMzg0
ZmRhOThkNjAxMmQzYzc2ZDI0OTczNjJhLi5iZWE1NjhmNGY0MzRjOTVhZTZhODY5YmI5NTY1ZGUw
OTFkYmQxM2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OZXR3b3JrRGV0YWlsVmlldy5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya0RldGFpbFZpZXcuY3NzCkBAIC0yOCw3ICsyOCw3
IEBACiAgICAgdG9wOiAwOwogICAgIGxlZnQ6IDA7CiAgICAgcmlnaHQ6IDA7Ci0gICAgYm90dG9t
OiB2YXIoLS1uZXR3b3JrLXN0YXRpc3RpY3MtaGVpZ2h0KTsKKyAgICBib3R0b206IDA7CiAgICAg
LyogbGVmdCBvciByaWdodCBzZXQgYnkgTmV0d29ya1RhYmxlVmlldyBvbiBkaXNwbGF5IC8gcmVz
aXplICovCiAgICAgei1pbmRleDogMTA7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3
b3JrVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanMKaW5kZXggNjUxMTBhY2EyMzI0ODRmZGVi
Y2YzZmU5MmNjMTQ3NzFjNTAxYzUxNy4uYjBlM2EzMDE4OWRmODk2YTU4NzRmOTBlZmM2NzMzZjkw
YzBiMDUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJDb250ZW50Vmlldy5qcwpAQCAtMjUsOSAr
MjUsMTEgQEAKIAogV0kuTmV0d29ya1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYkNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpZXcKIHsKLSAgICBjb25zdHJ1Y3Rvcigp
CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHN1cGVyKE5ldHdv
cmtUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IFdJ
LkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLk5ldHdvcmtUYWJDb250ZW50Vmlldy50
YWJJbmZvKCkpOworCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgIm5ldHdvcmsiLCAibmV0
d29yayIsIHRhYkJhckl0ZW0pOwogCiAgICAgICAgIHRoaXMuX25ldHdvcmtUYWJsZUNvbnRlbnRW
aWV3ID0gbmV3IFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3OwogCkBAIC00OCw3ICs1MCw2IEBA
IFdJLk5ldHdvcmtUYWJDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJDb250ZW50VmlldyBl
eHRlbmRzIFdJLlRhYkNvbnRlbnRWaWV3CiAgICAgc3RhdGljIHRhYkluZm8oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50aWZpZXI6IE5ldHdvcmtUYWJDb250ZW50
Vmlldy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvTmV0d29yay5zdmciLAogICAg
ICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJOZXR3b3JrIiksCiAgICAgICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3Jr
VGFibGVDb250ZW50Vmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5jc3MKaW5kZXggYjRmMGRlYjZjNzJmZGM4
M2I5MzI1YTVmZDg2Y2ExNmU2NjA1MTIyNi4uYjRmZGIxMmQ2NjU1MTM0MDJlNjAzZjAzZThlOTE0
ZTA2YmQ4NzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmNzcwpA
QCAtMzYsMTIgKzM2LDcgQEAKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL05ldHdvcmtIQVIu
c3ZnKTsKIH0KIAotLmNvbnRlbnQtdmlldy5uZXR3b3JrIC5uZXR3b3JrLXRhYmxlIHsKLSAgICBk
aXNwbGF5OiBmbGV4OwotICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Ci19Ci0KLS5jb250ZW50
LXZpZXcubmV0d29yayAubmV0d29yay10YWJsZSA+IC50YWJsZSAuaWNvbiB7CisuY29udGVudC12
aWV3Lm5ldHdvcmsgLm5ldHdvcmstdGFibGUgLmljb24gewogICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKICAgICB3aWR0aDogMTZweDsKICAgICBoZWlnaHQ6IDE2cHg7CkBAIC01MCwxOSArNDUsMTUg
QEAKICAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDRweDsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAu
dGFibGUgbGk6bm90KC5zZWxlY3RlZCkgLmNlbGw6bm90KC5jdXJyZW50LXNlc3Npb24pIHsKLSAg
ICBvcGFjaXR5OiAwLjU7Ci19Ci0KLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIGxpOm5vdCguZmls
bGVyKSAuY2VsbC5uYW1lIHsKKy5uZXR3b3JrLXRhYmxlIGxpOm5vdCguZmlsbGVyKSAuY2VsbC5u
YW1lIHsKICAgICBjdXJzb3I6IHBvaW50ZXI7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
IC5jZWxsLmRvbS1ub2RlLm5hbWUgLmljb24geworLm5ldHdvcmstdGFibGUgLmNlbGwuZG9tLW5v
ZGUubmFtZSAuaWNvbiB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9ET01FbGVtZW50LnN2
Zyk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRp
c2Nsb3N1cmUgeworLm5ldHdvcmstdGFibGUgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlzY2xvc3Vy
ZSB7CiAgICAgd2lkdGg6IDEzcHg7CiAgICAgaGVpZ2h0OiAxM3B4OwogICAgIHZlcnRpY2FsLWFs
aWduOiAtMnB4OwpAQCAtNzEsMTEyICs2MiwxMTIgQEAKICAgICBiYWNrZ3JvdW5kLXJlcGVhdDog
bm8tcmVwZWF0OwogfQogCi1ib2R5W2Rpcj1ydGxdIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5j
ZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUgeworYm9keVtkaXI9cnRsXSAubmV0d29yay10
YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlIHsKICAgICB0cmFuc2Zvcm06IHNj
YWxlWCgtMSk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlOmZvY3VzIGxpLnNlbGVjdGVk
IC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUgeworLm5ldHdvcmstdGFibGU6Zm9jdXMg
bGkuc2VsZWN0ZWQgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlzY2xvc3VyZSB7CiAgICAgY29udGVu
dDogdXJsKC4uL0ltYWdlcy9EaXNjbG9zdXJlVHJpYW5nbGVzLnN2ZyNjbG9zZWQtc2VsZWN0ZWQp
OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNj
bG9zdXJlLmV4cGFuZGVkIHsKKy5uZXR3b3JrLXRhYmxlIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRp
c2Nsb3N1cmUuZXhwYW5kZWQgewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvRGlzY2xvc3Vy
ZVRyaWFuZ2xlcy5zdmcjb3Blbi1ub3JtYWwpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJs
ZTpmb2N1cyBsaS5zZWxlY3RlZCAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlLmV4cGFu
ZGVkIHsKKy5uZXR3b3JrLXRhYmxlOmZvY3VzIGxpLnNlbGVjdGVkIC5jZWxsLmRvbS1ub2RlLm5h
bWUgLmRpc2Nsb3N1cmUuZXhwYW5kZWQgewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvRGlz
Y2xvc3VyZVRyaWFuZ2xlcy5zdmcjb3Blbi1zZWxlY3RlZCk7CiB9CiAKLS5uZXR3b3JrLXRhYmxl
ID4gLnRhYmxlLmdyb3VwZWQgLmRhdGEtY29udGFpbmVyIC5jZWxsLm5hbWUgeworLm5ldHdvcmst
dGFibGUuZ3JvdXBlZCAuZGF0YS1jb250YWluZXIgLmNlbGwubmFtZSB7CiAgICAgLS1pdGVtLXBh
ZGRpbmctc3RhcnQ6IDE5cHg7CiAgICAgLS1pdGVtLWRpc2Nsb3N1cmUtd2lkdGg6IDExcHg7CiB9
CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlLmdyb3VwZWQgLmRhdGEtY29udGFpbmVyIC5jZWxs
Om5vdCgucGFyZW50KS5uYW1lIHsKKy5uZXR3b3JrLXRhYmxlLmdyb3VwZWQgLmRhdGEtY29udGFp
bmVyIC5jZWxsOm5vdCgucGFyZW50KS5uYW1lIHsKICAgICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6
IHZhcigtLWl0ZW0tcGFkZGluZy1zdGFydCk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
Lmdyb3VwZWQgLmRhdGEtY29udGFpbmVyIC5jZWxsLmNoaWxkLm5hbWUgeworLm5ldHdvcmstdGFi
bGUuZ3JvdXBlZCAuZGF0YS1jb250YWluZXIgLmNlbGwuY2hpbGQubmFtZSB7CiAgICAgLXdlYmtp
dC1wYWRkaW5nLXN0YXJ0OiBjYWxjKHZhcigtLWl0ZW0tcGFkZGluZy1zdGFydCkgKyB2YXIoLS1p
dGVtLWRpc2Nsb3N1cmUtd2lkdGgpKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmRh
dGEtY29udGFpbmVyIC5jZWxsLm5hbWUgLnJhbmdlIHsKKy5uZXR3b3JrLXRhYmxlIC5kYXRhLWNv
bnRhaW5lciAuY2VsbC5uYW1lIC5yYW5nZSB7CiAgICAgY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAw
LjcpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAuZGF0YS1jb250YWluZXIgLmNlbGwu
bmFtZSAucmFuZ2U6OmJlZm9yZSB7CisubmV0d29yay10YWJsZSAuZGF0YS1jb250YWluZXIgLmNl
bGwubmFtZSAucmFuZ2U6OmJlZm9yZSB7CiAgICAgY29udGVudDogIlwwMEEwXDIwMTRcMDBBMCI7
IC8qICZuYnNwOyZtZGFzaDsmbmJzcDsgKi87CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
OmZvY3VzIC5kYXRhLWNvbnRhaW5lciBsaS5zZWxlY3RlZCAuY2VsbC5uYW1lIC5yYW5nZSB7Cisu
bmV0d29yay10YWJsZTpmb2N1cyAuZGF0YS1jb250YWluZXIgbGkuc2VsZWN0ZWQgLmNlbGwubmFt
ZSAucmFuZ2UgewogICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAxMDAlLCAwLjkpOwogfQogCi0ubmV0
d29yay10YWJsZSA+IC50YWJsZSBsaTpub3QoLnNlbGVjdGVkKSAuY2VsbDptYXRjaGVzKC5jYWNo
ZS10eXBlLCAubXVsdGlwbGUpIHsKKy5uZXR3b3JrLXRhYmxlIGxpOm5vdCguc2VsZWN0ZWQpIC5j
ZWxsOm1hdGNoZXMoLmNhY2hlLXR5cGUsIC5tdWx0aXBsZSkgewogICAgIGNvbG9yOiB2YXIoLS10
ZXh0LWNvbG9yLWdyYXktbWVkaXVtKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmVy
cm9yIHsKKy5uZXR3b3JrLXRhYmxlIC5lcnJvciB7CiAgICAgY29sb3I6IHZhcigtLWVycm9yLXRl
eHQtY29sb3IpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5kb21haW4gPiAu
bG9jayB7CisubmV0d29yay10YWJsZSAuY2VsbC5kb21haW4gPiAubG9jayB7CiAgICAgd2lkdGg6
IDhweDsKICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9Mb2Nr
ZWQuc3ZnKTsKICAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDVweDsKIH0KIAotLm5ldHdvcmstdGFi
bGUgPiAudGFibGUgbGkuc2VsZWN0ZWQgLmNlbGwuZG9tYWluID4gLmxvY2sgeworLm5ldHdvcmst
dGFibGUgbGkuc2VsZWN0ZWQgLmNlbGwuZG9tYWluID4gLmxvY2sgewogICAgIC8qIEZJWE1FOiA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg5NzczPiBXZWIgSW5zcGVjdG9yOiBjcmVhdGUgc3BlY2lh
bCBOZXR3b3JrIHdhdGVyZmFsbCBmb3IgbWVkaWEgZXZlbnRzICovCiAgICAgZmlsdGVyOiBpbnZl
cnQoKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMg
eworLm5ldHdvcmstdGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgewogICAgIC13ZWJraXQtbWFy
Z2luLXN0YXJ0OiA0cHg7CiB9CiAKLWJvZHlbZGlyPWx0cl0gLm5ldHdvcmstdGFibGUgPiAudGFi
bGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgeworYm9keVtkaXI9bHRyXSAubmV0d29yay10YWJsZSAu
Y2VsbC5uYW1lID4gLnN0YXR1cyB7CiAgICAgZmxvYXQ6IHJpZ2h0OwogfQogCi1ib2R5W2Rpcj1y
dGxdIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIHsKK2JvZHlb
ZGlyPXJ0bF0gLm5ldHdvcmstdGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgewogICAgIGZsb2F0
OiBsZWZ0OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1
cyAuaW5kZXRlcm1pbmF0ZS1wcm9ncmVzcy1zcGlubmVyIHsKKy5uZXR3b3JrLXRhYmxlIC5jZWxs
Lm5hbWUgPiAuc3RhdHVzIC5pbmRldGVybWluYXRlLXByb2dyZXNzLXNwaW5uZXIgewogICAgIG1h
cmdpbi10b3A6IDNweDsKICAgICB3aWR0aDogMTRweDsKICAgICBoZWlnaHQ6IDE0cHg7CiB9CiAK
LS5uZXR3b3JrLXRhYmxlLnNob3dpbmctZGV0YWlsID4gLnRhYmxlIC5jZWxsOm5vdCgubmFtZSkg
eworLnNob3dpbmctZGV0YWlsIC5uZXR3b3JrLXRhYmxlIC5jZWxsOm5vdCgubmFtZSkgewogICAg
IGRpc3BsYXk6IG5vbmU7CiB9CiAKLS5uZXR3b3JrLXRhYmxlLnNob3dpbmctZGV0YWlsID4gLnRh
YmxlIC5yZXNpemVyOm5vdCg6Zmlyc3Qtb2YtdHlwZSkgeworLnNob3dpbmctZGV0YWlsIC5uZXR3
b3JrLXRhYmxlIC5yZXNpemVyOm5vdCg6Zmlyc3Qtb2YtdHlwZSkgewogICAgIGRpc3BsYXk6IG5v
bmU7CiB9CiAKLS5uZXR3b3JrLXRhYmxlLnNob3dpbmctZGV0YWlsID4gLnRhYmxlIC50aW1lbGlu
ZS1ydWxlciB7Cisuc2hvd2luZy1kZXRhaWwgLm5ldHdvcmstdGFibGUgLnRpbWVsaW5lLXJ1bGVy
IHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAuaGVh
ZGVyIC5jZWxsLndhdGVyZmFsbCB7CisubmV0d29yay10YWJsZSAuaGVhZGVyIC5jZWxsLndhdGVy
ZmFsbCB7CiAgICAgLyogSGlkZSB0aGUgbGFiZWwgZm9yIHRoaXMgY29sdW1uLiAqLwogICAgIGNv
bG9yOiB0cmFuc3BhcmVudDsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgOm5vdCguaGVh
ZGVyKSAuY2VsbDpmaXJzdC1vZi10eXBlIHsKKy5uZXR3b3JrLXRhYmxlIDpub3QoLmhlYWRlcikg
LmNlbGw6Zmlyc3Qtb2YtdHlwZSB7CiAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjA3
KTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRl
cmZhbGwgeworLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgewog
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICBoZWlnaHQ6IDIwcHg7CiB9CiAKLS5uZXR3b3Jr
LXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwt
Y29udGFpbmVyIHsKKy5uZXR3b3JrLXRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxs
IC53YXRlcmZhbGwtY29udGFpbmVyIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9w
OiAwOwogICAgIGxlZnQ6IDA7CkBAIC0xODQsNyArMTc1LDcgQEAgYm9keVtkaXI9cnRsXSAubmV0
d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyB7CiAgICAgYm90dG9tOiAw
OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVy
ZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5kb20tZXZlbnQgeworLm5ldHdvcmstdGFibGUg
Om5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuZG9t
LWV2ZW50IHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiBjYWxjKDUwJSAtICh2
YXIoLS1ub2RlLXdhdGVyZmFsbC1kb20tZXZlbnQtc2l6ZSkgLyAyKSk7CiAgICAgbWluLXdpZHRo
OiB2YXIoLS1ub2RlLXdhdGVyZmFsbC1kb20tZXZlbnQtc2l6ZSk7CkBAIC0xOTMsMTcgKzE4NCwx
NyBAQCBib2R5W2Rpcj1ydGxdIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLm5hbWUgPiAu
c3RhdHVzIHsKICAgICBib3JkZXItcmFkaXVzOiBjYWxjKHZhcigtLW5vZGUtd2F0ZXJmYWxsLWRv
bS1ldmVudC1zaXplKSAvIDIpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5o
ZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5kb20tYWN0aXZp
dHkgeworLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVy
ZmFsbC1jb250YWluZXIgPiAuZG9tLWFjdGl2aXR5IHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CiAgICAgdG9wOiBjYWxjKDUwJSAtIDAuNXB4KTsKICAgICBib3JkZXItdG9wOiAxcHggZGFzaGVk
IHZhcigtLXNlbGVjdGVkLWJhY2tncm91bmQtY29sb3ItYWN0aXZlKTsKIH0KIAotLm5ldHdvcmst
dGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1j
b250YWluZXIgPiAuZG9tLWFjdGl2aXR5LnBsYXlpbmcgeworLm5ldHdvcmstdGFibGUgOm5vdCgu
aGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuZG9tLWFjdGl2
aXR5LnBsYXlpbmcgewogICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkOwogfQogCi0ubmV0d29y
ay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxs
LWNvbnRhaW5lciA+IC5hcmVhIHsKKy5uZXR3b3JrLXRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwu
d2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmFyZWEgewogICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKICAgICB0b3A6IHZhcigtLWFyZWEtcGFkZGluZyk7CiAgICAgaGVpZ2h0OiBjYWxj
KDEwMCUgLSAodmFyKC0tYXJlYS1wYWRkaW5nKSAqIDIpKTsKQEAgLTIxMiwyMiArMjAzLDIyIEBA
IGJvZHlbZGlyPXJ0bF0gLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwubmFtZSA+IC5zdGF0
dXMgewogICAgIC0tYXJlYS1wYWRkaW5nOiBjYWxjKCg1MCUgLSAodmFyKC0tbm9kZS13YXRlcmZh
bGwtZG9tLWV2ZW50LXNpemUpIC8gMikpIC8gMik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRh
YmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4g
LmFyZWEuZG9tLWZ1bGxzY3JlZW4geworLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVyKSAuY2Vs
bC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuYXJlYS5kb20tZnVsbHNjcmVlbiB7
CiAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCA0MCUpOwogfQogCi0ubmV0d29yay10
YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNv
bnRhaW5lciA+IC5hcmVhLnBvd2VyLWVmZmljaWVudC1wbGF5YmFjayB7CisubmV0d29yay10YWJs
ZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5h
cmVhLnBvd2VyLWVmZmljaWVudC1wbGF5YmFjayB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFy
KC0tbmV0d29yay1yZXF1ZXN0LWNvbG9yKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUg
LnRpbWVsaW5lLXJ1bGVyIHsKKy5uZXR3b3JrLXRhYmxlIC50aW1lbGluZS1ydWxlciB7CiAgICAg
cG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMDsKICAgICBib3R0b206IDA7CiAgICAgb3Zl
cmZsb3c6IGhpZGRlbjsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLnRpbWVsaW5lLXJ1
bGVyID4gLmhlYWRlciB7CisubmV0d29yay10YWJsZSAudGltZWxpbmUtcnVsZXIgPiAuaGVhZGVy
IHsKICAgICB0b3A6IGNhbGModmFyKC0tbmF2aWdhdGlvbi1iYXItaGVpZ2h0KSAtIHZhcigtLXRp
bWVsaW5lLXJ1bGVyLWhlaWdodCkpOwogfQogCkBAIC0yNjAsMTEwICsyNTEsNzYgQEAgYm9keVtk
aXI9cnRsXSAud2F0ZXJmYWxsIC5ibG9jayB7CiAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRp
dXM6IHZhcigtLXN0YXJ0LXJhZGl1cyk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53
YXRlcmZhbGwgLmJsb2NrICsgLmJsb2NrIHsKKy5uZXR3b3JrLXRhYmxlIC53YXRlcmZhbGwgLmJs
b2NrICsgLmJsb2NrIHsKICAgICAtLXN0YXJ0LXJhZGl1czogMDsKICAgICAtLWVuZC1yYWRpdXM6
IDA7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrOm1hdGNo
ZXMoLm1vdXNlLXRyYWNraW5nLCAuZmlsbGVyKSArIC5ibG9jazpub3QoLm1vdXNlLXRyYWNraW5n
LCAuZmlsbGVyKSwKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrOm5v
dCgucmVxdWVzdCwgLnJlc3BvbnNlKSArIDptYXRjaGVzKC5yZXF1ZXN0LCAucmVzcG9uc2UpIHsK
Ky5uZXR3b3JrLXRhYmxlIC53YXRlcmZhbGwgLmJsb2NrOm1hdGNoZXMoLm1vdXNlLXRyYWNraW5n
LCAuZmlsbGVyKSArIC5ibG9jazpub3QoLm1vdXNlLXRyYWNraW5nLCAuZmlsbGVyKSwKKy5uZXR3
b3JrLXRhYmxlIC53YXRlcmZhbGwgLmJsb2NrOm5vdCgucmVxdWVzdCwgLnJlc3BvbnNlKSArIDpt
YXRjaGVzKC5yZXF1ZXN0LCAucmVzcG9uc2UpIHsKICAgICAtLXN0YXJ0LXJhZGl1czogMnB4Owog
fQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jazpsYXN0LWNoaWxk
IHsKKy5uZXR3b3JrLXRhYmxlIC53YXRlcmZhbGwgLmJsb2NrOmxhc3QtY2hpbGQgewogICAgIC0t
ZW5kLXJhZGl1czogMnB4OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxs
IC5ibG9jay5yZXF1ZXN0LAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxv
Y2sucmVzcG9uc2UgeworLndhdGVyZmFsbCAuYmxvY2sucmVxdWVzdCwKKy53YXRlcmZhbGwgLmJs
b2NrLnJlc3BvbnNlIHsKICAgICB0b3A6IDNweDsKICAgICBoZWlnaHQ6IDE0cHg7CiB9CiAKLS5u
ZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLm1vdXNlLXRyYWNraW5nIHsK
Ky53YXRlcmZhbGwgLmJsb2NrLm1vdXNlLXRyYWNraW5nIHsKICAgICB0b3A6IDFweDsKICAgICB6
LWluZGV4OiAyOwogICAgIGhlaWdodDogMThweDsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFi
bGUgLndhdGVyZmFsbCAuYmxvY2suZmlsbGVyIHsKKy53YXRlcmZhbGwgLmJsb2NrLmZpbGxlciB7
CiAgICAgdG9wOiA5cHg7CiAgICAgaGVpZ2h0OiAycHg7CiAgICAgYmFja2dyb3VuZC1jb2xvcjog
bGlnaHRncmV5OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9j
ay5yZWRpcmVjdCB7Cisud2F0ZXJmYWxsIC5ibG9jay5yZWRpcmVjdCB7CiAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogdmFyKC0tbmV0d29yay1yZWRpcmVjdC1jb2xvcik7CiB9CiAKLS5uZXR3b3JrLXRh
YmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLnF1ZXVlIHsKKy53YXRlcmZhbGwgLmJsb2Nr
LnF1ZXVlIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXR3b3JrLXF1ZXVlLWNvbG9y
KTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2suZG5zIHsK
Ky53YXRlcmZhbGwgLmJsb2NrLmRucyB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV0
d29yay1kbnMtY29sb3IpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxs
IC5ibG9jay5jb25uZWN0IHsKKy53YXRlcmZhbGwgLmJsb2NrLmNvbm5lY3QgewogICAgIGJhY2tn
cm91bmQtY29sb3I6IHZhcigtLW5ldHdvcmstY29ubmVjdC1jb2xvcik7CiB9CiAKLS5uZXR3b3Jr
LXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLnNlY3VyZSB7Cisud2F0ZXJmYWxsIC5i
bG9jay5zZWN1cmUgewogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldHdvcmstc2VjdXJl
LWNvbG9yKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2su
cmVxdWVzdCB7Cisud2F0ZXJmYWxsIC5ibG9jay5yZXF1ZXN0IHsKICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiB2YXIoLS1uZXR3b3JrLXJlcXVlc3QtY29sb3IpOwogfQogCi0ubmV0d29yay10YWJsZSA+
IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5yZXNwb25zZSB7Cisud2F0ZXJmYWxsIC5ibG9jay5y
ZXNwb25zZSB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV0d29yay1yZXNwb25zZS1j
b2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnN0YXRpc3RpY3MgewotICAgIGRpc3BsYXk6
IGZsZXg7Ci0gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ci0gICAgYWxpZ24taXRlbXM6IGNl
bnRlcjsKLSAgICBtaW4taGVpZ2h0OiB2YXIoLS1uZXR3b3JrLXN0YXRpc3RpY3MtaGVpZ2h0KTsK
LSAgICBwYWRkaW5nOiA0cHggMDsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9y
ZGVyLWNvbG9yKTsKLX0KLQotLm5ldHdvcmstdGFibGUgPiAuc3RhdGlzdGljcyA+IC5zdGF0aXN0
aWMgewotICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAgcGFkZGluZzogMCA4cHg7Ci19Ci0KLS5uZXR3
b3JrLXRhYmxlID4gLnN0YXRpc3RpY3MgPiAuc3RhdGlzdGljW2hpZGRlbl0gewotICAgIGRpc3Bs
YXk6IG5vbmU7Ci19Ci0KLS5uZXR3b3JrLXRhYmxlID4gLnN0YXRpc3RpY3MgPiAuc3RhdGlzdGlj
ID4gLmljb24gewotICAgIHdpZHRoOiAxNnB4OwotICAgIGhlaWdodDogMTZweDsKLX0KLQotLm5l
dHdvcmstdGFibGUgPiAuc3RhdGlzdGljcyA+IC5zdGF0aXN0aWMgPiAudGV4dCB7Ci0gICAgcGFk
ZGluZy10b3A6IDFweDsKLSAgICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDRweDsKLSAgICAtd2Vi
a2l0LXVzZXItc2VsZWN0OiBhbGw7Ci19Ci0KIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIHsKICAgICAuY29udGVudC12aWV3LnRhYi5uZXR3b3JrID4gLmNvbnRlbnQtYnJvd3Nl
ciA+IC5uYXZpZ2F0aW9uLWJhciAuaGllcmFyY2hpY2FsLXBhdGggLmljb24gewogICAgICAgICBm
aWx0ZXI6IGludmVydCg4OCUpOwogICAgIH0KIAotICAgIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
IC5jZWxsLmRvbWFpbiA+IC5sb2NrIHsKKyAgICAubmV0d29yay10YWJsZSAuY2VsbC5kb21haW4g
PiAubG9jayB7CiAgICAgICAgIGZpbHRlcjogdmFyKC0tZmlsdGVyLWludmVydCk7CiAgICAgfQog
Ci0gICAgLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmRhdGEtY29udGFpbmVyIC5jZWxsLm5hbWUg
LnJhbmdlIHsKKyAgICAubmV0d29yay10YWJsZSAuZGF0YS1jb250YWluZXIgLmNlbGwubmFtZSAu
cmFuZ2UgewogICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvci1zZWNvbmRhcnkpOwogICAg
IH0KLQotICAgIC5uZXR3b3JrLXRhYmxlID4gLnN0YXRpc3RpY3MgPiAuc3RhdGlzdGljLmRvbWFp
bi1jb3VudCA+IC5pY29uIHsKLSAgICAgICAgZmlsdGVyOiBpbnZlcnQoKTsKLSAgICAgICAgb3Bh
Y2l0eTogMC43OwotICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcu
anMKaW5kZXggNGU4MzdmYTBhYzRkMTlkZjc4MzljOTZhNjA4OGM0ZTY1YjE3Zjk3NC4uYjJjZTJh
OWU0ZDJiODk5MmRhNmJiMTc3NzFiOWE2MzhmMTg0Y2YxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29y
a1RhYmxlQ29udGVudFZpZXcuanMKQEAgLTU2LDEwICs1Niw2IEBAIFdJLk5ldHdvcmtUYWJsZUNv
bnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmllCiAgICAgICAgIC8vIEZJWE1FOiBOZXR3b3JrIFRpbWVsaW5lLgogICAgICAgICAvLyBG
SVhNRTogVGhyb3R0bGluZy4KIAotICAgICAgICB0aGlzLl9zdGF0aXN0aWNzID0ge307Ci0KLSAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm5ldHdvcmstdGFibGUiKTsKLQogICAg
ICAgICB0aGlzLl90eXBlRmlsdGVyU2NvcGVCYXJJdGVtQWxsID0gbmV3IFdJLlNjb3BlQmFySXRl
bSgibmV0d29yay10eXBlLWZpbHRlci1hbGwiLCBXSS5VSVN0cmluZygiQWxsIiksIHtleGNsdXNp
dmU6IHRydWV9KTsKICAgICAgICAgbGV0IHR5cGVGaWx0ZXJTY29wZUJhckl0ZW1zID0gW3RoaXMu
X3R5cGVGaWx0ZXJTY29wZUJhckl0ZW1BbGxdOwogCkBAIC0xNjgsNyArMTY0LDYgQEAgV0kuTmV0
d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5G
cmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzQWRkZWQsIHRoaXMuX2hhbmRsZUZyYW1lV2FzQWRkZWQs
IHRoaXMpOwogICAgICAgICBXSS5SZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNl
LkV2ZW50LkxvYWRpbmdEaWRGaW5pc2gsIHRoaXMuX3Jlc291cmNlTG9hZGluZ0RpZEZpbmlzaCwg
dGhpcyk7CiAgICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2Uu
RXZlbnQuTG9hZGluZ0RpZEZhaWwsIHRoaXMuX3Jlc291cmNlTG9hZGluZ0RpZEZhaWwsIHRoaXMp
OwotICAgICAgICBXSS5SZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50
LlNpemVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVJlc291cmNlU2l6ZURpZENoYW5nZSwgdGhpcyk7
CiAgICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQu
VHJhbnNmZXJTaXplRGlkQ2hhbmdlLCB0aGlzLl9yZXNvdXJjZVRyYW5zZmVyU2l6ZURpZENoYW5n
ZSwgdGhpcyk7CiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
TmV0d29ya01hbmFnZXIuRXZlbnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVE
aWRDaGFuZ2UsIHRoaXMpOwogCkBAIC0zMDksMTEgKzMwNCw4IEBAIFdJLk5ldHdvcmtUYWJsZUNv
bnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmllCiAKICAgICByZXNldCgpCiAgICAgewotICAgICAgICB0aGlzLl9ydW5Gb3JNYWluQ29s
bGVjdGlvbigoY29sbGVjdGlvbiwgd2FzTWFpbikgPT4geworICAgICAgICB0aGlzLl9ydW5Gb3JN
YWluQ29sbGVjdGlvbigoY29sbGVjdGlvbikgPT4gewogICAgICAgICAgICAgdGhpcy5fcmVzZXRD
b2xsZWN0aW9uKGNvbGxlY3Rpb24pOwotCi0gICAgICAgICAgICBpZiAod2FzTWFpbikKLSAgICAg
ICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7CiAgICAgICAgIH0pOwogCiAgICAg
ICAgIGZvciAobGV0IGRldGFpbFZpZXcgb2YgdGhpcy5fZGV0YWlsVmlld01hcC52YWx1ZXMoKSkK
QEAgLTQ1MCw4ICs0NDIsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5l
dHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgIHsKICAgICAg
ICAgbGV0IGVudHJ5ID0gdGhpcy5fYWN0aXZlQ29sbGVjdGlvbi5maWx0ZXJlZEVudHJpZXNbcm93
SW5kZXhdOwogCi0gICAgICAgIGNlbGwuY2xhc3NMaXN0LnRvZ2dsZSgiY3VycmVudC1zZXNzaW9u
IiwgZW50cnkuY3VycmVudFNlc3Npb24pOwotCiAgICAgICAgIGlmIChlbnRyeS5yZXNvdXJjZSkK
ICAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnRvZ2dsZSgiZXJyb3IiLCBlbnRyeS5yZXNvdXJj
ZS5oYWRMb2FkaW5nRXJyb3IoKSk7CiAKQEAgLTYxMSw3ICs2MDEsNiBAQCBXSS5OZXR3b3JrVGFi
bGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0ku
Q29udGVudFZpZQogICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJlZEVudHJpZXMoKTsKICAgICAg
ICAgdGhpcy5fdXBkYXRlV2F0ZXJmYWxsVGltZWxpbmVSdWxlcigpOwogICAgICAgICB0aGlzLl9y
ZWxvYWRUYWJsZSgpOwotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7CiAgICAgICAg
IHRoaXMuX2hpZGVEZXRhaWxWaWV3KCk7CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwpA
QCAtMTI0OSwzMSArMTIzOCw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3Mg
TmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIH0K
IAogICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fdGFibGUpOwotCi0gICAgICAgIGxldCBz
dGF0aXN0aWNzQ29udGFpbmVyID0gdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpKTsKLSAgICAgICAgc3RhdGlzdGljc0NvbnRhaW5lci5jbGFzc05h
bWUgPSAic3RhdGlzdGljcyI7Ci0KLSAgICAgICAgbGV0IGNyZWF0ZVN0YXRpc3RpY0VsZW1lbnQg
PSAobmFtZSwgaW1hZ2UpID0+IHsKLSAgICAgICAgICAgIGxldCBzdGF0aXN0aWMgPSB0aGlzLl9z
dGF0aXN0aWNzW25hbWVdOwotICAgICAgICAgICAgaWYgKCFzdGF0aXN0aWMpCi0gICAgICAgICAg
ICAgICAgc3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGljc1tuYW1lXSA9IHt9OwotCi0gICAgICAg
ICAgICBzdGF0aXN0aWMuY29udGFpbmVyID0gc3RhdGlzdGljc0NvbnRhaW5lci5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgICAgICAgICBzdGF0aXN0aWMu
Y29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInN0YXRpc3RpYyIsIG5hbWUpOwotCi0gICAgICAgICAg
ICBzdGF0aXN0aWMuY29udGFpbmVyLmFwcGVuZENoaWxkKFdJLkltYWdlVXRpbGl0aWVzLnVzZVNW
R1N5bWJvbChpbWFnZSwgImljb24iKSk7Ci0KLSAgICAgICAgICAgIHN0YXRpc3RpYy5lbGVtZW50
ID0gc3RhdGlzdGljLmNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKSk7Ci0gICAgICAgICAgICBzdGF0aXN0aWMuZWxlbWVudC5jbGFzc05hbWUgPSAidGV4
dCI7Ci0gICAgICAgIH07Ci0gICAgICAgIGNyZWF0ZVN0YXRpc3RpY0VsZW1lbnQoImRvbWFpbi1j
b3VudCIsICJJbWFnZXMvT3JpZ2luLnN2ZyIpOwotICAgICAgICBjcmVhdGVTdGF0aXN0aWNFbGVt
ZW50KCJyZXNvdXJjZS1jb3VudCIsICJJbWFnZXMvUmVzb3VyY2VzLnN2ZyIpOwotICAgICAgICBj
cmVhdGVTdGF0aXN0aWNFbGVtZW50KCJyZXNvdXJjZS1zaXplIiwgIkltYWdlcy9XZWlnaHQuc3Zn
Iik7Ci0gICAgICAgIGNyZWF0ZVN0YXRpc3RpY0VsZW1lbnQoInRyYW5zZmVyLXNpemUiLCAiSW1h
Z2VzL05ldHdvcmsuc3ZnIik7Ci0gICAgICAgIGNyZWF0ZVN0YXRpc3RpY0VsZW1lbnQoInJlZGly
ZWN0LWNvdW50IiwgIkltYWdlcy9TdGVwT3Zlci5zdmciKTsKLSAgICAgICAgY3JlYXRlU3RhdGlz
dGljRWxlbWVudCgibG9hZC10aW1lIiwgIkltYWdlcy9UaW1lLnN2ZyIpOwotCi0gICAgICAgIHRo
aXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKICAgICB9CiAKICAgICBsYXlvdXQoKQpAQCAtMTMwOCw4
ICsxMjcyLDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFi
bGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKIAogICAgICAgICBmb3IgKGxldCBy
ZXNvdXJjZSBvZiByZXNvdXJjZXMpCiAgICAgICAgICAgICB0aGlzLl9pbnNlcnRSZXNvdXJjZUFu
ZFJlbG9hZFRhYmxlKHJlc291cmNlKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNz
KCk7CiAgICAgfQogCiAgICAgaGFuZGxlQ2xlYXJTaG9ydGN1dChldmVudCkKQEAgLTEzOTcsNyAr
MTM1OSw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxl
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgICAgICAgICAgdGhpcy5f
aW5zZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJsZShyZXNvdXJjZSk7CiAgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChjb2xsZWN0aW9uLnBlbmRpbmdJbnNlcnRpb25zLmxlbmd0aCA9PT0gb3JpZ2lu
YWxMZW5ndGgpOwogICAgICAgICAgICAgY29sbGVjdGlvbi5wZW5kaW5nSW5zZXJ0aW9ucyA9IFtd
OwotICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTE0MTcsNyArMTM3OCw2IEBAIFdJLk5ldHdvcmtUYWJsZUNv
bnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmllCiAgICAgICAgIHRoaXMuX3VwZGF0ZVNvcnQoKTsKICAgICAgICAgdGhpcy5fdXBkYXRl
RmlsdGVyZWRFbnRyaWVzKCk7CiAgICAgICAgIHRoaXMuX3JlbG9hZFRhYmxlKCk7Ci0gICAgICAg
IHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKICAgICB9CiAKICAgICBfcG9wdWxhdGVXaXRoSW5p
dGlhbFJlc291cmNlc0lmTmVlZGVkKGNvbGxlY3Rpb24pCkBAIC0xNTA1LDggKzE0NjUsNiBAQCBX
SS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3
IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHVw
ZGF0ZUV4aXN0aW5nRW50cnkoY29sbGVjdGlvbi5maWx0ZXJlZEVudHJpZXNbcm93SW5kZXhdLCBl
bnRyeSk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwogICAgIH0KIAogICAg
IF9oaWRlUG9wb3ZlcigpCkBAIC0xNjM3LDMzICsxNTk1LDIzIEBAIFdJLk5ldHdvcmtUYWJsZUNv
bnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmllCiAKICAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKLSAgICAg
ICAgbGV0IGZyYW1lID0gZXZlbnQudGFyZ2V0OwotCi0gICAgICAgIGlmIChmcmFtZS5pc01haW5G
cmFtZSgpICYmICF0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkKLSAgICAgICAgICAgIHRo
aXMuX3N0YXJ0VXBkYXRpbmdMb2FkVGltZVN0YXRpc3RpYygpOwotCiAgICAgICAgIHRoaXMuX3J1
bkZvck1haW5Db2xsZWN0aW9uKChjb2xsZWN0aW9uLCB3YXNNYWluKSA9PiB7Ci0gICAgICAgICAg
ICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewotICAgICAgICAgICAgICAgIGlmIChXSS5zZXR0
aW5ncy5jbGVhck5ldHdvcmtPbk5hdmlnYXRlLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX3Jlc2V0Q29sbGVjdGlvbihjb2xsZWN0aW9uKTsKLQotICAgICAgICAgICAgICAgICAg
ICBpZiAod2FzTWFpbiAmJiAhdGhpcy5fbmVlZHNJbml0aWFsUG9wdWxhdGUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLl9oaWRlRGV0YWlsVmlldygpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIGNvbGxlY3Rpb24u
ZW50cmllcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LmN1cnJlbnRTZXNzaW9uID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgbGV0IGZyYW1lID0gZXZlbnQu
dGFyZ2V0OworICAgICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgV0kuc2V0dGlu
Z3MuY2xlYXJOZXR3b3JrT25OYXZpZ2F0ZS52YWx1ZSkgeworICAgICAgICAgICAgICAgIHRoaXMu
X3Jlc2V0Q29sbGVjdGlvbihjb2xsZWN0aW9uKTsKKworICAgICAgICAgICAgICAgIGlmICh3YXNN
YWluICYmICF0aGlzLl9uZWVkc0luaXRpYWxQb3B1bGF0ZSkKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5faGlkZURldGFpbFZpZXcoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAgdGhpcy5f
dHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB0aGlzLl9u
ZWVkc0luaXRpYWxQb3B1bGF0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxh
dGVXaXRoSW5pdGlhbFJlc291cmNlc0lmTmVlZGVkKGNvbGxlY3Rpb24pOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJs
ZShmcmFtZS5tYWluUmVzb3VyY2UpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgaWYgKHdhc01haW4pCi0gICAgICAgICAgICAgICAgdGhpcy5f
dXBkYXRlU3RhdGlzdGljcygpOworICAgICAgICAgICAgdGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRS
ZWxvYWRUYWJsZShmcmFtZS5tYWluUmVzb3VyY2UpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAg
LTE3MDYsNDEgKzE2NTQsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5l
dHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICB9KTsK
ICAgICB9CiAKLSAgICBfaGFuZGxlUmVzb3VyY2VTaXplRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLl90YWJsZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICB0aGlzLl9ydW5Gb3JNYWluQ29sbGVjdGlvbigoY29sbGVjdGlvbiwgd2FzTWFpbikgPT4gewot
ICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQudGFyZ2V0OwotCi0gICAgICAgICAgICAv
LyBJbiB0aGUgdW5saWtlbHkgZXZlbnQgdGhhdCB0aGlzIGlzIHRoZSBzb3J0IGNvbHVtbiwgd2Ug
bWF5IG5lZWQgdG8gcmVzb3J0LgotICAgICAgICAgICAgaWYgKHRoaXMuX3RhYmxlLnNvcnRDb2x1
bW5JZGVudGlmaWVyID09PSAicmVzb3VyY2VTaXplIikgewotICAgICAgICAgICAgICAgIGNvbGxl
Y3Rpb24ucGVuZGluZ1VwZGF0ZXMucHVzaChyZXNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgdGhp
cy5uZWVkc0xheW91dCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgbGV0IGluZGV4ID0gY29sbGVjdGlvbi5lbnRyaWVzLmZpbmRJbmRleCgo
eCkgPT4geC5yZXNvdXJjZSA9PT0gcmVzb3VyY2UpOwotICAgICAgICAgICAgaWYgKGluZGV4ID09
PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGxldCBlbnRyeSA9
IGNvbGxlY3Rpb24uZW50cmllc1tpbmRleF07Ci0gICAgICAgICAgICBlbnRyeS5yZXNvdXJjZVNp
emUgPSByZXNvdXJjZS5zaXplOwotCi0gICAgICAgICAgICBpZiAoIXdhc01haW4pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBsZXQgcm93SW5kZXggPSB0aGlzLl9yb3dJ
bmRleEZvclJlcHJlc2VudGVkT2JqZWN0KHJlc291cmNlKTsKLSAgICAgICAgICAgIGlmIChyb3dJ
bmRleCA9PT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICB0aGlz
Ll90YWJsZS5yZWxvYWRDZWxsKHJvd0luZGV4LCAicmVzb3VyY2VTaXplIik7Ci0KLSAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCiAgICAg
X3Jlc291cmNlVHJhbnNmZXJTaXplRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl90YWJsZSkKQEAgLTE3NzEsMTggKzE2ODQsMTMgQEAgV0kuTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWaWUKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHRoaXMuX3RhYmxl
LnJlbG9hZENlbGwocm93SW5kZXgsICJ0cmFuc2ZlclNpemUiKTsKLQotICAgICAgICAgICAgdGhp
cy5fdXBkYXRlU3RhdGlzdGljcygpOwogICAgICAgICB9KTsKICAgICB9CiAKICAgICBfaGFuZGxl
UmVzb3VyY2VBZGRlZChldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3J1bkZvck1haW5Db2xs
ZWN0aW9uKChjb2xsZWN0aW9uLCB3YXNNYWluKSA9PiB7CisgICAgICAgIHRoaXMuX3J1bkZvck1h
aW5Db2xsZWN0aW9uKChjb2xsZWN0aW9uKSA9PiB7CiAgICAgICAgICAgICB0aGlzLl9pbnNlcnRS
ZXNvdXJjZUFuZFJlbG9hZFRhYmxlKGV2ZW50LmRhdGEucmVzb3VyY2UpOwotCi0gICAgICAgICAg
ICBpZiAod2FzTWFpbikKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7
CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMTc5MSwxNSArMTY5OSwxMiBAQCBXSS5OZXR3b3Jr
VGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudFZpZQogICAgICAgICBpZiAodGhpcy5fbmVlZHNJbml0aWFsUG9wdWxhdGUpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fcnVuRm9yTWFpbkNvbGxlY3Rpb24o
KGNvbGxlY3Rpb24sIHdhc01haW4pID0+IHsKKyAgICAgICAgdGhpcy5fcnVuRm9yTWFpbkNvbGxl
Y3Rpb24oKGNvbGxlY3Rpb24pID0+IHsKICAgICAgICAgICAgIGxldCBmcmFtZSA9IGV2ZW50LmRh
dGEuY2hpbGRGcmFtZTsKICAgICAgICAgICAgIGxldCBtYWluUmVzb3VyY2UgPSBmcmFtZS5wcm92
aXNpb25hbE1haW5SZXNvdXJjZSB8fCBmcmFtZS5tYWluUmVzb3VyY2U7CiAgICAgICAgICAgICBj
b25zb2xlLmFzc2VydChtYWluUmVzb3VyY2UsICJGcmFtZSBzaG91bGQgaGF2ZSBhIG1haW4gcmVz
b3VyY2UuIik7CiAgICAgICAgICAgICB0aGlzLl9pbnNlcnRSZXNvdXJjZUFuZFJlbG9hZFRhYmxl
KG1haW5SZXNvdXJjZSk7CiAKLSAgICAgICAgICAgIGlmICh3YXNNYWluKQotICAgICAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKLQogICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoIWZyYW1lLnJlc291cmNlQ29sbGVjdGlvbi5zaXplLCAiTmV3IGZyYW1lIHNob3VsZCBiZSBl
bXB0eS4iKTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFmcmFtZS5jaGlsZEZyYW1lQ29s
bGVjdGlvbi5zaXplLCAiTmV3IGZyYW1lIHNob3VsZCBiZSBlbXB0eS4iKTsKICAgICAgICAgfSk7
CkBAIC0xOTAzLDcgKzE4MDgsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNz
IE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICAg
ICAgcmVtb3RlQWRkcmVzczogcmVzb3VyY2UucmVtb3RlQWRkcmVzcywKICAgICAgICAgICAgIGNv
bm5lY3Rpb25JZGVudGlmaWVyOiByZXNvdXJjZS5jb25uZWN0aW9uSWRlbnRpZmllciwKICAgICAg
ICAgICAgIHN0YXJ0VGltZTogcmVzb3VyY2UuZmlyc3RUaW1lc3RhbXAsCi0gICAgICAgICAgICBj
dXJyZW50U2Vzc2lvbjogdHJ1ZSwKICAgICAgICAgfTsKICAgICB9CiAKQEAgLTIwNzAsMTMxICsx
OTc0LDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVD
b250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgdGhpcy5fdXBkYXRlRW1w
dHlGaWx0ZXJSZXN1bHRzTWVzc2FnZSgpOwogICAgIH0KIAotICAgIF91cGRhdGVTdGF0aXN0aWNz
KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5kaWRJbml0aWFsTGF5b3V0KQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGxldCBlbnRyaWVzID0gdGhpcy5fYWN0aXZlQ29sbGVjdGlv
bi5lbnRyaWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5LmN1cnJlbnRTZXNzaW9uKTsKLQotICAg
ICAgICBsZXQgZG9tYWlucyA9IG5ldyBTZXQ7Ci0gICAgICAgIGxldCByZXNvdXJjZVNpemUgPSAw
OwotICAgICAgICBsZXQgdHJhbnNmZXJTaXplID0gMDsKLSAgICAgICAgbGV0IHJlZGlyZWN0Q291
bnQgPSAwOwotICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7Ci0gICAgICAgICAg
ICBkb21haW5zLmFkZChlbnRyeS5kb21haW4pOwotICAgICAgICAgICAgaWYgKCFpc05hTihlbnRy
eS5yZXNvdXJjZVNpemUpKQotICAgICAgICAgICAgICAgIHJlc291cmNlU2l6ZSArPSBlbnRyeS5y
ZXNvdXJjZVNpemU7Ci0gICAgICAgICAgICBpZiAoIWlzTmFOKGVudHJ5LnRyYW5zZmVyU2l6ZSkp
Ci0gICAgICAgICAgICAgICAgdHJhbnNmZXJTaXplICs9IGVudHJ5LnRyYW5zZmVyU2l6ZTsKLSAg
ICAgICAgICAgIGlmIChlbnRyeS5yZXNvdXJjZSkKLSAgICAgICAgICAgICAgICByZWRpcmVjdENv
dW50ICs9IGVudHJ5LnJlc291cmNlLnJlZGlyZWN0cy5sZW5ndGg7Ci0gICAgICAgIH0KLQotICAg
ICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWMoImRvbWFpbi1jb3VudCIsIGRvbWFpbnMuc2l6ZSA9
PT0gMSA/IFdJLlVJU3RyaW5nKCIlZCBkb21haW4iKSA6IFdJLlVJU3RyaW5nKCIlZCBkb21haW5z
IiksIGRvbWFpbnMuc2l6ZSk7Ci0KLSAgICAgICAgbGV0IHJlc291cmNlQ291bnQgPSBlbnRyaWVz
Lmxlbmd0aDsKLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljKCJyZXNvdXJjZS1jb3VudCIs
IHJlc291cmNlQ291bnQgPT09IDEgPyBXSS5VSVN0cmluZygiJWQgcmVzb3VyY2UiKSA6IFdJLlVJ
U3RyaW5nKCIlZCByZXNvdXJjZXMiKSwgcmVzb3VyY2VDb3VudCk7Ci0KLSAgICAgICAgY29uc3Qg
aGlnaGVyUmVzb2x1dGlvbiA9IGZhbHNlOwotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWMo
InJlc291cmNlLXNpemUiLCBXSS5VSVN0cmluZygiJXMgdG90YWwiKSwgTnVtYmVyLmJ5dGVzVG9T
dHJpbmcocmVzb3VyY2VTaXplLCBoaWdoZXJSZXNvbHV0aW9uKSk7Ci0gICAgICAgIHRoaXMuX3Vw
ZGF0ZVN0YXRpc3RpYygidHJhbnNmZXItc2l6ZSIsIFdJLlVJU3RyaW5nKCIlcyB0cmFuc2ZlcnJl
ZCIpLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0cmFuc2ZlclNpemUsIGhpZ2hlclJlc29sdXRpb24p
KTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWMoInJlZGlyZWN0LWNvdW50IiwgcmVk
aXJlY3RDb3VudCA9PT0gMSA/IFdJLlVJU3RyaW5nKCIlZCByZWRpcmVjdCIpIDogV0kuVUlTdHJp
bmcoIiVkIHJlZGlyZWN0cyIpLCByZWRpcmVjdENvdW50KTsKLQotICAgICAgICBsZXQgbG9hZFRp
bWVTdGF0aXN0aWMgPSB0aGlzLl9zdGF0aXN0aWNzWyJsb2FkLXRpbWUiXTsKLSAgICAgICAgaWYg
KGxvYWRUaW1lU3RhdGlzdGljLmZvcm1hdCAmJiB0aGlzLl9pc1Nob3dpbmdNYWluQ29sbGVjdGlv
bigpKSB7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWMoImxvYWQtdGltZSIpOwot
ICAgICAgICAgICAgbG9hZFRpbWVTdGF0aXN0aWMuY29udGFpbmVyLmhpZGRlbiA9IGZhbHNlOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGxvYWRUaW1lU3RhdGlzdGljLmNvbnRhaW5lci5o
aWRkZW4gPSB0cnVlOwotICAgIH0KLQotICAgIF91cGRhdGVTdGF0aXN0aWMobmFtZSwgZm9ybWF0
LCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGxldCBzdGF0aXN0aWMgPSB0aGlzLl9zdGF0aXN0aWNz
W25hbWVdOwotCi0gICAgICAgIGlmIChmb3JtYXQpCi0gICAgICAgICAgICBzdGF0aXN0aWMuZm9y
bWF0ID0gZm9ybWF0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmb3JtYXQgPSBzdGF0aXN0
aWMuZm9ybWF0OwotCi0gICAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkKLSAgICAgICAg
ICAgIHN0YXRpc3RpYy52YWx1ZSA9IHZhbHVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2
YWx1ZSA9IHN0YXRpc3RpYy52YWx1ZTsKLQotICAgICAgICBpZiAoc3RhdGlzdGljLmNvbnRhaW5l
cikKLSAgICAgICAgICAgIHN0YXRpc3RpYy5jb250YWluZXIudGl0bGUgPSBmb3JtYXQuZm9ybWF0
KHZhbHVlKTsKLQotICAgICAgICBpZiAoc3RhdGlzdGljLmVsZW1lbnQpCi0gICAgICAgICAgICBz
dGF0aXN0aWMuZWxlbWVudC50ZXh0Q29udGVudCA9IHZhbHVlOwotICAgIH0KLQotICAgIF9zdGFy
dFVwZGF0aW5nTG9hZFRpbWVTdGF0aXN0aWMoKQotICAgIHsKLSAgICAgICAgdGhpcy5fc3RvcFVw
ZGF0aW5nTG9hZFRpbWVTdGF0aXN0aWMoKTsKLQotICAgICAgICBsZXQgbG9hZFRpbWVTdGF0aXN0
aWMgPSB0aGlzLl9zdGF0aXN0aWNzWyJsb2FkLXRpbWUiXTsKLSAgICAgICAgaWYgKCFsb2FkVGlt
ZVN0YXRpc3RpYykKLSAgICAgICAgICAgIGxvYWRUaW1lU3RhdGlzdGljID0gdGhpcy5fc3RhdGlz
dGljc1sibG9hZC10aW1lIl0gPSB7fTsKLQotICAgICAgICBsb2FkVGltZVN0YXRpc3RpYy5zdGFy
dCA9IERhdGUubm93KCk7Ci0gICAgICAgIGxvYWRUaW1lU3RhdGlzdGljLmRlbGF5ID0gNTA7Ci0g
ICAgICAgIGxvYWRUaW1lU3RhdGlzdGljLnRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRl
TG9hZFRpbWVTdGF0aXN0aWMuYmluZCh0aGlzKSwgbG9hZFRpbWVTdGF0aXN0aWMuZGVsYXkpOwot
ICAgIH0KLQotICAgIF9zdG9wVXBkYXRpbmdMb2FkVGltZVN0YXRpc3RpYygpCi0gICAgewotICAg
ICAgICBsZXQgbG9hZFRpbWVTdGF0aXN0aWMgPSB0aGlzLl9zdGF0aXN0aWNzWyJsb2FkLXRpbWUi
XTsKLSAgICAgICAgaWYgKCFsb2FkVGltZVN0YXRpc3RpYykKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBpZiAobG9hZFRpbWVTdGF0aXN0aWMudGltZXIpIHsKLSAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwobG9hZFRpbWVTdGF0aXN0aWMudGltZXIpOwotICAgICAgICAgICAgbG9hZFRp
bWVTdGF0aXN0aWMudGltZXIgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBf
dXBkYXRlTG9hZFRpbWVTdGF0aXN0aWMoKQotICAgIHsKLSAgICAgICAgbGV0IGxvYWRUaW1lU3Rh
dGlzdGljID0gdGhpcy5fc3RhdGlzdGljc1sibG9hZC10aW1lIl07Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGxvYWRUaW1lU3RhdGlzdGljKTsKLQotICAgICAgICBsZXQgZHVyYXRpb24gPSBEYXRl
Lm5vdygpIC0gbG9hZFRpbWVTdGF0aXN0aWMuc3RhcnQ7Ci0KLSAgICAgICAgbGV0IGRlbGF5ID0g
bG9hZFRpbWVTdGF0aXN0aWMuZGVsYXk7Ci0gICAgICAgIGlmIChkdXJhdGlvbiA+PSAxMDAwKSAv
LyAxIHNlY29uZAotICAgICAgICAgICAgZGVsYXkgPSAxMDA7Ci0gICAgICAgIGVsc2UgaWYgKGR1
cmF0aW9uID49IDYwMDAwKSAvLyA2MCBzZWNvbmRzCi0gICAgICAgICAgICBkZWxheSA9IDEwMDA7
Ci0gICAgICAgIGVsc2UgaWYgKGR1cmF0aW9uID49IDM2MDAwMDApIC8vIDEgbWludXRlCi0gICAg
ICAgICAgICBkZWxheSA9IDEwMDAwOwotCi0gICAgICAgIGlmIChkZWxheSAhPT0gbG9hZFRpbWVT
dGF0aXN0aWMuZGVsYXkpIHsKLSAgICAgICAgICAgIGxvYWRUaW1lU3RhdGlzdGljLmRlbGF5ID0g
ZGVsYXk7Ci0KLSAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobG9hZFRpbWVTdGF0aXN0aWMudGlt
ZXIpOwotICAgICAgICAgICAgbG9hZFRpbWVTdGF0aXN0aWMudGltZXIgPSBzZXRJbnRlcnZhbCh0
aGlzLl91cGRhdGVMb2FkVGltZVN0YXRpc3RpYy5iaW5kKHRoaXMpLCBsb2FkVGltZVN0YXRpc3Rp
Yy5kZWxheSk7Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29y
a01hbmFnZXIubWFpbkZyYW1lOwotICAgICAgICBsZXQgbWFpbkZyYW1lU3RhcnRUaW1lID0gbWFp
bkZyYW1lLm1haW5SZXNvdXJjZS5maXJzdFRpbWVzdGFtcDsKLSAgICAgICAgbGV0IG1haW5GcmFt
ZUxvYWRFdmVudFRpbWUgPSBtYWluRnJhbWUubG9hZEV2ZW50VGltZXN0YW1wOwotCi0gICAgICAg
IGlmIChsb2FkVGltZVN0YXRpc3RpYy5jb250YWluZXIpCi0gICAgICAgICAgICBsb2FkVGltZVN0
YXRpc3RpYy5jb250YWluZXIuaGlkZGVuID0gIXRoaXMuX2lzU2hvd2luZ01haW5Db2xsZWN0aW9u
KCk7Ci0KLSAgICAgICAgaWYgKGlzTmFOKG1haW5GcmFtZVN0YXJ0VGltZSkgfHwgaXNOYU4obWFp
bkZyYW1lTG9hZEV2ZW50VGltZSkpIHsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3Rp
YygibG9hZC10aW1lIiwgV0kuVUlTdHJpbmcoIkxvYWRpbmcgZm9yICVzIiksIE51bWJlci5zZWNv
bmRzVG9TdHJpbmcoZHVyYXRpb24gLyAxMDAwKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWMoImxvYWQtdGltZSIsIFdJLlVJ
U3RyaW5nKCJMb2FkZWQgaW4gJXMiKSwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyhtYWluRnJhbWVM
b2FkRXZlbnRUaW1lIC0gbWFpbkZyYW1lU3RhcnRUaW1lKSk7Ci0KLSAgICAgICAgdGhpcy5fc3Rv
cFVwZGF0aW5nTG9hZFRpbWVTdGF0aXN0aWMoKTsKLSAgICB9Ci0KICAgICBfcmVsb2FkVGFibGUo
KQogICAgIHsKICAgICAgICAgdGhpcy5fdGFibGUucmVsb2FkRGF0YSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZp
ZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFi
Q29udGVudFZpZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiMjk5YjVhZmY1ZGI2OTNkNzRhMTVjNzZjZmUy
YTQ0ZTVjY2UwNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmlldy5jc3MKQEAgLTAsMCArMSw5NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcgeworICAgIGRpc3BsYXk6IGZs
ZXg7CisgICAgZmxleC1mbG93OiByb3cgd3JhcDsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRl
cjsKKyAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsK
KworICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgOTYlKTsKKworICAgIHBhZGRpbmc6
IDEwcHg7CisKKyAgICBvdmVyZmxvdy15OiBhdXRvOworfQorCisubmV3LXRhYi50YWIuY29udGVu
dC12aWV3ID4gLnRhYi1pdGVtIHsKKyAgICBkaXNwbGF5OiBmbGV4OworCisgICAgbWluLXdpZHRo
OiAxMTBweDsKKyAgICBtaW4taGVpZ2h0OiAxMTBweDsKKworICAgIG1hcmdpbjogMTBweDsKKwor
ICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKK30K
KworLm5ldy10YWIudGFiLmNvbnRlbnQtdmlldyA+IC50YWItaXRlbS5kaXNhYmxlZCB7CisgICAg
b3BhY2l0eTogMC41OworICAgIGZpbHRlcjogYnJpZ2h0bmVzcyg5MCUpOworfQorCisubmV3LXRh
Yi50YWIuY29udGVudC12aWV3ID4gLnRhYi1pdGVtID4gLmJveCB7CisgICAgd2lkdGg6IDk0cHg7
CisgICAgaGVpZ2h0OiA5NHB4OworCisgICAgcGFkZGluZzogMTVweDsKKyAgICBib3JkZXItcmFk
aXVzOiA1cHg7CisKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDgyJSk7CisgICAg
Ym94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUsIDAuMzMpIDAgMXB4IDZweDsKKworICAgIGRpc3Bs
YXk6IGJsb2NrOworfQorCisubmV3LXRhYi50YWIuY29udGVudC12aWV3ID4gLnRhYi1pdGVtOm5v
dCguZGlzYWJsZWQpOmhvdmVyID4gLmJveCB7CisgICAgZmlsdGVyOiBicmlnaHRuZXNzKDkwJSk7
Cit9CisKKy5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcgPiAudGFiLWl0ZW06bm90KC5kaXNhYmxl
ZCk6YWN0aXZlID4gLmJveCB7CisgICAgZmlsdGVyOiBicmlnaHRuZXNzKDc1JSk7Cit9CisKKy5u
ZXctdGFiLnRhYi5jb250ZW50LXZpZXcgPiAudGFiLWl0ZW0gPiAuYm94ID4gaW1nIHsKKyAgICB3
aWR0aDogNjRweDsKKyAgICBoZWlnaHQ6IDY0cHg7CisKKyAgICBvcGFjaXR5OiAwLjU1OyAvKiBB
c3N1bWVzIGJsYWNrIGdseXBocy4gKi8KKworICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lOwor
fQorCisubmV3LXRhYi50YWIuY29udGVudC12aWV3ID4gLnRhYi1pdGVtID4gbGFiZWwgeworICAg
IGRpc3BsYXk6IGJsb2NrOworICAgIG1hcmdpbi10b3A6IDhweDsKK30KKworQG1lZGlhIChwcmVm
ZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgeworICAgIC5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcg
eworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yLWNvbnRl
bnQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTli
MjM1ZmUwZjM0ZjcwMDZhNzM0YjY2ZGU4OTkxZmQ5ZWU0YTJmMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRW
aWV3LmpzCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuTmV3VGFiQ29udGVudFZp
ZXcgPSBjbGFzcyBOZXdUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaWV3Cit7
CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGxldCB0YWJCYXJJ
dGVtID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuTmV3VGFiQ29udGVudFZp
ZXcudGFiSW5mbygpKTsKKyAgICAgICAgdGFiQmFySXRlbS5pc0RlZmF1bHRUYWIgPSB0cnVlOwor
CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgIm5ldy10YWIiLCAibmV3LXRhYiIsIHRhYkJh
ckl0ZW0pOworCisgICAgICAgIHRoaXMuX3RhYkVsZW1lbnRzQnlUYWJDbGFzcyA9IG5ldyBNYXA7
CisKKyAgICAgICAgbGV0IGFsbFRhYkNsYXNzZXMgPSBBcnJheS5mcm9tKFdJLmtub3duVGFiQ2xh
c3NlcygpKTsKKyAgICAgICAgdGhpcy5fc2hvd25UYWJDbGFzc2VzID0gYWxsVGFiQ2xhc3Nlcy5m
aWx0ZXIoKHRhYkNsYXNzKSA9PiB0YWJDbGFzcy5pc1RhYkFsbG93ZWQoKSAmJiAhdGFiQ2xhc3Mu
dGFiSW5mbygpLmlzRXBoZW1lcmFsKTsKKyAgICAgICAgdGhpcy5fc2hvd25UYWJDbGFzc2VzLnNv
cnQoKGEsIGIpID0+IGEudGFiSW5mbygpLnRpdGxlLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShiLnRh
YkluZm8oKS50aXRsZSkpOworICAgIH0KKworICAgIHN0YXRpYyB0YWJJbmZvKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9OZXdUYWIuc3ZnIiwK
KyAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiTmV3IFRhYiIpLAorICAgICAgICAgICAg
aXNFcGhlbWVyYWw6IHRydWUsCisgICAgICAgIH07CisgICAgfQorCisgICAgc3RhdGljIHNob3Vs
ZFNhdmVUYWIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8v
IFB1YmxpYworCisgICAgZ2V0IHR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLk5ld1Rh
YkNvbnRlbnRWaWV3LlR5cGU7CisgICAgfQorCisgICAgc2hvd24oKQorICAgIHsKKyAgICAgICAg
V0kudGFiQmFyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1BZGRl
ZCwgdGhpcy5fdXBkYXRlVGFiSXRlbXMsIHRoaXMpOworICAgICAgICBXSS50YWJCYXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5UYWJCYXIuRXZlbnQuVGFiQmFySXRlbVJlbW92ZWQsIHRoaXMuX3VwZGF0
ZVRhYkl0ZW1zLCB0aGlzKTsKKworICAgICAgICB0aGlzLl91cGRhdGVUYWJJdGVtcygpOworICAg
IH0KKworICAgIGhpZGRlbigpCisgICAgeworICAgICAgICBXSS50YWJCYXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAgICB9CisKKyAgICBnZXQgc3VwcG9ydHNTcGxp
dENvbnRlbnRCcm93c2VyKCkKKyAgICB7CisgICAgICAgIC8vIFNob3dpbmcgdGhlIHNwbGl0IGNv
bnNvbGUgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSBzb21lIG5ldyB0YWJzIHdpbGwgY2F1c2UgaXQg
dG8KKyAgICAgICAgLy8gZGlzYXBwZWFyIGFuZCBub3QgcmVhcHBlYXIsIGJ1dCBvdGhlcnMgd29u
J3QuIEp1c3QgcHJldmVudCBpdCBmcm9tIGV2ZXIgc2hvd2luZy4KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGxheW91dCgpCisgICAgeworICAgICAgICB0aGlzLl90YWJFbGVt
ZW50c0J5VGFiQ2xhc3MuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxk
cmVuKCk7CisKKyAgICAgICAgZm9yIChsZXQgdGFiQ2xhc3Mgb2YgdGhpcy5fc2hvd25UYWJDbGFz
c2VzKSB7CisgICAgICAgICAgICBsZXQgdGFiSXRlbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHRhYkl0ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQo
InRhYi1pdGVtIik7CisgICAgICAgICAgICB0YWJJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX2NyZWF0ZU5ld1RhYldpdGhUeXBlLmJpbmQodGhpcywgdGFiQ2xhc3Mu
VHlwZSkpOworICAgICAgICAgICAgdGFiSXRlbUVsZW1lbnRbV0kuTmV3VGFiQ29udGVudFZpZXcu
VHlwZVN5bWJvbF0gPSB0YWJDbGFzcy5UeXBlOworCisgICAgICAgICAgICBsZXQgYm94RWxlbWVu
dCA9IHRhYkl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpKTsKKyAgICAgICAgICAgIGJveEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYm94Iik7CisKKyAg
ICAgICAgICAgIGxldCBpbmZvID0gdGFiQ2xhc3MudGFiSW5mbygpOworICAgICAgICAgICAgbGV0
IGltYWdlRWxlbWVudCA9IGJveEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaW1nIikpOworICAgICAgICAgICAgaW1hZ2VFbGVtZW50LnNyYyA9IGluZm8uaW1hZ2U7
CisKKyAgICAgICAgICAgIGxldCBsYWJlbEVsZW1lbnQgPSB0YWJJdGVtRWxlbWVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpKTsKKyAgICAgICAgICAgIGxhYmVs
RWxlbWVudC50ZXh0Q29udGVudCA9IGluZm8udGl0bGU7CisKKyAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZCh0YWJJdGVtRWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLl90YWJF
bGVtZW50c0J5VGFiQ2xhc3Muc2V0KHRhYkNsYXNzLCB0YWJJdGVtRWxlbWVudCk7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLl91cGRhdGVUYWJJdGVtcygpOworICAgIH0KKworICAgIC8vIFBy
aXZhdGUKKworICAgIF9jcmVhdGVOZXdUYWJXaXRoVHlwZSh0YWJUeXBlLCBldmVudCkKKyAgICB7
CisgICAgICAgIGlmICghV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQodGFiVHlwZSkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgY2FuQ3JlYXRlQWRkaXRpb25hbFRhYnMg
PSB0aGlzLl9hbGxvd2FibGVUYWJUeXBlcygpLmxlbmd0aCA+IDE7CisgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CisgICAgICAgICAgICByZWZlcmVuY2VkVmlldzogdGhpcywKKyAgICAgICAgICAg
IHNob3VsZFJlcGxhY2VUYWI6ICFjYW5DcmVhdGVBZGRpdGlvbmFsVGFicyB8fCAhV0kubW9kaWZp
ZXJLZXlzLm1ldGFLZXksCisgICAgICAgICAgICBzaG91bGRTaG93TmV3VGFiOiAhV0kubW9kaWZp
ZXJLZXlzLm1ldGFLZXksCisgICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2Vy
LlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQnV0dG9uQ2xpY2ssCisgICAgICAgIH07CisgICAgICAg
IFdJLmNyZWF0ZU5ld1RhYldpdGhUeXBlKHRhYlR5cGUsIG9wdGlvbnMpOworICAgIH0KKworICAg
IF9hbGxvd2FibGVUYWJUeXBlcygpCisgICAgeworICAgICAgICBsZXQgdGFiVHlwZXMgPSB0aGlz
Ll9zaG93blRhYkNsYXNzZXMubWFwKCh0YWJDbGFzcykgPT4gdGFiQ2xhc3MuVHlwZSk7CisgICAg
ICAgIHJldHVybiB0YWJUeXBlcy5maWx0ZXIoKHR5cGUpID0+IFdJLmlzTmV3VGFiV2l0aFR5cGVB
bGxvd2VkKHR5cGUpKTsKKyAgICB9CisKKyAgICBfdXBkYXRlVGFiSXRlbXMoKQorICAgIHsKKyAg
ICAgICAgZm9yIChsZXQgW3RhYkNsYXNzLCB0YWJJdGVtRWxlbWVudF0gb2YgdGhpcy5fdGFiRWxl
bWVudHNCeVRhYkNsYXNzLmVudHJpZXMoKSkgeworICAgICAgICAgICAgbGV0IGFsbG93ZWQgPSBX
SS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZCh0YWJDbGFzcy5UeXBlKTsKKyAgICAgICAgICAgIHRh
Ykl0ZW1FbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV0kuTmV3VGFiQ29udGVudFZpZXcuRGlzYWJs
ZWRTdHlsZUNsYXNzTmFtZSwgIWFsbG93ZWQpOworICAgICAgICB9CisgICAgfQorfTsKKworV0ku
TmV3VGFiQ29udGVudFZpZXcuVHlwZSA9ICJuZXctdGFiIjsKK1dJLk5ld1RhYkNvbnRlbnRWaWV3
LlR5cGVTeW1ib2wgPSBTeW1ib2woInR5cGUiKTsKKworV0kuTmV3VGFiQ29udGVudFZpZXcuVGFi
SXRlbVN0eWxlQ2xhc3NOYW1lID0gInRhYi1pdGVtIjsKK1dJLk5ld1RhYkNvbnRlbnRWaWV3LkRp
c2FibGVkU3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRlbS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRhYkJhckl0ZW0u
anMKaW5kZXggZDU4MjAzYjYxMjhiYzFkNDcwMmNhNmVjYzFhOGRlYTZiODg4OWJjNC4uOWIwYmNj
NzE2ZDRmMzJlZDlkZTdhYzNjZjZhNWY2NWY5NjU3ZmVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRlbS5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJ
dGVtLmpzCkBAIC0yNSwyNyArMjUsMzcgQEAKIAogV0kuUGlubmVkVGFiQmFySXRlbSA9IGNsYXNz
IFBpbm5lZFRhYkJhckl0ZW0gZXh0ZW5kcyBXSS5UYWJCYXJJdGVtCiB7Ci0gICAgY29uc3RydWN0
b3IocmVwcmVzZW50ZWRPYmplY3QsIGltYWdlLCB0aXRsZSkKKyAgICBjb25zdHJ1Y3RvcihpbWFn
ZSwgdGl0bGUpCiAgICAgewotICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCwgaW1hZ2Us
IHRpdGxlKTsKKyAgICAgICAgc3VwZXIoaW1hZ2UsIHRpdGxlKTsKIAogICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgicGlubmVkIik7Ci0gICAgfQogCi0gICAgLy8gU3RhdGljCisg
ICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMu
X2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSk7CisgICAgfQogCi0gICAgc3RhdGlj
IGZyb21UYWJDb250ZW50Vmlldyh0YWJDb250ZW50VmlldykKKyAgICBzdGF0aWMgZnJvbVRhYklu
Zm8oe2ltYWdlLCB0aXRsZX0pCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJDb250
ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRWaWV3KTsKLQotICAgICAgICBsZXQge2lt
YWdlLCB0aXRsZX0gPSB0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rvci50YWJJbmZvKCk7Ci0gICAg
ICAgIHJldHVybiBuZXcgV0kuUGlubmVkVGFiQmFySXRlbSh0YWJDb250ZW50VmlldywgaW1hZ2Us
IHRpdGxlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXSS5QaW5uZWRUYWJCYXJJdGVtKGltYWdlLCB0
aXRsZSk7CiAgICAgfQogCi0gICAgLy8gUHJvdGVjdGVkCi0KICAgICB0aXRsZURpZENoYW5nZSgp
CiAgICAgewogICAgICAgICB0aGlzLmVsZW1lbnQudGl0bGUgPSB0aGlzLnRpdGxlOwogICAgIH0K
KworICAgIC8vIFByaXZhdGUKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50KGV2ZW50KQor
ICAgIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKworICAgICAgICBsZXQgY29u
dGV4dE1lbnUgPSBXSS5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOworCisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlBpbm5lZFRhYkJhckl0ZW0uRXZl
bnQuQ29udGV4dE1lbnUsIHtjb250ZXh0TWVudX0pOworICAgIH0KK307CisKK1dJLlBpbm5lZFRh
YkJhckl0ZW0uRXZlbnQgPSB7CisgICAgQ29udGV4dE1lbnU6ICJwaW5uZWQtdGFiLWJhci1pdGVt
LWNvbnRleHQtbWVudSIsCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCmluZGV4IDA2YmJjOTUxOTYzNTkw
NzliODg1NmVjYmY0ZDZiMzkzZDY1MzFiMTkuLjlkMjM0YjIyZDBiMmMwYWU2ZjYxZjNhODg5NmRi
MGUxZWJkNDQyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKQEAgLTUxLDggKzUxLDcgQEAgV0kuUXVp
Y2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAv
LyB3b3VsZCBiZSBmb3IgQ29kZU1pcnJvcidzIGV2ZW50IGhhbmRsZXIgdG8gcGFzcyBpZiBpdCBk
b2Vzbid0IGRvIGFueXRoaW5nLgogICAgICAgICB0aGlzLnByb21wdC5lc2NhcGVLZXlIYW5kbGVy
V2hlbkVtcHR5ID0gZnVuY3Rpb24oKSB7IFdJLnRvZ2dsZVNwbGl0Q29uc29sZSgpOyB9OwogCi0g
ICAgICAgIGNvbnN0IG5hdmlnYXRpb25iYXJFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5f
bmF2aWdhdGlvbkJhciA9IG5ldyBXSS5OYXZpZ2F0aW9uQmFyKG5hdmlnYXRpb25iYXJFbGVtZW50
LCB7c2l6ZXNUb0ZpdDogdHJ1ZX0pOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3
IFdJLlNpemVzVG9GaXROYXZpZ2F0aW9uQmFyOwogICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhp
cy5fbmF2aWdhdGlvbkJhcik7CiAKICAgICAgICAgdGhpcy5fYWN0aXZlRXhlY3V0aW9uQ29udGV4
dE5hdmlnYXRpb25JdGVtRGl2aWRlciA9IG5ldyBXSS5EaXZpZGVyTmF2aWdhdGlvbkl0ZW07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5k
ZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZpZXdHcmFw
aC5jc3MKaW5kZXggY2M1YzdiZDIzYTA3M2I0YzU4M2MzMWFiODJjMmU2ZWNjYWMwODkxYy4uZWUx
ZmFjYTQ2ZDY4NGJlYzg1MGFiODE5YWNlM2NmNDc0MGY1ZWQxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGguY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLmNzcwpAQCAtNTgs
NiArNTgsNiBAQAogICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogfQogCi1ib2R5Om1hdGNoZXMo
LndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50aW1lbGluZS1vdmVy
dmlldy1ncmFwaC5yZW5kZXJpbmctZnJhbWUgPiAuZnJhbWUtbWFya2VyIHsKK2JvZHkud2luZG93
LWluYWN0aXZlIC50aW1lbGluZS1vdmVydmlldy1ncmFwaC5yZW5kZXJpbmctZnJhbWUgPiAuZnJh
bWUtbWFya2VyIHsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmln
aHQsIGhzbCgwLCAwJSwgNjAlKSwgaHNsKDAsIDAlLCA2MCUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNo
VGFiQ29udGVudFZpZXcuanMKaW5kZXggMDA2MTY0MDYwZTBlNWZlMmE2YjQ0YWMwODYwZTdkNWU4
ZmEwMTQwMi4uMzRiMzJjNzlhM2VlZDNjYTA2ZWQ0MjJkZjNmNWRkNmZiNTU5ODI4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoVGFi
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU2VhcmNoVGFiQ29udGVudFZpZXcuanMKQEAgLTI1LDQ1ICsyNSwzOCBAQAogCiBXSS5T
ZWFyY2hUYWJDb250ZW50VmlldyA9IGNsYXNzIFNlYXJjaFRhYkNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKCkKKyAg
ICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgbGV0IGRldGFpbHNTaWRl
YmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBbCi0gICAgICAgICAgICBXSS5SZXNvdXJjZURldGFpbHNT
aWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBXSS5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwsCi0g
ICAgICAgICAgICBXSS5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgIFdJ
LkNvbXB1dGVkU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgV0kuUnVsZXNT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgIF07CisgICAgICAgIGxldCB0YWJCYXJJ
dGVtOworICAgICAgICBpZiAoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFy
LnZhbHVlKQorICAgICAgICAgICAgdGFiQmFySXRlbSA9IFdJLlBpbm5lZFRhYkJhckl0ZW0uZnJv
bVRhYkluZm8oV0kuU2VhcmNoVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJ
bmZvKFdJLlNlYXJjaFRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisKKyAgICAgICAgbGV0IGRl
dGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBbV0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJh
clBhbmVsLCBXSS5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwsCisgICAgICAgICAgICBXSS5ET01O
b2RlRGV0YWlsc1NpZGViYXJQYW5lbCwgV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNTaWRlYmFyUGFu
ZWwsIFdJLlJ1bGVzU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsXTsKKwogICAgICAgICBpZiAoSW5z
cGVjdG9yQmFja2VuZC5oYXNEb21haW4oIkxheWVyVHJlZSIpKQogICAgICAgICAgICAgZGV0YWls
c1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycy5wdXNoKFdJLkxheWVyVHJlZURldGFpbHNTaWRlYmFy
UGFuZWwpOwogCi0gICAgICAgIHN1cGVyKFNlYXJjaFRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSwg
ewotICAgICAgICAgICAgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yOiBXSS5TZWFy
Y2hTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0
b3JzLAotICAgICAgICB9KTsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAic2VhcmNoIiwg
InNlYXJjaCIsIHRhYkJhckl0ZW0sIFdJLlNlYXJjaFNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGVi
YXJQYW5lbENvbnN0cnVjdG9ycyk7CisKKyAgICAgICAgLy8gRW5zdXJlcyB0aGF0IHRoZSBTZWFy
Y2ggdGFiIGlzIGRpc3BsYXlhYmxlIGZyb20gYSBwaW5uZWQgdGFiIGJhciBpdGVtLgorICAgICAg
ICB0YWJCYXJJdGVtLnJlcHJlc2VudGVkT2JqZWN0ID0gdGhpczsKIAogICAgICAgICB0aGlzLl9m
b3JjZVBlcmZvcm1TZWFyY2ggPSBmYWxzZTsKICAgICB9CiAKICAgICBzdGF0aWMgdGFiSW5mbygp
CiAgICAgeworICAgICAgICBsZXQgaW1hZ2UgPSBXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFi
bGVOZXdUYWJCYXIudmFsdWUgPyAiSW1hZ2VzL1NlYXJjaC5zdmciIDogIkltYWdlcy9TZWFyY2hS
ZXN1bHRzLnN2ZyI7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyOiBT
ZWFyY2hUYWJDb250ZW50Vmlldy5UeXBlLAotICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvU2Vh
cmNoLnN2ZyIsCisgICAgICAgICAgICBpbWFnZSwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0
cmluZygiU2VhcmNoIiksCisgICAgICAgICAgICBpc0VwaGVtZXJhbDogdHJ1ZSwKICAgICAgICAg
fTsKICAgICB9CiAKLSAgICBzdGF0aWMgc2hvdWxkUGluVGFiKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIHN0YXRpYyBzaG91bGRTYXZlVGFiKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0
eXBlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDk0YjQ3Yzhm
MzhlM2YzMmI1MWU3ZDk1MGE1Njk5ZGE2Nzk0NmUyZjIuLmE3ZDM5NDBiMTc0OTI4NWNlNzA5ZDlj
NWU0ZTE3MDdjMzhhNjNhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5q
cwpAQCAtMjYsOSArMjYsMTQgQEAKIAogV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldyA9IGNsYXNz
IFNldHRpbmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmlldwogewotICAg
IGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAgICAg
ICAgc3VwZXIoU2V0dGluZ3NUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworICAgICAgICBsZXQg
dGFiQmFySXRlbSA9IFdJLlBpbm5lZFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuU2V0dGluZ3NU
YWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwg
InNldHRpbmdzIiwgInNldHRpbmdzIiwgdGFiQmFySXRlbSk7CisKKyAgICAgICAgLy8gRW5zdXJl
cyB0aGF0IHRoZSBTZXR0aW5ncyB0YWIgaXMgZGlzcGxheWFibGUgZnJvbSBhIHBpbm5lZCB0YWIg
YmFyIGl0ZW0uCisgICAgICAgIHRhYkJhckl0ZW0ucmVwcmVzZW50ZWRPYmplY3QgPSB0aGlzOwog
CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkU2V0dGluZ3NWaWV3ID0gbnVsbDsKICAgICAgICAgdGhp
cy5fc2V0dGluZ3NWaWV3cyA9IFtdOwpAQCAtMzcsMTcgKzQyLDEyIEBAIFdJLlNldHRpbmdzVGFi
Q29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5nc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFi
Q29udGVudFZpCiAgICAgc3RhdGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsK
LSAgICAgICAgICAgIGlkZW50aWZpZXI6IFNldHRpbmdzVGFiQ29udGVudFZpZXcuVHlwZSwKICAg
ICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL0dlYXIuc3ZnIiwKICAgICAgICAgICAgIHRpdGxlOiBX
SS5VSVN0cmluZygiU2V0dGluZ3MiKSwKKyAgICAgICAgICAgIGlzRXBoZW1lcmFsOiB0cnVlLAog
ICAgICAgICB9OwogICAgIH0KIAotICAgIHN0YXRpYyBzaG91bGRQaW5UYWIoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCiAgICAgc3RhdGljIHNob3VsZFNhdmVUYWIoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzYwLDYgKzM2MCw5IEBAIFdJLlNldHRp
bmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5nc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuVGFiQ29udGVudFZpCiAgICAgICAgICAgICBleHBlcmltZW50YWxTZXR0aW5nc1ZpZXcuYWRk
U2VwYXJhdG9yKCk7CiAgICAgICAgIH0KIAorICAgICAgICBleHBlcmltZW50YWxTZXR0aW5nc1Zp
ZXcuYWRkU2V0dGluZyhXSS5VSVN0cmluZygiVXNlciBJbnRlcmZhY2U6IiksIFdJLnNldHRpbmdz
LmV4cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhciwgV0kuVUlTdHJpbmcoIkVuYWJsZSBOZXcgVGFi
IEJhciIpKTsKKyAgICAgICAgZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZFNlcGFyYXRvcigp
OworCiAgICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLmhhc0RvbWFpbigiQ1NTIikpIHsKICAg
ICAgICAgICAgIGxldCBzdHlsZXNHcm91cCA9IGV4cGVyaW1lbnRhbFNldHRpbmdzVmlldy5hZGRH
cm91cChXSS5VSVN0cmluZygiU3R5bGVzOiIpKTsKICAgICAgICAgICAgIHN0eWxlc0dyb3VwLmFk
ZFNldHRpbmcoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlU3R5bGVzSnVtcFRvRWZmZWN0
aXZlLCBXSS5VSVN0cmluZygiU2hvdyBKdW1wIHRvIEVmZmVjdGl2ZSBQcm9wZXJ0eSBCdXR0b24i
KSk7CkBAIC0zODMsNiArMzg2LDcgQEAgV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldyA9IGNsYXNz
IFNldHRpbmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmkKICAgICAgICAg
fQogCiAgICAgICAgIGxpc3RlbkZvckNoYW5nZShXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFi
bGVQcmV2aWV3RmVhdHVyZXMpOworICAgICAgICBsaXN0ZW5Gb3JDaGFuZ2UoV0kuc2V0dGluZ3Mu
ZXhwZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFyKTsKIAogICAgICAgICBpZiAoSW5zcGVjdG9yQmFj
a2VuZC5oYXNEb21haW4oIkNTUyIpKQogICAgICAgICAgICAgbGlzdGVuRm9yQ2hhbmdlKFdJLnNl
dHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZVN0eWxlc0p1bXBUb0VmZmVjdGl2ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcwpp
bmRleCA2NGRjODk1MzA1OGJmNTEzODRjNWU0YWNlZjVjMGJmNTBhYTM0ZTk2Li4xMGExMzE5ZjU0
NDA0Y2JiNjc2ZmUyMGVkODMyOWYzZTM1NjU4ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMKQEAgLTQyLDggKzQyLDcg
QEAgV0kuU2lkZWJhciA9IGNsYXNzIFNpZGViYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlm
IChoYXNOYXZpZ2F0aW9uQmFyKSB7CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiaGFzLW5hdmlnYXRpb24tYmFyIik7CiAKLSAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRp
b25CYXJFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBu
ZXcgV0kuTmF2aWdhdGlvbkJhcihuYXZpZ2F0aW9uQmFyRWxlbWVudCwge3JvbGU6ICJ0YWJsaXN0
In0pOworICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXSS5OYXZpZ2F0aW9u
QmFyKG51bGwsIG51bGwsICJ0YWJsaXN0Iik7CiAgICAgICAgICAgICB0aGlzLl9uYXZpZ2F0aW9u
QmFyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmF2aWdhdGlvbkJhci5FdmVudC5OYXZpZ2F0aW9uSXRl
bVNlbGVjdGVkLCB0aGlzLl9uYXZpZ2F0aW9uSXRlbVNlbGVjdGVkLCB0aGlzKTsKICAgICAgICAg
ICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9uYXZpZ2F0aW9uQmFyKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2l6ZXNU
b0ZpdE5hdmlnYXRpb25CYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TaXplc1RvRml0TmF2aWdhdGlvbkJhci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGM5ZDllNDRj
OTY0NzFkZDI0ODQyODZkNGUzMzhjYzJlN2Y3ZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2l6ZXNUb0ZpdE5hdmlnYXRpb25C
YXIuanMKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLlNpemVzVG9GaXROYXZpZ2F0
aW9uQmFyID0gY2xhc3MgU2l6ZXNUb0ZpdE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXSS5OYXZpZ2F0
aW9uQmFyCit7CisgICAgZ2V0IHNpemVzVG9GaXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmlldy5qcwppbmRleCAx
M2IxZDU1YTg5MjhkZDgyZWViMTYxYTEyMzk5NGRkOTBiYzdiNTBkLi5jNWFkNzdiNGIzNmVmNDE0
NmQwZWM2ZDdlZGUzMGNiNjU5ZDI0YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1RhYkNvbnRlbnRW
aWV3LmpzCkBAIC0yNywyNSArMjcsMTYgQEAgV0kuU291cmNlc1RhYkNvbnRlbnRWaWV3ID0gY2xh
c3MgU291cmNlc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXIKIHsKICAg
ICBjb25zdHJ1Y3RvcigpCiAgICAgewotICAgICAgICBzdXBlcihTb3VyY2VzVGFiQ29udGVudFZp
ZXcudGFiSW5mbygpLCB7Ci0gICAgICAgICAgICBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3Ry
dWN0b3I6IFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgZGV0
YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9yczogWwotICAgICAgICAgICAgICAgIFdJLlJlc291
cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgICAgICBXSS5TY29wZUNoYWluRGV0
YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgICAgICBXSS5Qcm9iZURldGFpbHNTaWRlYmFy
UGFuZWwsCi0gICAgICAgICAgICBdLAotICAgICAgICB9KTsKKyAgICAgICAgbGV0IHRhYkJhckl0
ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhXSS5Tb3VyY2VzVGFiQ29udGVu
dFZpZXcudGFiSW5mbygpKTsKKyAgICAgICAgY29uc3QgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0
cnVjdG9ycyA9IFtXSS5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLlNjb3BlQ2hhaW5E
ZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWxdOworICAgICAg
ICBzdXBlcigic291cmNlcyIsIFsic291cmNlcyJdLCB0YWJCYXJJdGVtLCBXSS5Tb3VyY2VzTmF2
aWdhdGlvblNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyk7CiAK
ICAgICAgICAgdGhpcy5fc2hvd1Njb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsID0gZmFsc2U7
Ci0KLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgdGhpcy5faGFuZGxlRGVidWdnZXJQYXVzZWQsIHRoaXMp
OwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgdGhpcy5faGFuZGxlRGVidWdnZXJSZXN1bWVkLCB0aGlz
KTsKICAgICB9CiAKICAgICBzdGF0aWMgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgaWRlbnRpZmllcjogU291cmNlc1RhYkNvbnRlbnRWaWV3LlR5cGUsCiAg
ICAgICAgICAgICBpbWFnZTogIkltYWdlcy9Tb3VyY2VzLnN2ZyIsCiAgICAgICAgICAgICB0aXRs
ZTogV0kuVUlTdHJpbmcoIlNvdXJjZXMiKSwKICAgICAgICAgfTsKQEAgLTEwNywxOCArOTgsNiBA
QCBXSS5Tb3VyY2VzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTb3VyY2VzVGFiQ29udGVudFZpZXcg
ZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlcgogICAgICAgICBpZiAodHJlZUVsZW1lbnQpCiAgICAg
ICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKICAgICB9Ci0KLSAgICAvLyBQ
cml2YXRlCi0KLSAgICBfaGFuZGxlRGVidWdnZXJQYXVzZWQoZXZlbnQpCi0gICAgewotICAgICAg
ICB0aGlzLnRhYkJhckl0ZW0uaW1hZ2UgPSAiSW1hZ2VzL1NvdXJjZXNQYXVzZWQuc3ZnIjsKLSAg
ICB9Ci0KLSAgICBfaGFuZGxlRGVidWdnZXJSZXN1bWVkKGV2ZW50KQotICAgIHsKLSAgICAgICAg
dGhpcy50YWJCYXJJdGVtLmltYWdlID0gIkltYWdlcy9Tb3VyY2VzLnN2ZyI7Ci0gICAgfQogfTsK
IAogV0kuU291cmNlc1RhYkNvbnRlbnRWaWV3LlR5cGUgPSAic291cmNlcyI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
dG9yYWdlVGFiQ29udGVudFZpZXcuanMKaW5kZXggOTU0MGFiOGNiMTZkODAwODcxZTU3NjUyYzk0
ZmU5MDRhY2UwYTYwYi4uM2QxZjE1NWY2NDUwNzVmZjBlNjFhMTU2YzZkOTU1NmExNzAyNDg0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3Rv
cmFnZVRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcwpAQCAtMjUsMTUgKzI1LDEyIEBA
CiAKIFdJLlN0b3JhZ2VUYWJDb250ZW50VmlldyA9IGNsYXNzIFN0b3JhZ2VUYWJDb250ZW50Vmll
dyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcKIHsKLSAgICBjb25zdHJ1
Y3RvcigpCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHN1cGVy
KFN0b3JhZ2VUYWJDb250ZW50Vmlldy50YWJJbmZvKCksIHsKLSAgICAgICAgICAgIG5hdmlnYXRp
b25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcjogV0kuU3RvcmFnZVNpZGViYXJQYW5lbCwKLSAgICAg
ICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnM6IFsKLSAgICAgICAgICAgICAg
ICBXSS5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgICAg
ICBXSS5JbmRleGVkRGF0YWJhc2VEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgXSwK
LSAgICAgICAgfSk7CisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0
ZW0uZnJvbVRhYkluZm8oV0kuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisgICAg
ICAgIGxldCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzID0gW1dJLkFwcGxpY2F0aW9u
Q2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5JbmRleGVkRGF0YWJhc2VEZXRhaWxzU2lkZWJh
clBhbmVsXTsKKworICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJzdG9yYWdlIiwgInN0b3Jh
Z2UiLCB0YWJCYXJJdGVtLCBXSS5TdG9yYWdlU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJhclBh
bmVsQ29uc3RydWN0b3JzKTsKIAogICAgICAgICBXSS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5l
bmFibGUoKTsKICAgICAgICAgV0kuZGF0YWJhc2VNYW5hZ2VyLmVuYWJsZSgpOwpAQCAtNDQsNyAr
NDEsNiBAQCBXSS5TdG9yYWdlVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTdG9yYWdlVGFiQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlcgogICAgIHN0YXRpYyB0YWJJbmZvKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyOiBTdG9yYWdlVGFi
Q29udGVudFZpZXcuVHlwZSwKICAgICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL1N0b3JhZ2Uuc3Zn
IiwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiU3RvcmFnZSIpLAogICAgICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGFiQmFyLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhci5jc3MKaW5kZXggZWY1MWNhYWRjZGU4YTJhMTFhN2Y4NjYxZTcyYjNlMThiNzUxNjc1OC4u
M2Q3Y2Q3YWIyZjljM2FlODgxMTIzYWUwZTYwNWUyYmMyZmJlNDFlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmNzcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuY3NzCkBAIC0y
NSwxNiArMjUsMjUgQEAKIAogLnRhYi1iYXIgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAg
ICB0b3A6IHZhcigtLXVuZG9ja2VkLXRpdGxlLWFyZWEtaGVpZ2h0KTsKKyAgICB0b3A6IHZhcigt
LXRvb2xiYXItaGVpZ2h0KTsKICAgICBsZWZ0OiAwOwogICAgIHJpZ2h0OiAwOwogICAgIGhlaWdo
dDogdmFyKC0tdGFiLWJhci1oZWlnaHQpOwogCiAgICAgZGlzcGxheTogZmxleDsKKyAgICBqdXN0
aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CisgICAgZmxleC13cmFwOiB3cmFwOworCisgICAg
Ym9yZGVyLWJvdHRvbTogdmFyKC0tdGFiLWl0ZW0tbWVkaXVtLWJvcmRlci1zdHlsZSk7CiAKICAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUs
IDc4JSksIGhzbCgwLCAwJSwgNzIlKSk7CiAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDIwMCU7
CiAKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgIG92ZXJmbG93OiBoaWRkZW47CisKKyAg
ICBvdXRsaW5lOiBub25lOworCiAgICAgLS10YWItaXRlbS1kYXJrLWJvcmRlci1jb2xvcjogaHNs
KDAsIDAlLCA1OSUpOwogICAgIC0tdGFiLWl0ZW0tbWVkaXVtLWJvcmRlci1jb2xvcjogaHNsKDAs
IDAlLCA2NSUpOwogICAgIC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yOiBoc2woMCwgMCUs
IDg1JSk7CkBAIC00NCw4NSArNTMsMzAgQEAKICAgICAtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1z
dHlsZTogMXB4IHNvbGlkIHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcik7CiB9CiAK
LWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkg
LnRhYi1iYXIgeworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgeworICAgIGJvcmRlci1i
b3R0b20tY29sb3I6IHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcik7CisKICAgICBi
YWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7CiAgICAgYmFja2dyb3VuZC1jb2xvcjog
dmFyKC0tdGFiLWl0ZW0tZXh0cmEtbGlnaHQtYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50OwogfQog
Ci0udGFiLWJhciA+IC5ib3JkZXIgeworLnRhYi1iYXIgPiAudG9wLWJvcmRlciB7CiAgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKICAgICBsZWZ0OiAwOwogICAgIHJpZ2h0OiAw
OwotICAgIHotaW5kZXg6IDEwOwogICAgIGhlaWdodDogMXB4OwotICAgIGJhY2tncm91bmQtY29s
b3I6IHZhcigtLXRhYi1pdGVtLW1lZGl1bS1ib3JkZXItY29sb3IpOwotfQotCi0udGFiLWJhciA+
IC5ib3JkZXIudG9wIHsKLSAgICB0b3A6IDA7Ci19Ci0KLS50YWItYmFyID4gLmJvcmRlci5ib3R0
b20gewotICAgIGJvdHRvbTogMDsKLX0KLQotYm9keS5kb2NrZWQuYm90dG9tIC50YWItYmFyID4g
LmJvcmRlci50b3AgewotICAgIGZpbHRlcjogYnJpZ2h0bmVzcyg4MCUpOwotfQotCi1ib2R5Om1h
dGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFy
ID4gLmJvcmRlciB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQt
Ym9yZGVyLWNvbG9yKTsKLX0KLQotQG1lZGlhICgtd2Via2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0
aW86IDEpIHsKLSAgICBib2R5LmRvY2tlZDptYXRjaGVzKC5yaWdodCwgLmxlZnQpOm5vdCgud2lu
ZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAuYm9yZGVyLnRvcCB7Ci0gICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwotICAgIH0KLX0KLQotQG1lZGlhICgtd2Via2l0
LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHsKLSAgICBib2R5LmRvY2tlZDptYXRjaGVzKC5y
aWdodCwgLmxlZnQpOm5vdCgud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAuYm9y
ZGVyLnRvcCB7Ci0gICAgICAgIGhlaWdodDogMC41cHggIWltcG9ydGFudDsKLSAgICB9Ci19Ci0K
LS50YWItYmFyID4gLm5hdmlnYXRpb24tYmFyIHsKLSAgICBoZWlnaHQ6IHZhcigtLXRhYi1iYXIt
aGVpZ2h0KTsKLX0KLQotLnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iYXIgPiAuaXRlbS5ncm91cCA+
IC5pdGVtIHsKLSAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwotICAgIG1hcmdpbjogMCA0cHgg
IWltcG9ydGFudDsKLSAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7Ci19Ci0KLS50YWItYmFyID4g
Lm5hdmlnYXRpb24tYmFyID4gLml0ZW0uZ3JvdXAgPiAuaXRlbTpudGgtY2hpbGQoMSBvZiA6bm90
KC5oaWRkZW4pKSB7Ci0gICAgLXdlYmtpdC1tYXJnaW4tc3RhcnQ6IDEycHggIWltcG9ydGFudDsK
LX0KLQotLnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iYXIgPiAuaXRlbS5ncm91cCA+IC5pdGVtOm50
aC1sYXN0LWNoaWxkKDEgb2YgOm5vdCguaGlkZGVuKSkgewotICAgIC13ZWJraXQtbWFyZ2luLWVu
ZDogMTJweCAhaW1wb3J0YW50OwotfQogCi0udGFiLWJhciA+IC5uYXZpZ2F0aW9uLWJhciAuaXRl
bS5kaXZpZGVyIHsKLSAgICBtYXJnaW4tdG9wOiAxcHg7CiAgICAgYmFja2dyb3VuZC1jb2xvcjog
dmFyKC0tdGFiLWl0ZW0tbWVkaXVtLWJvcmRlci1jb2xvcik7Ci19CiAKLWJvZHk6bWF0Y2hlcygu
d2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAubmF2
aWdhdGlvbi1iYXIgPiAuaXRlbS5kaXZpZGVyIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3IpOworICAgIHotaW5kZXg6IDA7CiB9CiAKLS50
YWItYmFyID4gLnRhYnMgewotICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAganVzdGlmeS1jb250ZW50
OiBzcGFjZS1iZXR3ZWVuOwotICAgIGZsZXgtd3JhcDogd3JhcDsKLSAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiAxMDAlOworYm9keS53aW5kb3ct
aW5hY3RpdmUgLnRhYi1iYXIgPiAudG9wLWJvcmRlciB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
dmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKTsKIH0KIAotLnRhYi1iYXIgPiAudGFi
cyA+IC5pdGVtIHsKKy50YWItYmFyID4gLml0ZW0gewogICAgIGRpc3BsYXk6IGZsZXg7CiAgICAg
ZmxleC1ncm93OiAxOwogCkBAIC0xMzQsMTIgKzg4LDE0IEBAIGJvZHk6bWF0Y2hlcygud2luZG93
LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAubmF2aWdhdGlv
bi1iCiAKICAgICBwYWRkaW5nOiAwIDZweDsKIAotICAgIG1pbi13aWR0aDogY2FsYyh2YXIoLS10
YWItYmFyLWhlaWdodCkgLSAxcHgpOyAvKiBzdWJ0cmFjdCB0aGUgd2lkdGggb2YgdGhlIGJvcmRl
ciAqLworICAgIG1pbi13aWR0aDogMjRweDsKICAgICBvdmVyZmxvdzogaGlkZGVuOwogCiAgICAg
YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA3
OCUpLCBoc2woMCwgMCUsIDcyJSkpOwogICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAyMDAlOwog
CisgICAgYm9yZGVyLXRvcDogdmFyKC0tdGFiLWl0ZW0tbWVkaXVtLWJvcmRlci1zdHlsZSk7CisK
ICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgbGluZS1oZWlnaHQ6IDE1cHg7CiAgICAgb3V0bGluZTog
bm9uZTsKQEAgLTE1MCw1MyArMTA2LDU0IEBAIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZl
LCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iCiAgICAg
LyogdHJhbnNpdGlvbi1kZWxheTogNTBtczsgKi8KIH0KIAotLnRhYi1iYXIgPiAudGFicy5jYWxj
dWxhdGUtd2lkdGggPiAuaXRlbSB7CisudGFiLWJhci5jYWxjdWxhdGUtd2lkdGggPiAuaXRlbSB7
CiAgICAgZmxleDogaW5pdGlhbDsKIH0KIAotYm9keVtkaXI9bHRyXSAudGFiLWJhciA+IC50YWJz
ID4gLml0ZW06bm90KDpmaXJzdC1jaGlsZCksCi1ib2R5W2Rpcj1sdHJdIC50YWItYmFyID4gLnRh
YnM6bm90KC5oaWRlLWJvcmRlci1zdGFydCkgPiAuaXRlbTpmaXJzdC1jaGlsZCwKLWJvZHlbZGly
PWx0cl0gLnRhYi1iYXIgPiAudGFicy5kcmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCwKLWJv
ZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiAudGFiczpub3QoLmhpZGUtYm9yZGVyLWVuZCkgPiAuaXRl
bTpsYXN0LWNoaWxkIHsKK2JvZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiA6bnRoLWNoaWxkKG4gKyAy
IG9mIC5pdGVtKSwKK2JvZHlbZGlyPWx0cl0gLnRhYi1iYXIuZHJhZ2dpbmctdGFiID4gLml0ZW0u
c2VsZWN0ZWQgewogICAgIGJvcmRlci1sZWZ0OiB2YXIoLS10YWItaXRlbS1tZWRpdW0tYm9yZGVy
LXN0eWxlKTsKIH0KIAotYm9keVtkaXI9bHRyXSAudGFiLWJhciA+IC50YWJzOm5vdCguaGlkZS1i
b3JkZXItZW5kKSA+IC5pdGVtOmxhc3QtY2hpbGQsCi1ib2R5W2Rpcj1ydGxdIC50YWItYmFyID4g
LnRhYnMgPiAuaXRlbTpub3QoOmZpcnN0LWNoaWxkKSwKLWJvZHlbZGlyPXJ0bF0gLnRhYi1iYXIg
PiAudGFiczpub3QoLmhpZGUtYm9yZGVyLXN0YXJ0KSA+IC5pdGVtOmZpcnN0LWNoaWxkLAotYm9k
eVtkaXI9cnRsXSAudGFiLWJhciA+IC50YWJzLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVk
IHsKK2JvZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiA6bnRoLWNoaWxkKG4gKyAyIG9mIC5pdGVtKSwK
K2JvZHlbZGlyPXJ0bF0gLnRhYi1iYXIuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQgewog
ICAgIGJvcmRlci1yaWdodDogdmFyKC0tdGFiLWl0ZW0tbWVkaXVtLWJvcmRlci1zdHlsZSk7CiB9
CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5waW5uZWQgeworLnRhYi1iYXIgPiAuaXRlbS5w
aW5uZWQgeworICAgIHdpZHRoOiAyNHB4OwogICAgIGZsZXg6IG5vbmU7CiAgICAganVzdGlmeS1j
b250ZW50OiBjZW50ZXI7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbTpub3QoLmRpc2Fi
bGVkKS5zZWxlY3RlZCB7CisudGFiLWJhciA+IC5pdGVtLnBpbm5lZC50YWItcGlja2VyIHsKKyAg
ICB3aWR0aDogMThweDsKKyAgICBtaW4td2lkdGg6IGluaXRpYWw7Cit9CisKKy50YWItYmFyID4g
Lml0ZW06bm90KC5kaXNhYmxlZCkuc2VsZWN0ZWQgeworICAgIGJvcmRlci10b3AtY29sb3I6IGhz
bCgwLCAwJSwgNzQlKTsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8g
Ym90dG9tLCBoc2woMCwgMCUsIDg3JSksIGhzbCgwLCAwJSwgODIlKSk7CiAgICAgYmFja2dyb3Vu
ZC1zaXplOiAxMDAlIDEwMCU7CiB9CiAKLS50YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcp
ID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciB7CisudGFiLWJhcjpub3Qo
LmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyIHsKICAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUs
IDY3JSksIGhzbCgwLCAwJSwgNjQlKSk7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tdGFi
LWl0ZW0tZGFyay1ib3JkZXItY29sb3IpOwogfQogCi1ib2R5W2Rpcj1sdHJdIC50YWItYmFyID4g
LnRhYnM6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpo
b3ZlciwKLWJvZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGluZykgPiAu
aXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyICsgLml0ZW0sCi1ib2R5W2Rpcj1y
dGxdIC50YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bGFzdC1jaGlsZDpu
b3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyIHsKK2JvZHlbZGlyPWx0cl0gLnRhYi1iYXI6
bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciwK
K2JvZHlbZGlyPWx0cl0gLnRhYi1iYXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxl
Y3RlZCwgLmRpc2FibGVkKTpob3ZlciArIC5pdGVtIHsKICAgICBib3JkZXItbGVmdC1jb2xvcjog
dmFyKC0tdGFiLWl0ZW0tZGFyay1ib3JkZXItY29sb3IpOwogfQogCi1ib2R5W2Rpcj1sdHJdIC50
YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bGFzdC1jaGlsZDpub3QoLnNl
bGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyLAotYm9keVtkaXI9cnRsXSAudGFiLWJhciA+IC50YWJz
Om5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIs
Ci1ib2R5W2Rpcj1ydGxdIC50YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcpID4gLml0ZW06
bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciArIC5pdGVtIHsKK2JvZHlbZGlyPXJ0bF0g
LnRhYi1iYXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVk
KTpob3ZlciwKK2JvZHlbZGlyPXJ0bF0gLnRhYi1iYXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06
bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciArIC5pdGVtIHsKICAgICBib3JkZXItcmln
aHQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWRhcmstYm9yZGVyLWNvbG9yKTsKIH0KIAotYm9keTpt
YXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJh
ciA+IC50YWJzID4gLml0ZW0gewotICAgIGJvcmRlci1yaWdodC1jb2xvcjogdmFyKC0tdGFiLWl0
ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50OwotICAgIGJvcmRlci1sZWZ0LWNvbG9y
OiB2YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7Citib2R5Lndp
bmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtIHsKKyAgICBib3JkZXItdG9wLWNvbG9yOiB2
YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7CiAKICAgICBiYWNr
Z3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFy
KC0tdGFiLWl0ZW0tZXh0cmEtbGlnaHQtYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50OwpAQCAtMjA0
LDEyICsxNjEsMjAgQEAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9j
a2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4gLml0ZW0KICAgICB0cmFuc2l0aW9uOiBu
b25lOwogfQogCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQt
aW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5zZWxlY3RlZCB7Citib2R5W2Rpcj1s
dHJdLndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtIHsKKyAgICBib3JkZXItbGVmdC1j
b2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50OworfQor
Citib2R5W2Rpcj1ydGxdLndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtIHsKKyAgICBi
b3JkZXItcmlnaHQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcikgIWlt
cG9ydGFudDsKK30KKworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRlbS5zZWxl
Y3RlZCB7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50OwogICAgIGJhY2tn
cm91bmQtY29sb3I6IGhzbCgwLCAwJSwgOTYlKSAhaW1wb3J0YW50OwogfQogCi0udGFiLWJhciA+
IC50YWJzID4gLml0ZW0gPiAuY2xvc2UgeworLnRhYi1iYXIgPiAuaXRlbSA+IC5jbG9zZSB7CiAg
ICAgd2lkdGg6IDE2cHg7CiAgICAgaGVpZ2h0OiAxNnB4OwogCkBAIC0yMzAsMjggKzE5NSwzNiBA
QCBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUp
IC50YWItYmFyID4gLnRhYnMgPiAuaXRlbQogICAgIC13ZWJraXQtbWFyZ2luLWVuZDogNHB4Owog
fQogCi1ib2R5Om5vdCgud2luZG93LWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4gLml0ZW06
aG92ZXIgPiAuY2xvc2UgeworYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAu
aXRlbTpob3ZlciA+IC5jbG9zZSB7CiAgICAgb3BhY2l0eTogMC42OwogfQogCi0udGFiLWJhciA+
IC50YWJzID4gLml0ZW0gPiAuY2xvc2U6aG92ZXIgeworYm9keTpub3QoLndpbmRvdy1pbmFjdGl2
ZSkgLnRhYi1iYXIuc2luZ2xlLXRhYiA+IC5pdGVtLmRlZmF1bHQtdGFiOmhvdmVyID4gLmNsb3Nl
IHsKKyAgICBvcGFjaXR5OiAwOworfQorCisudGFiLWJhci5zaW5nbGUtdGFiID4gLml0ZW0uZGVm
YXVsdC10YWIgPiAuY2xvc2UgeworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisudGFi
LWJhciA+IC5pdGVtID4gLmNsb3NlOmhvdmVyIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xh
KDAsIDAlLCAwJSwgMC4yKTsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLmNsb3Nl
OmFjdGl2ZSB7CisudGFiLWJhciA+IC5pdGVtID4gLmNsb3NlOmFjdGl2ZSB7CiAgICAgb3BhY2l0
eTogMC44ICFpbXBvcnRhbnQ7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC5mbGV4
LXNwYWNlIHsKKy50YWItYmFyID4gLml0ZW0gPiAuZmxleC1zcGFjZSB7CiAgICAgZGlzcGxheTog
ZmxleDsKICAgICBmbGV4OiAxOwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0uZXBoZW1l
cmFsID4gLmZsZXgtc3BhY2U6bGFzdC1jaGlsZCB7CisudGFiLWJhciA+IC5pdGVtLmVwaGVtZXJh
bCA+IC5mbGV4LXNwYWNlOmxhc3QtY2hpbGQgewogICAgIC13ZWJraXQtbWFyZ2luLWVuZDogMTZw
eDsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLmljb24geworLnRhYi1iYXIgPiAu
aXRlbSA+IC5pY29uIHsKICAgICB3aWR0aDogMTZweDsKICAgICBoZWlnaHQ6IDE2cHg7CiAKQEAg
LTI2MywyOCArMjM2LDI4IEBAIGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC50YWItYmFyID4g
LnRhYnMgPiAuaXRlbTpob3ZlciA+IC5jbG9zZSB7CiAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5v
bmU7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5waW5uZWQgPiAuaWNvbiB7CisudGFi
LWJhciA+IC5pdGVtLnBpbm5lZCA+IC5pY29uIHsKICAgICB3aWR0aDogMTVweDsKICAgICBoZWln
aHQ6IDE1cHg7CiAgICAgbWluLXdpZHRoOiAxNXB4OwogICAgIG1pbi1oZWlnaHQ6IDE1cHg7CiB9
CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5zZWxlY3RlZCA+IC5pY29uIHsKKy50YWItYmFy
ID4gLml0ZW0uc2VsZWN0ZWQgPiAuaWNvbiB7CiAgICAgb3BhY2l0eTogMC43OwogfQogCi0udGFi
LWJhciA+IC50YWJzID4gLml0ZW0uZGlzYWJsZWQgPiAuaWNvbiB7CisudGFiLWJhciA+IC5pdGVt
LmRpc2FibGVkID4gLmljb24gewogICAgIG9wYWNpdHk6IDAuMzU7CiB9CiAKIEBtZWRpYSBub3Qg
KHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gICAgLnRhYi1iYXIgPiAudGFiczpub3Qo
LmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyID4gLmlj
b24geworICAgIC50YWItYmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQs
IC5kaXNhYmxlZCk6aG92ZXIgPiAuaWNvbiB7CiAgICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICB9
CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC50aXRsZSB7CisudGFiLWJhciA+IC5p
dGVtID4gLnRpdGxlIHsKICAgICBjb2xvcjogaHNsYSgwLCAwJSwgMCUsIDAuNTUpOwogCiAgICAg
ZGlzcGxheTogZmxleDsKQEAgLTI5MywxMSArMjY2LDExIEBAIGJvZHk6bm90KC53aW5kb3ctaW5h
Y3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbTpob3ZlciA+IC5jbG9zZSB7CiAgICAgbWF4
LXdpZHRoOiA0MDBweDsKIH0KIAotLnRhYi1iYXIgPiAudGFiczpub3QoLmNvbGxhcHNlZCkgPiAu
aXRlbSA+IC50aXRsZSB7CisudGFiLWJhcjpub3QoLmNvbGxhcHNlZCkgPiAuaXRlbSA+IC50aXRs
ZSB7CiAgICAgLXdlYmtpdC1tYXJnaW4tc3RhcnQ6IDZweDsKIH0KIAotLnRhYi1iYXIgPiAudGFi
cyA+IC5pdGVtID4gLnRpdGxlID4gLmNvbnRlbnQgeworLnRhYi1iYXIgPiAuaXRlbSA+IC50aXRs
ZSA+IC5jb250ZW50IHsKICAgICBtaW4td2lkdGg6IDA7CiAgICAgd2lkdGg6IDEwMCU7CiAgICAg
b3ZlcmZsb3c6IGhpZGRlbjsKQEAgLTMwNSw4NCArMjc4LDg0IEBAIGJvZHk6bm90KC53aW5kb3ct
aW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbTpob3ZlciA+IC5jbG9zZSB7CiAgICAg
d2hpdGUtc3BhY2U6IG5vd3JhcDsKIH0KIAotLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGlu
ZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkKTpob3ZlciA+IC50aXRsZSB7CisudGFiLWJhcjpub3Qo
LmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkKTpob3ZlciA+IC50aXRsZSB7CiAgICAg
Y29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjYpOwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0
ZW0uc2VsZWN0ZWQgPiAudGl0bGUgeworLnRhYi1iYXIgPiAuaXRlbS5zZWxlY3RlZCA+IC50aXRs
ZSB7CiAgICAgY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjcpOwogfQogCi0udGFiLWJhciA+IC50
YWJzLmNvbGxhcHNlZCA+IC5pdGVtIHsKKy50YWItYmFyLmNvbGxhcHNlZCA+IC5pdGVtIHsKICAg
ICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5jb2xsYXBz
ZWQgPiAuaXRlbTpub3QoLnBpbm5lZCkgPiAuaWNvbiB7CisudGFiLWJhci5jb2xsYXBzZWQgPiAu
aXRlbTpub3QoLnBpbm5lZCkgPiAuaWNvbiB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAotLnRh
Yi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAuaXRlbSA+IC5mbGV4LXNwYWNlIHsKKy50YWItYmFy
LmNvbGxhcHNlZCA+IC5pdGVtID4gLmZsZXgtc3BhY2UgewogICAgIGRpc3BsYXk6IG5vbmU7CiB9
CiAKLS50YWItYmFyID4gLnRhYnMuY29sbGFwc2VkID4gLml0ZW0gPiAuY2xvc2UgeworLnRhYi1i
YXIuY29sbGFwc2VkID4gLml0ZW0gPiAuY2xvc2UgewogICAgIGRpc3BsYXk6IG5vbmU7CiAgICAg
LXdlYmtpdC1tYXJnaW4tZW5kOiAwOwogfQogCi0udGFiLWJhciA+IC50YWJzLmNvbGxhcHNlZCA+
IC5pdGVtOmhvdmVyID4gLmNsb3NlIHsKKy50YWItYmFyLmNvbGxhcHNlZCA+IC5pdGVtOmhvdmVy
ID4gLmNsb3NlIHsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgcG9zaXRpb246IGFi
c29sdXRlOwogfQogCi0udGFiLWJhciA+IC50YWJzLmNvbGxhcHNlZCA+IC5pdGVtLmVwaGVtZXJh
bDpob3ZlciA+IC5pY29uIHsKKy50YWItYmFyLmNvbGxhcHNlZCA+IC5pdGVtLmVwaGVtZXJhbDpo
b3ZlciA+IC5pY29uIHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCi0udGFiLWJhciA+IC50YWJz
LmNvbGxhcHNlZCA+IC5pdGVtLmVwaGVtZXJhbDpob3ZlciA+IC50aXRsZSB7CisudGFiLWJhci5j
b2xsYXBzZWQgPiAuaXRlbS5lcGhlbWVyYWw6aG92ZXIgPiAudGl0bGUgewogICAgIHZpc2liaWxp
dHk6IGhpZGRlbjsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5zdGF0aWMtbGF5b3V0IHsKKy50YWIt
YmFyLnN0YXRpYy1sYXlvdXQgewogICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKIH0KIAotLnRhYi1i
YXIgPiAudGFicy5zdGF0aWMtbGF5b3V0ID4gLml0ZW0geworLnRhYi1iYXIuc3RhdGljLWxheW91
dCA+IC5pdGVtIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICAgICB0b3A6
IDA7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuYW5pbWF0aW5nLmNsb3NpbmctdGFiID4gLml0ZW0g
eworLnRhYi1iYXIuYW5pbWF0aW5nLmNsb3NpbmctdGFiID4gLml0ZW0gewogICAgIHRyYW5zaXRp
b24tcHJvcGVydHk6IGxlZnQ7CiAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMjUwbXM7CiAgICAg
dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogfQogCi0udGFiLWJhciA+
IC50YWJzLmFuaW1hdGluZzptYXRjaGVzKC5leHBhbmRpbmctdGFicywgLmluc2VydGluZy10YWIp
ID4gLml0ZW0geworLnRhYi1iYXIuYW5pbWF0aW5nOm1hdGNoZXMoLmV4cGFuZGluZy10YWJzLCAu
aW5zZXJ0aW5nLXRhYikgPiAuaXRlbSB7CiAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwg
d2lkdGg7CiAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMjUwbXM7CiAgICAgdHJhbnNpdGlvbi10
aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogfQogCi0udGFiLWJhciA+IC50YWJzLmFuaW1h
dGluZy5pbnNlcnRpbmctdGFiID4gLml0ZW0uYmVpbmctaW5zZXJ0ZWQgeworLnRhYi1iYXIuYW5p
bWF0aW5nLmluc2VydGluZy10YWIgPiAuaXRlbS5iZWluZy1pbnNlcnRlZCB7CiAgICAgei1pbmRl
eDogMjsKICAgICBtaW4td2lkdGg6IDAgIWltcG9ydGFudDsKICAgICBwYWRkaW5nOiAwICFpbXBv
cnRhbnQ7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0
ZWQsCi0udGFiLWJhciA+IC50YWJzLnN0YXRpYy1sYXlvdXQ6bm90KC5hbmltYXRpbmcuaW5zZXJ0
aW5nLXRhYik6bm90KC5kcmFnZ2luZy10YWIpID4gLml0ZW06bnRoLWxhc3QtY2hpbGQoMSBvZiA6
bm90KC5waW5uZWQpKSwKLS50YWItYmFyID4gLnRhYnMuYW5pbWF0aW5nLmNsb3NpbmctdGFiID4g
Lml0ZW0uc2VsZWN0ZWQgeworLnRhYi1iYXIuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQs
CisudGFiLWJhci5zdGF0aWMtbGF5b3V0Om5vdCguYW5pbWF0aW5nLmluc2VydGluZy10YWIpOm5v
dCguZHJhZ2dpbmctdGFiKSA+IC5pdGVtOm50aC1sYXN0LWNoaWxkKDEgb2YgOm5vdCgucGlubmVk
KSksCisudGFiLWJhci5hbmltYXRpbmcuY2xvc2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCB7CiAg
ICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS10YWItaXRlbS1tZWRpdW0tYm9yZGVyLXN0eWxlKTsKIH0K
IAotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZl
KSAudGFiLWJhciA+IC50YWJzLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkLAotYm9keTpt
YXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJh
ciA+IC50YWJzLnN0YXRpYy1sYXlvdXQ6bm90KC5hbmltYXRpbmcuaW5zZXJ0aW5nLXRhYik6bm90
KC5kcmFnZ2luZy10YWIpID4gLml0ZW06bnRoLWxhc3QtY2hpbGQoMSBvZiA6bm90KC5waW5uZWQp
KSwKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2
ZSkgLnRhYi1iYXIgPiAudGFicy5hbmltYXRpbmcuY2xvc2luZy10YWIgPiAuaXRlbS5zZWxlY3Rl
ZCB7Citib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhci5kcmFnZ2luZy10YWIgPiAuaXRlbS5z
ZWxlY3RlZCwKK2JvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyLnN0YXRpYy1sYXlvdXQ6bm90
KC5hbmltYXRpbmcuaW5zZXJ0aW5nLXRhYik6bm90KC5kcmFnZ2luZy10YWIpID4gLml0ZW06bnRo
LWxhc3QtY2hpbGQoMSBvZiA6bm90KC5waW5uZWQpKSwKK2JvZHkud2luZG93LWluYWN0aXZlIC50
YWItYmFyLmFuaW1hdGluZy5jbG9zaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkIHsKICAgICBib3Jk
ZXItcmlnaHQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcikgIWltcG9y
dGFudDsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5kcmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3Rl
ZCB7CisudGFiLWJhci5kcmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCB7CiAgICAgei1pbmRl
eDogMjsKICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKIH0KQEAgLTQwMCw0OCArMzczLDQ2IEBA
IGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkg
LnRhYi1iYXIgPiAudGFicy5hbmltYXRpCiAgICAgICAgIC0tdGFiLWl0ZW0tZXh0cmEtbGlnaHQt
Ym9yZGVyLWNvbG9yOiB2YXIoLS10YWItaXRlbS1ib3JkZXItY29sb3IpOwogICAgIH0KIAotICAg
IGJvZHkuZG9ja2VkLmJvdHRvbSAudGFiLWJhciA+IC5ib3JkZXIudG9wIHsKLSAgICAgICAgZmls
dGVyOiBicmlnaHRuZXNzKDEyMCUpOwotICAgIH0KLQotICAgIC50YWItYmFyID4gLnRhYnMgPiAu
aXRlbSB7CisgICAgLnRhYi1iYXIgPiAuaXRlbSB7CiAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6
IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwgMTIlKSwgaHNsKDAsIDAlLCAx
MCUpKTsKICAgICB9CiAKLSAgICAudGFiLWJhciA+IC50YWJzID4gLml0ZW0gPiAudGl0bGUgewor
ICAgIC50YWItYmFyID4gLml0ZW0gPiAudGl0bGUgewogICAgICAgICBjb2xvcjogd2hpdGUgIWlt
cG9ydGFudDsKICAgICB9CiAKLSAgICAudGFiLWJhciA+IC50YWJzID4gLml0ZW06bm90KC5kaXNh
YmxlZCkuc2VsZWN0ZWQgeworICAgIC50YWItYmFyID4gLml0ZW06bm90KC5kaXNhYmxlZCkuc2Vs
ZWN0ZWQgewogICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90
dG9tLCBoc2woMCwgMCUsIDIzJSksIGhzbCgwLCAwJSwgMjElKSk7CisgICAgICAgIGJvcmRlci10
b3AtY29sb3I6IGhzbCgwLCAwJSwgMzclKTsKICAgICB9CiAKLSAgICAudGFiLWJhciA+IC50YWJz
Om5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHsKKyAgICAudGFi
LWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkKTpob3ZlciB7CiAgICAg
ICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAw
JSwgMTElKSwgaHNsKDAsIDAlLCA5JSkpOwogICAgIH0KIAotICAgIC50YWItYmFyID4gLnRhYnMg
PiAuaXRlbSA+IC5jbG9zZSwKLSAgICAudGFiLWJhciA+IC50YWJzID4gLml0ZW0gPiAuaWNvbiB7
CisgICAgLnRhYi1iYXIgPiAuaXRlbSA+IC5jbG9zZSwKKyAgICAudGFiLWJhciA+IC5pdGVtID4g
Lmljb24gewogICAgICAgICBmaWx0ZXI6IHZhcigtLWZpbHRlci1pbnZlcnQpOwogICAgIH0KIAot
ICAgIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2
ZSkgLnRhYi1iYXIgeworICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyIHsKICAgICAg
ICAgLS10YWItaXRlbS1ib3JkZXItY29sb3I6IGhzbCgwLCAwJSwgMzQlKTsKKyAgICAgICAgYm9y
ZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tYm9yZGVyLWNvbG9yKTsKIAogICAgICAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IGhzbCgwLCAwJSwgMTMlKSAhaW1wb3J0YW50OwogICAgIH0KIAotICAgIGJvZHk6bWF0
Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIg
PiAudGFicyA+IC5pdGVtIHsKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5p
dGVtIHsKICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50OwogICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDEzJSkgIWltcG9ydGFudDsKICAgICB9CiAK
LSAgICBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3Rp
dmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5zZWxlY3RlZCB7CisgICAgYm9keS53aW5kb3ct
aW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRlbS5zZWxlY3RlZCB7CiAgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IGhzbCgwLCAwJSwgMTklKSAhaW1wb3J0YW50OwogICAgIH0KIAotICAgIGJvZHk6bWF0
Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIg
PiAudGFicyA+IC5pdGVtID4gLnRpdGxlIHsKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFi
LWJhciA+IC5pdGVtID4gLnRpdGxlIHsKICAgICAgICAgY29sb3I6IGhzbCgwLCAwJSwgNTglKSAh
aW1wb3J0YW50OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcwppbmRleCA3ODRmYzY5NWQ3NWFmYmYzYjA1Y2U4Nzhi
ZTMwMmVjNWZhODE2ODI5Li44MDFiMTdkN2MxNTA5MjMzMGQ5MmJhMWI3NzBmOGQ2ZjBjMGU5YjUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
YWJCYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGFiQmFyLmpzCkBAIC0yNSw1OCArMjUsMzQgQEAKIAogV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFy
IGV4dGVuZHMgV0kuVmlldwogewotICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCisgICAgY29uc3Ry
dWN0b3IoZWxlbWVudCwgdGFiQmFySXRlbXMpCiAgICAgewogICAgICAgICBzdXBlcihlbGVtZW50
KTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJhciIpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRhYmxpc3QiKTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2hhbmRs
ZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7CisgICAgICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5faGFuZGxlTW91
c2VMZWF2ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnUuYmluZCh0aGlzKSk7CiAK
LSAgICAgICAgdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAiYm9yZGVyIHRvcCIpOwot
Ci0gICAgICAgIGNvbnN0IG5hdmlnYXRpb25CYXJCZWZvcmVFbGVtZW50ID0gbnVsbDsKLSAgICAg
ICAgdGhpcy5fbmF2aWdhdGlvbkJhckJlZm9yZSA9IG5ldyBXSS5OYXZpZ2F0aW9uQmFyKG5hdmln
YXRpb25CYXJCZWZvcmVFbGVtZW50LCB7c2l6ZXNUb0ZpdDogdHJ1ZX0pOwotICAgICAgICB0aGlz
LmFkZFN1YnZpZXcodGhpcy5fbmF2aWdhdGlvbkJhckJlZm9yZSk7Ci0KLSAgICAgICAgdGhpcy5f
dGFiQ29udGFpbmVyID0gdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpKTsKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTmFtZSA9ICJ0
YWJzIjsKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgicm9sZSIsICJ0
YWJsaXN0Iik7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKSk7Ci0gICAgICAgIHRo
aXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUNs
aWNrLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7Ci0g
ICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIs
IHRoaXMuX2hhbmRsZUNvbnRleHRNZW51LmJpbmQodGhpcykpOwotCi0gICAgICAgIGNvbnN0IG5h
dmlnYXRpb25CYXJBZnRlckVsZW1lbnQgPSBudWxsOwotICAgICAgICB0aGlzLl9uYXZpZ2F0aW9u
QmFyQWZ0ZXIgPSBuZXcgV0kuTmF2aWdhdGlvbkJhcihuYXZpZ2F0aW9uQmFyQWZ0ZXJFbGVtZW50
LCB7c2l6ZXNUb0ZpdDogdHJ1ZX0pOwotICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fbmF2
aWdhdGlvbkJhckFmdGVyKTsKLQotICAgICAgICB0aGlzLmVsZW1lbnQuY3JlYXRlQ2hpbGQoImRp
diIsICJib3JkZXIgYm90dG9tIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgi
ZGl2IiwgInRvcC1ib3JkZXIiKTsKIAogICAgICAgICB0aGlzLl90YWJCYXJJdGVtcyA9IFtdOwog
ICAgICAgICB0aGlzLl9oaWRkZW5UYWJCYXJJdGVtcyA9IFtdOwogCi0gICAgICAgIGNvbnN0IHRh
YlBpY2tlclJlcHJlc2VudGVkT2JqZWN0ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fdGFiUGlja2Vy
VGFiQmFySXRlbSA9IG5ldyBXSS5QaW5uZWRUYWJCYXJJdGVtKHRhYlBpY2tlclJlcHJlc2VudGVk
T2JqZWN0LCAiSW1hZ2VzL1RhYlBpY2tlci5zdmciLCBXSS5VSVN0cmluZygiU2hvdyBoaWRkZW4g
dGFicyIpKTsKLSAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbS5oaWRkZW4gPSB0cnVl
OwotICAgICAgICB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgidGFiLXBpY2tlciIpOworICAgICAgICBpZiAodGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAg
IGZvciAobGV0IHRhYkJhckl0ZW0gaW4gdGFiQmFySXRlbXMpCisgICAgICAgICAgICAgICAgdGhp
cy5hZGRUYWJCYXJJdGVtKHRhYkJhckl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5f
dGFiUGlja2VyVGFiQmFySXRlbSA9IG5ldyBXSS5QaW5uZWRUYWJCYXJJdGVtKCJJbWFnZXMvVGFi
UGlja2VyLnN2ZyIsIFdJLlVJU3RyaW5nKCJTaG93IGhpZGRlbiB0YWJzIikpOworICAgICAgICB0
aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLXBpY2tl
ciIsICJoaWRkZW4iKTsKICAgICAgICAgdGhpcy5hZGRUYWJCYXJJdGVtKHRoaXMuX3RhYlBpY2tl
clRhYkJhckl0ZW0sIHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKICAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAotICAgIGFkZE5hdmlnYXRpb25JdGVtQmVmb3JlKG5hdmlnYXRpb25JdGVtKQot
ICAgIHsKLSAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhckJlZm9yZS5hZGROYXZpZ2F0aW9uSXRl
bShuYXZpZ2F0aW9uSXRlbSk7Ci0KLSAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0K
LQotICAgIGFkZE5hdmlnYXRpb25JdGVtQWZ0ZXIobmF2aWdhdGlvbkl0ZW0pCi0gICAgewotICAg
ICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyQWZ0ZXIuYWRkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlv
bkl0ZW0pOwotCi0gICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9Ci0KICAgICBhZGRU
YWJCYXJJdGVtKHRhYkJhckl0ZW0sIG9wdGlvbnMgPSB7fSkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLmluc2VydFRhYkJhckl0ZW0odGFiQmFySXRlbSwgdGhpcy5fdGFiQmFySXRlbXMubGVu
Z3RoLCBvcHRpb25zKTsKQEAgLTEwOSw3ICs4NSw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJh
ciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW5kZXggPSBOdW1i
ZXIuY29uc3RyYWluKGluZGV4LCB0aGlzLm5vcm1hbFRhYkNvdW50LCB0aGlzLl90YWJCYXJJdGVt
cy5sZW5ndGgpOwogCi0gICAgICAgIGlmICh0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmNv
bnRhaW5zKCJhbmltYXRpbmciKSkgeworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25G
cmFtZShyZW1vdmVTdHlsZXMuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICBvcHRpb25zLnN1cHBy
ZXNzQW5pbWF0aW9ucyA9IHRydWU7CiAgICAgICAgIH0KQEAgLTEyMywzNyArOTksMzcgQEAgV0ku
VGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB2YXIgbmV4dFNp
YmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCArIDFdOwogICAgICAgICBsZXQgbmV4dFNp
YmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogdGhpcy5f
dGFiQmFySXRlbXMubGFzdFZhbHVlLmVsZW1lbnQ7CiAKLSAgICAgICAgaWYgKHRoaXMuX3RhYkNv
bnRhaW5lci5jb250YWlucyhuZXh0U2libGluZ0VsZW1lbnQpKQotICAgICAgICAgICAgdGhpcy5f
dGFiQ29udGFpbmVyLmluc2VydEJlZm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5n
RWxlbWVudCk7CisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY29udGFpbnMobmV4dFNpYmxpbmdF
bGVtZW50KSkKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGFiQmFySXRl
bS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aGlzLl90YWJDb250YWluZXIuYXBwZW5kQ2hpbGQodGFiQmFySXRlbS5lbGVtZW50KTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0YWJCYXJJdGVtLmVsZW1lbnQpOwog
Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFi
IiwgIXRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCkpOworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICF0aGlzLl9oYXNNb3JlVGhhbk9uZU5v
cm1hbFRhYigpKTsKIAogICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IG51
bGw7CiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IG51bGw7CiAKICAg
ICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlz
Ll90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICB0
aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaW5zZXJ0aW5nLXRhYiIpOworICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImluc2VydGluZy10YWIiKTsKIAogICAgICAg
ICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYWZ0ZXJUYWJTaXpl
c0FuZFBvc2l0aW9ucyk7CiAKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5hZGRFdmVu
dExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRp
b25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5j
dGlvbiByZW1vdmVTdHlsZXMoKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250
YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAgdGhp
cy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwotICAgICAgICAg
ICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoImluc2VydGluZy10YWIiKTsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0
Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5n
Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiaW5zZXJ0aW5n
LXRhYiIpOwogCiAgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZSgiYmVpbmctaW5zZXJ0ZWQiKTsKIAogICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVt
U2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLnJl
bW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0
ZW5lcik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Vi
a2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMpIHsKQEAgLTE3MCw3ICsxNDYs
NyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMuc2V0KHRh
YkJhckl0ZW0sIHtsZWZ0OiAwLCB3aWR0aDogMH0pOwogCi0gICAgICAgICAgICB0aGlzLl90YWJD
b250YWluZXIuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKICAgICAgICAgICAgIHRh
YkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJiZWluZy1pbnNlcnRlZCIpOwogCiAgICAg
ICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhiZWZvcmVUYWJT
aXplc0FuZFBvc2l0aW9ucyk7CkBAIC0yMDYsNyArMTgyLDcgQEAgV0kuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0
ZW0gPSBuZXh0VGFiQmFySXRlbTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLl90YWJD
b250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgeworICAgICAgICBpZiAo
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKICAgICAgICAg
ICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVTdHlsZXMuYmluZCh0aGlzKSk7CiAgICAg
ICAgICAgICBvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucyA9IHRydWU7CiAgICAgICAgIH0KQEAg
LTIyMiw3ICsxOTgsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3
CiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5yZW1vdmUoKTsKIAogICAgICAgICB2YXIgaGFz
TW9yZVRoYW5PbmVOb3JtYWxUYWIgPSB0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpOwot
ICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIs
ICFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwgIWhhc01vcmVUaGFuT25lTm9ybWFsVGFiKTsKIAogICAg
ICAgICBpZiAoIWhhc01vcmVUaGFuT25lTm9ybWFsVGFiIHx8IHdhc0xhc3ROb3JtYWxUYWIgfHwg
IW9wdGlvbnMuc3VwcHJlc3NFeHBhbnNpb24pIHsKICAgICAgICAgICAgIGlmICghb3B0aW9ucy5z
dXBwcmVzc0FuaW1hdGlvbnMpIHsKQEAgLTIzOSwxNSArMjE1LDE1IEBAIFdJLlRhYkJhciA9IGNs
YXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICBmdW5jdGlvbiBhbmltYXRlVGFi
cygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3Qu
YWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xp
c3QuYWRkKCJjbG9zaW5nLXRhYiIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImNsb3NpbmctdGFiIik7CiAKICAgICAgICAgICAgIC8vIEZvciBSVEwsIHdlIG5lZWQgdG8g
cGxhY2UgZXh0cmEgc3BhY2UgYmV0d2VlbiBwaW5uZWQgdGFiIGFuZCBmaXJzdCBub3JtYWwgdGFi
LgogICAgICAgICAgICAgLy8gRnJvbSBsZWZ0IHRvIHJpZ2h0IHRoZXJlIGlzIHBpbm5lZCB0YWJz
LCBleHRyYSBzcGFjZSwgdGhlbiBub3JtYWwgdGFicy4gQ29tcHV0ZQogICAgICAgICAgICAgLy8g
aG93IG11Y2ggZXh0cmEgc3BhY2Ugd2UgbmVlZCB0byBhZGRpdGlvbmFsbHkgYWRkIGZvciBub3Jt
YWwgdGFiIGl0ZW1zLgogICAgICAgICAgICAgbGV0IGV4dHJhU3BhY2VCZXR3ZWVuTm9ybWFsQW5k
UGlubmVkVGFicyA9IDA7CiAgICAgICAgICAgICBpZiAoV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rp
b24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCkgewotICAgICAgICAgICAgICAgIGV4dHJh
U3BhY2VCZXR3ZWVuTm9ybWFsQW5kUGlubmVkVGFicyA9IHRoaXMuX3RhYkNvbnRhaW5lci5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsKKyAgICAgICAgICAgICAgICBleHRyYVNwYWNlQmV0
d2Vlbk5vcm1hbEFuZFBpbm5lZFRhYnMgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCkud2lkdGg7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgY3VycmVudFRhYkJhckl0ZW0g
b2YgdGhpcy5fdGFiQmFySXRlbXNGcm9tTGVmdFRvUmlnaHQoKSkKICAgICAgICAgICAgICAgICAg
ICAgZXh0cmFTcGFjZUJldHdlZW5Ob3JtYWxBbmRQaW5uZWRUYWJzIC09IGN1cnJlbnRUYWJCYXJJ
dGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7CiAgICAgICAgICAgICB9
CkBAIC0yNzEsNyArMjQ3LDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0ku
VmlldwogICAgICAgICAgICAgaWYgKGxhc3ROb3JtYWxUYWJCYXJJdGVtICE9PSB0aGlzLl9zZWxl
Y3RlZFRhYkJhckl0ZW0pCiAgICAgICAgICAgICAgICAgbGFzdE5vcm1hbFRhYkJhckl0ZW0uZWxl
bWVudC5zdHlsZS53aWR0aCA9IChwYXJzZUZsb2F0KGxhc3ROb3JtYWxUYWJCYXJJdGVtLmVsZW1l
bnQuc3R5bGUud2lkdGgpICsgMSkgKyAicHgiOwogCi0gICAgICAgICAgICB0aGlzLl90YWJDb250
YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxl
c0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3
ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAK
ICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKQEAgLTI4MCwxNiArMjU2LDE2IEBAIFdJ
LlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgIGlmICh0
aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gJiYgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtICE9PSBs
YXN0Tm9ybWFsVGFiQmFySXRlbSkKICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJh
ckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IChwYXJzZUZsb2F0KHRoaXMuX3NlbGVjdGVkVGFi
QmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoKSAtIDEpICsgInB4IjsKIAotICAgICAgICAgICAg
dGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwotICAgICAg
ICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoImNsb3NpbmctdGFiIik7
CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7
CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY2xvc2luZy10YWIi
KTsKIAogICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKIAotICAgICAgICAgICAgdGhp
cy5fdGFiQ29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQi
LCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVy
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMp
IHsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJzdGF0aWMt
bGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGlj
LWxheW91dCIpOwogCiAgICAgICAgICAgICB0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91
c2VFbnRlciA9IHRydWU7CiAKQEAgLTM4Miw3ICszNTgsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFy
SXRlbSkgewogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLnNlbGVjdGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uaGlkZGVuKQor
ICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucygiaGlkZGVuIikpCiAgICAgICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgp
OwogICAgICAgICB9CiAKQEAgLTM5NSwyOCArMzcxLDMyIEBAIFdJLlRhYkJhciA9IGNsYXNzIFRh
YkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zOwog
ICAgIH0KIAotICAgIGdldCB0YWJDb3VudCgpCisgICAgZ2V0IG5vcm1hbFRhYkNvdW50KCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0
ZW0ucmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5UYWJDb250ZW50VmlldykubGVuZ3Ro
OworICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMuZmlsdGVyKChpdGVtKSA9PiAhKGl0
ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKSkubGVuZ3RoOwogICAgIH0KIAotICAg
IGdldCBub3JtYWxUYWJDb3VudCgpCisgICAgZ2V0IHNhdmVhYmxlVGFiQ291bnQoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gIShpdGVt
IGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkpLmxlbmd0aDsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3RhYkJhckl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5yZXByZXNlbnRlZE9iamVj
dCAmJiBpdGVtLnJlcHJlc2VudGVkT2JqZWN0LmNvbnN0cnVjdG9yLnNob3VsZFNhdmVUYWIoKSku
bGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCiAgICAgbGF5b3V0KCkKICAgICB7
Ci0gICAgICAgIGlmICh0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0
aWMtbGF5b3V0IikpCisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5z
KCJzdGF0aWMtbGF5b3V0IikpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5f
dGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImNhbGN1bGF0ZS13aWR0aCIpOwotICAgICAgICB0
aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiY29sbGFwc2VkIik7CisgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjYWxjdWxhdGUtd2lkdGgiKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNvbGxhcHNlZCIpOworCisgICAgICAgIGZ1
bmN0aW9uIGZvcmNlSXRlbUhpZGRlbihpdGVtLCBoaWRkZW4pIHsKKyAgICAgICAgICAgIGl0ZW0u
ZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJoaWRkZW4iLCAhIWhpZGRlbik7CisgICAgICAgIH0K
IAogICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKQotICAgICAgICAg
ICAgaXRlbS5oaWRkZW4gPSBpdGVtID09PSB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtOworICAg
ICAgICAgICAgZm9yY2VJdGVtSGlkZGVuKGl0ZW0sIGl0ZW0gPT09IHRoaXMuX3RhYlBpY2tlclRh
YkJhckl0ZW0pOwogCiAgICAgICAgIGZ1bmN0aW9uIG1lYXN1cmVJdGVtV2lkdGgoaXRlbSkgewog
ICAgICAgICAgICAgaWYgKCFpdGVtW1dJLlRhYkJhci5DYWNoZWRXaWR0aFN5bWJvbF0pCkBAIC00
MzQsMTMgKzQxNCwxMyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3
CiAgICAgICAgIHRoaXMuX2hpZGRlblRhYkJhckl0ZW1zID0gW107CiAKICAgICAgICAgbGV0IHRv
dGFsSXRlbVdpZHRoID0gcmVjYWxjdWxhdGVJdGVtV2lkdGhzKCk7Ci0gICAgICAgIGxldCBiYXJX
aWR0aCA9IHRoaXMuX3RhYkNvbnRhaW5lci5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgIGxldCBi
YXJXaWR0aCA9IHRoaXMuZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CiAKICAgICAgICAgaWYgKHRv
dGFsSXRlbVdpZHRoID4gYmFyV2lkdGgpIHsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5l
ci5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKICAgICAgICAgICAgIHRvdGFsSXRlbVdpZHRoID0g
cmVjYWxjdWxhdGVJdGVtV2lkdGhzKCk7CiAgICAgICAgICAgICBpZiAodG90YWxJdGVtV2lkdGgg
PiBiYXJXaWR0aCkgewotICAgICAgICAgICAgICAgIHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0u
aGlkZGVuID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZm9yY2VJdGVtSGlkZGVuKHRoaXMuX3Rh
YlBpY2tlclRhYkJhckl0ZW0sIGZhbHNlKTsKICAgICAgICAgICAgICAgICB0b3RhbEl0ZW1XaWR0
aCArPSBtZWFzdXJlSXRlbVdpZHRoKHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0pOwogICAgICAg
ICAgICAgfQogCkBAIC00NTIsMjEgKzQzMiwxMyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIg
ZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
ICAgICAgICAgdG90YWxJdGVtV2lkdGggLT0gbWVhc3VyZUl0ZW1XaWR0aChpdGVtKTsKLSAgICAg
ICAgICAgICAgICBpdGVtLmhpZGRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgZm9yY2VJdGVt
SGlkZGVuKGl0ZW0sIHRydWUpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5faGlkZGVuVGFiQmFy
SXRlbXMucHVzaChpdGVtKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHRo
aXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJjYWxjdWxhdGUtd2lkdGgiKTsKLSAg
ICB9Ci0KLSAgICBkaWRMYXlvdXRTdWJ0cmVlKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLmRpZExh
eW91dFN1YnRyZWUoKTsKLQotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnRv
Z2dsZSgiaGlkZS1ib3JkZXItc3RhcnQiLCB0aGlzLl9uYXZpZ2F0aW9uQmFyQmVmb3JlLm5hdmln
YXRpb25JdGVtcy5ldmVyeSgoaXRlbSkgPT4gaXRlbS5oaWRkZW4pKTsKLSAgICAgICAgdGhpcy5f
dGFiQ29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoImhpZGUtYm9yZGVyLWVuZCIsIHRoaXMuX25h
dmlnYXRpb25CYXJBZnRlci5uYXZpZ2F0aW9uSXRlbXMuZXZlcnkoKGl0ZW0pID0+IGl0ZW0uaGlk
ZGVuKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjYWxjdWxhdGUt
d2lkdGgiKTsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCkBAIC01MDgsNyArNDgwLDcgQEAgV0ku
VGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgIHsKICAgICAgICAgdmFy
IHRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyA9IG5ldyBNYXA7CiAKLSAgICAgICAgbGV0IGJh
clJlY3QgPSB0aGlzLl90YWJDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAg
ICAgIGNvbnN0IGJhclJlY3QgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
CiAKICAgICAgICAgZm9yICh2YXIgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgewog
ICAgICAgICAgICAgdmFyIGJvdW5kaW5nUmVjdCA9IHRhYkJhckl0ZW0uZWxlbWVudC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKQEAgLTU0NywzNiArNTE5LDM2IEBAIFdJLlRhYkJhciA9IGNsYXNz
IFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgIGlmICghYmVmb3JlVGFiU2l6ZXNB
bmRQb3NpdGlvbnMpCiAgICAgICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMg
PSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAotICAgICAgICAg
ICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0
Iik7CiAgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygp
OwogCiAgICAgICAgICAgICB2YXIgYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyA9IHRoaXMuX3Jl
Y29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwogCiAgICAgICAgICAgICB0aGlzLl9h
cHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9u
cyk7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgic3RhdGlj
LWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRp
Yy1sYXlvdXQiKTsKIAogICAgICAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRk
KCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNs
YXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRh
aW5lci5jbGFzc0xpc3QuYWRkKCJleHBhbmRpbmctdGFicyIpOworICAgICAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJleHBhbmRpbmctdGFicyIpOwogCiAgICAg
ICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYWZ0ZXJU
YWJTaXplc0FuZFBvc2l0aW9ucyk7CiAKLSAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWlu
ZXIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xp
c3RlbmVyKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
d2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgic3Rh
dGljLWxheW91dCIpOwotICAgICAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xp
c3QucmVtb3ZlKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWlu
ZXIuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kaW5nLXRhYnMiKTsKKyAgICAgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kaW5nLXRhYnMi
KTsKIAogICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRp
b25zKCk7CiAKICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwogCi0gICAgICAg
ICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRy
YW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAgICAgICAgdGhp
cy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1v
dmVTdHlsZXNMaXN0ZW5lcik7CiAKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAg
ICAgICB9CkBAIC02ODEsNyArNjUzLDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVu
ZHMgV0kuVmlldwogICAgICAgICB2YXIgY2xvc2VCdXR0b25FbGVtZW50ID0gZXZlbnQudGFyZ2V0
LmNsb3Nlc3QoIi4iICsgV0kuVGFiQmFySXRlbS5DbG9zZUJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsK
ICAgICAgICAgaWYgKGNsb3NlQnV0dG9uRWxlbWVudCB8fCBjbGlja2VkTWlkZGxlQnV0dG9uKSB7
CiAgICAgICAgICAgICAvLyBEaXNhbGxvdyBjbG9zaW5nIHRoZSBvbmx5IHRhYi4KLSAgICAgICAg
ICAgIGlmICh0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaW5nbGUtdGFi
IikpCisgICAgICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic2lu
Z2xlLXRhYiIpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgaWYgKCFl
dmVudC5hbHRLZXkpIHsKQEAgLTcxNiwyMyArNjg4LDIxIEBAIFdJLlRhYkJhciA9IGNsYXNzIFRh
YkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAg
ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAKLSAgICAgICAgaWYgKCF0aGlzLl90YWJD
b250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpIHsKKyAgICAgICAg
aWYgKCF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpIHsK
ICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKHRoaXMu
X3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpKTsKLSAgICAgICAgICAgIHRoaXMu
X3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAg
ICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmctdGFiIik7CisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nLXRhYiIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbGV0IGNvbnRhaW5lck9mZnNldCA9IHRoaXMuX3RhYkNvbnRhaW5l
ci50b3RhbE9mZnNldExlZnQ7Ci0KICAgICAgICAgaWYgKHRoaXMuX21vdXNlT2Zmc2V0ID09PSB1
bmRlZmluZWQpCiAgICAgICAgICAgICB0aGlzLl9tb3VzZU9mZnNldCA9IGV2ZW50LnBhZ2VYIC0g
dGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQudG90YWxPZmZzZXRMZWZ0OwogCi0gICAg
ICAgIGxldCB0YWJCYXJNb3VzZU9mZnNldCA9IGV2ZW50LnBhZ2VYIC0gY29udGFpbmVyT2Zmc2V0
OworICAgICAgICB2YXIgdGFiQmFyTW91c2VPZmZzZXQgPSBldmVudC5wYWdlWCAtIHRoaXMuZWxl
bWVudC50b3RhbE9mZnNldExlZnQ7CiAgICAgICAgIHZhciBuZXdMZWZ0ID0gdGFiQmFyTW91c2VP
ZmZzZXQgLSB0aGlzLl9tb3VzZU9mZnNldDsKIAogICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJh
ckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbmV3TGVmdCArICJweCI7CiAKLSAgICAgICAgdmFy
IHNlbGVjdGVkVGFiTWlkWCA9IGNvbnRhaW5lck9mZnNldCArIG5ld0xlZnQgKyAodGhpcy5fc2Vs
ZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQucmVhbE9mZnNldFdpZHRoIC8gMik7CisgICAgICAgIHZh
ciBzZWxlY3RlZFRhYk1pZFggPSBuZXdMZWZ0ICsgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5l
bGVtZW50LnJlYWxPZmZzZXRXaWR0aCAvIDIpOwogCiAgICAgICAgIHZhciBjdXJyZW50SW5kZXgg
PSB0aGlzLl90YWJCYXJJdGVtcy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSk7CiAg
ICAgICAgIHZhciBuZXdJbmRleCA9IGN1cnJlbnRJbmRleDsKQEAgLTc2Miw3ICs3MzIsNyBAQCBX
SS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGxldCBuZXh0
U2libGluZyA9IHRoaXMuX3RhYkJhckl0ZW1zW25ld0luZGV4ICsgMV07CiAgICAgICAgIGxldCBu
ZXh0U2libGluZ0VsZW1lbnQgPSBuZXh0U2libGluZyA/IG5leHRTaWJsaW5nLmVsZW1lbnQgOiBu
dWxsOwogCi0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGhpcy5fc2Vs
ZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CisgICAgICAgIHRo
aXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQs
IG5leHRTaWJsaW5nRWxlbWVudCk7CiAKICAgICAgICAgLy8gRklYTUU6IEFuaW1hdGUgdGhlIHRh
YnMgdGhhdCBtb3ZlIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHNlbGVjdGVkIHRhYi4gVGhpcyB3YXMg
Y2F1c2luZyBtZSB0cm91YmxlIHdoZW4gSSB0cmllZC4KIApAQCAtNzgxLDEwICs3NTEsMTAgQEAg
V0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBpZiAoIXRo
aXMuX21vdXNlSXNEb3duKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3Rh
YkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZy10YWIiKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nLXRhYiIpOwogCiAgICAgICAgIGlm
ICghdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIpIHsKLSAgICAgICAgICAg
IHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIp
OwogICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxldCBsZWZ0ID0gMDsKQEAgLTgxMiwxMyAr
NzgyLDEzIEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKIAogICAg
IF9oYW5kbGVNb3VzZUxlYXZlKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX21vdXNl
SXNEb3duIHx8ICF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhp
cy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRo
aXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKQorICAgICAg
ICBpZiAodGhpcy5fbW91c2VJc0Rvd24gfHwgIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VN
b3VzZUVudGVyIHx8ICF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5
b3V0IikgfHwgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gVGhpcyBldmVudCBjYW4gc3RpbGwgZmly
ZSB3aGVuIHRoZSBtb3VzZSBpcyBpbnNpZGUgdGhlIGVsZW1lbnQgaWYgRE9NIG5vZGVzIGFyZSBh
ZGRlZCwgcmVtb3ZlZCBvciBnZW5lcmFsbHkgY2hhbmdlIGluc2lkZS4KICAgICAgICAgLy8gQ2hl
Y2sgaWYgdGhlIG1vdXNlIHJlYWxseSBkaWQgbGVhdmUgdGhlIGVsZW1lbnQgYnkgY2hlY2tpbmcg
dGhlIGJvdW5kcy4KICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgYSBXZWJLaXQgYnVnIG9yIGNv
cnJlY3QgYmVoYXZpb3I/Ci0gICAgICAgIGxldCBiYXJSZWN0ID0gdGhpcy5fdGFiQ29udGFpbmVy
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBjb25zdCBiYXJSZWN0ID0gdGhpcy5l
bGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICBpZiAoZXZlbnQucGFnZVkg
PiBiYXJSZWN0LnRvcCAmJiBldmVudC5wYWdlWSA8IGJhclJlY3QuYm90dG9tICYmIGV2ZW50LnBh
Z2VYID4gYmFyUmVjdC5sZWZ0ICYmIGV2ZW50LnBhZ2VYIDwgYmFyUmVjdC5yaWdodCkKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtODMwLDcgKzgwMCw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRh
YkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV0kuQ29udGV4
dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKIAogICAgICAgICBmb3IgKGxldCB0YWJDbGFz
cyBvZiBXSS5rbm93blRhYkNsYXNzZXMoKSkgewotICAgICAgICAgICAgaWYgKCF0YWJDbGFzcy5p
c1RhYkFsbG93ZWQoKSB8fCAhdGFiQ2xhc3Muc2hvdWxkU2F2ZVRhYigpKQorICAgICAgICAgICAg
aWYgKCF0YWJDbGFzcy5pc1RhYkFsbG93ZWQoKSB8fCB0YWJDbGFzcy50YWJJbmZvKCkuaXNFcGhl
bWVyYWwpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGxldCBvcGVu
VGFiQmFySXRlbSA9IG51bGw7CkBAIC04NjQsNCArODM0LDUgQEAgV0kuVGFiQmFyLkV2ZW50ID0g
ewogICAgIFRhYkJhckl0ZW1BZGRlZDogInRhYi1iYXItdGFiLWJhci1pdGVtLWFkZGVkIiwKICAg
ICBUYWJCYXJJdGVtUmVtb3ZlZDogInRhYi1iYXItdGFiLWJhci1pdGVtLXJlbW92ZWQiLAogICAg
IFRhYkJhckl0ZW1zUmVvcmRlcmVkOiAidGFiLWJhci10YWItYmFyLWl0ZW1zLXJlb3JkZXJlZCIs
CisgICAgT3BlbkRlZmF1bHRUYWI6ICJ0YWItYmFyLW9wZW4tZGVmYXVsdC10YWIiCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFy
SXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJh
ckl0ZW0uanMKaW5kZXggY2VmOWQ1Njg3MGZmNTkxZDVmZGMwN2MwMjRiMTczZjNlMzhhNGVhYi4u
Yzg2NzZkMDlmN2Y1ZjQ4MjhmODc0ZTM5YjE2OTI1YWU3NjU5Yzk0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFySXRlbS5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpz
CkBAIC0yNCwxMSArMjQsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XSS5UYWJCYXJJdGVtID0gY2xhc3MgVGFiQmFySXRlbQorV0kuVGFiQmFySXRlbSA9
IGNsYXNzIFRhYkJhckl0ZW0gZXh0ZW5kcyBXSS5PYmplY3QKIHsKLSAgICBjb25zdHJ1Y3Rvcihy
ZXByZXNlbnRlZE9iamVjdCwgaW1hZ2UsIHRpdGxlKQorICAgIGNvbnN0cnVjdG9yKGltYWdlLCB0
aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewotICAgICAgICB0aGlzLl9yZXByZXNlbnRl
ZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0IHx8IG51bGw7CisgICAgICAgIHN1cGVyKCk7CisK
ICAgICAgICAgdGhpcy5fcGFyZW50VGFiQmFyID0gbnVsbDsKIAogICAgICAgICB0aGlzLl9lbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CkBAIC00NywxMiArNDgsMTUgQEAg
V0kuVGFiQmFySXRlbSA9IGNsYXNzIFRhYkJhckl0ZW0KIAogICAgICAgICB0aGlzLnRpdGxlID0g
dGl0bGU7CiAgICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTsKKyAgICAgICAgdGhpcy5yZXByZXNl
bnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OwogICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IGVsZW1lbnQoKSB7IHJldHVybiB0aGlzLl9lbGVtZW50OyB9CisKICAgICBnZXQg
cmVwcmVzZW50ZWRPYmplY3QoKSB7IHJldHVybiB0aGlzLl9yZXByZXNlbnRlZE9iamVjdDsgfQor
ICAgIHNldCByZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkgeyB0aGlzLl9yZXBy
ZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0IHx8IG51bGw7IH0KIAogICAgIGdldCBw
YXJlbnRUYWJCYXIoKSB7IHJldHVybiB0aGlzLl9wYXJlbnRUYWJCYXI7IH0KICAgICBzZXQgcGFy
ZW50VGFiQmFyKHRhYkJhcil7IHRoaXMuX3BhcmVudFRhYkJhciA9IHRhYkJhciB8fCBudWxsOyB9
CkBAIC03OSwxNyArODMsMTcgQEAgV0kuVGFiQmFySXRlbSA9IGNsYXNzIFRhYkJhckl0ZW0KIAog
ICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnRvZ2dsZSgiZGlzYWJsZWQiLCAhIWRpc2FibGVkKTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJkaXNhYmxlZCIsIGRpc2FibGVkKTsKICAgICB9CiAK
LSAgICBnZXQgaGlkZGVuKCkKKyAgICBnZXQgaXNEZWZhdWx0VGFiKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiaGlkZGVuIik7CisgICAg
ICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiZGVmYXVsdC10YWIi
KTsKICAgICB9CiAKLSAgICBzZXQgaGlkZGVuKGhpZGRlbikKKyAgICBzZXQgaXNEZWZhdWx0VGFi
KGlzRGVmYXVsdFRhYikKICAgICB7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRv
Z2dsZSgiaGlkZGVuIiwgISFoaWRkZW4pOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC50b2dnbGUoImRlZmF1bHQtdGFiIiwgaXNEZWZhdWx0VGFiKTsKICAgICB9CiAKICAgICBnZXQg
aW1hZ2UoKSB7IHJldHVybiB0aGlzLl9pY29uRWxlbWVudC5zcmM7IH0KQEAgLTExMCw4ICsxMTQs
NiBAQCBXSS5UYWJCYXJJdGVtID0gY2xhc3MgVGFiQmFySXRlbQogICAgICAgICB0aGlzLnRpdGxl
RGlkQ2hhbmdlKCk7CiAgICAgfQogCi0gICAgLy8gUHJvdGVjdGVkCi0KICAgICB0aXRsZURpZENo
YW5nZSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJv
d3Nlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJy
b3dzZXIuanMKaW5kZXggNWNlNzcxM2VkNzFlN2RlMjVjNjM5NTk4MDMzMjBlZTllYjA0MjUzNy4u
NzZlMTdmMzljMzM5ZjMwMjUyZGNmYzRkMWU0OGY3N2MzYzNmNTk2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpz
CkBAIC0xNjgsNyArMTY4LDcgQEAgV0kuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0
ZW5kcyBXSS5WaWV3CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3RhYkJhci5hZGRU
YWJCYXJJdGVtKHRhYkJhckl0ZW0sIG9wdGlvbnMpOwogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy5sZW5ndGggPT09IHRoaXMuX3RhYkJhci50YWJD
b3VudCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3
cy5sZW5ndGggPT09IHRoaXMuX3RhYkJhci5zYXZlYWJsZVRhYkNvdW50KTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoIXRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyB8fCB0aGlzLnNlbGVjdGVk
VGFiQ29udGVudFZpZXcgPT09IHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3c1swXSk7CiAKICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDYsNyArMjA2LDcgQEAgV0kuVGFiQnJvd3NlciA9IGNs
YXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgdGhpcy5fdGFiQmFyLnJl
bW92ZVRhYkJhckl0ZW0odGFiQ29udGVudFZpZXcudGFiQmFySXRlbSwgb3B0aW9ucyk7CiAKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzLmxlbmd0aCA9
PT0gdGhpcy5fdGFiQmFyLnRhYkNvdW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5f
cmVjZW50VGFiQ29udGVudFZpZXdzLmxlbmd0aCA9PT0gdGhpcy5fdGFiQmFyLnNhdmVhYmxlVGFi
Q291bnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRW
aWV3IHx8IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyA9PT0gdGhpcy5fcmVjZW50VGFiQ29u
dGVudFZpZXdzWzBdKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI0MSw3ICsyNDEsNyBA
QCBXSS5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdJLlZpZXcKICAgICAg
ICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnNob3dDb250ZW50Vmlldyh0YWJDb250
ZW50Vmlldyk7CiAKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuc2VsZWN0ZWRUYWJD
b250ZW50Vmlldyk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNlbnRUYWJD
b250ZW50Vmlld3MubGVuZ3RoID09PSB0aGlzLl90YWJCYXIudGFiQ291bnQpOworICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzLmxlbmd0aCA9PT0g
dGhpcy5fdGFiQmFyLnNhdmVhYmxlVGFiQ291bnQpOwogICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNlbnRUYWJDb250ZW50
Vmlld3NbMF0gfHwgIXNob3VsZFNhdmVUYWIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250ZW50Vmlld3MoKTsKQEAg
LTI4NywxMiArMjg3LDEyIEBAIFdJLlRhYkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVu
ZHMgV0kuVmlldwogCiAgICAgICAgIHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy5yZW1vdmUo
dGFiQ29udGVudFZpZXcpOwogCi0gICAgICAgIGlmICh0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rv
ci5zaG91bGRTYXZlVGFiKCkpCisgICAgICAgIGlmICghdGFiQ29udGVudFZpZXcuY29uc3RydWN0
b3IudGFiSW5mbygpLmlzRXBoZW1lcmFsKQogICAgICAgICAgICAgdGhpcy5fY2xvc2VkVGFiQ2xh
c3Nlcy5hZGQodGFiQ29udGVudFZpZXcuY29uc3RydWN0b3IpOwogCiAgICAgICAgIHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcpOwogCi0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy5sZW5ndGgg
PT09IHRoaXMuX3RhYkJhci50YWJDb3VudCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X3JlY2VudFRhYkNvbnRlbnRWaWV3cy5sZW5ndGggPT09IHRoaXMuX3RhYkJhci5zYXZlYWJsZVRh
YkNvdW50KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuc2VsZWN0ZWRUYWJDb250ZW50
VmlldyB8fCB0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgPT09IHRoaXMuX3JlY2VudFRhYkNv
bnRlbnRWaWV3c1swXSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDlhMWI2
MjZiNDAwMjliNDgxNTA5MjY5N2RjYzQwM2ZhM2NiY2UyZjYuLmFlOTA2NWY5MjE2ZmFkZDVmYmNh
NTE5NmNkNjcwOWQ0MDM5MzUwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNSwzMCAr
MjUsMzggQEAKIAogV0kuVGFiQ29udGVudFZpZXcgPSBjbGFzcyBUYWJDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc3RydWN0b3IodGFiSW5mbywge25hdmlnYXRp
b25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9y
c30gPSB7fSkKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBzdHlsZUNsYXNzTmFtZXMsIHRh
YkJhckl0ZW0sIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciwgZGV0YWlsc1NpZGVi
YXJQYW5lbENvbnN0cnVjdG9ycykKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFuYXZp
Z2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IgfHwgbmF2aWdhdGlvblNpZGViYXJQYW5lbENv
bnN0cnVjdG9yLnByb3RvdHlwZSBpbnN0YW5jZW9mIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwp
OwotICAgICAgICBjb25zb2xlLmFzc2VydCghZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9y
cyB8fCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLmV2ZXJ5KChkZXRhaWxzU2lkZWJh
clBhbmVsQ29uc3RydWN0b3IpID0+IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3Rvci5wcm90
b3R5cGUgaW5zdGFuY2VvZiBXSS5EZXRhaWxzU2lkZWJhclBhbmVsKSk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHR5cGVvZiBpZGVudGlmaWVyID09PSAic3RyaW5nIik7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHR5cGVvZiBzdHlsZUNsYXNzTmFtZXMgPT09ICJzdHJpbmciIHx8IHN0eWxlQ2xh
c3NOYW1lcy5ldmVyeSgoY2xhc3NOYW1lKSA9PiB0eXBlb2YgY2xhc3NOYW1lID09PSAic3RyaW5n
IikpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJCYXJJdGVtIGluc3RhbmNlb2YgV0kuVGFi
QmFySXRlbSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFuYXZpZ2F0aW9uU2lkZWJhclBhbmVs
Q29uc3RydWN0b3IgfHwgdHlwZW9mIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciA9
PT0gImZ1bmN0aW9uIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFkZXRhaWxzU2lkZWJhclBh
bmVsQ29uc3RydWN0b3JzIHx8IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMuZXZlcnko
KGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcikgPT4gdHlwZW9mIGRldGFpbHNTaWRlYmFy
UGFuZWxDb25zdHJ1Y3RvciA9PT0gImZ1bmN0aW9uIikpOwogCiAgICAgICAgIHN1cGVyKG51bGwp
OwogCi0gICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSB0YWJJbmZvLmlkZW50aWZpZXI7Ci0gICAg
ICAgIHRoaXMuX3RhYkJhckl0ZW0gPSB0aGlzLmNvbnN0cnVjdG9yLnNob3VsZFBpblRhYigpID8g
V0kuUGlubmVkVGFiQmFySXRlbS5mcm9tVGFiQ29udGVudFZpZXcodGhpcykgOiBXSS5HZW5lcmFs
VGFiQmFySXRlbS5mcm9tVGFiQ29udGVudFZpZXcodGhpcyk7CisgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJ0YWIiKTsKKworICAgICAgICBpZiAodHlwZW9mIHN0eWxlQ2xhc3NO
YW1lcyA9PT0gInN0cmluZyIpCisgICAgICAgICAgICBzdHlsZUNsYXNzTmFtZXMgPSBbc3R5bGVD
bGFzc05hbWVzXTsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCguLi5zdHls
ZUNsYXNzTmFtZXMpOworCisgICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOwor
ICAgICAgICB0aGlzLl90YWJCYXJJdGVtID0gdGFiQmFySXRlbTsKICAgICAgICAgdGhpcy5fbmF2
aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yID0gbmF2aWdhdGlvblNpZGViYXJQYW5lbENv
bnN0cnVjdG9yIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyUGFuZWxDb25z
dHJ1Y3RvcnMgPSBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzIHx8IFtdOwogCiAgICAg
ICAgIGNvbnN0IGRlZmF1bHRTaWRlYmFyV2lkdGggPSAzMDA7CiAKLSAgICAgICAgdGhpcy5fbmF2
aWdhdGlvblNpZGViYXJDb2xsYXBzZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRl
bnRpZmllciArICItbmF2aWdhdGlvbi1zaWRlYmFyLWNvbGxhcHNlZCIsIGZhbHNlKTsKLSAgICAg
ICAgdGhpcy5fbmF2aWdhdGlvblNpZGViYXJXaWR0aFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyh0
aGlzLl9pZGVudGlmaWVyICsgIi1uYXZpZ2F0aW9uLXNpZGViYXItd2lkdGgiLCBkZWZhdWx0U2lk
ZWJhcldpZHRoKTsKLQotICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhckNvbGxhcHNlZFNldHRp
bmcgPSBuZXcgV0kuU2V0dGluZyh0aGlzLl9pZGVudGlmaWVyICsgIi1kZXRhaWxzLXNpZGViYXIt
Y29sbGFwc2VkIiwgIXRoaXMuZGV0YWlsc1NpZGViYXJFeHBhbmRlZEJ5RGVmYXVsdCk7Ci0gICAg
ICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyU2VsZWN0ZWRQYW5lbFNldHRpbmcgPSBuZXcgV0kuU2V0
dGluZyh0aGlzLl9pZGVudGlmaWVyICsgIi1kZXRhaWxzLXNpZGViYXItc2VsZWN0ZWQtcGFuZWwi
LCBudWxsKTsKLSAgICAgICAgdGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZyh0aGlzLl9pZGVudGlmaWVyICsgIi1kZXRhaWxzLXNpZGViYXItd2lkdGgiLCBk
ZWZhdWx0U2lkZWJhcldpZHRoKTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvblNpZGViYXJDb2xs
YXBzZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoaWRlbnRpZmllciArICItbmF2aWdhdGlvbi1z
aWRlYmFyLWNvbGxhcHNlZCIsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvblNpZGVi
YXJXaWR0aFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhpZGVudGlmaWVyICsgIi1uYXZpZ2F0aW9u
LXNpZGViYXItd2lkdGgiLCBkZWZhdWx0U2lkZWJhcldpZHRoKTsKIAotICAgICAgICB0aGlzLl9j
b29raWVTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRlbnRpZmllciArICItdGFiLWNv
b2tpZSIsIHt9KTsKKyAgICAgICAgdGhpcy5fZGV0YWlsc1NpZGViYXJDb2xsYXBzZWRTZXR0aW5n
ID0gbmV3IFdJLlNldHRpbmcoaWRlbnRpZmllciArICItZGV0YWlscy1zaWRlYmFyLWNvbGxhcHNl
ZCIsICF0aGlzLmRldGFpbHNTaWRlYmFyRXhwYW5kZWRCeURlZmF1bHQpOworICAgICAgICB0aGlz
Ll9kZXRhaWxzU2lkZWJhclNlbGVjdGVkUGFuZWxTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoaWRl
bnRpZmllciArICItZGV0YWlscy1zaWRlYmFyLXNlbGVjdGVkLXBhbmVsIiwgbnVsbCk7CisgICAg
ICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyV2lkdGhTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoaWRl
bnRpZmllciArICItZGV0YWlscy1zaWRlYmFyLXdpZHRoIiwgZGVmYXVsdFNpZGViYXJXaWR0aCk7
CiAKLSAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYiIsIHRoaXMuX2lkZW50
aWZpZXIpOworICAgICAgICB0aGlzLl9jb29raWVTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoaWRl
bnRpZmllciArICItdGFiLWNvb2tpZSIsIHt9KTsKICAgICB9CiAKICAgICBzdGF0aWMgaXNUYWJB
bGxvd2VkKCkKQEAgLTU3LDEyICs2NSw2IEBAIFdJLlRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgVGFi
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgc2hvdWxkUGluVGFiKCkKLSAgICB7Ci0gICAgICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgdGFiIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBiZSBjbG9zZWQu
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBzdGF0aWMgc2hvdWxkU2F2ZVRh
YigpCiAgICAgewogICAgICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSB0YWIgc2hvdWxkIG5v
dCBiZSByZXN0b3JlZCB3aGVuIHJlLW9wZW5pbmcgdGhlIEluc3BlY3Rvci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZp
ZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxp
bmVPdmVydmlldy5jc3MKaW5kZXggNjZlOTE3ZTY1MWNkNTNkOWJlNzQzNWE5NzQ2OTJlMWM1OGIx
NmY4NC4uOTdmZDg3MTg3MjIxM2U1ZjEyN2ZhZDYxYTQ4MTUzNmU3ZWE0NzY5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVy
dmlldy5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVPdmVydmlldy5jc3MKQEAgLTExNyw3ICsxMTcsNyBAQCBib2R5W2Rpcj1ydGxdIC50
aW1lbGluZS1vdmVydmlldzpub3QoLmZyYW1lcykgPiA6bWF0Y2hlcyguc2Nyb2xsLWNvbnRhaW5l
ciwgLnRpbQogfQogCiAudGltZWxpbmUtb3ZlcnZpZXcgPiAudHJlZS1vdXRsaW5lLnRpbWVsaW5l
cyAuaXRlbS5zZWxlY3RlZCArIC5pdGVtLAotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUs
IC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGltZWxpbmUtb3ZlcnZpZXcgPiAudHJlZS1vdXRs
aW5lLnRpbWVsaW5lcyAuaXRlbS5zZWxlY3RlZCArIC5pdGVtIHsKK2JvZHkud2luZG93LWluYWN0
aXZlIC50aW1lbGluZS1vdmVydmlldyA+IC50cmVlLW91dGxpbmUudGltZWxpbmVzIC5pdGVtLnNl
bGVjdGVkICsgLml0ZW0gewogICAgIGJvcmRlci10b3AtY29sb3I6IGhzbCgwLCAwJSwgODMlKTsK
IH0KIApAQCAtMjQ2LDcgKzI0Niw3IEBAIGJvZHlbZGlyPXJ0bF0gLnRpbWVsaW5lLW92ZXJ2aWV3
ID4gLnNjcm9sbC1jb250YWluZXIgPiAuc2Nyb2xsLXdpZHRoLXNpemVyIHsKICAgICB9CiAKICAg
ICAudGltZWxpbmUtb3ZlcnZpZXcgPiAudHJlZS1vdXRsaW5lLnRpbWVsaW5lcyAuaXRlbS5zZWxl
Y3RlZCArIC5pdGVtLAotICAgIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93
LWRvY2tlZC1pbmFjdGl2ZSkgLnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRyZWUtb3V0bGluZS50aW1l
bGluZXMgLml0ZW0uc2VsZWN0ZWQgKyAuaXRlbSB7CisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUg
LnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRyZWUtb3V0bGluZS50aW1lbGluZXMgLml0ZW0uc2VsZWN0
ZWQgKyAuaXRlbSB7CiAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IGhzbGEoMCwgMCUsIHZhcigt
LWZvcmVncm91bmQtbGlnaHRuZXNzKSwgMC4wOSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFt
ZS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGlu
ZVJlY29yZEZyYW1lLmNzcwppbmRleCBkODNlY2QzNzU0YjBkNTJjNTYwYWQzNThhYTliNWVhOTgw
YmY1NDIyLi5mNzNlNzg4YWIwMzg0MmM2N2E1Y2ZjYmU5MGUxODRiMGM2NDFjODI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJl
Y29yZEZyYW1lLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZVJlY29yZEZyYW1lLmNzcwpAQCAtNTMsNyArNTMsNyBAQAogICAgIGJhY2tn
cm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tc2VsZWN0ZWQtdGV4dC1iYWNr
Z3JvdW5kLWNvbG9yKSwgdmFyKC0tc2VsZWN0ZWQtdGV4dC1iYWNrZ3JvdW5kLWNvbG9yKSkgbm8t
cmVwZWF0IDFweCAtMXB4OwogfQogCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndp
bmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50aW1lbGluZS1yZWNvcmQtZnJhbWUuc2VsZWN0ZWQgewor
Ym9keS53aW5kb3ctaW5hY3RpdmUgLnRpbWVsaW5lLXJlY29yZC1mcmFtZS5zZWxlY3RlZCB7CiAg
ICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCBoc2woMCwgMCUsIDk2JSks
IGhzbCgwLCAwJSwgOTYlKSkgbm8tcmVwZWF0IDFweCAtMXB4OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmNz
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVs
ZXIuY3NzCmluZGV4IDMwMDJmYjQyOGU1OWE2ZTFkMTZjNDJjZmU2NjE1NDViYTk4NWE4NTQuLmM4
YjAyNGExMzY1YTgxZDk2YWMyZGRmNTUxNmQ0MzQ0MGE5OGFiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuY3NzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVs
ZXIuY3NzCkBAIC03NCw3ICs3NCw3IEBAIGJvZHlbZGlyPXJ0bF0gLnRpbWVsaW5lLXJ1bGVyID4g
Lm1hcmtlcnMgPiA6bWF0Y2hlcyguZGl2aWRlciwgLm1hcmtlcikgewogICAgIGJhY2tncm91bmQt
aW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbGEoMCwgMCUsIDcwJSwgMCksIGhz
bGEoMCwgMCUsIDcwJSwgMikgODUlKTsKIH0KIAotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3Rp
dmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGltZWxpbmUtcnVsZXIgPiAuaGVhZGVyID4g
LmRpdmlkZXIgeworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRpbWVsaW5lLXJ1bGVyID4gLmhlYWRl
ciA+IC5kaXZpZGVyIHsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8g
Ym90dG9tLCBoc2xhKDAsIDAlLCA4NSUsIDApLCBoc2xhKDAsIDAlLCA4NSUsIDEpIDg1JSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDI2MmQ0ZWQzMTg4
YjBhOTUyMWYxMTFmZTZhODA5MjlmZjlkZGY4NzcuLmM3Mzk2MjU3M2I2MTE4ZjNkN2UwNGU3NjYy
N2VmNzA4M2EyOTczMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qcwpA
QCAtMjUsOSArMjUsMTAgQEAKIAogV0kuVGltZWxpbmVUYWJDb250ZW50VmlldyA9IGNsYXNzIFRp
bWVsaW5lVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRW
aWV3CiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCiAg
ICAgewotICAgICAgICBzdXBlcihUaW1lbGluZVRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7Cisg
ICAgICAgIGxldCB0YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8o
V0kuVGltZWxpbmVUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworICAgICAgICBzdXBlcihpZGVu
dGlmaWVyIHx8ICJ0aW1lbGluZSIsICJ0aW1lbGluZSIsIHRhYkJhckl0ZW0pOwogCiAgICAgICAg
IC8vIE1haW50YWluIGFuIGludmlzaWJsZSB0cmVlIG91dGxpbmUgY29udGFpbmluZyB0cmVlIGVs
ZW1lbnRzIGZvciBhbGwgcmVjb3JkaW5ncy4KICAgICAgICAgLy8gVGhlIHZpc2libGUgcmVjb3Jk
aW5nJ3MgdHJlZSBlbGVtZW50IGlzIHNlbGVjdGVkIHdoZW4gdGhlIGNvbnRlbnQgdmlldyBjaGFu
Z2VzLgpAQCAtMTAxLDcgKzEwMiw2IEBAIFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcgPSBjbGFz
cyBUaW1lbGluZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzCiAgICAgc3Rh
dGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50
aWZpZXI6IFRpbWVsaW5lVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgICAgIGltYWdlOiAi
SW1hZ2VzL1RpbWVsaW5lLnN2ZyIsCiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIlRp
bWVsaW5lcyIpLAogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODEyYmEzOWVjYmEw
ZjRhZDE0NTQ1MGU0YTIyYTQ1NDRhMDY1OWFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5jc3MKQEAgLTAsMCArMSwy
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy50b29sYmFyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgaGVpZ2h0
OiB2YXIoLS10b29sYmFyLWhlaWdodCk7CisKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIHBhZGRp
bmctdG9wOiAzcHg7CisgICAgcGFkZGluZy1ib3R0b206IDNweDsKKworICAgIHdoaXRlLXNwYWNl
OiBub3dyYXA7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKworICAgIG91dGxpbmU6IG5vbmU7CisK
KyAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwg
MCUsIDkyJSksIGhzbCgwLCAwJSwgODclKSk7CisgICAgYm94LXNoYWRvdzogaW5zZXQgaHNsYSgw
LCAwJSwgMTAwJSwgMC41KSAwIDFweCAxcHg7Cit9CisKK2JvZHkud2luZG93LWluYWN0aXZlIC50
b29sYmFyIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworICAgIGJhY2tncm91bmQtY29s
b3I6IGhzbCgwLCAwJSwgOTYlKTsKK30KKworYm9keS5tYWMtcGxhdGZvcm06bm90KC5kb2NrZWQp
IC50b29sYmFyIHsKKyAgICBwYWRkaW5nLXRvcDogMjFweDsKK30KKworYm9keS5tYWMtcGxhdGZv
cm06bm90KC5kb2NrZWQpIHsKKyAgICAtLXRvb2xiYXItaGVpZ2h0OiA1NHB4OworfQorCisudG9v
bGJhciAuY29udHJvbC1zZWN0aW9uIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGZsZXgtZGly
ZWN0aW9uOiByb3c7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICBqdXN0aWZ5LWNvbnRl
bnQ6IGNlbnRlcjsKKyAgICBtaW4td2lkdGg6IG1pbi1jb250ZW50OworICAgIC13ZWJraXQtcGFk
ZGluZy1zdGFydDogNnB4OworICAgIC13ZWJraXQtcGFkZGluZy1lbmQ6IDJweDsKK30KKworLnRv
b2xiYXIgLml0ZW0tc2VjdGlvbiB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBmbGV4OiAxOwor
ICAgIG1pbi13aWR0aDogbWluLWNvbnRlbnQ7Cit9CisKKy50b29sYmFyIC5pdGVtLXNlY3Rpb24u
bGVmdCB7CisgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OworfQorCisudG9vbGJhciAu
aXRlbS1zZWN0aW9uLmNlbnRlci1sZWZ0IHsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3Rh
cnQ7Cit9CisKKy50b29sYmFyIC5pdGVtLXNlY3Rpb24uY2VudGVyLXJpZ2h0IHsKKyAgICBqdXN0
aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKK30KKworLnRvb2xiYXIgLml0ZW0tc2VjdGlvbi5jZW50ZXIg
eworICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOworfQorCisudG9vbGJhciAuaXRlbS1zZWN0
aW9uLnJpZ2h0IHsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOworICAgIHBhZGRpbmct
cmlnaHQ6IDRweDsKK30KKworLnRvb2xiYXIgLml0ZW0geworICAgIGRpc3BsYXk6IGZsZXg7Cisg
ICAgb3V0bGluZTogbm9uZTsKK30KKworLnRvb2xiYXIgLnNlYXJjaC1iYXIgeworICAgIHdpZHRo
OiAxMDAlOworICAgIG1pbi13aWR0aDogMTI1cHg7Cit9CisKKy50b29sYmFyIC5zZWFyY2gtYmFy
ID4gaW5wdXRbdHlwZT0ic2VhcmNoIl0geworICAgIHdpZHRoOiAxMDAlOworICAgIGZvbnQtc2l6
ZTogMTJweDsKKyAgICBiYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7CisgICAgbWFyZ2luOiA0cHg7
Cit9CisKKy50b29sYmFyIC5pdGVtLmJ1dHRvbiwKKy50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5w
dXRbdHlwZT0ic2VhcmNoIl0sCisudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAg
YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KGhzbCgwLCAwJSwgOTklKSwgdmFyKC0t
cGFuZWwtYmFja2dyb3VuZC1jb2xvcikpOworICAgIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDAl
LCAwLjMpIDAgMXB4IDFweCAtMXB4OworCisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIGJv
cmRlcjogMXB4IHNvbGlkIGhzbCgwLCAxJSwgODIlKTsKKyAgICBib3JkZXItdG9wLWNvbG9yOiBo
c2woMCwgMCUsIDgzJSk7CisgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogaHNsKDAsIDAlLCA3NiUp
OworfQorCisudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdIHsKKyAg
ICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAwJSwgMC4zKSAwIDFweCAxcHggLTFweCwgMCAwIDAg
N3B4IGhzbGEoMjExLCA5NiUsIDQ4JSwgMCk7CisgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAu
MjVzIGN1YmljLWJlemllcigwLjE2NSwgMC44NDAsIDAuNDQwLCAxKSAvKiBlYXNlT3V0UXVhcnQg
Ki87Cit9CisKKy50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl06Zm9j
dXMgeworICAgIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDAlLCAwLjE1KSAwIDFweCAwLCAwIDAg
MCAzcHggaHNsYSgyMTEsIDk2JSwgNDglLCAwLjQpOworfQorCitAbWVkaWEgKC13ZWJraXQtbWlu
LWRldmljZS1waXhlbC1yYXRpbzogMikgeworICAgIC50b29sYmFyIC5pdGVtLmJ1dHRvbiwKKyAg
ICAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdLAorICAgIC50b29s
YmFyIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICAgICAgYm9yZGVyOiAwLjVweCBzb2xpZCBo
c2woMCwgMCUsIDc4JSk7CisgICAgICAgIGJvcmRlci10b3AtY29sb3I6IGhzbCgwLCAwJSwgODAl
KTsKKyAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogaHNsKDAsIDAlLCA2NSUpOworICAgIH0K
K30KKworLnRvb2xiYXIgLml0ZW0uYnV0dG9uOmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZC1pbWFn
ZTogbGluZWFyLWdyYWRpZW50KGhzbCgwLCAwJSwgODklKSwgaHNsKDAsIDAlLCA4NiUpKTsKKyAg
ICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAwJSwgMC4zKSAwIDFweCAxcHggLTFweCwgaW5zZXQg
MCAxcHggMXB4IC0xcHggd2hpdGU7Cit9CisKK2JvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFy
IC5pdGVtLmJ1dHRvbiwKK2JvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5zZWFyY2gtYmFy
ID4gaW5wdXRbdHlwZT0ic2VhcmNoIl0sCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAu
ZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgb3BhY2l0eTogMC42NTsKKyAgICBib3JkZXItY29s
b3I6IGhzbGEoMCwgMCUsIDAlLCAwLjE1KTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3Bh
cmVudDsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworfQorCitAbWVkaWEgKC13ZWJraXQt
bWluLWRldmljZS1waXhlbC1yYXRpbzogMikgeworICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50
b29sYmFyIC5pdGVtLmJ1dHRvbiwKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAu
c2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdLAorICAgIGJvZHkud2luZG93LWluYWN0
aXZlIC50b29sYmFyIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICAgICAgYm94LXNoYWRvdzog
aW5zZXQgMCAwIDFweCAwIGhzbGEoMCwgMCUsIDAlLCAwLjEpOworICAgIH0KK30KKworQG1lZGlh
IChtYXgtd2lkdGg6IDUzOXB4KSB7CisgICAgLnRvb2xiYXIgLml0ZW0uZG93bmxvYWQgeworICAg
ICAgICBkaXNwbGF5OiBub25lOworICAgIH0KK30KKworQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNj
aGVtZTogZGFyaykgeworICAgIC50b29sYmFyIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTog
bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCAyNiUpLCBoc2woMCwgMCUsIDIz
JSkpOworICAgICAgICBib3gtc2hhZG93OiBub25lOworICAgIH0KKworICAgIGJvZHkud2luZG93
LWluYWN0aXZlIC50b29sYmFyIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFj
a2dyb3VuZC1jb2xvcik7CisgICAgfQorCisgICAgLnRvb2xiYXIgLml0ZW0uYnV0dG9uLAorICAg
IC50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl0geworICAgICAgICBi
YWNrZ3JvdW5kLWltYWdlOiBub25lOworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1i
dXR0b24tYmFja2dyb3VuZC1jb2xvcik7CisgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYnV0
dG9uLWJhY2tncm91bmQtY29sb3IpOworICAgICAgICBib3JkZXItdG9wLWNvbG9yOiBoc2xhKDAs
IDEwMCUsIDEwMCUsIDAuMik7CisgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CisgICAgfQorCisg
ICAgLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSB7CisgICAgICAg
IGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuc2VhcmNo
LWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdOmZvY3VzIHsKKyAgICAgICAgY29sb3I6IHZhcigt
LXRleHQtY29sb3ItYWN0aXZlKTsKKworICAgICAgICAvKiBGSVhNRTogVXNlIG5hdGl2ZSBvdXRs
aW5lIGZvciB0aGUgZGVmYXVsdCB0aGVtZSBhcyB3ZWxsLiAqLworICAgICAgICBib3gtc2hhZG93
OiB1bnNldDsKKyAgICAgICAgdHJhbnNpdGlvbjogdW5zZXQ7CisgICAgICAgIG91dGxpbmU6IC13
ZWJraXQtZm9jdXMtcmluZy1jb2xvciBhdXRvIDVweDsKKyAgICAgICAgb3V0bGluZS1vZmZzZXQ6
IC0zcHg7CisgICAgfQorCisgICAgLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJz
ZWFyY2giXTo6cGxhY2Vob2xkZXIgeworICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvci1z
ZWNvbmRhcnkpOworICAgIH0KKworICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5z
ZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl06OnBsYWNlaG9sZGVyIHsKKyAgICAgICAg
Y29sb3I6IHZhcigtLXRleHQtY29sb3ItdGVydGlhcnkpOworICAgIH0KKworICAgIGJvZHkud2lu
ZG93LWluYWN0aXZlIC50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl06
Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIHsKKyAgICAgICAgLyogU2V0dGluZyBgY29s
b3JgIGhhcyBubyBlZmZlY3Qgb24gdGhlIG1hZ25pZnlpbmcgZ2xhc3MgaWNvbi4gKi8KKyAgICAg
ICAgb3BhY2l0eTogMC41OworICAgIH0KKworICAgIC50b29sYmFyIC5kYXNoYm9hcmQtY29udGFp
bmVyIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogdmFyKC0tZGFzaGJvYXJkLWJhY2tncm91bmQtY29sb3IpOworICAgICAgICBib3Jk
ZXItY29sb3I6IHZhcigtLWRhc2hib2FyZC1iYWNrZ3JvdW5kLWNvbG9yKTsKKyAgICAgICAgYm9y
ZGVyLXRvcC1jb2xvcjogaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjEpOworICAgICAgICBib3gtc2hh
ZG93OiBub25lOworICAgIH0KKworICAgIC50b29sYmFyIC5pdGVtLmJ1dHRvbjphY3RpdmUgewor
ICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworICAgICAgICBib3JkZXItdG9wLWNvbG9y
OiBoc2xhKDAsIDEwMCUsIDEwMCUsIDAuMik7CisgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7Cisg
ICAgfQorCisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLml0ZW0uYnV0dG9uLAor
ICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlw
ZT0ic2VhcmNoIl0sCisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLmRhc2hib2Fy
ZC1jb250YWluZXIgeworICAgICAgICBvcGFjaXR5OiAxOworICAgICAgICBjb2xvcjogdmFyKC0t
Z2x5cGgtY29sb3IpOworICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OworICAgICAg
ICBib3JkZXItdG9wLWNvbG9yOiBoc2xhKDAsIDEwMCUsIDEwMCUsIDAuMSk7CisgICAgICAgIGJh
Y2tncm91bmQtaW1hZ2U6IG5vbmU7CisgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1i
YWNrZ3JvdW5kLWNvbG9yLWluYWN0aXZlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZDdlN2UxMjIwMWRmYjdjYzYyZWQ5MjdkZTY5NTMzN2RlZDU3NGE1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwpA
QCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuVG9vbGJhciA9IGNsYXNzIFRv
b2xiYXIgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uQmFyCit7CisgICAgY29uc3RydWN0b3IoZWxlbWVu
dCkKKyAgICB7CisgICAgICAgIHN1cGVyKGVsZW1lbnQsIG51bGwsICJ0b29sYmFyIik7CisKKyAg
ICAgICAgdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUg
PSBXSS5Ub29sYmFyLkNvbnRyb2xTZWN0aW9uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQpOworCisgICAg
ICAgIHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV0kuVG9v
bGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV0kuVG9vbGJhci5MZWZ0SXRl
bVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fY2VudGVyTGVmdFNl
Y3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRo
aXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXSS5Ub29sYmFyLkl0ZW1T
ZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXSS5Ub29sYmFyLkNlbnRlckxlZnRJdGVtU2Vj
dGlvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50KTsKKworICAgICAgICB0aGlzLl9jZW50ZXJTZWN0
aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlz
Ll9jZW50ZXJTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXSS5Ub29sYmFyLkl0ZW1TZWN0aW9u
U3R5bGVDbGFzc05hbWUgKyAiICIgKyBXSS5Ub29sYmFyLkNlbnRlckl0ZW1TZWN0aW9uU3R5bGVD
bGFzc05hbWU7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJT
ZWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jZW50ZXJS
aWdodFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdJLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHls
ZUNsYXNzTmFtZSArICIgIiArIFdJLlRvb2xiYXIuQ2VudGVyUmlnaHRJdGVtU2VjdGlvblN0eWxl
Q2xhc3NOYW1lOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVy
UmlnaHRTZWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9yaWdodFNl
Y3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdJLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNz
TmFtZSArICIgIiArIFdJLlRvb2xiYXIuUmlnaHRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVu
dCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBhZGRUb29sYmFySXRlbSh0b29sYmFy
SXRlbSwgc2VjdGlvbklkZW50aWZpZXIpCisgICAgeworICAgICAgICB2YXIgc2VjdGlvbkVsZW1l
bnQ7CisKKyAgICAgICAgc3dpdGNoIChzZWN0aW9uSWRlbnRpZmllcikgeworICAgICAgICBjYXNl
IFdJLlRvb2xiYXIuU2VjdGlvbi5Db250cm9sOgorICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQg
PSB0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIFdJLlRvb2xiYXIuU2VjdGlvbi5MZWZ0OgorICAgICAgICAgICAgc2VjdGlvbkVs
ZW1lbnQgPSB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIFdJLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXJMZWZ0OgorICAgICAgICAgICAg
c2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQ7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNlIFdJLlRvb2xiYXIu
U2VjdGlvbi5DZW50ZXI6CisgICAgICAgICAgICBzZWN0aW9uRWxlbWVudCA9IHRoaXMuX2NlbnRl
clNlY3Rpb25FbGVtZW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5U
b29sYmFyLlNlY3Rpb24uQ2VudGVyUmlnaHQ6CisgICAgICAgICAgICBzZWN0aW9uRWxlbWVudCA9
IHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIFdJLlRvb2xiYXIuU2VjdGlvbi5SaWdodDoKKyAgICAgICAgICAgIHNlY3Rp
b25FbGVtZW50ID0gdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc2VjdGlvbkVsZW1lbnQpOwor
CisgICAgICAgIHRoaXMuYWRkTmF2aWdhdGlvbkl0ZW0odG9vbGJhckl0ZW0sIHNlY3Rpb25FbGVt
ZW50KTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGxheW91dCgpCisgICAgewor
ICAgICAgICAvLyBCYWlsIGVhcmx5IGlmIG91ciBzZWN0aW9ucyBhcmUgbm90IGNyZWF0ZWQgeWV0
LiBUaGlzIG1lYW5zIHdlIGFyZSBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0cnVjdGlvbi4KKyAg
ICAgICAgaWYgKCF0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQgfHwgIXRoaXMuX2NlbnRlclNlY3Rp
b25FbGVtZW50IHx8ICF0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50KQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIC8vIEZvcmNlIGNvbGxhcHNlZCBzdHlsZSBmb3Igbm9uLVdlYiBkZWJ1
Z2dhYmxlcy4KKyAgICAgICAgaWYgKCFXSS5zaGFyZWRBcHAuaXNXZWJEZWJ1Z2dhYmxlKCkpIHsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLk5hdmlnYXRpb25CYXIu
Q29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb2xsYXBzZWQgc3R5bGUgY2xhc3MgdG8gdGVzdCBp
ZiB0aGUgaXRlbXMgY2FuIGZpdCBhdCBmdWxsIHdpZHRoLgorICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXSS5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1l
KTsKKworICAgICAgICBmdW5jdGlvbiBpc092ZXJmbG93aW5nVG9vbGJhcigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBjb250cm9sU2VjdGlvbldpZHRoID0gdGhpcy5fY29udHJvbFNlY3Rp
b25FbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKyAgICAgICAgICAgIHZhciBsZWZ0U2VjdGlvbldp
ZHRoID0gdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBjZW50ZXJMZWZ0U2VjdGlvbldpZHRoID0gdGhpcy5fY2VudGVyTGVmdFNlY3Rpb25F
bGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKyAgICAgICAgICAgIHZhciBjZW50ZXJTZWN0aW9uV2lk
dGggPSB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAg
ICAgICB2YXIgY2VudGVyUmlnaHRTZWN0aW9uV2lkdGggPSB0aGlzLl9jZW50ZXJSaWdodFNlY3Rp
b25FbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKyAgICAgICAgICAgIHZhciByaWdodFNlY3Rpb25X
aWR0aCA9IHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQucmVhbE9mZnNldFdpZHRoOworCisgICAg
ICAgICAgICB2YXIgdG9vbGJhcldpZHRoID0gTWF0aC5yb3VuZCh0aGlzLmVsZW1lbnQucmVhbE9m
ZnNldFdpZHRoKTsKKyAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKGNvbnRyb2xTZWN0aW9u
V2lkdGggKyBsZWZ0U2VjdGlvbldpZHRoICsgY2VudGVyTGVmdFNlY3Rpb25XaWR0aCArIGNlbnRl
clNlY3Rpb25XaWR0aCArIGNlbnRlclJpZ2h0U2VjdGlvbldpZHRoICsgcmlnaHRTZWN0aW9uV2lk
dGgpID4gdG9vbGJhcldpZHRoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpc092ZXJmbG93
aW5nVG9vbGJhci5jYWxsKHRoaXMpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVD
bGFzc05hbWUpOworICAgIH0KK307CisKK1dJLlRvb2xiYXIuU3R5bGVDbGFzc05hbWUgPSAidG9v
bGJhciI7CitXSS5Ub29sYmFyLkNvbnRyb2xTZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiY29udHJv
bC1zZWN0aW9uIjsKK1dJLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJpdGVt
LXNlY3Rpb24iOworV0kuVG9vbGJhci5MZWZ0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJs
ZWZ0IjsKK1dJLlRvb2xiYXIuQ2VudGVyTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAi
Y2VudGVyLWxlZnQiOworV0kuVG9vbGJhci5DZW50ZXJJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1l
ID0gImNlbnRlciI7CitXSS5Ub29sYmFyLkNlbnRlclJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNz
TmFtZSA9ICJjZW50ZXItcmlnaHQiOworV0kuVG9vbGJhci5SaWdodEl0ZW1TZWN0aW9uU3R5bGVD
bGFzc05hbWUgPSAicmlnaHQiOworCitXSS5Ub29sYmFyLlNlY3Rpb24gPSB7CisgICAgQ29udHJv
bDogImNvbnRyb2wiLAorICAgIExlZnQ6ICJsZWZ0IiwKKyAgICBDZW50ZXJMZWZ0OiAiY2VudGVy
LWxlZnQiLAorICAgIENlbnRlcjogImNlbnRlciIsCisgICAgQ2VudGVyUmlnaHQ6ICJjZW50ZXIt
cmlnaHQiLAorICAgIFJpZ2h0OiAicmlnaHQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmFyaWFibGVzLmNzcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZhcmlhYmxlcy5jc3MKaW5kZXggNGEzMDhl
ZWU3MmMwMTM5M2M3ZDIwNjE0YTc3ZmQ2ZmZhMjkwNTRhZS4uMjU5NzIzZGY5N2Q1ZTRmZDY1ZmU3
NjMyNGJhZTA1ZTM4ZDA2MWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmFyaWFibGVzLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WYXJpYWJsZXMuY3NzCkBAIC0xNjIsOCArMTYyLDYgQEAK
ICAgICAtLWNwdS1tZWRpdW0tY29sb3I6IGhzbCg0NiwgOTElLCA2MiUpOwogICAgIC0tY3B1LWhp
Z2gtY29sb3I6IGhzbCg2LCA3OSUsIDU3JSk7CiAKLSAgICAtLW5ldHdvcmstc3RhdGlzdGljcy1o
ZWlnaHQ6IHZhcigtLW5hdmlnYXRpb24tYmFyLWhlaWdodCk7Ci0KICAgICAtLW5ldHdvcmstaGVh
ZGVyLWNvbG9yOiBoc2woMjA0LCA1MiUsIDU1JSk7CiAgICAgLS1uZXR3b3JrLXN5c3RlbS1jb2xv
cjogaHNsKDc5LCAzMiUsIDUwJSk7CiAgICAgLS1uZXR3b3JrLXBzZXVkby1oZWFkZXItY29sb3I6
IGhzbCgzMTIsIDM1JSwgNTElKTsKQEAgLTE4MSw5ICsxNzksOCBAQAogICAgIC0tb2RkLXplYnJh
LXN0cmlwZS1yb3ctYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICAgLS10cmFuc3BhcmVudC1z
dHJpcGUtYmFja2dyb3VuZC1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJh
bnNwYXJlbnQsIHRyYW5zcGFyZW50IDUwJSwgaHNsYSgwLCAwJSwgMCUsIDAuMDMpIDUwJSwgaHNs
YSgwLCAwJSwgMCUsIDAuMDMpKSB0b3AgbGVmdCAvIDEwMCUgNDBweDsKIAotICAgIC0tdW5kb2Nr
ZWQtdGl0bGUtYXJlYS1oZWlnaHQ6IDBweDsKLSAgICAtLXRhYi1iYXItaGVpZ2h0OiB2YXIoLS1u
YXZpZ2F0aW9uLWJhci1oZWlnaHQpOwotCisgICAgLS10b29sYmFyLWhlaWdodDogMzZweDsKKyAg
ICAtLXRhYi1iYXItaGVpZ2h0OiAyNHB4OwogICAgIC0tbmF2aWdhdGlvbi1iYXItaGVpZ2h0OiAy
OXB4OwogCiAgICAgLS1zbGlkZXItd2lkdGg6IDExcHg7CkBAIC0xOTgsNyArMTk1LDcgQEAKICAg
ICAtLWRpZmYtYWRkaXRpb24tYm9yZGVyLWNvbG9yOiBoc2woOTAsIDEwMCUsIDQwJSk7CiB9CiAK
LWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkg
eworYm9keS53aW5kb3ctaW5hY3RpdmUgewogICAgIC8qIEZJWE1FOiBVc2UgQ1NTNCBjb2xvciBi
bGVuZCBmdW5jdGlvbnMgb25jZSB0aGV5J3JlIGF2YWlsYWJsZS4gKi8KICAgICAtLXNlbGVjdGVk
LWJhY2tncm91bmQtY29sb3I6IGhzbGEoMjEyLCA5MiUsIDU0JSwgMC41KTsKIApAQCAtMjA3LDE1
ICsyMDQsMTEgQEAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2Vk
LWluYWN0aXZlKSB7CiAgICAgLS1nbHlwaC1vcGFjaXR5OiAwLjY7CiB9CiAKLWJvZHk6bWF0Y2hl
cygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgKiB7Citib2R5Lndp
bmRvdy1pbmFjdGl2ZSAqIHsKICAgICAtLWJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCA4NSUpOwog
ICAgIC0tYm9yZGVyLWNvbG9yLWRhcms6IGhzbCgwLCAwJSwgNzIlKTsKIH0KIAotYm9keS5tYWMt
cGxhdGZvcm06bm90KC5kb2NrZWQpIHsKLSAgICAtLXVuZG9ja2VkLXRpdGxlLWFyZWEtaGVpZ2h0
OiBjYWxjKDIycHggLyB2YXIoLS16b29tLWZhY3RvcikpOwotfQotCiBAbWVkaWEgKHByZWZlcnMt
Y29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgOnJvb3QgewogICAgICAgICBjb2xvcjogdmFyKC0t
dGV4dC1jb2xvcik7CkBAIC0yNzcsNiArMjcwLDggQEAgYm9keS5tYWMtcGxhdGZvcm06bm90KC5k
b2NrZWQpIHsKICAgICAgICAgLS1idXR0b24tYmFja2dyb3VuZC1jb2xvci1wcmVzc2VkOiBoc2wo
MCwgMCUsIDU1JSk7CiAgICAgICAgIC0tYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaW5hY3RpdmU6
IGhzbCgwLCAwJSwgMjglKTsKIAorICAgICAgICAtLWRhc2hib2FyZC1iYWNrZ3JvdW5kLWNvbG9y
OiBoc2woMCwgMCUsIDM2JSk7CisKICAgICAgICAgLS1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yOiBo
c2woMCwgMCUsIDI0JSk7CiAgICAgICAgIC0tcGFuZWwtYmFja2dyb3VuZC1jb2xvci1saWdodDog
aHNsKDAsIDAlLCAyOSUpOwogCkBAIC0zNDksMTYgKzM0NCwxNiBAQCBib2R5Lm1hYy1wbGF0Zm9y
bTpub3QoLmRvY2tlZCkgewogICAgICAgICAtLWRpZmYtZGVsZXRpb24tYmFja2dyb3VuZC1jb2xv
cjogaHNsKDUsIDQwJSwgMjglKTsKICAgICB9CiAKLSAgICBib2R5Om1hdGNoZXMoLndpbmRvdy1p
bmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIHsKKyAgICBib2R5LndpbmRvdy1pbmFj
dGl2ZSB7CiAgICAgICAgIC0tc2VsZWN0ZWQtYmFja2dyb3VuZC1jb2xvcjogaHNsYSgyMTIsIDky
JSwgNjQlLCAwLjUpOwogCiAgICAgICAgIC0tZ2x5cGgtY29sb3I6IGhzbCgwLCAwJSwgNTIlKTsK
ICAgICAgICAgLS1nbHlwaC1jb2xvci1kaXNhYmxlZDogaHNsYSgwLCAwJSwgNTIlLCAwLjQpOwog
ICAgIH0KIAotICAgIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tl
ZC1pbmFjdGl2ZSkgKiB7CisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgKiB7CiAgICAgICAgIC8q
IFRoZXNlIHByb3BlcnRpZXMgYXJlIGR1cGxpY2F0ZWQgc28gdGhhdCB0aGV5IGhhdmUgaGlnaGVy
IHNwZWNpZmljaXR5IHRoYW4gV2ViS2l0J3Mgc3R5bGVzaGVldC4KLSAgICAgICAgT3RoZXJ3aXNl
LCB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbiBpbnNpZGUgJ2JvZHk6bWF0Y2hlcygud2luZG93LWlu
YWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgKicgaW4gT3BlblNvdXJjZSBvdmVycmlk
ZXMgd2l0aCBhIGxpZ2h0ZXIgY29sb3IuCisgICAgICAgIE90aGVyd2lzZSwgdGhlIHZhcmlhYmxl
IGRlZmluaXRpb24gaW5zaWRlICdib2R5LndpbmRvdy1pbmFjdGl2ZSAqJyBpbiBPcGVuU291cmNl
IG92ZXJyaWRlcyB3aXRoIGEgbGlnaHRlciBjb2xvci4KICAgICAgICAgV2hlbiBtZXJnaW5nIHRv
IG9wZW4gc291cmNlLCB3ZSBzaG91bGQgZ3VhcmQgdGhlIGV4aXN0aW5nIC53aW5kb3ctaW5hY3Rp
dmUgc3R5bGUgd2l0aAogICAgICAgICAnQG1lZGlhIG5vdCBhbGwnIHRvIGF2b2lkIGFwcGx5aW5n
IHRoZSBkZWZpbml0aW9uIHRvbyBicm9hZGx5LiAqLwogICAgICAgICAtLWJvcmRlci1jb2xvcjog
aHNsKDAsIDAlLCAzMyUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggODAxMzU2MzgyZjg4OGMyMjRiMWY3Mjk5NjZhMzRi
MDA1MmEwYmYxNy4uZTliYjY2MDcyZjFjYzJmN2IzNDYyOTFkZTE2YzI2MTI1MTU1ZjBiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwCkBAIC0xNzIsMTcgKzE3MiwxNyBAQCBlbnVtIHsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVRv
cExldmVsRG9tYWlucyA9ICJDUkVBVEUgVEFCTEUgVG9wTGV2ZWxEb21haW5zICgiCiAgICAgInRv
cExldmVsRG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtFWSwgQ09OU1RSQUlOVCBma0RvbWFpbklE
IEZPUkVJR04gS0VZKHRvcExldmVsRG9tYWluSUQpICIKICAgICAiUkVGRVJFTkNFUyBPYnNlcnZl
ZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKTsiX3M7Ci0gICAgCisKIGNvbnN0
ZXhwciBhdXRvIGNyZWF0ZVN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyA9ICJDUkVB
VEUgVEFCTEUgU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zICgiCiAgICAgImRvbWFp
bklEIElOVEVHRVIgTk9UIE5VTEwsIHRvcExldmVsRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMLCAiCiAgICAgIkNPTlNUUkFJTlQgZmtEb21haW5JRCBGT1JFSUdOIEtF
WShkb21haW5JRCkgUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVU
RSBDQVNDQURFLCAiCiAgICAgIkZPUkVJR04gS0VZKHRvcExldmVsRG9tYWluSUQpIFJFRkVSRU5D
RVMgVG9wTGV2ZWxEb21haW5zKHRvcExldmVsRG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKTsi
X3M7Ci0gICAgCisKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG8gPSAiQ1JFQVRFIFRBQkxFIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gKCIKICAgICAic291
cmNlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgdG9Eb21haW5JRCBJTlRFR0VSIE5PVCBOVUxM
LCAiCiAgICAgIkZPUkVJR04gS0VZKHNvdXJjZURvbWFpbklEKSBSRUZFUkVOQ0VTIFRvcExldmVs
RG9tYWlucyh0b3BMZXZlbERvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSwgIgogICAgICJGT1JF
SUdOIEtFWSh0b0RvbWFpbklEKSBSRUZFUkVOQ0VTIFRvcExldmVsRG9tYWlucyh0b3BMZXZlbERv
bWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSk7Il9zOwotICAgIAorCiBjb25zdGV4cHIgYXV0byBj
cmVhdGVUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20gPSAiQ1JFQVRFIFRBQkxFIFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzRnJvbSAoIgogICAgICJ0YXJnZXREb21haW5JRCBJTlRFR0VSIE5PVCBO
VUxMLCBmcm9tRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgIgogICAgICJGT1JFSUdOIEtFWSh0
YXJnZXREb21haW5JRCkgUkVGRVJFTkNFUyBUb3BMZXZlbERvbWFpbnModG9wTGV2ZWxEb21haW5J
RCkgT04gREVMRVRFIENBU0NBREUsICIKQEAgLTIwMiwxNyArMjAyLDE3IEBAIGNvbnN0ZXhwciBh
dXRvIGNyZWF0ZVN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgPSAiQ1JFQVRFIFRBQkxFIFN1
YmZyYW1lVW5kZXJUCiAgICAgInN1YkZyYW1lRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgbGFz
dFVwZGF0ZWQgUkVBTCBOT1QgTlVMTCwgdG9wRnJhbWVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxM
LCAiCiAgICAgIkZPUkVJR04gS0VZKHN1YkZyYW1lRG9tYWluSUQpIFJFRkVSRU5DRVMgT2JzZXJ2
ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSwgIgogICAgICJGT1JFSUdOIEtF
WSh0b3BGcmFtZURvbWFpbklEKSBSRUZFUkVOQ0VTIFRvcExldmVsRG9tYWlucyh0b3BMZXZlbERv
bWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSk7Il9zOwotICAgIAorCiBjb25zdGV4cHIgYXV0byBj
cmVhdGVTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zID0gIkNSRUFURSBUQUJMRSBTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zICgiCiAgICAgInN1YnJlc291cmNlRG9tYWluSUQg
SU5URUdFUiBOT1QgTlVMTCwgbGFzdFVwZGF0ZWQgUkVBTCBOT1QgTlVMTCwgdG9wRnJhbWVEb21h
aW5JRCBJTlRFR0VSIE5PVCBOVUxMLCAiCiAgICAgIkZPUkVJR04gS0VZKHN1YnJlc291cmNlRG9t
YWluSUQpIFJFRkVSRU5DRVMgT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FT
Q0FERSwgIgogICAgICJGT1JFSUdOIEtFWSh0b3BGcmFtZURvbWFpbklEKSBSRUZFUkVOQ0VTIFRv
cExldmVsRG9tYWlucyh0b3BMZXZlbERvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSk7Il9zOwot
ICAgIAorCiBjb25zdGV4cHIgYXV0byBjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
ID0gIkNSRUFURSBUQUJMRSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvICgiCiAgICAgInN1
YnJlc291cmNlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgbGFzdFVwZGF0ZWQgUkVBTCBOT1Qg
TlVMTCwgdG9Eb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCAiCiAgICAgIkZPUkVJR04gS0VZKHN1
YnJlc291cmNlRG9tYWluSUQpIFJFRkVSRU5DRVMgT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBP
TiBERUxFVEUgQ0FTQ0FERSwgIgogICAgICJGT1JFSUdOIEtFWSh0b0RvbWFpbklEKSBSRUZFUkVO
Q0VTIE9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpOyJfczsKLSAg
ICAKKwogY29uc3RleHByIGF1dG8gY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
ID0gIkNSRUFURSBUQUJMRSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gKCIKICAgICAi
c3VicmVzb3VyY2VEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBmcm9tRG9tYWluSUQgSU5URUdF
UiBOT1QgTlVMTCwgIgogICAgICJGT1JFSUdOIEtFWShzdWJyZXNvdXJjZURvbWFpbklEKSBSRUZF
UkVOQ0VTIE9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUsICIKQEAg
LTI4MCw3ICsyODAsNyBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzbwogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCiAgICAgb3BlbkFuZERyb3BPbGREYXRhYmFzZUlmTmVjZXNzYXJ5
KCk7Ci0gICAgCisKICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJRdWV1ZSwgdGhl
IHNlcXVlbnRpYWwgZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlmZmVyZW50IHRo
cmVhZHMuCiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAKQEAgLTI5
MSw3ICsyOTEsNyBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzbwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFtX2RhdGFiYXNlLnR1cm5Pbklu
Y3JlbWVudGFsQXV0b1ZhY3V1bSgpKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3Jr
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dHVybk9uSW5jcmVt
ZW50YWxBdXRvVmFjdXVtIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogCkBAIC0zOTYsMTQgKzM5NiwxNCBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuQW5kRHJvcE9sZERhdGFi
YXNlSWZOZWNlc3NhcnkoKQogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgCisKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGlmIChtX29ic2VydmVkRG9tYWlu
Q291bnQuc3RlcCgpID09IFNRTElURV9ST1cpCiAgICAgICAgIHJlc3VsdCA9ICFtX29ic2VydmVk
RG9tYWluQ291bnQuZ2V0Q29sdW1uSW50KDApOwotICAgIAorCiAgICAgaW50IHJlc2V0UmVzdWx0
ID0gbV9vYnNlcnZlZERvbWFpbkNvdW50LnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNl
dFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKLSAgICAKKwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTQ1NywxMiArNDU3LDEyIEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVtYSgpCiAgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IGNyZWF0ZSBUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20gdGFibGUgaW4gZGF0YWJh
c2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBpZiAo
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5
U2NyaXB0cykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFRvcEZyYW1l
TG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9k
YXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0
ZUNvbW1hbmQoY3JlYXRlU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucykpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMg
dGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ4Miw3
ICs0ODIsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVh
dGVTY2hlbWEoKQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNGcm9tIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fZGF0
YWJhc2UubGFzdEVycm9yKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFjcmVhdGVVbmlxdWVJbmRpY2Vz
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDkyLDcgKzQ5Miw3IEBAIGJvb2wgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVtYSgpCiBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50cygpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIAorCiAgICAgaWYgKG1f
b2JzZXJ2ZWREb21haW5Db3VudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1f
aW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAg
ICAgICB8fCBtX2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0sKQEAgLTU3NSw3ICs1NzUsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMoV2ViQ29yZTo6U1FMaXRlU3RhdAogewogICAg
IGlmICghZmlyc3REb21haW5JRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoc3RhdGVtZW50LmJpbmRJbnQo
MSwgKmZpcnN0RG9tYWluSUQpICE9IFNRTElURV9PSwpAQCAtNTg5LDcgKzU4OSw3IEBAIGJvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyhX
ZWJDb3JlOjpTUUxpdGVTdGF0CiAKICAgICBpbnQgcmVzZXRSZXN1bHQgPSBzdGF0ZW1lbnQucmVz
ZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJ
VEVfT0spOwotICAgIAorCiAgICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0czsKIH0KIApAQCAt
NjA3LDcgKzYwNyw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Omluc2VydERvbWFpblJlbGF0aW9uc2hpcChXZWJDb3JlOjpTUUxpCiAKICAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBzdGF0ZW1lbnQucmVzZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0
LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTYyMSw3ICs2MjEsNyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYgogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURGcm9tU3RyaW5nIGZhaWxlZCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9Ci0gICAgCisKICAgICBpZiAo
bV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAg
ICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQucmVz
ZXQoKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0g
U1FMSVRFX09LKTsKQEAgLTYzMiwxOSArNjMyLDE5IEBAIE9wdGlvbmFsPHVuc2lnbmVkPiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQoY29uc3QgUmVnaXN0cmFi
CiAKICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5y
ZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNR
TElURV9PSyk7Ci0gICAgCisKICAgICByZXR1cm4gZG9tYWluSUQ7CiB9CiAKIFN0cmluZyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlQW5kTWFrZURvbWFpbkxpc3Qo
Y29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbkxpc3QpCiB7CiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotICAgIAorCiAgICAgZm9yIChhdXRvJiB0b3BGcmFtZVJlc291
cmNlIDogZG9tYWluTGlzdCkgewotICAgICAgICAKKwogICAgICAgICAvLyBJbnNlcnQgcXVlcnkg
d2lsbCBmYWlsIGlmIHRvcCBmcmFtZSBkb21haW4gaXMgbm90IGFscmVhZHkgaW4gdGhlIGRhdGFi
YXNlCiAgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KHRvcEZyYW1lUmVzb3VyY2UpOwotICAgICAgICAKKwogICAgICAgICBpZiAoIWJ1aWxkZXIuaXNF
bXB0eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnIicpOwpAQCAtNjU4LDEzICs2NTgsMTMgQEAgU3RyaW5nIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVBbmRNYWtlRG9tYWluTGlzdChj
b25zdCBIYXNoU2UKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omlu
c2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QoY29uc3QgU3RyaW5nJiBzdGF0ZW1lbnQsIGNvbnN0
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5MaXN0LCB1bnNpZ25lZCBkb21haW5J
RCkKIHsKICAgICBTUUxpdGVTdGF0ZW1lbnQgaW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50KG1f
ZGF0YWJhc2UsIG1ha2VTdHJpbmcoc3RhdGVtZW50LCBlbnN1cmVBbmRNYWtlRG9tYWluTGlzdChk
b21haW5MaXN0KSwgIiApOyIpKTsKLSAgICAKKwogICAgIGlmIChpbnNlcnRSZWxhdGlvbnNoaXBT
dGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBpbnNlcnRSZWxhdGlv
bnNoaXBTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25z
aGlwTGlzdCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9Ci0gICAgCisKICAgICBpZiAoc3RhdGVtZW50LmNvbnRhaW5zKCJSRVBMQUNFIikpIHsK
ICAgICAgICAgaWYgKGluc2VydFJlbGF0aW9uc2hpcFN0YXRlbWVudC5iaW5kRG91YmxlKDIsIFdh
bGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSykg
ewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJl
bGF0aW9uc2hpcExpc3QgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwpAQCAtNjg0LDcgKzY4NCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hp
cHMoY29uc3QgUmVzb3VyCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
YXV0byByZWdpc3RyYWJsZURvbWFpbklEID0gZG9tYWluSUQobG9hZFN0YXRpc3RpY3MucmVnaXN0
cmFibGVEb21haW4pOwotICAgIAorCiAgICAgaWYgKCFyZWdpc3RyYWJsZURvbWFpbklEKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTc4NywyNCArNzg3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGEKIAogc3RhdGljIGNvbnN0IFN0cmluZ1ZpZXcgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5n
KCkKIHsKLSAgICByZXR1cm4gUiJxdWVyeSgKLSAgICAgICAgZG9tYWluSUQsCi0gICAgICAgIChj
b3VudFN1YkZyYW1lVW5kZXJUb3BGcmFtZSArIGNvdW50U3ViUmVzb3VyY2VVbmRlclRvcEZyYW1l
ICsgY291bnRVbmlxdWVSZWRpcmVjdFRvKSBhcyBzdW0KLSAgICAgICAgRlJPTSAoCi0gICAgICAg
IFNFTEVDVAotICAgICAgICAgICAgZG9tYWluSUQsCi0gICAgICAgICAgICBDT1VOVChESVNUSU5D
VCBmLnRvcEZyYW1lRG9tYWluSUQpIGFzIGNvdW50U3ViRnJhbWVVbmRlclRvcEZyYW1lLAotICAg
ICAgICAgICAgQ09VTlQoRElTVElOQ1Qgci50b3BGcmFtZURvbWFpbklEKSBhcyBjb3VudFN1YlJl
c291cmNlVW5kZXJUb3BGcmFtZSwKLSAgICAgICAgICAgIENPVU5UKERJU1RJTkNUIHRvRG9tYWlu
SUQpIGFzIGNvdW50VW5pcXVlUmVkaXJlY3RUbwotICAgICAgICBGUk9NCi0gICAgICAgIE9ic2Vy
dmVkRG9tYWlucyBvCi0gICAgICAgIExFRlQgSk9JTiBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21h
aW5zIGYgT04gby5kb21haW5JRCA9IGYuc3ViRnJhbWVEb21haW5JRAotICAgICAgICBMRUZUIEpP
SU4gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyByIE9OIG8uZG9tYWluSUQgPSByLnN1
YnJlc291cmNlRG9tYWluSUQKLSAgICAgICAgTEVGVCBKT0lOIFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8gdSBPTiBvLmRvbWFpbklEID0gdS5zdWJyZXNvdXJjZURvbWFpbklECi0gICAgICAg
IFdIRVJFIGlzUHJldmFsZW50IExJS0UgPwotICAgICAgICBhbmQgaGFkVXNlckludGVyYWN0aW9u
IExJS0UgPwotICAgICAgICBHUk9VUCBCWSBkb21haW5JRCkgT1JERVIgQlkgc3VtIERFU0MKLSAg
ICAgICAgKXF1ZXJ5IjsKKyAgICByZXR1cm4gIiI7CiB9CiAKIHN0YXRpYyBTUUxpdGVTdGF0ZW1l
bnQgbWFrZU1lZGlhbldpdGhVSVF1ZXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKQEAgLTk3
MSwxNCArOTU0LDE0IEBAIHVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVCiB1bnNpZ25lZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VG9wUHJldmVsZW50UmVzb3VyY2VEYXlz
U2luY2VVSSgpIGNvbnN0CiB7CiAgICAgU1FMaXRlU3RhdGVtZW50IHRvcFByZXZhbGVudFJlc291
cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCht
X2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJTRUxFQ1QgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRp
bWUgRlJPTSBPYnNlcnZlZERvbWFpbnMgSU5ORVIgSk9JTiAoU0VMRUNUICIsIGpvaW5TdWJTdGF0
aXN0aWNzRm9yU29ydGluZygpLCAiIExJTUlUIDEpIGFzIHEgT04gT2JzZXJ2ZWREb21haW5zLmRv
bWFpbklEID0gcS5kb21haW5JRDsiKSk7Ci0gICAgCisKICAgICAvLyBQcmVwYXJlCiAgICAgaWYg
KHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRl
cmFjdGlvblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6dG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlcklu
dGVyYWN0aW9uU3RhdGVtZW50IHF1ZXJ5IGZhaWxlZCB0byBwcmVwYXJlLCBlcnJvciBtZXNzYWdl
OiAle3B1YmxpY31zIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgCisKICAgICAv
LyBCaW5kCiAgICAgaWYgKHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRh
eXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNRTElURV9P
SwogICAgICAgICB8fCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlz
U2luY2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmluZEludCgyLCAxKSAhPSBTUUxJVEVfT0sp
IHsKQEAgLTk4NiwxNiArOTY5LDE2IEBAIHVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpnZXRUb3BQcmV2ZWxlbnRSZXNvdXJjZURheXNTaW5jZVVJCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgCisK
ICAgICAvLyBTdGVwCiAgICAgaWYgKHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFj
dGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JP
VykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFj
dGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCBxdWVyeSBmYWlsZWQgdG8gc3Rl
cCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgCisKICAgICBkb3VibGUgcmF3U2Vjb25k
cyA9IHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoMCk7CiAgICAgV2FsbFRpbWUgd2Fs
bFRpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMocmF3U2Vjb25kcyk7Ci0gICAgCisKICAg
ICByZXR1cm4gd2FsbFRpbWUgPD0gV2FsbFRpbWUoKSA/IDAgOiBzdGQ6OmZsb29yKChXYWxsVGlt
ZTo6bm93KCkgLSB3YWxsVGltZSkgLyAyNF9oKTsKIH0KIApAQCAtMTE1Myw3ICsxMTM2LDcgQEAg
dW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5
RmluZE5vblByZXZhbGVudERvbWFpbnMKICAgICAgICAgUkVMRUFTRV9MT0coUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcywgIkhpdCAldSByZWN1cnNpdmUgY2FsbHMgaW4gcmVkaXJlY3QgYmFja3RyYWNl
LiBSZXR1cm5pbmcgZWFybHkuIiwgbWF4TnVtYmVyT2ZSZWN1cnNpdmVDYWxsc0luUmVkaXJlY3RU
cmFjZUJhY2spOwogICAgICAgICByZXR1cm4gbnVtYmVyT2ZSZWN1cnNpdmVDYWxsczsKICAgICB9
Ci0gICAgCisKICAgICArK251bWJlck9mUmVjdXJzaXZlQ2FsbHM7CiAKICAgICBTdGRTZXQ8dW5z
aWduZWQ+IG5ld2x5SWRlbnRpZmllZERvbWFpbnM7CkBAIC0xMTY0LDcgKzExNDcsNyBAQCB1bnNp
Z25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVjdXJzaXZlbHlGaW5k
Tm9uUHJldmFsZW50RG9tYWlucwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQotICAgIAorCiAgICAgd2hpbGUgKGZpbmRTdWJyZXNvdXJjZXMu
c3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgaW50IG5ld0RvbWFpbklEID0gZmluZFN1
YnJlc291cmNlcy5nZXRDb2x1bW5JbnQoMCk7CiAgICAgICAgIGF1dG8gaW5zZXJ0UmVzdWx0ID0g
bm9uUHJldmFsZW50UmVkaXJlY3Rpb25Tb3VyY2VzLmluc2VydChuZXdEb21haW5JRCk7CkBAIC0x
MTc5LDcgKzExNjIsNyBAQCB1bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6cmVjdXJzaXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWlucwogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIAorCiAgICAgd2hp
bGUgKGZpbmRUb3BGcmFtZXMuc3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgaW50IG5l
d0RvbWFpbklEID0gZmluZFRvcEZyYW1lcy5nZXRDb2x1bW5JbnQoMCk7CiAgICAgICAgIGF1dG8g
aW5zZXJ0UmVzdWx0ID0gbm9uUHJldmFsZW50UmVkaXJlY3Rpb25Tb3VyY2VzLmluc2VydChuZXdE
b21haW5JRCk7CkBAIC0xMzgwLDcgKzEzNjMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmCiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBhdXRvIHN1YkZyYW1lU3RhdHVz
ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oc3ViRnJhbWVE
b21haW4pOwotICAgIAorCiAgICAgc3dpdGNoIChjb29raWVBY2Nlc3Moc3ViRnJhbWVEb21haW4s
IHRvcEZyYW1lRG9tYWluKSkgewogICAgIGNhc2UgQ29va2llQWNjZXNzOjpDYW5ub3RSZXF1ZXN0
OgogICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQ
RGVidWcsICJDYW5ub3QgZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwcml2YXRlfXMgc2luY2Ug
aXRzIGNvb2tpZXMgYXJlIGJsb2NrZWQgaW4gdGhpcmQtcGFydHkgY29udGV4dHMgYW5kIGl0IGhh
cyBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbiBhcyBmaXJzdC1wYXJ0eS4iLCBzdWJGcmFt
ZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTE0MTMsNyArMTM5Niw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1l
SUQsIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkRWFybGllciwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNH
cmFudGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzR3JhbnRlZCA9
PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzID8gU3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFz
QWNjZXNzIDogU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CiAgICAg
fSk7CkBAIC0xNTU4LDcgKzE1NDEsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbgogCiAgICAg
YXV0byB0b0RvbWFpblJlc3VsdCA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHRvRG9tYWluKTsKICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KHRv
cEZyYW1lTGlua0RlY29yYXRpb25zRnJvbVF1ZXJ5LCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
Pih7IGZyb21Eb21haW4gfSksIHRvRG9tYWluUmVzdWx0LnNlY29uZCk7Ci0gICAgCisKICAgICBp
ZiAoaXNQcmV2YWxlbnRSZXNvdXJjZShmcm9tRG9tYWluKSkKICAgICAgICAgc2V0SXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCh0b0RvbWFpbiwgdHJ1ZSk7CiB9CkBAIC0xNjM0
LDcgKzE2MTcsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpo
YXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibAogICAgICAgICBBU1NFUlRfVU5V
U0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobV9oYWRVc2VySW50ZXJhY3Rp
b25TdGF0ZW1lbnQuZ2V0Q29sdW1uRG91YmxlKDEpKTsKIAogICAgIGlmIChoYXNTdGF0aXN0aWNz
RXhwaXJlZChtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgb3BlcmF0aW5nRGF0ZXNXaW5k
b3cpKSB7CkBAIC0xNjQ0LDcgKzE2MjcsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibAogICAg
ICAgICBjbGVhclVzZXJJbnRlcmFjdGlvbihkb21haW4sIFtdIHsgfSk7CiAgICAgICAgIGhhZFVz
ZXJJbnRlcmFjdGlvbiA9IGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIGludCByZXNldFJlc3Vs
dCA9IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnJlc2V0KCk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIApAQCAtMTY2NCw3
ICsxNjQ3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGUKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnJlc2V0KCk7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIApA
QCAtMTczNCw3ICsxNzE3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkgKIGJvb2wgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYgcHJlZGljYXRlU3RhdGVtZW50LCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIAorCiAgICAgaWYgKHByZWRpY2F0ZVN0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21h
aW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBwcmVkaWNhdGVTdGF0ZW1lbnQu
c3RlcCgpICE9IFNRTElURV9ST1cpIHsKIApAQCAtMTc5NywxNCArMTc4MCwxNCBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNl
KGNvbnN0IFJlZ2lzdHJhYgogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAg
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9tYWluKTsKLSAg
ICAKKwogICAgIGlmIChtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuYmluZFRleHQo
MSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9jbGVhclByZXZh
bGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgCisKICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQucmVzZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3Vs
dCA9PSBTUUxJVEVfT0spOwogfQpAQCAtMTgxNCw3ICsxNzk3LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3Ry
YWJsZURvbWEKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbik7Ci0gICAgCisKICAg
ICBpZiAobV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFsdWUpICE9
IFNRTElURV9PSwogICAgICAgICB8fCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQuYmlu
ZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV91cGRh
dGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewpAQCAtMTgy
Miw3ICsxODA1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
c2V0R3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWEKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpbnQgcmVz
ZXRSZXN1bHQgPSBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQucmVzZXQoKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogfQpA
QCAtMTgzMiw3ICsxODE1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3YKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKGRvbWFpbik7Ci0gICAgCisKICAgICBpZiAobV91cGRhdGVJc1NjaGVk
dWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFsdWUp
ICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWxTdGF0ZW1lbnQuYmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgbV91cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURh
dGFSZW1vdmFsU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewpAQCAtMTk1MCw3ICsx
OTMzLDcgQEAgc3RkOjpwYWlyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpB
ZGRlZFJlY29yZCwgdW5zaWduZWQ+IFJlc291cmNlTG8KICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiB7IEFkZGVkUmVjb3JkOjpObywgMCB9OwogICAgIH0KLSAg
ICAKKwogICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5zdGVwKCkgPT0gU1FM
SVRFX1JPVykgewogICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IG1fZG9tYWluSURGcm9tU3Ry
aW5nU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKIApAQCAtMjA0OSwxNSArMjAzMiwxNSBAQCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Omhhc1VzZXJHcmFudGVkUwogVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29r
aWVzRm9yKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAK
KwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gcmVzdWx0czsKICAgICBTUUxpdGVTdGF0
ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJP
TSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgaXNQcmV2YWxlbnQgPSAxIEFORCBoYWRVc2VySW50ZXJh
Y3Rpb24gPSAwIl9zKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sp
CiAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAgIAorCiAgICAgd2hpbGUgKHN0YXRlbWVudC5z
dGVwKCkgPT0gU1FMSVRFX1JPVykKICAgICAgICAgcmVzdWx0cy5hcHBlbmQoUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzdGF0ZW1l
bnQuZ2V0Q29sdW1uVGV4dCgwKSkpOwotICAgIAorCiAgICAgcmV0dXJuIHJlc3VsdHM7CiB9CiAK
QEAgLTIwNjksNyArMjA1Miw3IEBAIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNUb0Jsb2NrQnV0CiAgICAgU1FMaXRl
U3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHJlZ2lzdHJhYmxlRG9tYWlu
IEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGlzUHJldmFsZW50ID0gMSBBTkQgaGFkVXNlcklu
dGVyYWN0aW9uID0gMSJfcyk7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LKQogICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICAKKwogICAgIHdoaWxlIChzdGF0ZW1l
bnQuc3RlcCgpID09IFNRTElURV9ST1cpCiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc3Rh
dGVtZW50LmdldENvbHVtblRleHQoMCkpKTsKIApAQCAtMjA4NCw3ICsyMDY3LDcgQEAgVmVjdG9y
PFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
ZG9tYWluc1dpdGhVc2VySW4KICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJh
c2UsICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4gRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUg
aGFkVXNlckludGVyYWN0aW9uID0gMSJfcyk7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkg
IT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICAKKwogICAgIHdoaWxl
IChzdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpCiAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpKTsKIApAQCAtMjEyNCwxMiArMjEwNywx
MiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29r
aWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcgogVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpEb21haW5EYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6ZG9tYWlucygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgCisKICAgICBWZWN0b3I8RG9tYWluRGF0YT4gcmVzdWx0czsKICAgICBTUUxpdGVT
dGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgZG9tYWluSUQsIHJlZ2lzdHJh
YmxlRG9tYWluLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgaGFkVXNlckludGVyYWN0
aW9uLCBncmFuZGZhdGhlcmVkLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
IEZST00gT2JzZXJ2ZWREb21haW5zIl9zKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAgIAorCiAgICAgd2hpbGUg
KHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewogICAgICAgICByZXN1bHRzLmFwcGVu
ZCh7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApKQogICAg
ICAgICAgICAgLCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJh
YmxlRG9tYWluU3RyaW5nKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKQpAQCAtMjEzOSw3ICsy
MTIyLDcgQEAgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpEb21h
aW5EYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGEKICAgICAgICAgICAgICwgc3RhdGVtZW50
LmdldENvbHVtbkludCg1KSA/IHRydWUgOiBmYWxzZQogICAgICAgICB9KTsKICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gcmVzdWx0czsKIH0KIApAQCAtMjIwMSw3ICsyMTg0LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJHcmFuZGZhdGhlcmluZyhW
ZWN0b3I8dW5zaWduZWQ+JiYKICAgICBTUUxpdGVTdGF0ZW1lbnQgY2xlYXJHcmFuZGZhdGhlcmlu
Z1N0YXRlbWVudChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5z
IFNFVCBncmFuZGZhdGhlcmVkID0gMCBXSEVSRSBkb21haW5JRCBJTiAoIiwgbGlzdFRvQ2xlYXIs
ICIpIikpOwogICAgIGlmIChjbGVhckdyYW5kZmF0aGVyaW5nU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGlmIChjbGVhckdyYW5k
ZmF0aGVyaW5nU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJHcmFuZGZhdGhlcmluZyBmYWlsZWQgdG8gYmlu
ZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMjYwLDcgKzIyNDMs
NyBAQCBWZWN0b3I8c3RkOjpwYWlyPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVt
b3ZlPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcwogICAgICAgICBjbGVhckVuZE9mR3JhbmRmYXRo
ZXJpbmdUaW1lU3RhbXAoKTsKIAogICAgIGNsZWFyRXhwaXJlZFVzZXJJbnRlcmFjdGlvbnMoKTsK
LSAgICAKKwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVE
YXRhVG9SZW1vdmU+PiBkb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcjsKIAogICAgIFZlY3Rv
cjxEb21haW5EYXRhPiBkb21haW5zID0gdGhpcy0+ZG9tYWlucygpOwpAQCAtMjI3Nyw3ICsyMjYw
LDcgQEAgVmVjdG9yPHN0ZDo6cGFpcjxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1Jl
bW92ZT4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3MKICAgICB9CiAKICAgICBjbGVhckdyYW5kZmF0
aGVyaW5nKFdURk1vdmUoZG9tYWluSURzVG9DbGVhckdyYW5kZmF0aGVyaW5nKSk7Ci0gICAgCisK
ICAgICByZXR1cm4gZG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3I7CiB9CiAKQEAgLTIzMzQs
NyArMjMxNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVw
ZGF0ZUxhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaW50IHJlc2V0
UmVzdWx0ID0gbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudC5yZXNldCgpOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiB9CkBAIC0yMzY0
LDcgKzIzNDcsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpz
ZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cgogCiAgICAgaWYgKHNob3VsZFNr
aXAoZG9tYWluKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9tYWluKTsKICAgICBzZXRQcmV2YWxlbnRS
ZXNvdXJjZShkb21haW4sIFJlc291cmNlTG9hZFByZXZhbGVuY2U6OlZlcnlIaWdoKTsKIH0KQEAg
LTIzOTAsNyArMjM3Myw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmlzQ29ycmVjdFN1YlN0YXRpc3RpY3NDb3VudChjb25zdCBSZWdpCiAgICAgU1FMaXRlU3Rh
dGVtZW50IHN1YkZyYW1lVW5kZXJUb3BGcmFtZUNvdW50KG1fZGF0YWJhc2UsIGNvdW50U3ViZnJh
bWVVbmRlclRvcEZyYW1lUXVlcnkpOwogICAgIFNRTGl0ZVN0YXRlbWVudCBzdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVDb3VudChtX2RhdGFiYXNlLCBjb3VudFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZVF1ZXJ5KTsKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNU
byhtX2RhdGFiYXNlLCBjb3VudFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9RdWVyeSk7Ci0g
ICAgCisKICAgICBpZiAoc3ViRnJhbWVVbmRlclRvcEZyYW1lQ291bnQucHJlcGFyZSgpICE9IFNR
TElURV9PSwogICAgICAgICB8fCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVDb3VudC5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8u
cHJlcGFyZSgpICE9IFNRTElURV9PSykgewpAQCAtMjM5OCw3ICsyMzgxLDcgQEAgYm9vbCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlzdGljc0Nv
dW50KGNvbnN0IFJlZ2kKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoc3ViRnJhbWVVbmRlclRvcEZyYW1l
Q291bnQuYmluZEludCgxLCBkb21haW5JRChzdWJmcmFtZURvbWFpbikudmFsdWUoKSkgIT0gU1FM
SVRFX09LCiAgICAgICAgIHx8IHN1YkZyYW1lVW5kZXJUb3BGcmFtZUNvdW50LmJpbmRJbnQoMiwg
ZG9tYWluSUQodG9wRnJhbWVEb21haW4pLnZhbHVlKCkpICE9IFNRTElURV9PSwogICAgICAgICB8
fCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVDb3VudC5iaW5kSW50KDEsIGRvbWFpbklEKHN1YmZy
YW1lRG9tYWluKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKQEAgLTI0MDksMTIgKzIzOTIsMTIgQEAg
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3Rh
dGlzdGljc0NvdW50KGNvbnN0IFJlZ2kKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoc3ViRnJhbWVVbmRl
clRvcEZyYW1lQ291bnQuc3RlcCgpICE9IFNRTElURV9ST1cKICAgICAgICAgfHwgc3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lQ291bnQuc3RlcCgpICE9IFNRTElURV9ST1cKICAgICAgICAgfHwgc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zdGVwKCkgIT0gU1FMSVRFX1JPVykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJuIChzdWJGcmFtZVVuZGVyVG9wRnJhbWVD
b3VudC5nZXRDb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVDb3Vu
dC5nZXRDb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmdl
dENvbHVtbkludCgwKSA9PSAxKTsKIH0KIApAQCAtMjQzNiwxNiArMjQxOSwxNiBAQCBzdGF0aWMg
dm9pZCBhcHBlbmROZXh0RW50cnkoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgU3RyaW5nIGVudHJ5
KQogU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXREb21haW5T
dHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQgZG9tYWluSUQpIGNvbnN0CiB7CiAgICAgYXV0byBy
ZXN1bHQgPSBlbXB0eVN0cmluZygpOwotICAgIAorCiAgICAgaWYgKG1fZG9tYWluU3RyaW5nRnJv
bURvbWFpbklEU3RhdGVtZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSykgewog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURv
bWFpbklELiBTdGF0ZW1lbnQgZmFpbGVkIHRvIHByZXBhcmUgb3IgYmluZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQot
ICAgIAorCiAgICAgaWYgKG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50LnN0ZXAo
KSA9PSBTUUxJVEVfUk9XKQogICAgICAgICByZXN1bHQgPSBtX2RvbWFpblN0cmluZ0Zyb21Eb21h
aW5JRFN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApOwotICAgIAorCiAgICAgcmVzZXRTdGF0ZW1l
bnQobV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0yNDcwLDM2ICsyNDUzLDM2IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0cmluCiAg
ICAgICAgIHJldHVybiAiU0VMRUNUIHRvRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/IjsKICAgICBpZiAodGFibGVO
YW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iKQogICAgICAgICByZXR1cm4g
IlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20g
V0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iOwotICAgIAorCiAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAogewogICAgIGF1dG8g
cXVlcnkgPSBnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQodGFibGVOYW1lKTsKLSAgICAKKwogICAg
IGlmIChxdWVyeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFNRTGl0
ZVN0YXRlbWVudCBkYXRhKG1fZGF0YWJhc2UsIHF1ZXJ5KTsKLSAgICAKKwogICAgIGlmIChkYXRh
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZGF0YS5iaW5kSW50KDEsIGRvbWFp
bklEKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChkb21haW4pKS52
YWx1ZSgpKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QuIFN0YXRlbWVudCBmYWlsZWQgdG8gcHJlcGFyZSBv
ciBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkYXRhLnN0ZXAoKSAhPSBTUUxJVEVfUk9XKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAi
KTsKICAgICBidWlsZGVyLmFwcGVuZCh0YWJsZU5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiOlxuIik7Ci0gICAgCisKICAgICBhdXRvIHJlc3VsdCA9IGdldERvbWFpblN0cmluZ0Zy
b21Eb21haW5JRChkYXRhLmdldENvbHVtbkludCgwKSk7CiAgICAgYXBwZW5kTmV4dEVudHJ5KGJ1
aWxkZXIsIHJlc3VsdCk7Ci0gICAgCisKICAgICB3aGlsZSAoZGF0YS5zdGVwKCkgPT0gU1FMSVRF
X1JPVykgewogICAgICAgICByZXN1bHQgPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoZGF0
YS5nZXRDb2x1bW5JbnQoMCkpOwogICAgICAgICBhcHBlbmROZXh0RW50cnkoYnVpbGRlciwgcmVz
dWx0KTsKQEAgLTI1MjMsNyArMjUwNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlCiAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJSZWdpc3RyYWJsZSBkb21haW46ICIpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKGRvbWFpbik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgCisKICAg
ICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaGFkVXNl
ckludGVyYWN0aW9uIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0
Q29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBjMmRmNDE2ZjUxOGU3ZjkzMGYx
ODNkNmEwNzgwYmYxOTJiZmE1N2M1Li4yMTkyYzI5ZjQxODFlMDBhMTUxMDZlYTFiMjkwOTQwNTg3
MmVjNDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEzOCw2ICsxMzgsMTEgQEAg
dm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6c2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKICAgICBwbGF0Zm9ybVNldFNoZWV0UmVjdChyZWN0KTsKIH0KIAordm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBwbGF0Zm9ybVN0
YXJ0V2luZG93RHJhZygpOworfQorCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpvcGVu
SW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgcGxhdGZvcm1PcGVuSW5OZXdUYWIo
dXJsKTsKQEAgLTE5Myw2ICsxOTgsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUJyaW5nVG9Gcm9udCgpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wpIHsg
fQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmKSB7IH0KK3ZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkgeyB9CiB2b2lkIFJlbW90
ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmKSB7
IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2hvd0NlcnRpZmljYXRl
KGNvbnN0IENlcnRpZmljYXRlSW5mbyYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkuaAppbmRleCA0ZDg3Yjk4YjY5OTQ4NGJhMDcwNDc5MWE1MzQyMTJkYTg4MjZiZTVhLi5m
YWI1OGY4Y2UwNmVhMjFmYmVlOTEzODk0MzI0NmNhZThmNTRmM2E1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkuaApAQCAtMTE4LDYgKzExOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzYXZlKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNv
ZGVkLCBib29sIGZvcmNlU2F2ZUFzKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogICAgIHZvaWQgc2V0U2hlZXRSZWN0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCk7CiAg
ICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgc2hvd0Nl
cnRpZmljYXRlKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYpOwogICAgIHZvaWQgc2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKQEAgLTEzMyw2ICsxMzQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNl
U2F2ZUFzKTsKICAgICB2b2lkIHBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNldFNoZWV0UmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBsYXRmb3JtU3RhcnRXaW5kb3dE
cmFnKCk7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCk7
CiAgICAgdm9pZCBwbGF0Zm9ybVNob3dDZXJ0aWZpY2F0ZShjb25zdCBXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDI4NTljNjBjZjQ2ZGQxNzg1N2MzNjYxZDgwYTY0MDQwZGE1YWQxMTkuLmJlMDkxYjc4ZmI2
YThkNWRmN2IyM2UwNTBmZmZmMWQ5MmE0YmQ0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDggQEAgbWVzc2FnZXMgLT4gUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkgewogCiAgICAgU2V0U2hlZXRSZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCBy
ZWN0KQogCisgICAgU3RhcnRXaW5kb3dEcmFnKCkKKwogICAgIE9wZW5Jbk5ld1RhYihTdHJpbmcg
dXJsKQogICAgIFNob3dDZXJ0aWZpY2F0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlm
aWNhdGVJbmZvKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBmYzc2ODY2ZjdhMjk0ZGYxYTFkNjlhZjQ0
ZTgwYmUyMzg4M2ViZTAyLi40NzViYmM0MDFmNDQzNmQxZDI0YzYyM2QxYTNhODgxMjhlYWQ1Yjhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JQcm94eS5jcHAKQEAgLTM0Nyw2ICszNDcsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6c2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBwbGF0Zm9ybVNl
dFNoZWV0UmVjdChyZWN0KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c3RhcnRXaW5k
b3dEcmFnKCkKK3sKKyAgICBwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpOworfQorCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKIHsKICAgICBpZiAoIW1faW5z
cGVjdGVkUGFnZSkKQEAgLTc1OSw2ICs3NjQsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JikKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJh
ZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JQYWdlVVJMKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHku
aAppbmRleCA0OTZjMTdiOTQ3ODgzM2RhNzkzYTNkYTc2YTllMzZlZDlmY2M2Mzc5Li4yYjFmZGZj
YTFkZmI4ZTVjNTVmY2NkODAxNmY0MjFmNzE0MTYzY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMTUwLDYg
KzE1MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpOwogCisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsKKwogICAgIGJvb2wg
aXNQcm9maWxpbmdQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb2ZpbGluZ1BhZ2U7IH0KICAg
ICB2b2lkIHRvZ2dsZVBhZ2VQcm9maWxpbmcoKTsKIApAQCAtMjA3LDYgKzIwOSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKTsK
ICAgICB2b2lkIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7CiAgICAg
dm9pZCBwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAg
ICB2b2lkIHBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNhdmUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2
NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwogICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDVhZWY3YTdkZmZiZDcxMTU1NWJmZTI2NTMzZmU0NmIw
YmU3MTUzZTkuLmViYjc3NTUzYzZiMTEwOTcyNjJkNDdkNDFmMjZiMjRjMjE2MjBmMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTUzLDQgKzUzLDYgQEAgbWVzc2FnZXMgLT4g
V2ViSW5zcGVjdG9yUHJveHkgewogICAgIFNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQg
d2lkdGgpCiAKICAgICBTZXRTaGVldFJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCisKKyAg
ICBTdGFydFdpbmRvd0RyYWcoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3Rr
LmNwcAppbmRleCBhYzIwYjg0OTczMmZhMDlkNDBkOGZiYjQ5MzIxMTE4ZGRhMTU2NGY5Li4xMTA4
OGRkMDhiMDYwMmQyZTk0ZTg1Nzk0NjA0YTIyNjI4Y2I0MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdl
Ykluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtMTU3LDYgKzE1NywxMCBAQCB2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmKQog
ewogfQogCit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93
RHJhZygpCit7Cit9CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3Bl
bkluTmV3VGFiKGNvbnN0IFN0cmluZyYpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
CmluZGV4IGM3ZmZmMzk0MTljNzI0MjA4YmU4ZmZlZjZiMjRmYzRhNTFhMWEyOWQuLjgxN2MzOTg2
ZDNjYWI0NTJmZWVhMzY5MTVjYWQxNThkNWVlOGQ1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yUHJveHlH
dGsuY3BwCkBAIC00NjQsNiArNDY0LDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtU2V0U2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRv
d0RyYWcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHN0YXRpYyB2b2lkIGZpbGVS
ZXBsYWNlQ29udGVudHNDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2VPYmplY3QsIEdBc3luY1Jlc3Vs
dCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKIHsKICAgICBHRmlsZSogZmlsZSA9IEdfRklM
RShzb3VyY2VPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5k
ZXggODU0ZGE4ODY1ZmNlZjYwYzllYjIyMmFmMWE1MmIyMzM0NGQ5NjkyNC4uNGFiZGViNWY2ZDA2
NGNlOTRmYTdhMmE1MzEzMThjNGY4YWY3ZjcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5TWFjLm1tCkBAIC0yMjUsNiArMjI1LDExIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBt
X3NoZWV0UmVjdCA9IHJlY3Q7CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICB3ZWJWaWV3KCktPl9wYWdlLT5zdGFydFdp
bmRvd0RyYWcoKTsKK30KKwogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1P
cGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgW1tOU1dvcmtzcGFjZSBzaGFy
ZWRXb3Jrc3BhY2VdIG9wZW5VUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclBy
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNw
ZWN0b3JQcm94eU1hYy5tbQppbmRleCAxN2JhNjc2NzgzYTllNzM5YTg2MzY5YTVkYjJkNTg5MDE4
MmYzZTU0Li5iYmU3MjhkNDM1Y2FmNzA1OTY1MmFkMmIzZDllMjE3MTQ2N2ViMGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclBy
b3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTczNCw2ICs3MzQsMTEgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAg
IG1fc2hlZXRSZWN0ID0gcmVjdDsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1TdGFydFdpbmRvd0RyYWcoKQoreworICAgIFttX2luc3BlY3RvclZpZXdDb250cm9sbGVyIHdl
YlZpZXddLT5fcGFnZS0+c3RhcnRXaW5kb3dEcmFnKCk7Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0
b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpCiB7CiAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtO
U0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNwcAppbmRleCBhZDg0MjQ0YTMy
MjdlNmFmMTFlMTMwMzk4OWVmMmMzNmQwYWE0ODU2Li4zOTBjMmI5NGYyZmY1NGE0ZjBkYTllYWVl
NDAxMDhjOTllYWEwYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNw
cApAQCAtMTM0LDYgKzEzNCw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQnJpbmdUb0Zyb250KCkgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCkgeyB9CiB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtU2V0U2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIHsgfQordm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKSB7IH0KIHZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3BlbkluTmV3VGFiKGNvbnN0IFN0cmlu
ZyYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TaG93Q2VydGlm
aWNhdGUoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJikgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yUHJveHlX
aW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0
b3JQcm94eVdpbi5jcHAKaW5kZXggOTI5Y2I4YmRhM2MzZDMyZjM4Y2NhYmZkODM0YzhiNWNlYTI0
ZDQxMC4uMmRlYWM5NzMxNzk2ZjI1NWExMGJjZTg0N2Q2YjBiZjZhNzk3OTA3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JQcm94
eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJ
bnNwZWN0b3JQcm94eVdpbi5jcHAKQEAgLTQ1MCw0ICs0NTAsOSBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
K3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IDY1
NThhMjVhMWVhOWQxNWRjYmY4MmFmMWIxMzBjZmFjZTBiZmFjNGMuLjU1OGQ4ZjBjMjQ2MjI4Njk4
OTFkMTkyYWU5Y2Q3MWE4OTJlYWViYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0xMTAs
NiArMTEwLDE4IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmNoYW5nZVNoZWV0UmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OlNldFNoZWV0UmVjdChyZWN0KSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKK3ZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OnN0YXJ0V2luZG93RHJhZygpCit7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93RHJhZygpLCBtX3BhZ2UuaWRlbnRp
ZmllcigpKTsKK30KKwordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KGZs
b2F0IHgsIGZsb2F0IHkpCit7CisgICAgRmxvYXRSZWN0IGZyYW1lUmVjdCA9IG1fcGFnZS5jb3Jl
UGFnZSgpLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmUoeCwgeSk7
CisgICAgbV9wYWdlLmNvcmVQYWdlKCktPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoZnJhbWVSZWN0
KTsKK30KKwogV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBSZW1vdGVXZWJJ
bnNwZWN0b3JVSTo6dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fcGFnZS5jb3JlUGFnZSgpLT51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdl
Ykluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclVJLmgKaW5kZXggNjNmNDMyZGY4YjM0MGMxNzY5MzY0MDZjY2ZmZTVhNzc1
ZDBiNzlhOS4uYjRhZTFjMWRhYTE2NDdhMjExYmFmMGQ0MDA1OTliNzMxMTI4N2EyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0
b3JVSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yVUkuaApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aW5kb3dP
YmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2hhbmdlU2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYp
IG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJpZGU7CiAKICAgICBib29sIGlz
UmVtb3RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFN0cmluZyBsb2NhbGl6
ZWRTdHJpbmdzVVJMKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IDkxMGNiMzU5ZGM0
MzQ2MDgzNjM3MGIxYzY1ZmJhNTUyYjIwMGQ2MDEuLjFmYWE2ZjZlZGU1ZGRkYTBhMTRhYmRlMmVj
MGMyYmJhYWZjNTVlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0xMzcsNiArMTM3LDE4IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKCkKICAgICBicmluZ1RvRnJvbnQoKTsKIH0KIAor
dm9pZCBXZWJJbnNwZWN0b3JVSTo6c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5kb3dEcmFnKCksIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93QnkoZmxvYXQgeCwg
ZmxvYXQgeSkKK3sKKyAgICBGbG9hdFJlY3QgZnJhbWVSZWN0ID0gbV9wYWdlLmNvcmVQYWdlKCkt
PmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAgICBmcmFtZVJlY3QubW92ZSh4LCB5KTsKKyAgICBt
X3BhZ2UuY29yZVBhZ2UoKS0+Y2hyb21lKCkuc2V0V2luZG93UmVjdChmcmFtZVJlY3QpOworfQor
CiB2b2lkIFdlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQoKQogewogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJLmgKaW5kZXggOGJiYTdhNDg5M2M1YjE0N2UzMDA5MTYwN2E1OTMyMWQ2NWU2MmI3NC4u
NjM5ZjIxYzliNjIwYzNlZjZmMjUwN2RkMTYyMDYwZGE0OWI1NTM5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaApAQCAtOTIs
NiArOTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOwogCisgICAgdm9pZCBzdGFy
dFdpbmRvd0RyYWcoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBm
bG9hdCB5KSBvdmVycmlkZTsKKwogICAgIGJvb2wgaXNSZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgU3RyaW5nIGJhY2tlbmRDb21tYW5kc1VSTCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFN0cmluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KaW5kZXggZTM1Zjdh
MDQ3ZWQ2NzlkYjBkZDIwZDc4YTg5NzA0Mjg0MmExYzUzMC4uMzZmZjEwMjY5ZDEzOWUwNDNlNjk5
ZjM3ZDU5YjcxNGRkNjZhMmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQpAQCAt
MTMzLDYgKzEzMyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRldGFjaFdp
bmRvdygpIHsgfQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQodW5zaWduZWQpIHsgfQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkgeyB9CiB2b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpzZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JikgeyB9Cit2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzdGFydFdpbmRvd0RyYWcoKSB7IH0KIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3Ry
aW5nJikgeyB9CiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzaG93Q2VydGlmaWNh
dGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJikgeyB9CiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSgpIGNvbnN0IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aAppbmRleCA3YzRjN2YyZWFlMDJjYTk0YTk3ZTEwMTFhMWRmYmRiOTJmNGZmZDU2Li42NTNlOTEw
YWQxNDE5NTk1N2JlMGNkNTg4ZDY4NzljZTkyMWYzYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aApAQCAtMTE2LDYgKzExNiw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZnJvbnRlbmRMb2FkZWQo
KSBvdmVycmlkZTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgb3ZlcnJpZGU7CisKICAg
ICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEluc3Bl
Y3Rvcjo6RGVidWdnYWJsZVR5cGUgZGVidWdnYWJsZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlOjpQYWdlOyB9OwogICAgIFN0cmluZyB0YXJnZXRQ
bGF0Zm9ybU5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAibWFjT1MiX3M7IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KaW5kZXggNDRmNjc3OGVmOWU3NmVlYTNkYTA0MjdhNTZjNmQwMTk1ODNl
NjQ4OC4uMGRiYjgyZmI3YjY5OTQ2NGY4ZTdlYzJlZjMwNjUxMWEwNzRlYzU1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbQpAQCAtMjE2LDYgKzIxNiwxMSBAQCB2b2lkIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50Ojpmcm9udGVuZExvYWRlZCgpCiAgICAgc2V0QXR0YWNoZWRXaW5kb3coYXR0
YWNoZWQgPyBEb2NrU2lkZTo6Qm90dG9tIDogRG9ja1NpZGU6OlVuZG9ja2VkKTsKIH0KIAordm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBb
W21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIHdpbmRvd10gcGVyZm9ybVdpbmRvd0RyYWdXaXRo
RXZlbnQ6W05TQXBwIGN1cnJlbnRFdmVudF1dOworfQorCiBTdHJpbmcgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogewogICAgIE5TQnVuZGxl
ICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2Vi
SW5zcGVjdG9yVUkiXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390157</attachid>
            <date>2020-02-07 18:21:52 -0800</date>
            <delta_ts>2020-02-07 18:30:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207422-20200207182150.patch</filename>
            <type>text/plain</type>
            <size>377554</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IwYTRhNzQwNjk4YjZh
NWFhOTdkNzNhM2FiNWIzYTQ4MTM2NGNlNi4uMTU5MTE0NDJhNTUzYjk5NTA0MDg1ZjhkNDZhODE0
M2UwMzM0NjVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAyLTA3ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQg
c2xpbSB0b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgc2xpbSB0b29sYmFyIG5lZWRzIGEgbGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFu
ZGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJldmVydHMgcjI1NTU0NywgcjI1NTg5MCwgcjI1
NTg5MiwgcjI1NTg5MywgYW5kIHIyNTU5MDEuCisKKyAgICAgICAgKiBlbi5scHJvai9Mb2NhbGl6
YWJsZS5zdHJpbmdzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKwogMjAyMC0wMi0wNyAgSmFjayBMZWUgIDxzaGlo
Y2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNyYXNoIGluIFdlYkNvcmU6
OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCmluZGV4IDlhZTRjYjZlNWVhODIzOTQ2N2QyNDJkZjA0OWQ5OWNkYjVjYzdiNTYu
LjNjZmNlYTM5NzMxOTU4M2Q3MGUwMDdiYzljNGM4MTAwODI5OWU3ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIwLTAyLTA3ICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQgc2xpbSB0b29sYmFy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0MjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc2xp
bSB0b29sYmFyIG5lZWRzIGEgbGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFuZGluZy4KKworICAg
ICAgICBUaGlzIHBhdGNoIHJldmVydHMgcjI1NTU0NywgcjI1NTg5MCwgcjI1NTg5MiwgcjI1NTg5
MywgYW5kIHIyNTU5MDEuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL01haW4uanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xlTWFuYWdlci5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdl
cy9OZXdUYWIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9OZXdU
YWJQbHVzLnN2ZzogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvT3JpZ2lu
LnN2ZzoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9TZWFyY2hSZXN1bHRzLnN2Zzog
QWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvU291cmNlc1BhdXNlZC5zdmc6
IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgICog
VXNlckludGVyZmFjZS9Nb2RlbHMvRGVidWdnZXJEYXNoYm9hcmQuanM6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZp
Z2F0aW9uSXRlbS5jc3MuCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERh
c2hib2FyZC5qczogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9BY3RpdmF0
ZUJ1dHRvblRvb2xiYXJJdGVtLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0uY3NzLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQXVkaXRUYWJDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmNzczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uY3NzOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EaXZpZGVyTmF2aWdh
dGlvbkl0ZW0uY3NzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJh
ckl0ZW0uanM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5jc3MuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmNzczogQ29waWVkIGZyb20g
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGl2aWRlck5hdmlnYXRp
b25JdGVtLmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRyb2xUb29sYmFy
SXRlbS5qczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmNzczogQWRkZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanM6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMu
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuY3Nz
OiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJk
Vmlldy5qczogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFz
aGJvYXJkVmlldy5jc3M6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGVm
YXVsdERhc2hib2FyZFZpZXcuanM6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0uY3NzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvR3JvdXBOYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvTGVnYWN5VGFiQmFyLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMuCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9NYWluLmNzczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25C
YXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrRGV0YWlsVmlldy5j
c3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmll
dy5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3
LmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGguY3NzLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanM6IEFkZGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRlbS5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLmNzczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9TaXplc1RvRml0TmF2aWdhdGlvbkJhci5qczogQ29waWVkIGZyb20gU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmxleGlibGVTcGFjZU5hdmlnYXRpb25J
dGVtLmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNUYWJDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3M6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VGFiQnJvd3Nlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRW
aWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlldy5j
c3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEZyYW1lLmNz
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuY3NzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuY3NzOiBBZGRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanM6IEFkZGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvVmFyaWFibGVzLmNzczoKKwogMjAyMC0wMi0wNyAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGFub3Ro
ZXIgUHJvdG9jb2wgVmVyc2lvbiAoaU9TIDEzLjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExOTM5M2Q3NWE5MmVi
YWRmZWEwZDk4MGE2MWI5MzI2YzhlODc1NzIuLjMwYWFkYTVkNzhlZDAyMDdiOTA2ZmMxYjFlYzAw
NzkyNDI5NTlkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDItMDcgIEpvbiBM
ZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJldmVydCBz
bGltIHRvb2xiYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBzbGltIHRvb2xiYXIgbmVlZHMgYSBsaXR0bGUgbW9yZSB3b3JrIGJlZm9yZSBsYW5k
aW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0cyByMjU1NTQ3LCByMjU1ODkwLCByMjU1
ODkyLCByMjU1ODkzLCBhbmQgcjI1NTkwMS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHku
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5R3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNw
ZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rv
ci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL0luc3Bl
Y3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKwogMjAyMC0wMi0wNyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtIYXJkZW5pbmddIFZhbGlkYXRlIEdl
b2xvY2F0aW9uIGFjY2VzcyBwZXJtaXNzaW9uIG9uIFVJUHJvY2VzcyBzaWRlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cKaW5kZXggMGUwZGViN2MzYWI0ZmFmNTliYWVhOTgyOGZmNWQyMjNlODQ4
NzhlOS4uMWE2ZGUzZThkOTQ1ZTU2MDFhYTIyYjI4OGRlYThjMDliNWE2NjUxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAyLTA3ICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQgc2xp
bSB0b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDc0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgc2xpbSB0b29sYmFyIG5lZWRzIGEgbGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFuZGlu
Zy4KKworICAgICAgICBUaGlzIHBhdGNoIHJldmVydHMgcjI1NTU0NywgcjI1NTg5MCwgcjI1NTg5
MiwgcjI1NTg5MywgYW5kIHIyNTU5MDEuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnRJT1MubW06CisKIDIwMjAtMDItMDEgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgdGhlIGl0ZW1zIGlu
IHRoZSB0b29sYmFyIGludG8gdGhlIHRhYiBiYXIgdG8gc2F2ZSB2ZXJ0aWNhbCBzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDNlZGVlYTE2ODRhMTczNDRkYjc0ZDVlZDBkZjRk
NGM1ZDhmNmIzOWEuLmI4MmYxMWQyMzVlM2EwNWQ4MTQyYjhlOTg0OTFjNGE4ODUxNzM3MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMi0wNyAg
Sm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmV2
ZXJ0IHNsaW0gdG9vbGJhcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIHNsaW0gdG9vbGJhciBuZWVkcyBhIGxpdHRsZSBtb3JlIHdvcmsgYmVmb3Jl
IGxhbmRpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXZlcnRzIHIyNTU1NDcsIHIyNTU4OTAs
IHIyNTU4OTIsIHIyNTU4OTMsIGFuZCByMjU1OTAxLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tOgorCiAyMDIwLTAyLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0hhcmRlbmluZ10gVmFsaWRhdGUgR2VvbG9jYXRpb24gYWNjZXNz
IHBlcm1pc3Npb24gb24gVUlQcm9jZXNzIHNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9M
b2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IGIzOWI4OGE0ZTkwMmYwY2I2MTg5MDc2MzNmZmY3Zjg3
MDFmMjViNTQuLjZkNzljNWMwMmExOWM2NjljMzc3ZTZjMDYwYzMyYTU0NWJjZWVkOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIv
U291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpAQCAtMzQsMTIgKzM0
LDEyIEBACiAvKiBUZXh0IHRyYWNrIGNvbnRhaW5zIGZvcmNlZCBzdWJ0aXRsZXMgKi8KICIlQCBG
b3JjZWQiID0gIiVAIEZvcmNlZCI7CiAKLS8qIHZpc2libGUgbmFtZSBvZiB0aGUgbmV0d29yayBw
cm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuICovCi0iJUAgTmV0
d29ya2luZyIgPSAiJUAgTmV0d29ya2luZyI7Ci0KIC8qIHZpc2libGUgbmFtZSBvZiB0aGUgR1BV
IHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4gKi8KICIlQCBH
cmFwaGljcyBhbmQgTWVkaWEiID0gIiVAIEdyYXBoaWNzIGFuZCBNZWRpYSI7CiAKKy8qIHZpc2li
bGUgbmFtZSBvZiB0aGUgbmV0d29yayBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxp
Y2F0aW9uIG5hbWUuICovCisiJUAgTmV0d29ya2luZyIgPSAiJUAgTmV0d29ya2luZyI7CisKIC8q
IFRleHQgdHJhY2sgY29udGFpbnMgc3VidGl0bGVzIGZvciB0aGUgZGVhZiBhbmQgaGFyZCBvZiBo
ZWFyaW5nICovCiAiJUAgU0RIIiA9ICIlQCBTREgiOwogCkBAIC05MSw2ICs5MSw5IEBACiAvKiBN
ZW51IGl0ZW0gdGl0bGUgZm9yIEtFWUdFTiBwb3AtdXAgbWVudSAqLwogIjIwNDggKEhpZ2ggR3Jh
ZGUpIiA9ICIyMDQ4IChIaWdoIEdyYWRlKSI7CiAKKy8qIE5hbWUgb2YgYXBwbGljYXRpb24ncyBz
aW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4gKi8KKyI8YXBwbGljYXRpb24+
IFdlYkNyeXB0byBNYXN0ZXIgS2V5IiA9ICI8YXBwbGljYXRpb24+IFdlYkNyeXB0byBNYXN0ZXIg
S2V5IjsKKwogLyogd2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVs
dGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkgKi8KICI8ZmlsZW5hbWU+ICVkw5clZCBwaXhlbHMi
ID0gIjxmaWxlbmFtZT4gJWTDlyVkIHBpeGVscyI7CiAKQEAgLTM3Niw5ICszNzksNiBAQAogLyog
SGlkZSBNZWRpYSBDb250cm9scyBjb250ZXh0IG1lbnUgaXRlbSAqLwogIkhpZGUgQ29udHJvbHMi
ID0gIkhpZGUgQ29udHJvbHMiOwogCi0vKiBUaXRsZSBmb3IgSGlkZSBMaW5rIFByZXZpZXdzIGFj
dGlvbiBidXR0b24gKi8KLSJIaWRlIExpbmsgUHJldmlld3MiID0gIkhpZGUgTGluayBQcmV2aWV3
cyI7Ci0KIC8qIG1lbnUgaXRlbSB0aXRsZSAqLwogIkhpZGUgU3BlbGxpbmcgYW5kIEdyYW1tYXIi
ID0gIkhpZGUgU3BlbGxpbmcgYW5kIEdyYW1tYXIiOwogCkBAIC03MDMsOSArNzAzLDYgQEAKIC8q
IFNob3cgZm9udHMgY29udGV4dCBtZW51IGl0ZW0gKi8KICJTaG93IEZvbnRzIiA9ICJTaG93IEZv
bnRzIjsKIAotLyogVGl0bGUgZm9yIFNob3cgTGluayBQcmV2aWV3cyBhY3Rpb24gYnV0dG9uICov
Ci0iU2hvdyBMaW5rIFByZXZpZXdzIiA9ICJTaG93IExpbmsgUHJldmlld3MiOwotCiAvKiBtZW51
IGl0ZW0gdGl0bGUgKi8KICJTaG93IFNwZWxsaW5nIGFuZCBHcmFtbWFyIiA9ICJTaG93IFNwZWxs
aW5nIGFuZCBHcmFtbWFyIjsKIApAQCAtNzYwLDYgKzc1Nyw5IEBACiAvKiBTdG9wIHNwZWFraW5n
IGNvbnRleHQgbWVudSBpdGVtICovCiAiU3RvcCBTcGVha2luZyIgPSAiU3RvcCBTcGVha2luZyI7
CiAKKy8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KKyJTdHJpa2VUaHJvdWdoIChVbmRvIGFjdGlvbiBu
YW1lKSIgPSAiU3RyaWtlVGhyb3VnaCI7CisKIC8qIExhYmVsIGZvciBzdHJvbmcgcGFzc3dvcmQu
ICovCiAiU3Ryb25nIFBhc3N3b3JkIiA9ICJTdHJvbmcgUGFzc3dvcmQiOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IDZl
NDc3ZTllNTBmOTcxODI2NzUwMDJhNWI0ZDNmNGZiYjA1ZDY4OWMuLjEzN2QwZTZjMWRhYjRiYmZl
ZDcwNjk2M2Q0ZTUwNmZlN2JjYzczZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSA9IDA7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3ZlV2luZG93
QnkoZmxvYXQgeCwgZmxvYXQgeSkgPSAwOworCiAgICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgdGhl
IGRlYnVnZ2FibGUuCiAgICAgdmlydHVhbCBib29sIGlzUmVtb3RlKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdCA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5jcHAKaW5kZXggMjA0ZjUwNTY5ZmU5YzRhODFhYTA0Y2Y4Y2JhNWMxNWI5NzgzNGMyNS4u
MGQ4MzE5MjUyNzgyZGE5NWE3MmVkMzZjYTVmMDQ4YzdjZDhjODQ2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcApAQCAtMjcwLDYgKzI3MCwxMyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWw6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKICAgICBmcmFtZS0+bG9hZGVyKCku
Y2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0MikpOwogfQogCit2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5
KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX2Zyb250ZW5kUGFnZS0+Y2hyb21lKCku
d2luZG93UmVjdCgpOworICAgIGZyYW1lUmVjdC5tb3ZlKHgsIHkpOworICAgIG1fZnJvbnRlbmRQ
YWdlLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVjdCk7Cit9CisKIHZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0QXR0YWNoZWRXaW5kb3coRG9ja1NpZGUgZG9ja1Np
ZGUpCiB7CiAgICAgY29uc3QgY2hhciogc2lkZSA9ICJ1bmRvY2tlZCI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaApp
bmRleCAwNTVkZjQyMDg5MjBmNjc4NzIxYmQ2ZTNmZjUxNzIyM2I0YTJmZmUxLi4wZWMzMjBkODkz
Nzg0NTE5YWNhYTUwYTgyY2UxNmJlNjE4YWIyODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAgLTY3LDYg
KzY3LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2luZG93T2JqZWN0Q2xl
YXJlZCgpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBv
dmVycmlkZTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgb3ZlcnJpZGUgeyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgZmluYWw7
CisKICAgICBXRUJDT1JFX0VYUE9SVCBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSBjb25zdCBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggMmY2
ZTE5NmQxZWI5NzZlM2M2MzI2NTE4NzUwNjExZGRkNTkzMTQwNS4uNDE2ODM4OWU0NTQ5MGMyMTNl
Y2Q5YjZhOTM2NTRiMjRhMzQ2OThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTI1OCw2ICsyNTgsMTggQEAgdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNldFNoZWV0UmVjdChmbG9hdCB4LCBmbG9hdCB5LCB1bnNp
Z25lZCB3aWR0aCwgdW5zaWcKICAgICAgICAgbV9jbGllbnQtPmNoYW5nZVNoZWV0UmVjdChGbG9h
dFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5k
SG9zdDo6c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5zdGFydFdpbmRvd0RyYWcoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZEhv
c3Q6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdAoreworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1vdmVXaW5kb3dCeSh4LCB5KTsKK30KKwogYm9vbCBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OmlzUmVtb3RlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9j
bGllbnQgJiYgbV9jbGllbnQtPmlzUmVtb3RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKaW5kZXggNWUyN2NjNjU5NDA5YWE5MjNlN2Fm
NDA5N2RlODg4ZDZiNzgzYWViNS4uOTgwNjk4NDU4NDUwMzNkZGQ0ZDFmOTdjZjNjM2U5NDA0MmEy
ODg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNoZWV0UmVj
dChmbG9hdCB4LCBmbG9hdCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKIAor
ICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCk7CisgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQg
eCwgZmxvYXQgeSkgY29uc3Q7CisKICAgICBib29sIGlzUmVtb3RlKCkgY29uc3Q7CiAgICAgU3Ry
aW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdDsKICAgICBTdHJpbmcgYmFja2VuZENvbW1h
bmRzVVJMKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuaWRsCmluZGV4IDMxZDk4MTUwNDA1ZGE0NTBiZWQ4YjdiYzkyMzAxYTRj
ZDZlY2Y4ZGQuLmQ2YzA4ZWUwZjM0MmUyYTVmYjRlMmJhMmQ3ODBjN2UyZTU2Y2Q5OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRs
CkBAIC01Nyw2ICs1Nyw5IEBACiAKICAgICB2b2lkIHNldFNoZWV0UmVjdCh1bnJlc3RyaWN0ZWQg
ZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0KTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCk7CisgICAgdm9p
ZCBtb3ZlV2luZG93QnkodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5
KTsKKwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzUmVtb3RlOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTDsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJhY2tlbmRDb21tYW5kc1VSTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzCmluZGV4IGIyOTc4ZTI5ZGFlMzlhODY3ZWJiNDQyNDYxMGM5ZTQ1Yjg2
MzhjOTkuLjU4MzU0NjliNmMwZjc1YWFlYjRjOTE3YTI2YjUzNDRjMGJkZDg1ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4u
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtNDAsMTQgKzQwLDggQEAgbG9jYWxpemVkU3Ry
aW5nc1siJWQgV2FybmluZyJdID0gIiVkIFdhcm5pbmciOwogbG9jYWxpemVkU3RyaW5nc1siJWQg
V2FybmluZ3MiXSA9ICIlZCBXYXJuaW5ncyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlZCBceGQ3ICVk
IHBpeGVscyJdID0gIiVkIFx4ZDcgJWQgcGl4ZWxzIjsKIGxvY2FsaXplZFN0cmluZ3NbIiVkIFx4
ZDcgJWQgcGl4ZWxzIChOYXR1cmFsOiAlZCBceGQ3ICVkIHBpeGVscykiXSA9ICIlZCBceGQ3ICVk
IHBpeGVscyAoTmF0dXJhbDogJWQgXHhkNyAlZCBwaXhlbHMpIjsKLWxvY2FsaXplZFN0cmluZ3Nb
IiVkIGRvbWFpbiJdID0gIiVkIGRvbWFpbiI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyIlZCBkb21haW5z
Il0gPSAiJWQgZG9tYWlucyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlZCBtYXRjaGVzIl0gPSAiJWQg
bWF0Y2hlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlZCBvZiAlZCJdID0gIiVkIG9mICVkIjsKLWxv
Y2FsaXplZFN0cmluZ3NbIiVkIHJlZGlyZWN0Il0gPSAiJWQgcmVkaXJlY3QiOwotbG9jYWxpemVk
U3RyaW5nc1siJWQgcmVkaXJlY3RzIl0gPSAiJWQgcmVkaXJlY3RzIjsKLWxvY2FsaXplZFN0cmlu
Z3NbIiVkIHJlc291cmNlIl0gPSAiJWQgcmVzb3VyY2UiOwotbG9jYWxpemVkU3RyaW5nc1siJWQg
cmVzb3VyY2VzIl0gPSAiJWQgcmVzb3VyY2VzIjsKIGxvY2FsaXplZFN0cmluZ3NbIiVkcHgiXSA9
ICIlZHB4IjsKIGxvY2FsaXplZFN0cmluZ3NbIiVkcHhcdTAwQjIiXSA9ICIlZHB4XHUwMEIyIjsK
IGxvY2FsaXplZFN0cmluZ3NbIiVzICglcykiXSA9ICIlcyAoJXMpIjsKQEAgLTY3LDggKzYxLDYg
QEAgbG9jYWxpemVkU3RyaW5nc1siJXMgY2Fubm90IGJlIG1vZGlmaWVkIl0gPSAiJXMgY2Fubm90
IGJlIG1vZGlmaWVkIjsKIGxvY2FsaXplZFN0cmluZ3NbIiVzIGRlbGF5Il0gPSAiJXMgZGVsYXki
OwogbG9jYWxpemVkU3RyaW5nc1siJXMgZXZhbFxuJXMgYXN5bmMiXSA9ICIlcyBldmFsXG4lcyBh
c3luYyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlcyBpbnRlcnZhbCJdID0gIiVzIGludGVydmFsIjsK
LWxvY2FsaXplZFN0cmluZ3NbIiVzIHRvdGFsIl0gPSAiJXMgdG90YWwiOwotbG9jYWxpemVkU3Ry
aW5nc1siJXMgdHJhbnNmZXJyZWQiXSA9ICIlcyB0cmFuc2ZlcnJlZCI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyIlczoiXSA9ICIlczoiOwogbG9jYWxpemVkU3RyaW5nc1siKEFjdGlvbiAlcykiXSA9ICIo
QWN0aW9uICVzKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIoRGlzaykiXSA9ICIoRGlzaykiOwpAQCAt
ODYsMTQgKzc4LDEzIEBAIGxvY2FsaXplZFN0cmluZ3NbIihwcm9ncmFtKSJdID0gIihwcm9ncmFt
KSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIoc2VydmljZSB3b3JrZXIpIl0gPSAiKHNlcnZpY2Ugd29y
a2VyKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIodW5pbml0aWFsaXplZCkiXSA9ICIodW5pbml0aWFs
aXplZCkiOwogbG9jYWxpemVkU3RyaW5nc1siLCAiXSA9ICIsICI7Ci1sb2NhbGl6ZWRTdHJpbmdz
WyIwIENvbnNvbGUgZXJyb3JzIl0gPSAiMCBDb25zb2xlIGVycm9ycyI7Ci1sb2NhbGl6ZWRTdHJp
bmdzWyIwIENvbnNvbGUgd2FybmluZ3MiXSA9ICIwIENvbnNvbGUgd2FybmluZ3MiOwogbG9jYWxp
emVkU3RyaW5nc1siMSBtYXRjaCJdID0gIjEgbWF0Y2giOwogbG9jYWxpemVkU3RyaW5nc1siMkQi
XSA9ICIyRCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJBY2Nlc3NpYmlsaXR5Il0gPSAiQWNjZXNzaWJp
bGl0eSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJBY3Rpb24iXSA9ICJBY3Rpb24iOwogLyogVG9vbHRp
cCBmb3IgYSB0aW1lIHJhbmdlIGJhciB0aGF0IHJlcHJlc2VudHMgd2hlbiBhIENTUyBhbmltYXRp
b24vdHJhbnNpdGlvbiBpcyBydW5uaW5nICovCiBsb2NhbGl6ZWRTdHJpbmdzWyJBY3RpdmUiXSA9
ICJBY3RpdmUiOworbG9jYWxpemVkU3RyaW5nc1siQWN0aXZpdHkgVmlld2VyIl0gPSAiQWN0aXZp
dHkgVmlld2VyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkFkZCJdID0gIkFkZCI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJBZGQgJXMgUnVsZSJdID0gIkFkZCAlcyBSdWxlIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkFkZCBBY3Rpb24iXSA9ICJBZGQgQWN0aW9uIjsKQEAgLTI3NCwxMCArMjY1LDYgQEAgbG9jYWxp
emVkU3RyaW5nc1siQ2xpY2sgdG8gY3JlYXRlIGEgTG9jYWwgT3ZlcnJpZGUgZnJvbSB0aGlzIGNv
bnRlbnQiXSA9ICJDbGljawogbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gaW1wb3J0IGEgZmls
ZSBhbmQgY3JlYXRlIGEgTG9jYWwgT3ZlcnJpZGVcblNoaWZ0LWNsaWNrIHRvIGNyZWF0ZSBhIExv
Y2FsIE92ZXJyaWRlIGZyb20gdGhpcyBjb250ZW50Il0gPSAiQ2xpY2sgdG8gaW1wb3J0IGEgZmls
ZSBhbmQgY3JlYXRlIGEgTG9jYWwgT3ZlcnJpZGVcblNoaWZ0LWNsaWNrIHRvIGNyZWF0ZSBhIExv
Y2FsIE92ZXJyaWRlIGZyb20gdGhpcyBjb250ZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsaWNr
IHRvIHNlbGVjdCBhIGNvbG9yIl0gPSAiQ2xpY2sgdG8gc2VsZWN0IGEgY29sb3IiOwogbG9jYWxp
emVkU3RyaW5nc1siQ2xpY2sgdG8gc2VsZWN0IGEgY29sb3JcblNoaWZ0LWNsaWNrIHRvIHN3aXRj
aCBjb2xvciBmb3JtYXRzIl0gPSAiQ2xpY2sgdG8gc2VsZWN0IGEgY29sb3JcblNoaWZ0LWNsaWNr
IHRvIHN3aXRjaCBjb2xvciBmb3JtYXRzIjsKLWxvY2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIHNo
b3cgJWQgZXJyb3IgaW4gdGhlIENvbnNvbGUiXSA9ICJDbGljayB0byBzaG93ICVkIGVycm9yIGlu
IHRoZSBDb25zb2xlIjsKLWxvY2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIHNob3cgJWQgZXJyb3Jz
IGluIHRoZSBDb25zb2xlIl0gPSAiQ2xpY2sgdG8gc2hvdyAlZCBlcnJvcnMgaW4gdGhlIENvbnNv
bGUiOwotbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gc2hvdyAlZCB3YXJuaW5nIGluIHRoZSBD
b25zb2xlIl0gPSAiQ2xpY2sgdG8gc2hvdyAlZCB3YXJuaW5nIGluIHRoZSBDb25zb2xlIjsKLWxv
Y2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIHNob3cgJWQgd2FybmluZ3MgaW4gdGhlIENvbnNvbGUi
XSA9ICJDbGljayB0byBzaG93ICVkIHdhcm5pbmdzIGluIHRoZSBDb25zb2xlIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIkNsaWNrIHRvIHZpZXcgdmFyaWFibGUgdmFsdWVcblNoaWZ0LWNsaWNrIHRvIHJl
cGxhY2UgdmFyaWFibGUgd2l0aCB2YWx1ZSJdID0gIkNsaWNrIHRvIHZpZXcgdmFyaWFibGUgdmFs
dWVcblNoaWZ0LWNsaWNrIHRvIHJlcGxhY2UgdmFyaWFibGUgd2l0aCB2YWx1ZSI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJDbGlja2FibGUiXSA9ICJDbGlja2FibGUiOwogbG9jYWxpemVkU3RyaW5nc1si
Q2xpZW50cyJdID0gIkNsaWVudHMiOwpAQCAtMzQ4LDYgKzMzNSw3IEBAIGxvY2FsaXplZFN0cmlu
Z3NbIkNyZWF0ZSAlcyBSdWxlIl0gPSAiQ3JlYXRlICVzIFJ1bGUiOwogbG9jYWxpemVkU3RyaW5n
c1siQ3JlYXRlIEJyZWFrcG9pbnQiXSA9ICJDcmVhdGUgQnJlYWtwb2ludCI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJDcmVhdGUgTG9jYWwgT3ZlcnJpZGUiXSA9ICJDcmVhdGUgTG9jYWwgT3ZlcnJpZGUi
OwogbG9jYWxpemVkU3RyaW5nc1siQ3JlYXRlIFJlc291cmNlIl0gPSAiQ3JlYXRlIFJlc291cmNl
IjsKK2xvY2FsaXplZFN0cmluZ3NbIkNyZWF0ZSBhIG5ldyB0YWIiXSA9ICJDcmVhdGUgYSBuZXcg
dGFiIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNyb3NzLU9yaWdpbiBSZXN0cmljdGlvbnMiXSA9ICJD
cm9zcy1PcmlnaW4gUmVzdHJpY3Rpb25zIjsKIGxvY2FsaXplZFN0cmluZ3NbIkN1cnJlbnQiXSA9
ICJDdXJyZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIkN1cnJlbnQgU3RhdGUiXSA9ICJDdXJyZW50
IFN0YXRlIjsKQEAgLTM2Nyw2ICszNTUsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJEYXRhYmFzZSBu
byBsb25nZXIgaGFzIGV4cGVjdGVkIHZlcnNpb24uIl0gPSAiRGF0YWJhc2Ugbm8gbG9uZwogbG9j
YWxpemVkU3RyaW5nc1siRGF0YWJhc2VzIl0gPSAiRGF0YWJhc2VzIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIkRhdGUiXSA9ICJEYXRlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkRlYnVnOiAiXSA9ICJEZWJ1
ZzogIjsKK2xvY2FsaXplZFN0cmluZ3NbIkRlYnVnZ2VyIFBhdXNlZCJdID0gIkRlYnVnZ2VyIFBh
dXNlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEZWJ1Z2dlciBTdGF0ZW1lbnQiXSA9ICJEZWJ1Z2dl
ciBTdGF0ZW1lbnQiOwogbG9jYWxpemVkU3RyaW5nc1siRGVidWdnZXIgU3RhdGVtZW50cyJdID0g
IkRlYnVnZ2VyIFN0YXRlbWVudHMiOwogbG9jYWxpemVkU3RyaW5nc1siRGVidWdnZXIgZGlzYWJs
ZWQgZHVyaW5nIEF1ZGl0Il0gPSAiRGVidWdnZXIgZGlzYWJsZWQgZHVyaW5nIEF1ZGl0IjsKQEAg
LTQ4Nyw2ICs0NzYsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUgRXZlbnQgTGlzdGVuZXIi
XSA9ICJFbmFibGUgRXZlbnQgTGlzdGVuZXIiOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIEV2
ZW50IExpc3RlbmVycyJdID0gIkVuYWJsZSBFdmVudCBMaXN0ZW5lcnMiOwogbG9jYWxpemVkU3Ry
aW5nc1siRW5hYmxlIEluc3BlY3RvciBCb290c3RyYXAgU2NyaXB0Il0gPSAiRW5hYmxlIEluc3Bl
Y3RvciBCb290c3RyYXAgU2NyaXB0IjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBMb2NhbCBP
dmVycmlkZSJdID0gIkVuYWJsZSBMb2NhbCBPdmVycmlkZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJF
bmFibGUgTmV3IFRhYiBCYXIiXSA9ICJFbmFibGUgTmV3IFRhYiBCYXIiOwogbG9jYWxpemVkU3Ry
aW5nc1siRW5hYmxlIFByZXZpZXcgRmVhdHVyZXMiXSA9ICJFbmFibGUgUHJldmlldyBGZWF0dXJl
cyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUgUHJvZ3JhbSJdID0gIkVuYWJsZSBQcm9ncmFt
IjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBSdWxlIl0gPSAiRW5hYmxlIFJ1bGUiOwpAQCAt
NzA5LDggKzY5OSw2IEBAIGxvY2FsaXplZFN0cmluZ3NbIkxpdmUgQWN0aXZpdHkiXSA9ICJMaXZl
IEFjdGl2aXR5IjsKIGxvY2FsaXplZFN0cmluZ3NbIkxpdmUgU2l6ZSJdID0gIkxpdmUgU2l6ZSI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJMb2FkIFx1MjAxNCAlcyJdID0gIkxvYWQgXHUyMDE0ICVzIjsK
IGxvY2FsaXplZFN0cmluZ3NbIkxvYWQgY2FuY2VsbGVkIl0gPSAiTG9hZCBjYW5jZWxsZWQiOwot
bG9jYWxpemVkU3RyaW5nc1siTG9hZGVkIGluICVzIl0gPSAiTG9hZGVkIGluICVzIjsKLWxvY2Fs
aXplZFN0cmluZ3NbIkxvYWRpbmcgZm9yICVzIl0gPSAiTG9hZGluZyBmb3IgJXMiOwogbG9jYWxp
emVkU3RyaW5nc1siTG9jYWwgRmlsZSJdID0gIkxvY2FsIEZpbGUiOwogbG9jYWxpemVkU3RyaW5n
c1siTG9jYWwgT3ZlcnJpZGUiXSA9ICJMb2NhbCBPdmVycmlkZSI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJMb2NhbCBPdmVycmlkZVx1MjAyNiJdID0gIkxvY2FsIE92ZXJyaWRlXHUyMDI2IjsKQEAgLTc3
NCw2ICs3NjIsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJOZXR3b3JrIl0gPSAiTmV0d29yayI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJOZXR3b3JrIElzc3VlIl0gPSAiTmV0d29yayBJc3N1ZSI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJOZXR3b3JrIFJlcXVlc3RzIl0gPSAiTmV0d29yayBSZXF1ZXN0cyI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJOZXR3b3JrIFJlcXVlc3RzOiJdID0gIk5ldHdvcmsgUmVxdWVzdHM6
IjsKK2xvY2FsaXplZFN0cmluZ3NbIk5ldyBUYWIiXSA9ICJOZXcgVGFiIjsKIC8qIEEgc3VibWVu
dSBpdGVtIG9mICdBZGQnIHRvIGFkZCBET00gbm9kZXMgYWZ0ZXIgdGhlIHNlbGVjdGVkIERPTSBu
b2RlICovCiBsb2NhbGl6ZWRTdHJpbmdzWyJOZXh0IFNpYmxpbmciXSA9ICJOZXh0IFNpYmxpbmci
OwogbG9jYWxpemVkU3RyaW5nc1siTm8iXSA9ICJObyI7CkBAIC0xMDkyLDE1ICsxMDgxLDIxIEBA
IGxvY2FsaXplZFN0cmluZ3NbIlNob3cgU2NvcGUgQ2hhaW4gb24gcGF1c2UiXSA9ICJTaG93IFNj
b3BlIENoYWluIG9uIHBhdXNlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgYWxsIGFjdGlvbnMi
XSA9ICJTaG93IGFsbCBhY3Rpb25zIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgYWxsIHJlc291
cmNlcyJdID0gIlNob3cgYWxsIHJlc291cmNlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGNv
bXBvc2l0aW5nIGJvcmRlcnMiXSA9ICJTaG93IGNvbXBvc2l0aW5nIGJvcmRlcnMiOworbG9jYWxp
emVkU3RyaW5nc1siU2hvdyBlcnJvcnMgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIl0gPSAiU2hvdyBl
cnJvcnMgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgZnVs
bCBjZXJ0aWZpY2F0ZSJdID0gIlNob3cgZnVsbCBjZXJ0aWZpY2F0ZSI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJTaG93IGhpZGRlbiB0YWJzIl0gPSAiU2hvdyBoaWRkZW4gdGFicyI7Citsb2NhbGl6ZWRT
dHJpbmdzWyJTaG93IG1lc3NhZ2VzIGxvZ2dlZCB0byB0aGUgQ29uc29sZSJdID0gIlNob3cgbWVz
c2FnZXMgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIjsKK2xvY2FsaXplZFN0cmluZ3NbIlNob3cgbmV0
d29yayBpbmZvcm1hdGlvbiJdID0gIlNob3cgbmV0d29yayBpbmZvcm1hdGlvbiI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJTaG93IG9ubHkgZm9yIHNlbGVjdGVkIG5vZGUiXSA9ICJTaG93IG9ubHkgZm9y
IHNlbGVjdGVkIG5vZGUiOworbG9jYWxpemVkU3RyaW5nc1siU2hvdyBwYWdlIGxvYWQgdGltaW5n
Il0gPSAiU2hvdyBwYWdlIGxvYWQgdGltaW5nIjsKK2xvY2FsaXplZFN0cmluZ3NbIlNob3cgcGFn
ZSByZXNvdXJjZXMiXSA9ICJTaG93IHBhZ2UgcmVzb3VyY2VzIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IlNob3cgcGFnZSBydWxlcnMgYW5kIG5vZGUgYm9yZGVyIGxpbmVzIl0gPSAiU2hvdyBwYWdlIHJ1
bGVycyBhbmQgbm9kZSBib3JkZXIgbGluZXMiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBydWxl
cnMiXSA9ICJTaG93IHJ1bGVycyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IHRoZSBkZXRhaWxz
IHNpZGViYXIgKCVzKSJdID0gIlNob3cgdGhlIGRldGFpbHMgc2lkZWJhciAoJXMpIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIlNob3cgdGhlIG5hdmlnYXRpb24gc2lkZWJhciAoJXMpIl0gPSAiU2hvdyB0
aGUgbmF2aWdhdGlvbiBzaWRlYmFyICglcykiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyB0cmFu
c3BhcmVuY3kgZ3JpZCJdID0gIlNob3cgdHJhbnNwYXJlbmN5IGdyaWQiOwogbG9jYWxpemVkU3Ry
aW5nc1siU2hvdyB0eXBlIGluZm9ybWF0aW9uIl0gPSAiU2hvdyB0eXBlIGluZm9ybWF0aW9uIjsK
K2xvY2FsaXplZFN0cmluZ3NbIlNob3cgd2FybmluZ3MgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIl0g
PSAiU2hvdyB3YXJuaW5ncyBsb2dnZWQgdG8gdGhlIENvbnNvbGUiOwogbG9jYWxpemVkU3RyaW5n
c1siU2hvdzoiXSA9ICJTaG93OiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaXRlLXNwZWNpZmljIEhh
Y2tzIl0gPSAiU2l0ZS1zcGVjaWZpYyBIYWNrcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaXplIl0g
PSAiU2l6ZSI7CkBAIC0xMjk1LDYgKzEyOTAsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgdGhl
IHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGluZyByZXNvdXJjZXMiXSA9ICJVc2UgdGhlIHJlcwog
bG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCJdID0gIlVzZXIgQWdlbnQiOwogbG9jYWxpemVk
U3RyaW5nc1siVXNlciBBZ2VudCBTdHlsZSBTaGVldCJdID0gIlVzZXIgQWdlbnQgU3R5bGUgU2hl
ZXQiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudDoiXSA9ICJVc2VyIEFnZW50OiI7Cits
b2NhbGl6ZWRTdHJpbmdzWyJVc2VyIEludGVyZmFjZToiXSA9ICJVc2VyIEludGVyZmFjZToiOwog
bG9jYWxpemVkU3RyaW5nc1siVXNlciBTdHlsZSBTaGVldCJdID0gIlVzZXIgU3R5bGUgU2hlZXQi
OwogbG9jYWxpemVkU3RyaW5nc1siVmFsaWQgRnJvbSJdID0gIlZhbGlkIEZyb20iOwogbG9jYWxp
emVkU3RyaW5nc1siVmFsaWQgVW50aWwiXSA9ICJWYWxpZCBVbnRpbCI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggOTkzNWUwZTZm
MTY5OWZiNTEzNmY4Y2QxNDg1MTJiNDg3OTQ1YWFiNS4uZWFjZTEyNjdjYTA2MTAwZjZjNzBhZjM1
NGQyMDQ3ZThkMDRmZGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMTI4LDYgKzEyOCw3IEBAIFdJLmxvYWRlZCA9IGZ1bmN0
aW9uKCkKIAogICAgIC8vIFJlZ2lzdGVyIGZvciBldmVudHMuCiAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgV0ku
X2RlYnVnZ2VyRGlkUGF1c2UpOworICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCBXSS5fZGVidWdnZXJEaWRSZXN1
bWUpOwogICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2
ZW50Lkluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkLCBXSS5faW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQp
OwogICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50
LkRPTU5vZGVXYXNJbnNwZWN0ZWQsIFdJLl9kb21Ob2RlV2FzSW5zcGVjdGVkKTsKICAgICBXSS5k
b21TdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLkV2
ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQsIFdJLl9kb21TdG9yYWdlV2FzSW5zcGVj
dGVkKTsKQEAgLTE0OCw3ICsxNDksNiBAQCBXSS5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgICAg
IFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgV0kuU3RvcmFnZVRhYkNv
bnRlbnRWaWV3LlR5cGUsCiAgICAgICAgIFdJLkdyYXBoaWNzVGFiQ29udGVudFZpZXcuVHlwZSwK
LSAgICAgICAgV0kuTGF5ZXJzVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgV0kuQXVkaXRU
YWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICBXSS5Db25zb2xlVGFiQ29udGVudFZpZXcuVHlw
ZSwKICAgICBdKTsKQEAgLTIzNyw2ICsyMzcsNyBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rp
b24oKQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBXSS5fd2luZG93UmVz
aXplZCk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBXSS5fd2luZG93
S2V5RG93bik7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgV0kuX3dpbmRv
d0tleVVwKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgV0kuX21v
dXNlRG93biwgdHJ1ZSk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIs
IFdJLl9tb3VzZU1vdmVkLCB0cnVlKTsKICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFn
ZWhpZGUiLCBXSS5fcGFnZUhpZGRlbik7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImNv
bnRleHRtZW51IiwgV0kuX2NvbnRleHRNZW51UmVxdWVzdGVkKTsKQEAgLTI3Nyw4ICsyNzgsMTkg
QEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBXSS5zZXR0aW5ncy5zaG93V2hp
dGVzcGFjZUNoYXJhY3RlcnMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5n
ZWQsIHNldFdoaXRlc3BhY2VDaGFyYWN0ZXJDbGFzc05hbWUpOwogICAgIHNldFdoaXRlc3BhY2VD
aGFyYWN0ZXJDbGFzc05hbWUoKTsKIAorICAgIFdJLnNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBu
ZXcgV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldzsKKworICAgIFdJLl9zZXR0aW5nc0tleWJvYXJk
U2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdJLktleWJvYXJkU2hvcnRjdXQuS2V5LkNvbW1hLCBX
SS5faGFuZGxlU2V0dGluZ3NLZXlib2FyZFNob3J0Y3V0KTsKKwogICAgIC8vIENyZWF0ZSB0aGUg
dXNlciBpbnRlcmZhY2UgZWxlbWVudHMuCi0gICAgV0kudGFiQmFyID0gbmV3IFdJLlRhYkJhcihk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFiLWJhciIpKTsKKyAgICBXSS50b29sYmFyID0gbmV3
IFdJLlRvb2xiYXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXIiKSk7CisKKyAgICBp
ZiAoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFyLnZhbHVlKQorICAgICAg
ICBXSS50YWJCYXIgPSBuZXcgV0kuVGFiQmFyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWIt
YmFyIikpOworICAgIGVsc2UgeworICAgICAgICBXSS50YWJCYXIgPSBuZXcgV0kuTGVnYWN5VGFi
QmFyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWItYmFyIikpOworICAgICAgICBXSS50YWJC
YXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYWJCYXIuRXZlbnQuT3BlbkRlZmF1bHRUYWIsIFdJLl9v
cGVuRGVmYXVsdFRhYik7CisgICAgfQogCiAgICAgV0kuX2NvbnRlbnRFbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKICAgICBXSS5fY29udGVudEVsZW1lbnQuc2V0
QXR0cmlidXRlKCJyb2xlIiwgIm1haW4iKTsKQEAgLTMzMCw2ICszNDIsNyBAQCBXSS5jb250ZW50
TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIFdJLl9yZXNldFpvb21LZXlib2FyZFNob3J0Y3V0ID0g
bmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21t
YW5kT3JDb250cm9sLCAiMCIsIFdJLl9yZXNldFpvb20pOwogCiAgICAgV0kuX3Nob3dUYWJBdElu
ZGV4S2V5Ym9hcmRTaG9ydGN1dHMgPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0ubWFwKChp
KSA9PiBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVy
LkNvbW1hbmRPckNvbnRyb2wgfCBXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLk9wdGlvbiwg
YCR7aX1gLCAoZXZlbnQpID0+IHsgV0kuX3Nob3dUYWJBdEluZGV4RnJvbVNob3J0Y3V0KGkpOyB9
KSk7CisgICAgV0kuX29wZW5OZXdUYWJLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdJLktleWJvYXJk
U2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sIHwg
V0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5PcHRpb24sICJUIiwgV0kuX3Nob3dOZXdUYWJG
cm9tU2hvcnRjdXQpOwogCiAgICAgV0kudGFiQnJvd3NlciA9IG5ldyBXSS5UYWJCcm93c2VyKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWItYnJvd3NlciIpLCBXSS50YWJCYXIsIFdJLm5hdmln
YXRpb25TaWRlYmFyLCBXSS5kZXRhaWxzU2lkZWJhcik7CiAgICAgV0kudGFiQnJvd3Nlci5hZGRF
dmVudExpc3RlbmVyKFdJLlRhYkJyb3dzZXIuRXZlbnQuU2VsZWN0ZWRUYWJDb250ZW50Vmlld0Rp
ZENoYW5nZSwgV0kuX3RhYkJyb3dzZXJTZWxlY3RlZFRhYkNvbnRlbnRWaWV3RGlkQ2hhbmdlKTsK
QEAgLTM1OCwxMDggKzM3MSw5NCBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAg
IFdJLnN0ZXBJbnRvQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNo
b3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgV0ku
S2V5Ym9hcmRTaG9ydGN1dC5LZXkuU2VtaWNvbG9uLCBXSS5kZWJ1Z2dlclN0ZXBJbnRvKTsKICAg
ICBXSS5zdGVwT3V0QWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNo
b3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQgfCBXSS5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdJLktleWJvYXJkU2hvcnRjdXQuS2V5
LlNlbWljb2xvbiwgV0kuZGVidWdnZXJTdGVwT3V0KTsKIAotICAgIFdJLl9zZXR0aW5nc0tleWJv
YXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdJLktleWJvYXJkU2hvcnRjdXQuS2V5LkNvbW1h
LCBXSS5faGFuZGxlU2V0dGluZ3NLZXlib2FyZFNob3J0Y3V0KTsKKyAgICBXSS5fY2xvc2VUb29s
YmFyQnV0dG9uID0gbmV3IFdJLkNvbnRyb2xUb29sYmFySXRlbSgiZG9jay1jbG9zZSIsIFdJLlVJ
U3RyaW5nKCJDbG9zZSIpLCAiSW1hZ2VzL0Nsb3NlLnN2ZyIsIDE2LCAxNCk7CisgICAgV0kuX2Ns
b3NlVG9vbGJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVt
LkV2ZW50LkNsaWNrZWQsIFdJLmNsb3NlKTsKIAotICAgIFdJLl90b2dnbGVQcmV2aW91c0RvY2tD
b25maWd1cmF0aW9uS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJ
LktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdJLktleWJvYXJk
U2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQsICJEIiwgV0kuX3RvZ2dsZVByZXZpb3VzRG9ja0NvbmZp
Z3VyYXRpb24pOworICAgIFdJLl91bmRvY2tUb29sYmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvblRv
b2xiYXJJdGVtKCJ1bmRvY2siLCBXSS5VSVN0cmluZygiRGV0YWNoIGludG8gc2VwYXJhdGUgd2lu
ZG93IiksICJJbWFnZXMvVW5kb2NrLnN2ZyIpOworICAgIFdJLl91bmRvY2tUb29sYmFyQnV0dG9u
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NO
YW1lKTsKKyAgICBXSS5fdW5kb2NrVG9vbGJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl91bmRvY2spOwogCi0gICAgV0ku
X2Nsb3NlVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkb2NrLWNs
b3NlIiwgV0kuVUlTdHJpbmcoIkNsb3NlIiksICJJbWFnZXMvQ2xvc2VMYXJnZS5zdmciKTsKLSAg
ICBXSS5fY2xvc2VUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5jbG9zZSk7CisgICAgbGV0IGRvY2tJbWFnZSA9IFdJ
LnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwgPyAi
SW1hZ2VzL0RvY2tMZWZ0LnN2ZyIgOiAiSW1hZ2VzL0RvY2tSaWdodC5zdmciOworICAgIFdJLl9k
b2NrVG9TaWRlVG9vbGJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25Ub29sYmFySXRlbSgiZG9jay1y
aWdodCIsIFdJLlVJU3RyaW5nKCJEb2NrIHRvIHNpZGUgb2Ygd2luZG93IiksIGRvY2tJbWFnZSk7
CisgICAgV0kuX2RvY2tUb1NpZGVUb29sYmFyQnV0dG9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChX
SS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NOYW1lKTsKIAotICAgIFdJLl9kb2NrVG9T
aWRlVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkb2NrLXJpZ2h0
IiwgV0kuVUlTdHJpbmcoIkRvY2sgdG8gc2lkZSBvZiB3aW5kb3ciKSwgV0kucmVzb2x2ZWRMYXlv
dXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/ICJJbWFnZXMvRG9ja0xl
ZnQuc3ZnIiA6ICJJbWFnZXMvRG9ja1JpZ2h0LnN2ZyIsIDE4LCAxNik7Ci0gICAgV0kuX2RvY2tU
b1NpZGVUYWJCYXJCdXR0b24uZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBvcG92ZXIuSWdub3Jl
QXV0b0Rpc21pc3NDbGFzc05hbWUpOwotICAgIFdJLl9kb2NrVG9TaWRlVGFiQmFyQnV0dG9uLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0ku
cmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/IFdJ
Ll9kb2NrTGVmdCA6IFdJLl9kb2NrUmlnaHQpOworICAgIGxldCBkb2NrVG9TaWRlQ2FsbGJhY2sg
PSBXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRM
ID8gV0kuX2RvY2tMZWZ0IDogV0kuX2RvY2tSaWdodDsKKyAgICBXSS5fZG9ja1RvU2lkZVRvb2xi
YXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5D
bGlja2VkLCBkb2NrVG9TaWRlQ2FsbGJhY2spOwogCi0gICAgV0kuX2RvY2tCb3R0b21UYWJCYXJC
dXR0b24gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRvY2stYm90dG9tIiwgV0kuVUlT
dHJpbmcoIkRvY2sgdG8gYm90dG9tIG9mIHdpbmRvdyIpLCAiSW1hZ2VzL0RvY2tCb3R0b20uc3Zn
IiwgMTgsIDE2KTsKLSAgICBXSS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRvbi5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7Ci0gICAgV0ku
X2RvY2tCb3R0b21UYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fZG9ja0JvdHRvbSk7CisgICAgV0kuX2RvY2tCb3R0
b21Ub29sYmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvblRvb2xiYXJJdGVtKCJkb2NrLWJvdHRvbSIs
IFdJLlVJU3RyaW5nKCJEb2NrIHRvIGJvdHRvbSBvZiB3aW5kb3ciKSwgIkltYWdlcy9Eb2NrQm90
dG9tLnN2ZyIpOworICAgIFdJLl9kb2NrQm90dG9tVG9vbGJhckJ1dHRvbi5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7CisgICAgV0ku
X2RvY2tCb3R0b21Ub29sYmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX2RvY2tCb3R0b20pOwogCi0gICAgV0kuX3VuZG9j
a1RhYkJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgidW5kb2NrIiwgV0ku
VUlTdHJpbmcoIkRldGFjaCBpbnRvIHNlcGFyYXRlIHdpbmRvdyIpLCAiSW1hZ2VzL1VuZG9jay5z
dmciLCAxOCwgMTYpOwotICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24uZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdJLlBvcG92ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFzc05hbWUpOwotICAgIFdJLl91
bmRvY2tUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5FdmVudC5DbGlja2VkLCBXSS5fdW5kb2NrKTsKLQotICAgIFdJLnRhYkJhci5hZGROYXZpZ2F0
aW9uSXRlbUJlZm9yZShuZXcgV0kuR3JvdXBOYXZpZ2F0aW9uSXRlbShbCi0gICAgICAgIFdJLl9j
bG9zZVRhYkJhckJ1dHRvbiwKLSAgICAgICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24sCi0g
ICAgICAgIFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0dG9uLAotICAgICAgICBXSS5fdW5kb2NrVGFi
QmFyQnV0dG9uLAotICAgIF0pKTsKKyAgICBXSS5fdG9nZ2xlUHJldmlvdXNEb2NrQ29uZmlndXJh
dGlvbktleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2Fy
ZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXSS5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVyLlNoaWZ0LCAiRCIsIFdJLl90b2dnbGVQcmV2aW91c0RvY2tDb25maWd1cmF0aW9u
KTsKIAotICAgIFdJLl9kb2NrRGl2aWRlclRhYkJhck5hdmlnYXRpb25JdGVtID0gbmV3IFdJLkRp
dmlkZXJOYXZpZ2F0aW9uSXRlbTsKLSAgICBXSS50YWJCYXIuYWRkTmF2aWdhdGlvbkl0ZW1CZWZv
cmUoV0kuX2RvY2tEaXZpZGVyVGFiQmFyTmF2aWdhdGlvbkl0ZW0pOworICAgIGxldCByZWxvYWRU
b29sVGlwOworICAgIGlmIChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVn
Z2FibGVUeXBlLkphdmFTY3JpcHQpCisgICAgICAgIHJlbG9hZFRvb2xUaXAgPSBXSS5VSVN0cmlu
ZygiUmVzdGFydCAoJXMpIikuZm9ybWF0KFdJLl9yZWxvYWRQYWdlS2V5Ym9hcmRTaG9ydGN1dC5k
aXNwbGF5TmFtZSk7CisgICAgZWxzZQorICAgICAgICByZWxvYWRUb29sVGlwID0gV0kuVUlTdHJp
bmcoIlJlbG9hZCBwYWdlICglcylcblJlbG9hZCBwYWdlIGlnbm9yaW5nIGNhY2hlICglcykiKS5m
b3JtYXQoV0kuX3JlbG9hZFBhZ2VLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lLCBXSS5fcmVs
b2FkUGFnZUZyb21PcmlnaW5LZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKKyAgICBXSS5f
cmVsb2FkVG9vbGJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25Ub29sYmFySXRlbSgicmVsb2FkIiwg
cmVsb2FkVG9vbFRpcCwgIkltYWdlcy9SZWxvYWRUb29sYmFyLnN2ZyIpOworICAgIFdJLl9yZWxv
YWRUb29sYmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RXZlbnQuQ2xpY2tlZCwgV0kuX3JlbG9hZFRvb2xiYXJCdXR0b25DbGlja2VkKTsKIAotICAgIGxl
dCBpbnNwZWN0ZWRQYWdlQ29udHJvbE5hdmlnYXRpb25JdGVtcyA9IFtdOworICAgIFdJLl9kb3du
bG9hZFRvb2xiYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uVG9vbGJhckl0ZW0oImRvd25sb2FkIiwg
V0kuVUlTdHJpbmcoIkRvd25sb2FkIFdlYiBBcmNoaXZlIiksICJJbWFnZXMvRG93bmxvYWRBcnJv
dy5zdmciKTsKKyAgICBXSS5fZG93bmxvYWRUb29sYmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX2Rvd25sb2FkV2ViQXJj
aGl2ZSk7CiAKICAgICBsZXQgZWxlbWVudFNlbGVjdGlvblRvb2xUaXAgPSBXSS5VSVN0cmluZygi
U3RhcnQgZWxlbWVudCBzZWxlY3Rpb24gKCVzKSIpLmZvcm1hdChXSS5faW5zcGVjdE1vZGVLZXli
b2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKICAgICBsZXQgYWN0aXZhdGVkRWxlbWVudFNlbGVj
dGlvblRvb2xUaXAgPSBXSS5VSVN0cmluZygiU3RvcCBlbGVtZW50IHNlbGVjdGlvbiAoJXMpIiku
Zm9ybWF0KFdJLl9pbnNwZWN0TW9kZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwotICAg
IFdJLl9pbnNwZWN0TW9kZVRhYkJhckJ1dHRvbiA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvbk5hdmln
YXRpb25JdGVtKCJpbnNwZWN0IiwgZWxlbWVudFNlbGVjdGlvblRvb2xUaXAsIGFjdGl2YXRlZEVs
ZW1lbnRTZWxlY3Rpb25Ub29sVGlwLCAiSW1hZ2VzL0Nyb3NzaGFpci5zdmciKTsKLSAgICBXSS5f
aW5zcGVjdE1vZGVUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fdG9nZ2xlSW5zcGVjdE1vZGUpOwotICAgIGluc3Bl
Y3RlZFBhZ2VDb250cm9sTmF2aWdhdGlvbkl0ZW1zLnB1c2goV0kuX2luc3BlY3RNb2RlVGFiQmFy
QnV0dG9uKTsKKyAgICBXSS5faW5zcGVjdE1vZGVUb29sYmFyQnV0dG9uID0gbmV3IFdJLkFjdGl2
YXRlQnV0dG9uVG9vbGJhckl0ZW0oImluc3BlY3QiLCBlbGVtZW50U2VsZWN0aW9uVG9vbFRpcCwg
YWN0aXZhdGVkRWxlbWVudFNlbGVjdGlvblRvb2xUaXAsICJJbWFnZXMvQ3Jvc3NoYWlyLnN2ZyIp
OworICAgIFdJLl9pbnNwZWN0TW9kZVRvb2xiYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fdG9nZ2xlSW5zcGVjdE1vZGUp
OwogCi0gICAgaWYgKEluc3BlY3RvckZyb250ZW5kSG9zdC5pc1JlbW90ZSB8fCBXSS5pc0RlYnVn
VUlFbmFibGVkKCkpIHsKLSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEyLjIpOiBQYWdl
Lm92ZXJyaWRlU2V0dGluZyBkaWQgbm90IGV4aXN0LgotICAgICAgICBpZiAoSW5zcGVjdG9yQmFj
a2VuZC5oYXNDb21tYW5kKCJQYWdlLm92ZXJyaWRlVXNlckFnZW50IikgJiYgSW5zcGVjdG9yQmFj
a2VuZC5oYXNDb21tYW5kKCJQYWdlLm92ZXJyaWRlU2V0dGluZyIpKSB7Ci0gICAgICAgICAgICBj
b25zdCBkZXZpY2VTZXR0aW5nc1Rvb2x0aXAgPSBXSS5VSVN0cmluZygiRGV2aWNlIFNldHRpbmdz
Iik7Ci0gICAgICAgICAgICBXSS5fZGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0b24gPSBuZXcgV0ku
QWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiZGV2aWNlLXNldHRpbmdzIiwgZGV2aWNlU2V0
dGluZ3NUb29sdGlwLCBkZXZpY2VTZXR0aW5nc1Rvb2x0aXAsICJJbWFnZXMvRGV2aWNlLnN2ZyIp
OwotICAgICAgICAgICAgV0kuX2RldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX2hhbmRsZURl
dmljZVNldHRpbmdzVGFiQmFyQnV0dG9uQ2xpY2tlZCk7Ci0gICAgICAgICAgICBpbnNwZWN0ZWRQ
YWdlQ29udHJvbE5hdmlnYXRpb25JdGVtcy5wdXNoKFdJLl9kZXZpY2VTZXR0aW5nc1RhYkJhckJ1
dHRvbik7CisgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEyLjIpOiBQYWdlLm92ZXJyaWRlU2V0
dGluZyBkaWQgbm90IGV4aXN0LgorICAgIGlmICgoSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlzUmVt
b3RlIHx8IFdJLmlzRGVidWdVSUVuYWJsZWQoKSkgJiYgSW5zcGVjdG9yQmFja2VuZC5oYXNDb21t
YW5kKCJQYWdlLm92ZXJyaWRlVXNlckFnZW50IikgJiYgSW5zcGVjdG9yQmFja2VuZC5oYXNDb21t
YW5kKCJQYWdlLm92ZXJyaWRlU2V0dGluZyIpKSB7CisgICAgICAgIGNvbnN0IGRldmljZVNldHRp
bmdzVG9vbHRpcCA9IFdJLlVJU3RyaW5nKCJEZXZpY2UgU2V0dGluZ3MiKTsKKyAgICAgICAgV0ku
X2RldmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbiA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvblRvb2xi
YXJJdGVtKCJkZXZpY2Utc2V0dGluZ3MiLCBkZXZpY2VTZXR0aW5nc1Rvb2x0aXAsIGRldmljZVNl
dHRpbmdzVG9vbHRpcCwgIkltYWdlcy9EZXZpY2Uuc3ZnIik7CisgICAgICAgIFdJLl9kZXZpY2VT
ZXR0aW5nc1Rvb2xiYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5FdmVudC5DbGlja2VkLCBXSS5faGFuZGxlRGV2aWNlU2V0dGluZ3NUb29sYmFyQnV0dG9u
Q2xpY2tlZCk7CiAKLSAgICAgICAgICAgIFdJLl9kZXZpY2VTZXR0aW5nc1BvcG92ZXIgPSBudWxs
OwotICAgICAgICB9CisgICAgICAgIFdJLl9kZXZpY2VTZXR0aW5nc1BvcG92ZXIgPSBudWxsOwor
ICAgIH0KIAotICAgICAgICBsZXQgcmVsb2FkVG9vbFRpcDsKLSAgICAgICAgaWYgKFdJLnNoYXJl
ZEFwcC5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkKLSAg
ICAgICAgICAgIHJlbG9hZFRvb2xUaXAgPSBXSS5VSVN0cmluZygiUmVzdGFydCAoJXMpIikuZm9y
bWF0KFdJLl9yZWxvYWRQYWdlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHJlbG9hZFRvb2xUaXAgPSBXSS5VSVN0cmluZygiUmVsb2FkIHBh
Z2UgKCVzKVxuUmVsb2FkIHBhZ2UgaWdub3JpbmcgY2FjaGUgKCVzKSIpLmZvcm1hdChXSS5fcmVs
b2FkUGFnZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUsIFdJLl9yZWxvYWRQYWdlRnJvbU9y
aWdpbktleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwotICAgICAgICBXSS5fcmVsb2FkVGFi
QmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJyZWxvYWQiLCByZWxvYWRU
b29sVGlwLCAiSW1hZ2VzL1JlbG9hZFRvb2xiYXIuc3ZnIik7Ci0gICAgICAgIFdJLl9yZWxvYWRU
YWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVu
dC5DbGlja2VkLCBXSS5fcmVsb2FkVGFiQmFyQnV0dG9uQ2xpY2tlZCk7Ci0gICAgICAgIGluc3Bl
Y3RlZFBhZ2VDb250cm9sTmF2aWdhdGlvbkl0ZW1zLnB1c2goV0kuX3JlbG9hZFRhYkJhckJ1dHRv
bik7CisgICAgV0kuX3VwZGF0ZVJlbG9hZFRvb2xiYXJCdXR0b24oKTsKKyAgICBXSS5fdXBkYXRl
RG93bmxvYWRUb29sYmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZUluc3BlY3RNb2RlVG9vbGJh
ckJ1dHRvbigpOwogCi0gICAgICAgIFdJLl9kb3dubG9hZFRhYkJhckJ1dHRvbiA9IG5ldyBXSS5C
dXR0b25OYXZpZ2F0aW9uSXRlbSgiZG93bmxvYWQiLCBXSS5VSVN0cmluZygiRG93bmxvYWQgV2Vi
IEFyY2hpdmUiKSwgIkltYWdlcy9Eb3dubG9hZEFycm93LnN2ZyIpOwotICAgICAgICBXSS5fZG93
bmxvYWRUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5FdmVudC5DbGlja2VkLCBXSS5fZG93bmxvYWRXZWJBcmNoaXZlKTsKLSAgICAgICAgaW5zcGVj
dGVkUGFnZUNvbnRyb2xOYXZpZ2F0aW9uSXRlbXMucHVzaChXSS5fZG93bmxvYWRUYWJCYXJCdXR0
b24pOwotICAgIH0KKyAgICBXSS5fZGFzaGJvYXJkcyA9IHsKKyAgICAgICAgZGVmYXVsdDogbmV3
IFdJLkRlZmF1bHREYXNoYm9hcmQsCisgICAgICAgIGRlYnVnZ2VyOiBuZXcgV0kuRGVidWdnZXJE
YXNoYm9hcmQsCisgICAgfTsKIAotICAgIFdJLnRhYkJhci5hZGROYXZpZ2F0aW9uSXRlbUJlZm9y
ZShuZXcgV0kuR3JvdXBOYXZpZ2F0aW9uSXRlbShpbnNwZWN0ZWRQYWdlQ29udHJvbE5hdmlnYXRp
b25JdGVtcykpOworICAgIFdJLl9kYXNoYm9hcmRDb250YWluZXIgPSBuZXcgV0kuRGFzaGJvYXJk
Q29udGFpbmVyVmlldzsKKyAgICBXSS5fZGFzaGJvYXJkQ29udGFpbmVyLnNob3dEYXNoYm9hcmRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV0kuX2Rhc2hib2FyZHMuZGVmYXVsdCk7CiAKLSAgICBX
SS5fY29uc29sZURpdmlkZXJOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5EaXZpZGVyTmF2aWdhdGlv
bkl0ZW07Ci0gICAgV0kudGFiQmFyLmFkZE5hdmlnYXRpb25JdGVtQmVmb3JlKFdJLl9jb25zb2xl
RGl2aWRlck5hdmlnYXRpb25JdGVtKTsKKyAgICBXSS50b29sYmFyLmFkZFRvb2xiYXJJdGVtKFdJ
Ll9jbG9zZVRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5Db250cm9sKTsKIAotICAg
IFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oImNvbnNvbGUtd2FybmluZ3MiLCBXSS5VSVN0cmluZygiMCBDb25zb2xlIHdhcm5pbmdz
IiksICJJbWFnZXMvSXNzdWVzRW5hYmxlZC5zdmciKTsKLSAgICBXSS5fY29uc29sZVdhcm5pbmdz
VGFiQmFyQnV0dG9uLmltYWdlVHlwZSA9IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkltYWdlVHlw
ZS5JTUc7Ci0gICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5oaWRkZW4gPSBmYWxz
ZTsKLSAgICBXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgKCkgPT4gewotICAgICAgICBX
SS5zaG93Q29uc29sZVRhYihXSS5Mb2dDb250ZW50Vmlldy5TY29wZXMuV2FybmluZ3MsIHsKLSAg
ICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRp
YXRvci5EYXNoYm9hcmQsCi0gICAgICAgIH0pOwotICAgIH0sIFdJKTsKLQotICAgIFdJLl9jb25z
b2xlRXJyb3JzVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjb25z
b2xlLWVycm9ycyIsIFdJLlVJU3RyaW5nKCIwIENvbnNvbGUgZXJyb3JzIiksICJJbWFnZXMvRXJy
b3JzRW5hYmxlZC5zdmciKTsKLSAgICBXSS5fY29uc29sZUVycm9yc1RhYkJhckJ1dHRvbi5pbWFn
ZVR5cGUgPSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5JbWFnZVR5cGUuSU1HOwotICAgIFdJLl9j
b25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLmhpZGRlbiA9IGZhbHNlOwotICAgIFdJLl9jb25zb2xl
RXJyb3JzVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uRXZlbnQuQ2xpY2tlZCwgKCkgPT4gewotICAgICAgICBXSS5zaG93Q29uc29sZVRhYihXSS5M
b2dDb250ZW50Vmlldy5TY29wZXMuRXJyb3JzLCB7Ci0gICAgICAgICAgICBpbml0aWF0b3JIaW50
OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRGFzaGJvYXJkLAotICAgICAg
ICB9KTsKLSAgICB9LCBXSSk7CisgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShXSS5fdW5k
b2NrVG9vbGJhckJ1dHRvbiwgV0kuVG9vbGJhci5TZWN0aW9uLkxlZnQpOworICAgIFdJLnRvb2xi
YXIuYWRkVG9vbGJhckl0ZW0oV0kuX2RvY2tUb1NpZGVUb29sYmFyQnV0dG9uLCBXSS5Ub29sYmFy
LlNlY3Rpb24uTGVmdCk7CisgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShXSS5fZG9ja0Jv
dHRvbVRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5MZWZ0KTsKKworICAgIFdJLnRv
b2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX3JlbG9hZFRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIu
U2VjdGlvbi5DZW50ZXJMZWZ0KTsKKyAgICBXSS50b29sYmFyLmFkZFRvb2xiYXJJdGVtKFdJLl9k
b3dubG9hZFRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXJMZWZ0KTsKIAot
ICAgIFdJLnRhYkJhci5hZGROYXZpZ2F0aW9uSXRlbUJlZm9yZShuZXcgV0kuR3JvdXBOYXZpZ2F0
aW9uSXRlbShbCi0gICAgICAgIFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24sCi0gICAg
ICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLAotICAgIF0pKTsKKyAgICBXSS50b29s
YmFyLmFkZFRvb2xiYXJJdGVtKFdJLl9kYXNoYm9hcmRDb250YWluZXIudG9vbGJhckl0ZW0sIFdJ
LlRvb2xiYXIuU2VjdGlvbi5DZW50ZXIpOwogCi0gICAgV0kuX3VwZGF0ZUluc3BlY3RNb2RlVGFi
QmFyQnV0dG9uKCk7Ci0gICAgV0kuX3VwZGF0ZURvd25sb2FkVGFiQmFyQnV0dG9uKCk7Ci0gICAg
V0kuX3VwZGF0ZVJlbG9hZFRhYkJhckJ1dHRvbigpOworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJh
ckl0ZW0oV0kuX2luc3BlY3RNb2RlVG9vbGJhckJ1dHRvbiwgV0kuVG9vbGJhci5TZWN0aW9uLkNl
bnRlclJpZ2h0KTsKIAotICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
Q29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBXSS5fdXBkYXRlQ29uc29sZVRhYkJh
ckJ1dHRvbnMsIFdJKTsKLSAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwg
V0kuX3VwZGF0ZUNvbnNvbGVUYWJCYXJCdXR0b25zLCBXSSk7Ci0gICAgV0kuY29uc29sZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5DbGVhcmVkLCBXSS5f
dXBkYXRlQ29uc29sZVRhYkJhckJ1dHRvbnMsIFdJKTsKLSAgICBXSS5fdXBkYXRlQ29uc29sZVRh
YkJhckJ1dHRvbnMoKTsKKyAgICBpZiAoV0kuX2RldmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbikK
KyAgICAgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShXSS5fZGV2aWNlU2V0dGluZ3NUb29s
YmFyQnV0dG9uLCBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyUmlnaHQpOwogCi0gICAgV0kuX2Rv
Y2tlZFJlc2l6ZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRvY2tlZC1yZXNp
emVyIik7Ci0gICAgV0kuX2RvY2tlZFJlc2l6ZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9w
b3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7Ci0gICAgV0kuX2RvY2tlZFJlc2l6ZXJF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIFdJLl9kb2NrZWRSZXNpemVyTW91
c2VEb3duKTsKKyAgICBXSS5fc2VhcmNoVGFiQ29udGVudFZpZXcgPSBuZXcgV0kuU2VhcmNoVGFi
Q29udGVudFZpZXc7CisKKyAgICBpZiAoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlTmV3
VGFiQmFyLnZhbHVlKSB7CisgICAgICAgIFdJLnRhYkJyb3dzZXIuYWRkVGFiRm9yQ29udGVudFZp
ZXcoV0kuX3NlYXJjaFRhYkNvbnRlbnRWaWV3LCB7c3VwcHJlc3NBbmltYXRpb25zOiB0cnVlfSk7
CisgICAgICAgIFdJLnRhYkJhci5hZGRUYWJCYXJJdGVtKFdJLnNldHRpbmdzVGFiQ29udGVudFZp
ZXcudGFiQmFySXRlbSwge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOworICAgIH0gZWxzZSB7
CisgICAgICAgIGNvbnN0IGluY3JlbWVudGFsID0gZmFsc2U7CisgICAgICAgIFdJLl9zZWFyY2hU
b29sYmFySXRlbSA9IG5ldyBXSS5TZWFyY2hCYXIoImluc3BlY3Rvci1zZWFyY2giLCBXSS5VSVN0
cmluZygiU2VhcmNoIiksIGluY3JlbWVudGFsKTsKKyAgICAgICAgV0kuX3NlYXJjaFRvb2xiYXJJ
dGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2VhcmNoQmFyLkV2ZW50LlRleHRDaGFuZ2VkLCBXSS5f
c2VhcmNoVGV4dERpZENoYW5nZSk7CisgICAgICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0o
V0kuX3NlYXJjaFRvb2xiYXJJdGVtLCBXSS5Ub29sYmFyLlNlY3Rpb24uUmlnaHQpOworICAgIH0K
KworICAgIGxldCBkb2NrZWRSZXNpemVyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkb2NrZWQtcmVzaXplciIpOworICAgIGRvY2tlZFJlc2l6ZXJFbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7CisgICAgZG9ja2VkUmVz
aXplckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgV0kuX2RvY2tlZFJlc2l6
ZXJNb3VzZURvd24pOwogCiAgICAgV0kuX2RvY2tpbmdBdmFpbGFibGUgPSBmYWxzZTsKIApAQCAt
NDc5LDYgKzQ3OCw3IEBAIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgICAgIFdJ
LkF1ZGl0VGFiQ29udGVudFZpZXcsCiAgICAgICAgIFdJLkNvbnNvbGVUYWJDb250ZW50VmlldywK
ICAgICAgICAgV0kuU2VhcmNoVGFiQ29udGVudFZpZXcsCisgICAgICAgIFdJLk5ld1RhYkNvbnRl
bnRWaWV3LAogICAgICAgICBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LAogICAgIF07CiAKQEAg
LTQ5MCwxMiArNDkwLDYgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKIAogICAgIFdJ
Ll9wZW5kaW5nT3BlblRhYnMgPSBbXTsKIAotICAgIFdJLl9zZWFyY2hUYWJDb250ZW50VmlldyA9
IG5ldyBXSS5TZWFyY2hUYWJDb250ZW50VmlldzsKLSAgICBXSS50YWJCcm93c2VyLmFkZFRhYkZv
ckNvbnRlbnRWaWV3KFdJLl9zZWFyY2hUYWJDb250ZW50Vmlldywge3N1cHByZXNzQW5pbWF0aW9u
czogdHJ1ZX0pOwotCi0gICAgV0kuX3NldHRpbmdzVGFiQ29udGVudFZpZXcgPSBuZXcgV0kuU2V0
dGluZ3NUYWJDb250ZW50VmlldzsKLSAgICBXSS50YWJCcm93c2VyLmFkZFRhYkZvckNvbnRlbnRW
aWV3KFdJLl9zZXR0aW5nc1RhYkNvbnRlbnRWaWV3LCB7c3VwcHJlc3NBbmltYXRpb25zOiB0cnVl
fSk7Ci0KICAgICAvLyBQcmV2aW91c2x5IHdlIG1heSBoYXZlIHN0b3JlZCBkdXBsaWNhdGVzIGlu
IFdJIHNldHRpbmcuIEF2b2lkIGNyZWF0aW5nIGR1cGxpY2F0ZSB0YWJzLgogICAgIGxldCBvcGVu
VGFiVHlwZXMgPSBXSS5fb3BlblRhYnNTZXR0aW5nLnZhbHVlOwogICAgIGxldCBzZWVuVGFiVHlw
ZXMgPSBuZXcgU2V0OwpAQCAtNTIzLDE2ICs1MTcsMTMgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1
bmN0aW9uKCkKIAogICAgIFdJLl9yZXN0b3JlQ29va2llRm9yT3BlblRhYnMoV0kuU3RhdGVSZXN0
b3JhdGlvblR5cGUuTG9hZCk7CiAKLSAgICBpZiAoV0kudGFiQmFyLm5vcm1hbFRhYkNvdW50KQot
ICAgICAgICBXSS50YWJCYXIuc2VsZWN0ZWRUYWJCYXJJdGVtID0gV0kuX3NlbGVjdGVkVGFiSW5k
ZXhTZXR0aW5nLnZhbHVlOwotICAgIGVsc2UgewotICAgICAgICAvLyBJZiBubyB0YWJzIHdlcmUg
YWJsZSB0byBiZSByZXN0b3JlZCwgc2hvdyBhbGwgdGFicyB0aGF0IGFyZSBhbGxvd2VkLgotICAg
ICAgICBmb3IgKGxldCB0YWJUeXBlIG9mIFdJLl9vcGVuVGFic1NldHRpbmcuZGVmYXVsdFZhbHVl
KSB7Ci0gICAgICAgICAgICBpZiAoV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQodGFiVHlwZSkp
Ci0gICAgICAgICAgICAgICAgV0kuY3JlYXRlTmV3VGFiV2l0aFR5cGUodGFiVHlwZSkKLSAgICAg
ICAgfQorICAgIFdJLnRhYkJhci5zZWxlY3RlZFRhYkJhckl0ZW0gPSBXSS5fc2VsZWN0ZWRUYWJJ
bmRleFNldHRpbmcudmFsdWU7CisKKyAgICBpZiAoIVdJLnRhYkJhci5zZWxlY3RlZFRhYkJhckl0
ZW0pCiAgICAgICAgIFdJLnRhYkJhci5zZWxlY3RlZFRhYkJhckl0ZW0gPSAwOwotICAgIH0KKwor
ICAgIGlmICghV0kudGFiQmFyLm5vcm1hbFRhYkNvdW50KQorICAgICAgICBXSS5zaG93TmV3VGFi
VGFiKHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKIAogICAgIC8vIExpc3RlbiB0byB0aGUg
ZXZlbnRzIGFmdGVyIHJlc3RvcmluZyB0aGUgc2F2ZWQgdGFicyB0byBhdm9pZCByZWN1cnNpb24u
CiAgICAgV0kudGFiQmFyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0
ZW1BZGRlZCwgV0kuX3JlbWVtYmVyT3BlblRhYnMpOwpAQCAtNTQyLDE3ICs1MzMsOSBAQCBXSS5j
b250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIGZ1bmN0aW9uIHVwZGF0ZUNvbnNvbGVTYXZl
ZFJlc3VsdFByZWZpeENTU1ZhcmlhYmxlKCkgewogICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxl
LnNldFByb3BlcnR5KCItLWNvbnNvbGUtc2F2ZWQtcmVzdWx0LXByZWZpeCIsICJcIiIgKyBXSS5S
dW50aW1lTWFuYWdlci5wcmVmZXJyZWRTYXZlZFJlc3VsdFByZWZpeCgpICsgIlwiIik7CiAgICAg
fQotCi0gICAgV0kuc2V0dGluZ3MuY29uc29sZVNhdmVkUmVzdWx0QWxpYXMuYWRkRXZlbnRMaXN0
ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHVwZGF0ZUNvbnNvbGVTYXZlZFJlc3VsdFBy
ZWZpeENTU1ZhcmlhYmxlLCBXSS5zZXR0aW5ncyk7CisgICAgV0kuc2V0dGluZ3MuY29uc29sZVNh
dmVkUmVzdWx0QWxpYXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQs
IHVwZGF0ZUNvbnNvbGVTYXZlZFJlc3VsdFByZWZpeENTU1ZhcmlhYmxlKTsKICAgICB1cGRhdGVD
b25zb2xlU2F2ZWRSZXN1bHRQcmVmaXhDU1NWYXJpYWJsZSgpOwogCi0gICAgZnVuY3Rpb24gdXBk
YXRlWm9vbUZhY3RvckNTU1ZhcmlhYmxlKCkgewotICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxl
LnNldFByb3BlcnR5KCItLXpvb20tZmFjdG9yIiwgV0kuc2V0dGluZ3Muem9vbUZhY3Rvci52YWx1
ZSk7Ci0gICAgfQotCi0gICAgV0kuc2V0dGluZ3Muem9vbUZhY3Rvci5hZGRFdmVudExpc3RlbmVy
KFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdXBkYXRlWm9vbUZhY3RvckNTU1ZhcmlhYmxlLCBX
SS5zZXR0aW5ncyk7Ci0gICAgdXBkYXRlWm9vbUZhY3RvckNTU1ZhcmlhYmxlKCk7Ci0KICAgICAv
LyBTaWduYWwgdGhhdCB0aGUgZnJvbnRlbmQgaXMgbm93IHJlYWR5IHRvIHJlY2VpdmUgbWVzc2Fn
ZXMuCiAgICAgV0kuX2JhY2tlbmRUYXJnZXRBdmFpbGFibGVQcm9taXNlLnByb21pc2UudGhlbigo
KSA9PiB7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21wbGV0ZWQoKTsKQEAg
LTY4OSwxMCArNjcyLDE1IEBAIFdJLl9yZW1lbWJlck9wZW5UYWJzID0gZnVuY3Rpb24oKQogICAg
IFdJLl9vcGVuVGFic1NldHRpbmcudmFsdWUgPSBvcGVuVGFiczsKIH07CiAKK1dJLl9vcGVuRGVm
YXVsdFRhYiA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIFdJLnNob3dOZXdUYWJUYWIoe3N1cHBy
ZXNzQW5pbWF0aW9uczogdHJ1ZX0pOworfTsKKwogV0kuX2hhbmRsZVNldHRpbmdzS2V5Ym9hcmRT
aG9ydGN1dCA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVy
ID09PSAiVSswMDJDIikgeyAvLyAiLCIKLSAgICAgICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9y
Q29udGVudFZpZXcoV0kuX3NldHRpbmdzVGFiQ29udGVudFZpZXcsIHsKKyAgICAgICAgV0kudGFi
QnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcoV0kuc2V0dGluZ3NUYWJDb250ZW50Vmlldywg
ewogICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9u
SW5pdGlhdG9yLktleWJvYXJkU2hvcnRjdXQsCiAgICAgICAgIH0pOwogICAgIH0KQEAgLTcyMCw2
ICs3MDgsMjAgQEAgV0kuX3RyeVRvUmVzdG9yZVBlbmRpbmdUYWJzID0gZnVuY3Rpb24oKQogICAg
IH0KIAogICAgIFdJLl9wZW5kaW5nT3BlblRhYnMgPSBzdGlsbFBlbmRpbmdPcGVuVGFiczsKKwor
ICAgIGlmICghV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFyLnZhbHVlKQor
ICAgICAgICBXSS50YWJCYXIudXBkYXRlTmV3VGFiVGFiQmFySXRlbVN0YXRlKCk7Cit9OworCitX
SS5zaG93TmV3VGFiVGFiID0gZnVuY3Rpb24ob3B0aW9ucykKK3sKKyAgICBpZiAoIVdJLmlzTmV3
VGFiV2l0aFR5cGVBbGxvd2VkKFdJLk5ld1RhYkNvbnRlbnRWaWV3LlR5cGUpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBsZXQgdGFiQ29udGVudFZpZXcgPSBXSS50YWJCcm93c2VyLmJlc3RUYWJD
b250ZW50Vmlld0ZvckNsYXNzKFdJLk5ld1RhYkNvbnRlbnRWaWV3KTsKKyAgICBpZiAoIXRhYkNv
bnRlbnRWaWV3KQorICAgICAgICB0YWJDb250ZW50VmlldyA9IG5ldyBXSS5OZXdUYWJDb250ZW50
VmlldzsKKyAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50Vmlldyh0YWJDb250ZW50
Vmlldywgb3B0aW9ucyk7CiB9OwogCiBXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZCA9IGZ1bmN0
aW9uKHRhYlR5cGUpCkBAIC03MzcsNiArNzM5LDEzIEBAIFdJLmlzTmV3VGFiV2l0aFR5cGVBbGxv
d2VkID0gZnVuY3Rpb24odGFiVHlwZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKKyAgICBpZiAodGFiQ2xhc3MgPT09IFdJLk5ld1RhYkNvbnRlbnRWaWV3KSB7CisgICAgICAg
IGxldCBhbGxUYWJzID0gQXJyYXkuZnJvbShXSS5rbm93blRhYkNsYXNzZXMoKSk7CisgICAgICAg
IGxldCBhZGRhYmxlVGFicyA9IGFsbFRhYnMuZmlsdGVyKCh0YWJDbGFzcykgPT4gIXRhYkNsYXNz
LnRhYkluZm8oKS5pc0VwaGVtZXJhbCk7CisgICAgICAgIGxldCBjYW5NYWtlTmV3VGFiID0gYWRk
YWJsZVRhYnMuc29tZSgodGFiQ2xhc3MpID0+IFdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKHRh
YkNsYXNzLlR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGNhbk1ha2VOZXdUYWI7CisgICAgfQorCiAg
ICAgcmV0dXJuIHRydWU7CiB9OwogCkBAIC03ODAsOSArNzg5LDkgQEAgV0kuYWN0aXZhdGVFeHRy
YURvbWFpbnMgPSBmdW5jdGlvbihkb21haW5zKQogICAgICAgICAgICAgV0kubmV0d29ya01hbmFn
ZXIuaW5pdGlhbGl6ZVRhcmdldChXSS5tYWluVGFyZ2V0KTsKICAgICB9CiAKLSAgICBXSS5fdXBk
YXRlSW5zcGVjdE1vZGVUYWJCYXJCdXR0b24oKTsKLSAgICBXSS5fdXBkYXRlRG93bmxvYWRUYWJC
YXJCdXR0b24oKTsKLSAgICBXSS5fdXBkYXRlUmVsb2FkVGFiQmFyQnV0dG9uKCk7CisgICAgV0ku
X3VwZGF0ZVJlbG9hZFRvb2xiYXJCdXR0b24oKTsKKyAgICBXSS5fdXBkYXRlRG93bmxvYWRUb29s
YmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZUluc3BlY3RNb2RlVG9vbGJhckJ1dHRvbigpOwog
CiAgICAgV0kuX3RyeVRvUmVzdG9yZVBlbmRpbmdUYWJzKCk7CiB9OwpAQCAtODQyLDYgKzg1MSw4
IEBAIFdJLnVwZGF0ZURvY2tlZFN0YXRlID0gZnVuY3Rpb24oc2lkZSkKIAogICAgIFdJLmRvY2tl
ZCA9IHNpZGUgIT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlVuZG9ja2VkOwogCisgICAgV0kuX2ln
bm9yZVRvb2xiYXJNb2RlRGlkQ2hhbmdlRXZlbnRzID0gdHJ1ZTsKKwogICAgIGlmIChzaWRlID09
PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b20pIHsKICAgICAgICAgZG9jdW1lbnQuYm9keS5j
bGFzc0xpc3QuYWRkKCJkb2NrZWQiLCBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b20pOwogICAg
ICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoIndpbmRvdy1pbmFjdGl2ZSIsIFdJ
LkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0LCBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0KTsKQEAg
LTg1NCw2ICs4NjUsOCBAQCBXSS51cGRhdGVEb2NrZWRTdGF0ZSA9IGZ1bmN0aW9uKHNpZGUpCiAg
ICAgfSBlbHNlCiAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgiZG9ja2Vk
IiwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQsIFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQs
IFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbSk7CiAKKyAgICBXSS5faWdub3JlVG9vbGJhck1v
ZGVEaWRDaGFuZ2VFdmVudHMgPSBmYWxzZTsKKwogICAgIFdJLl91cGRhdGVEb2NrTmF2aWdhdGlv
bkl0ZW1zKCk7CiAKICAgICBpZiAoIVdJLmRvY2tlZENvbmZpZ3VyYXRpb25TdXBwb3J0c1NwbGl0
Q29udGVudEJyb3dzZXIoKSAmJiAhV0kuZG9lc0N1cnJlbnRUYWJTdXBwb3J0U3BsaXRDb250ZW50
QnJvd3NlcigpKQpAQCAtMTExOSwxMCArMTEzMiwxMCBAQCBXSS5pc1Nob3dpbmdMYXllcnNUYWIg
PSBmdW5jdGlvbigpCiAKIFdJLnNob3dTZXR0aW5nc1RhYiA9IGZ1bmN0aW9uKG9wdGlvbnMgPSB7
fSkKIHsKLSAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50VmlldyhXSS5fc2V0dGlu
Z3NUYWJDb250ZW50Vmlldywgb3B0aW9ucyk7CisgICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9y
Q29udGVudFZpZXcoV0kuc2V0dGluZ3NUYWJDb250ZW50Vmlldywgb3B0aW9ucyk7CiAKICAgICBp
ZiAob3B0aW9ucy5ibGFja2JveFBhdHRlcm5Ub1NlbGVjdCkKLSAgICAgICAgV0kuX3NldHRpbmdz
VGFiQ29udGVudFZpZXcuc2VsZWN0QmxhY2tib3hQYXR0ZXJuKG9wdGlvbnMuYmxhY2tib3hQYXR0
ZXJuVG9TZWxlY3QpOworICAgICAgICBXSS5zZXR0aW5nc1RhYkNvbnRlbnRWaWV3LnNlbGVjdEJs
YWNrYm94UGF0dGVybihvcHRpb25zLmJsYWNrYm94UGF0dGVyblRvU2VsZWN0KTsKIH07CiAKIFdJ
LmluZGVudFN0cmluZyA9IGZ1bmN0aW9uKCkKQEAgLTEzNjcsMTQgKzEzODAsMzUgQEAgV0kuZGVi
dWdnZXJTdGVwT3V0ID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnN0
ZXBPdXQoKTsKIH07CiAKLVdJLl9mb2N1c1NlYXJjaEZpZWxkID0gZnVuY3Rpb24oZXZlbnQpCitX
SS5fc2VhcmNoVGV4dERpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQogewotICAgIFdJLnRhYkJy
b3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KFdJLl9zZWFyY2hUYWJDb250ZW50Vmlldywgewor
ICAgIHZhciB0YWJDb250ZW50VmlldyA9IFdJLnRhYkJyb3dzZXIuYmVzdFRhYkNvbnRlbnRWaWV3
Rm9yQ2xhc3MoV0kuU2VhcmNoVGFiQ29udGVudFZpZXcpOworICAgIGlmICghdGFiQ29udGVudFZp
ZXcpCisgICAgICAgIHRhYkNvbnRlbnRWaWV3ID0gbmV3IFdJLlNlYXJjaFRhYkNvbnRlbnRWaWV3
OworCisgICAgdmFyIHNlYXJjaFF1ZXJ5ID0gV0kuX3NlYXJjaFRvb2xiYXJJdGVtLnRleHQ7Cisg
ICAgV0kuX3NlYXJjaFRvb2xiYXJJdGVtLnRleHQgPSAiIjsKKworICAgIFdJLnRhYkJyb3dzZXIu
c2hvd1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3LCB7CiAgICAgICAgIC8vIENsYXNz
aWZ5IHRoaXMgYXMgYSBrZXlib2FyZCBzaG9ydGN1dCwgYXMgdGhlIG9ubHkgb3RoZXIgd2F5IHRv
IGdldCB0byBTZWFyY2ggVGFiIGlzIHZpYSBUYWJCYXIgaXRzZWxmLgogICAgICAgICBpbml0aWF0
b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuS2V5Ym9hcmRTaG9y
dGN1dCwKICAgICB9KTsKIAotICAgIFdJLl9zZWFyY2hUYWJDb250ZW50Vmlldy5mb2N1c1NlYXJj
aEZpZWxkKCk7CisgICAgdGFiQ29udGVudFZpZXcucGVyZm9ybVNlYXJjaChzZWFyY2hRdWVyeSk7
Cit9OworCitXSS5fZm9jdXNTZWFyY2hGaWVsZCA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGlm
IChXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXIudmFsdWUpCisgICAgICAg
IFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KFdJLl9zZWFyY2hUYWJDb250ZW50
Vmlldyk7CisKKyAgICBpZiAoV0kudGFiQnJvd3Nlci5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3IGlu
c3RhbmNlb2YgV0kuU2VhcmNoVGFiQ29udGVudFZpZXcpIHsKKyAgICAgICAgV0kudGFiQnJvd3Nl
ci5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3LmZvY3VzU2VhcmNoRmllbGQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChXSS5fc2VhcmNoVG9vbGJhckl0ZW0pCisgICAgICAgIFdJ
Ll9zZWFyY2hUb29sYmFySXRlbS5mb2N1cygpOwogfTsKIAogV0kuX2ZvY3VzQ2hhbmdlZCA9IGZ1
bmN0aW9uKGV2ZW50KQpAQCAtMTQ4Myw5ICsxNTE3LDE2IEBAIFdJLl9kZWJ1Z2dlckRpZFBhdXNl
ID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgV0kuc2hvd1NvdXJjZXNUYWIoe3Nob3dTY29wZUNo
YWluU2lkZWJhcjogV0kuc2V0dGluZ3Muc2hvd1Njb3BlQ2hhaW5PblBhdXNlLnZhbHVlfSk7CiAK
KyAgICBXSS5fZGFzaGJvYXJkQ29udGFpbmVyLnNob3dEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50
ZWRPYmplY3QoV0kuX2Rhc2hib2FyZHMuZGVidWdnZXIpOworCiAgICAgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmJyaW5nVG9Gcm9udCgpOwogfTsKIAorV0kuX2RlYnVnZ2VyRGlkUmVzdW1lID0gZnVu
Y3Rpb24oZXZlbnQpCit7CisgICAgV0kuX2Rhc2hib2FyZENvbnRhaW5lci5jbG9zZURhc2hib2Fy
ZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXSS5fZGFzaGJvYXJkcy5kZWJ1Z2dlcik7Cit9Owor
CiBXSS5fZnJhbWVXYXNBZGRlZCA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIGlmICghV0kuX2Zy
YW1lSWRlbnRpZmllclRvU2hvd1NvdXJjZUNvZGVXaGVuQXZhaWxhYmxlKQpAQCAtMTUxMSw3ICsx
NTUyLDcgQEAgV0kuX2ZyYW1lV2FzQWRkZWQgPSBmdW5jdGlvbihldmVudCkKIAogV0kuX21haW5G
cmFtZURpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQogewotICAgIFdJLl91cGRhdGVEb3dubG9h
ZFRhYkJhckJ1dHRvbigpOworICAgIFdJLl91cGRhdGVEb3dubG9hZFRvb2xiYXJCdXR0b24oKTsK
IAogICAgIFdJLnVwZGF0ZVdpbmRvd1RpdGxlKCk7CiB9OwpAQCAtMTUyNyw3ICsxNTY4LDcgQEAg
V0kuX21haW5SZXNvdXJjZURpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICBXSS5f
cmVzdG9yZUNvb2tpZUZvck9wZW5UYWJzKFdJLlN0YXRlUmVzdG9yYXRpb25UeXBlLk5hdmlnYXRp
b24pOwogICAgIH0pOwogCi0gICAgV0kuX3VwZGF0ZURvd25sb2FkVGFiQmFyQnV0dG9uKCk7Cisg
ICAgV0kuX3VwZGF0ZURvd25sb2FkVG9vbGJhckJ1dHRvbigpOwogCiAgICAgV0kudXBkYXRlV2lu
ZG93VGl0bGUoKTsKIH07CkBAIC0xNTQ2LDggKzE1ODcsNiBAQCBXSS5fcmVzdG9yZUNvb2tpZUZv
ck9wZW5UYWJzID0gZnVuY3Rpb24ocmVzdG9yYXRpb25UeXBlKQogICAgICAgICB2YXIgdGFiQ29u
dGVudFZpZXcgPSB0YWJCYXJJdGVtLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICBpZiAoISh0
YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRWaWV3KSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnNob3Vs
ZFNhdmVUYWIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB0YWJDb250ZW50Vmll
dy5yZXN0b3JlU3RhdGVGcm9tQ29va2llKHJlc3RvcmF0aW9uVHlwZSk7CiAgICAgfQogCkBAIC0x
NTY5LDggKzE2MDgsNiBAQCBXSS5fc2F2ZUNvb2tpZUZvck9wZW5UYWJzID0gZnVuY3Rpb24oKQog
ICAgICAgICB2YXIgdGFiQ29udGVudFZpZXcgPSB0YWJCYXJJdGVtLnJlcHJlc2VudGVkT2JqZWN0
OwogICAgICAgICBpZiAoISh0YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRW
aWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3
LmNvbnN0cnVjdG9yLnNob3VsZFNhdmVUYWIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB0YWJDb250ZW50Vmlldy5zYXZlU3RhdGVUb0Nvb2tpZSgpOwogICAgIH0KIH07CkBAIC0x
NTk1LDYgKzE2MzIsNyBAQCBXSS5fd2luZG93Qmx1cnJlZCA9IGZ1bmN0aW9uKGV2ZW50KQogCiBX
SS5fd2luZG93UmVzaXplZCA9IGZ1bmN0aW9uKGV2ZW50KQogeworICAgIFdJLnRvb2xiYXIudXBk
YXRlTGF5b3V0KFdJLlZpZXcuTGF5b3V0UmVhc29uLlJlc2l6ZSk7CiAgICAgV0kudGFiQmFyLnVw
ZGF0ZUxheW91dChXSS5WaWV3LkxheW91dFJlYXNvbi5SZXNpemUpOwogICAgIFdJLl90YWJCcm93
c2VyU2l6ZURpZENoYW5nZSgpOwogICAgIFdJLl91cGRhdGVTaGVldFJlY3QoKTsKQEAgLTE2Mzgs
NiArMTY3NiwxMiBAQCBXSS5fd2luZG93S2V5VXAgPSBmdW5jdGlvbihldmVudCkKICAgICBXSS5f
dXBkYXRlTW9kaWZpZXJLZXlzKGV2ZW50KTsKIH07CiAKK1dJLl9tb3VzZURvd24gPSBmdW5jdGlv
bihldmVudCkKK3sKKyAgICBpZiAoV0kudG9vbGJhci5lbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRh
cmdldCkpCisgICAgICAgIFdJLl90b29sYmFyTW91c2VEb3duKGV2ZW50KTsKK307CisKIFdJLl9t
b3VzZU1vdmVkID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgV0kuX3VwZGF0ZU1vZGlmaWVyS2V5
cyhldmVudCk7CkBAIC0xNzIyLDE4ICsxNzY2LDE2IEBAIFdJLl90b2dnbGVQcmV2aW91c0RvY2tD
b25maWd1cmF0aW9uID0gZnVuY3Rpb24oZXZlbnQpCiBXSS5fdXBkYXRlRG9ja05hdmlnYXRpb25J
dGVtcyA9IGZ1bmN0aW9uKCkKIHsKICAgICBpZiAoV0kuX2RvY2tpbmdBdmFpbGFibGUgfHwgV0ku
ZG9ja2VkKSB7Ci0gICAgICAgIFdJLl9jbG9zZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSAhV0kuZG9j
a2VkOwotICAgICAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uLmhpZGRlbiA9IFdJLl9kb2NrQ29u
ZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uVW5kb2NrZWQ7Ci0gICAgICAgIFdJ
Ll9kb2NrQm90dG9tVGFiQmFyQnV0dG9uLmhpZGRlbiA9IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9
PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tOwotICAgICAgICBXSS5fZG9ja1RvU2lkZVRh
YkJhckJ1dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25m
aWd1cmF0aW9uLlJpZ2h0IHx8IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZp
Z3VyYXRpb24uTGVmdDsKKyAgICAgICAgV0kuX2Nsb3NlVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSAh
V0kuZG9ja2VkOworICAgICAgICBXSS5fdW5kb2NrVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSBXSS5f
ZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlVuZG9ja2VkOworICAg
ICAgICBXSS5fZG9ja0JvdHRvbVRvb2xiYXJCdXR0b24uaGlkZGVuID0gV0kuX2RvY2tDb25maWd1
cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b207CisgICAgICAgIFdJLl9kb2Nr
VG9TaWRlVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJ
LkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0IHx8IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0ku
RG9ja0NvbmZpZ3VyYXRpb24uTGVmdDsKICAgICB9IGVsc2UgewotICAgICAgICBXSS5fY2xvc2VU
YWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRv
bi5oaWRkZW4gPSB0cnVlOwotICAgICAgICBXSS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRvbi5oaWRk
ZW4gPSB0cnVlOwotICAgICAgICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSB0
cnVlOworICAgICAgICBXSS5fY2xvc2VUb29sYmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7CisgICAg
ICAgIFdJLl91bmRvY2tUb29sYmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7CisgICAgICAgIFdJLl9k
b2NrQm90dG9tVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOworICAgICAgICBXSS5fZG9ja1Rv
U2lkZVRvb2xiYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKICAgICB9Ci0KLSAgICBXSS5fdXBkYXRl
VGFiQmFyRGl2aWRlcnMoKTsKIH07CiAKIFdJLl90YWJCcm93c2VyU2l6ZURpZENoYW5nZSA9IGZ1
bmN0aW9uKCkKQEAgLTE3NjMsNiArMTgwNSw3IEBAIFdJLl9zaWRlYmFyV2lkdGhEaWRDaGFuZ2Ug
PSBmdW5jdGlvbihldmVudCkKIFdJLl9zZXR1cFZpZXdIaWVyYXJjaHkgPSBmdW5jdGlvbigpCiB7
CiAgICAgbGV0IHJvb3RWaWV3ID0gV0kuVmlldy5yb290VmlldygpOworICAgIHJvb3RWaWV3LmFk
ZFN1YnZpZXcoV0kudG9vbGJhcik7CiAgICAgcm9vdFZpZXcuYWRkU3VidmlldyhXSS50YWJCYXIp
OwogICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcoV0kubmF2aWdhdGlvblNpZGViYXIpOwogICAgIHJv
b3RWaWV3LmFkZFN1YnZpZXcoV0kudGFiQnJvd3Nlcik7CkBAIC0xNzg4LDYgKzE4MzEsMjAgQEAg
V0kuX3RhYkJyb3dzZXJTZWxlY3RlZFRhYkNvbnRlbnRWaWV3RGlkQ2hhbmdlID0gZnVuY3Rpb24o
ZXZlbnQpCiAgICAgV0kuaGlkZVNwbGl0Q29uc29sZSgpOwogfTsKIAorV0kuX3Rvb2xiYXJNb3Vz
ZURvd24gPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBpZiAoZXZlbnQuY3RybEtleSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0Nv
bmZpZ3VyYXRpb24uUmlnaHQgfHwgV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29u
ZmlndXJhdGlvbi5MZWZ0KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoV0kuZG9ja2VkKQor
ICAgICAgICBXSS5fZG9ja2VkUmVzaXplck1vdXNlRG93bihldmVudCk7CisgICAgZWxzZQorICAg
ICAgICBXSS5fbW92ZVdpbmRvd01vdXNlRG93bihldmVudCk7Cit9OworCiBXSS5fZG9ja2VkUmVz
aXplck1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIGlmIChldmVudC5idXR0b24g
IT09IDAgfHwgZXZlbnQuY3RybEtleSkKQEAgLTE3OTcsNyArMTg1NCw4IEBAIFdJLl9kb2NrZWRS
ZXNpemVyTW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIE9ubHkgc3RhcnQgZHJhZ2dpbmcgaWYgdGhlIHRhcmdldCBpcyBvbmUgb2YgdGhlIGVsZW1l
bnRzIHRoYXQgd2UgZXhwZWN0LgotICAgIGlmIChldmVudC50YXJnZXQgIT09IFdJLl9kb2NrZWRS
ZXNpemVyRWxlbWVudCkKKyAgICBpZiAoZXZlbnQudGFyZ2V0LmlkICE9PSAiZG9ja2VkLXJlc2l6
ZXIiICYmICFldmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0b29sYmFyIikgJiYKKyAg
ICAgICAgIWV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImZsZXhpYmxlLXNwYWNlIikg
JiYgIWV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoIml0ZW0tc2VjdGlvbiIpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBldmVudFtXSS5Qb3BvdmVyLkV2ZW50UHJldmVudERpc21pc3NT
eW1ib2xdID0gdHJ1ZTsKQEAgLTE4NjUsNiArMTkyMyw1NCBAQCBXSS5fZG9ja2VkUmVzaXplck1v
dXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIFdJLmVsZW1lbnREcmFnU3RhcnQocmVzaXpl
ckVsZW1lbnQsIGRvY2tlZFJlc2l6ZXJEcmFnLCBkb2NrZWRSZXNpemVyRHJhZ0VuZCwgZXZlbnQs
IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tID8g
InJvdy1yZXNpemUiIDogImNvbC1yZXNpemUiKTsKIH07CiAKK1dJLl9tb3ZlV2luZG93TW91c2VE
b3duID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgY29uc29sZS5hc3NlcnQoIVdJLmRvY2tlZCk7
CisKKyAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8IGV2ZW50LmN0cmxLZXkpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIE9ubHkgc3RhcnQgZHJhZ2dpbmcgaWYgdGhlIHRhcmdldCBpcyBv
bmUgb2YgdGhlIGVsZW1lbnRzIHRoYXQgd2UgZXhwZWN0LgorICAgIGlmICghZXZlbnQudGFyZ2V0
LmNsYXNzTGlzdC5jb250YWlucygidG9vbGJhciIpICYmICFldmVudC50YXJnZXQuY2xhc3NMaXN0
LmNvbnRhaW5zKCJmbGV4aWJsZS1zcGFjZSIpICYmCisgICAgICAgICFldmVudC50YXJnZXQuY2xh
c3NMaXN0LmNvbnRhaW5zKCJpdGVtLXNlY3Rpb24iKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
ZXZlbnRbV0kuUG9wb3Zlci5FdmVudFByZXZlbnREaXNtaXNzU3ltYm9sXSA9IHRydWU7CisKKyAg
ICBpZiAoV0kuUGxhdGZvcm0ubmFtZSA9PT0gIm1hYyIpIHsKKyAgICAgICAgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LnN0YXJ0V2luZG93RHJhZygpOworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGxhc3RTY3JlZW5YID0gZXZl
bnQuc2NyZWVuWDsKKyAgICB2YXIgbGFzdFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOworCisgICAg
ZnVuY3Rpb24gdG9vbGJhckRyYWcoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuYnV0
dG9uICE9PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciB4ID0gZXZlbnQu
c2NyZWVuWCAtIGxhc3RTY3JlZW5YOworICAgICAgICB2YXIgeSA9IGV2ZW50LnNjcmVlblkgLSBs
YXN0U2NyZWVuWTsKKworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubW92ZVdpbmRvd0J5
KHgsIHkpOworCisgICAgICAgIGxhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKKyAgICAgICAg
bGFzdFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRvb2xi
YXJEcmFnRW5kKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXSS5lbGVtZW50RHJhZ0VuZChldmVudCk7
CisgICAgfQorCisgICAgV0kuZWxlbWVudERyYWdTdGFydChldmVudC50YXJnZXQsIHRvb2xiYXJE
cmFnLCB0b29sYmFyRHJhZ0VuZCwgZXZlbnQsICJkZWZhdWx0Iik7Cit9OworCiBXSS5fZG9tU3Rv
cmFnZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIFdJLnNob3dTdG9yYWdl
VGFiKHtpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3Iu
SW5zcGVjdH0pOwpAQCAtMTg5Myw3ICsxOTk5LDcgQEAgV0kuX2RvbU5vZGVXYXNJbnNwZWN0ZWQg
PSBmdW5jdGlvbihldmVudCkKIAogV0kuX2luc3BlY3RNb2RlU3RhdGVDaGFuZ2VkID0gZnVuY3Rp
b24oZXZlbnQpCiB7Ci0gICAgV0kuX2luc3BlY3RNb2RlVGFiQmFyQnV0dG9uLmFjdGl2YXRlZCA9
IFdJLmRvbU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFibGVkOworICAgIFdJLl9pbnNwZWN0TW9kZVRv
b2xiYXJCdXR0b24uYWN0aXZhdGVkID0gV0kuZG9tTWFuYWdlci5pbnNwZWN0TW9kZUVuYWJsZWQ7
CiB9OwogCiBXSS5fdG9nZ2xlSW5zcGVjdE1vZGUgPSBmdW5jdGlvbihldmVudCkKQEAgLTE5MDEs
NyArMjAwNyw3IEBAIFdJLl90b2dnbGVJbnNwZWN0TW9kZSA9IGZ1bmN0aW9uKGV2ZW50KQogICAg
IFdJLmRvbU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFibGVkID0gIVdJLmRvbU1hbmFnZXIuaW5zcGVj
dE1vZGVFbmFibGVkOwogfTsKIAotV0kuX2hhbmRsZURldmljZVNldHRpbmdzVGFiQmFyQnV0dG9u
Q2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQorV0kuX2hhbmRsZURldmljZVNldHRpbmdzVG9vbGJh
ckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBpZiAoV0kuX2RldmljZVNl
dHRpbmdzUG9wb3ZlcikgewogICAgICAgICBXSS5fZGV2aWNlU2V0dGluZ3NQb3BvdmVyLmRpc21p
c3MoKTsKQEAgLTE5MTIsNyArMjAxOCw3IEBAIFdJLl9oYW5kbGVEZXZpY2VTZXR0aW5nc1RhYkJh
ckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNz
dW1pbmdNYWluVGFyZ2V0KCk7CiAKICAgICBmdW5jdGlvbiB1cGRhdGVBY3RpdmF0ZWRTdGF0ZSgp
IHsKLSAgICAgICAgV0kuX2RldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uLmFjdGl2YXRlZCA9IFdJ
Ll9vdmVycmlkZW5EZXZpY2VVc2VyQWdlbnQgfHwgV0kuX292ZXJyaWRlbkRldmljZVNldHRpbmdz
LnNpemUgPiAwOworICAgICAgICBXSS5fZGV2aWNlU2V0dGluZ3NUb29sYmFyQnV0dG9uLmFjdGl2
YXRlZCA9IFdJLl9vdmVycmlkZW5EZXZpY2VVc2VyQWdlbnQgfHwgV0kuX292ZXJyaWRlbkRldmlj
ZVNldHRpbmdzLnNpemUgPiAwOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGFwcGx5T3ZlcnJpZGRl
blVzZXJBZ2VudCh2YWx1ZSwgZm9yY2UpIHsKQEAgLTE5OTAsMTAgKzIwOTYsMTAgQEAgV0kuX2hh
bmRsZURldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZVRhcmdldEZyYW1lKCkgewotICAgICAgICBy
ZXR1cm4gV0kuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoV0kuX2RldmljZVNldHRpbmdzVGFiQmFy
QnV0dG9uLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLnBhZCgyKTsKKyAgICAgICAg
cmV0dXJuIFdJLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KFdJLl9kZXZpY2VTZXR0aW5nc1Rvb2xi
YXJCdXR0b24uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CiAgICAgfQogCi0gICAg
Y29uc3QgcHJlZmVycmVkRWRnZXMgPSBbV0kuUmVjdEVkZ2UuTUFYX1ksIFdJLlJlY3RFZGdlLk1B
WF9YXTsKKyAgICBjb25zdCBwcmVmZXJyZWRFZGdlcyA9IFtXSS5SZWN0RWRnZS5NQVhfWSwgV0ku
UmVjdEVkZ2UuTUlOX1gsIFdJLlJlY3RFZGdlLk1BWF9YXTsKIAogICAgIFdJLl9kZXZpY2VTZXR0
aW5nc1BvcG92ZXIgPSBuZXcgV0kuUG9wb3ZlcihXSSk7CiAgICAgV0kuX2RldmljZVNldHRpbmdz
UG9wb3Zlci53aW5kb3dSZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHsKQEAgLTIyMDAs
NyArMjMwNiw3IEBAIFdJLl9yZWxvYWRQYWdlRnJvbU9yaWdpbiA9IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHRhcmdldC5QYWdlQWdlbnQucmVsb2FkLmludm9rZSh7aWdub3JlQ2FjaGU6IHRydWV9KTsK
IH07CiAKLVdJLl9yZWxvYWRUYWJCYXJCdXR0b25DbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCitX
SS5fcmVsb2FkVG9vbGJhckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBp
ZiAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmluc3BlY3Rpb25MZXZlbCA+IDEpIHsKICAgICAgICAg
V0kuX3JlbG9hZEluc3BlY3RlZEluc3BlY3RvcigpOwpAQCAtMjIxMiwxMDYgKzIzMTgsMjkgQEAg
V0kuX3JlbG9hZFRhYkJhckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKICAgICB0YXJn
ZXQuUGFnZUFnZW50LnJlbG9hZC5pbnZva2Uoe2lnbm9yZUNhY2hlOiBXSS5tb2RpZmllcktleXMu
c2hpZnRLZXl9KTsKIH07CiAKLVdJLl91cGRhdGVSZWxvYWRUYWJCYXJCdXR0b24gPSBmdW5jdGlv
bigpCitXSS5fdXBkYXRlUmVsb2FkVG9vbGJhckJ1dHRvbiA9IGZ1bmN0aW9uKCkKIHsKLSAgICBp
ZiAoIVdJLl9yZWxvYWRUYWJCYXJCdXR0b24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFdJLl9y
ZWxvYWRUYWJCYXJCdXR0b24uaGlkZGVuID0gIUluc3BlY3RvckJhY2tlbmQuaGFzRG9tYWluKCJQ
YWdlIik7Ci0gICAgV0kuX3VwZGF0ZVRhYkJhckRpdmlkZXJzKCk7CisgICAgV0kuX3JlbG9hZFRv
b2xiYXJCdXR0b24uaGlkZGVuID0gIUluc3BlY3RvckJhY2tlbmQuaGFzRG9tYWluKCJQYWdlIik7
CiB9OwogCi1XSS5fdXBkYXRlRG93bmxvYWRUYWJCYXJCdXR0b24gPSBmdW5jdGlvbigpCitXSS5f
dXBkYXRlRG93bmxvYWRUb29sYmFyQnV0dG9uID0gZnVuY3Rpb24oKQogewotICAgIGlmICghV0ku
X2Rvd25sb2FkVGFiQmFyQnV0dG9uKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIUluc3Bl
Y3RvckJhY2tlbmQuaGFzRG9tYWluKCJQYWdlIikpIHsKLSAgICAgICAgV0kuX2Rvd25sb2FkVGFi
QmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7Ci0gICAgICAgIFdJLl91cGRhdGVUYWJCYXJEaXZpZGVy
cygpOworICAgICAgICBXSS5fZG93bmxvYWRUb29sYmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoV0kuX2Rvd25sb2FkaW5nUGFnZSkgewot
ICAgICAgICBXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24uZW5hYmxlZCA9IGZhbHNlOworICAgICAg
ICBXSS5fZG93bmxvYWRUb29sYmFyQnV0dG9uLmVuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFdJLl9kb3dubG9hZFRhYkJhckJ1dHRvbi5lbmFibGVkID0gV0ku
Y2FuQXJjaGl2ZU1haW5GcmFtZSgpOwotfTsKLQotV0kuX3VwZGF0ZUluc3BlY3RNb2RlVGFiQmFy
QnV0dG9uID0gZnVuY3Rpb24oKQotewotICAgIFdJLl9pbnNwZWN0TW9kZVRhYkJhckJ1dHRvbi5o
aWRkZW4gPSAhSW5zcGVjdG9yQmFja2VuZC5oYXNEb21haW4oIkRPTSIpOwotICAgIFdJLl91cGRh
dGVUYWJCYXJEaXZpZGVycygpOwotfTsKLQotV0kuX3VwZGF0ZVRhYkJhckRpdmlkZXJzID0gZnVu
Y3Rpb24oKQotewotICAgIGxldCBjbG9zZUhpZGRlbiA9IFdJLl9jbG9zZVRhYkJhckJ1dHRvbi5o
aWRkZW47Ci0gICAgbGV0IGRvY2tUb1NpZGVIaWRkZW4gPSBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1
dHRvbi5oaWRkZW47Ci0gICAgbGV0IGRvY2tCb3R0b21IaWRkZW4gPSBXSS5fZG9ja0JvdHRvbVRh
YkJhckJ1dHRvbi5oaWRkZW47Ci0gICAgbGV0IHVuZG9ja0hpZGRlbiA9IFdJLl91bmRvY2tUYWJC
YXJCdXR0b24uaGlkZGVuOwotCi0gICAgbGV0IGluc3BlY3RNb2RlSGlkZGVuID0gV0kuX2luc3Bl
Y3RNb2RlVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgZGV2aWNlU2V0dGluZ3NIaWRkZW4g
PSBXSS5fZGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0b24gJiYgV0kuX2RldmljZVNldHRpbmdzVGFi
QmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgcmVsb2FkSGlkZGVuID0gV0kuX3JlbG9hZFRhYkJh
ckJ1dHRvbiAmJiBXSS5fcmVsb2FkVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgZG93bmxv
YWRIaWRkZW4gPSBXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24gJiYgV0kuX2Rvd25sb2FkVGFiQmFy
QnV0dG9uLmhpZGRlbjsKLQotICAgIGxldCB3YXJuaW5nc0hpZGRlbiA9IFdJLl9jb25zb2xlV2Fy
bmluZ3NUYWJCYXJCdXR0b24uaGlkZGVuOwotICAgIGxldCBlcnJvcnNIaWRkZW4gPSBXSS5fY29u
c29sZUVycm9yc1RhYkJhckJ1dHRvbi5oaWRkZW47Ci0KLSAgICAvLyBIaWRlIHRoZSBkaXZpZGVy
IGlmIGV2ZXJ5dGhpbmcgdG8gdGhlIGxlZnQgaXMgaGlkZGVuIE9SIGlmIGV2ZXJ5dGhpbmcgdG8g
dGhlIHJpZ2h0IGlzIGhpZGRlbi4KLSAgICBXSS5fZG9ja0RpdmlkZXJUYWJCYXJOYXZpZ2F0aW9u
SXRlbS5oaWRkZW4gPSAoY2xvc2VIaWRkZW4gJiYgZG9ja1RvU2lkZUhpZGRlbiAmJiBkb2NrQm90
dG9tSGlkZGVuICYmIHVuZG9ja0hpZGRlbikgfHwgKGluc3BlY3RNb2RlSGlkZGVuICYmIGRldmlj
ZVNldHRpbmdzSGlkZGVuICYmIHJlbG9hZEhpZGRlbiAmJiBkb3dubG9hZEhpZGRlbiAmJiB3YXJu
aW5nc0hpZGRlbiAmJiBlcnJvcnNIaWRkZW4pOwotICAgIFdJLl9jb25zb2xlRGl2aWRlck5hdmln
YXRpb25JdGVtLmhpZGRlbiA9IChjbG9zZUhpZGRlbiAmJiBkb2NrVG9TaWRlSGlkZGVuICYmIGRv
Y2tCb3R0b21IaWRkZW4gJiYgdW5kb2NrSGlkZGVuICYmIGluc3BlY3RNb2RlSGlkZGVuICYmIGRl
dmljZVNldHRpbmdzSGlkZGVuICYmIHJlbG9hZEhpZGRlbiAmJiBkb3dubG9hZEhpZGRlbikgfHwg
KHdhcm5pbmdzSGlkZGVuICYmIGVycm9yc0hpZGRlbik7Ci0KLSAgICBXSS50YWJCYXIubmVlZHNM
YXlvdXQoKTsKKyAgICBXSS5fZG93bmxvYWRUb29sYmFyQnV0dG9uLmVuYWJsZWQgPSBXSS5jYW5B
cmNoaXZlTWFpbkZyYW1lKCk7CiB9OwogCi1XSS5fdXBkYXRlQ29uc29sZVRhYkJhckJ1dHRvbnMg
PSBmdW5jdGlvbigpCitXSS5fdXBkYXRlSW5zcGVjdE1vZGVUb29sYmFyQnV0dG9uID0gZnVuY3Rp
b24oKQogewotICAgIGZ1bmN0aW9uIHB1bHNlKGVsZW1lbnQpIHsKLSAgICAgICAgLy8gV2UgbmVl
ZCB0byBmb3JjZSBhIHN0eWxlIGludmFsaWRhdGlvbiBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBhbHJl
YWR5Ci0gICAgICAgIC8vIHdlcmUgYW5pbWF0aW5nIHRoaXMgaXRlbSBhZnRlciB3ZSd2ZSByZW1v
dmVkIHRoZSBwdWxzaW5nIENTUyBjbGFzcy4KLSAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKCJwdWxzaW5nIikpIHsKLSAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZSgicHVsc2luZyIpOwotICAgICAgICAgICAgZWxlbWVudC5yZWNhbGN1bGF0ZVN0eWxlcygp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJhbmltYXRpb25lbmQiLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKCJwdWxzaW5nIik7Ci0gICAgICAgICAgICB9LCB7b25jZTogdHJ1ZX0pOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwdWxzaW5nIik7Ci0gICAg
fQotICAgIGxldCB3YXJuaW5nQ291bnQgPSBXSS5jb25zb2xlTWFuYWdlci53YXJuaW5nQ291bnQ7
Ci0gICAgaWYgKHdhcm5pbmdDb3VudCkgewotICAgICAgICBsZXQgd2FybmluZ0Zvcm1hdCA9ICh3
YXJuaW5nQ291bnQgPT09IDEpID8gV0kuVUlTdHJpbmcoIkNsaWNrIHRvIHNob3cgJWQgd2Fybmlu
ZyBpbiB0aGUgQ29uc29sZSIpIDogV0kuVUlTdHJpbmcoIkNsaWNrIHRvIHNob3cgJWQgd2Fybmlu
Z3MgaW4gdGhlIENvbnNvbGUiKTsKLSAgICAgICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1
dHRvbi50b29sdGlwID0gd2FybmluZ0Zvcm1hdC5mb3JtYXQod2FybmluZ0NvdW50KTsKLSAgICAg
ICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5oaWRkZW4gPSBmYWxzZTsKLQotICAg
ICAgICBpZiAod2FybmluZ0NvdW50ICE9PSBXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9u
Ll9fbGFzdFdhcm5pbmdDb3VudCkKLSAgICAgICAgICAgIHB1bHNlKFdJLl9jb25zb2xlV2Fybmlu
Z3NUYWJCYXJCdXR0b24uZWxlbWVudCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgV0kuX2NvbnNv
bGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwotICAgIH0KLQotICAgIGxldCBl
cnJvckNvdW50ID0gV0kuY29uc29sZU1hbmFnZXIuZXJyb3JDb3VudDsKLSAgICBpZiAoZXJyb3JD
b3VudCkgewotICAgICAgICBsZXQgZXJyb3JGb3JtYXQgPSAoZXJyb3JDb3VudCA9PT0gMSkgPyBX
SS5VSVN0cmluZygiQ2xpY2sgdG8gc2hvdyAlZCBlcnJvciBpbiB0aGUgQ29uc29sZSIpIDogV0ku
VUlTdHJpbmcoIkNsaWNrIHRvIHNob3cgJWQgZXJyb3JzIGluIHRoZSBDb25zb2xlIik7Ci0gICAg
ICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLnRvb2x0aXAgPSBlcnJvckZvcm1hdC5m
b3JtYXQoZXJyb3JDb3VudCk7Ci0gICAgICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9u
LmhpZGRlbiA9IGZhbHNlOwotCi0gICAgICAgIGlmIChlcnJvckNvdW50ICE9PSBXSS5fY29uc29s
ZUVycm9yc1RhYkJhckJ1dHRvbi5fX2xhc3RFcnJvckNvdW50KQotICAgICAgICAgICAgcHVsc2Uo
V0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0b24uZWxlbWVudCk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBXSS5fdXBkYXRlVGFiQmFyRGl2aWRlcnMoKTsKLQotICAgIFdJLl9jb25zb2xlV2Fy
bmluZ3NUYWJCYXJCdXR0b24uX19sYXN0V2FybmluZ0NvdW50ID0gd2FybmluZ0NvdW50OwotICAg
IFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLl9fbGFzdEVycm9yQ291bnQgPSBlcnJvckNv
dW50OworICAgIFdJLl9pbnNwZWN0TW9kZVRvb2xiYXJCdXR0b24uaGlkZGVuID0gIUluc3BlY3Rv
ckJhY2tlbmQuaGFzRG9tYWluKCJET00iKTsKIH07CiAKIFdJLl9zaG93Q29uc29sZVRhYiA9IGZ1
bmN0aW9uKGV2ZW50KQpAQCAtMjY2OCw5ICsyNjk3LDE0IEBAIFdJLnNldExheW91dERpcmVjdGlv
biA9IGZ1bmN0aW9uKHZhbHVlKQogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZW9wZW4oKTsK
IH07CiAKK1dJLl9zaG93TmV3VGFiRnJvbVNob3J0Y3V0ID0gZnVuY3Rpb24oKQoreworICAgIFdJ
LnNob3dOZXdUYWJUYWIoe2luaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlv
bkluaXRpYXRvci5LZXlib2FyZFNob3J0Y3V0fSk7Cit9CisKIFdJLl9zaG93VGFiQXRJbmRleEZy
b21TaG9ydGN1dCA9IGZ1bmN0aW9uKGkpCiB7Ci0gICAgaWYgKGkgPD0gV0kudGFiQmFyLnRhYkNv
dW50KSB7CisgICAgaWYgKGkgPD0gV0kudGFiQmFyLnRhYkJhckl0ZW1zLmxlbmd0aCkgewogICAg
ICAgICBXSS50YWJCYXIuc2VsZWN0VGFiQmFySXRlbShpIC0gMSwgewogICAgICAgICAgICAgaW5p
dGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLktleWJvYXJk
U2hvcnRjdXQsCiAgICAgICAgIH0pOwpAQCAtMzEyMCwxMiArMzE1NCwxMiBAQCBXSS5yZXZlcnRE
T01DaGFuZ2VzID0gZnVuY3Rpb24oZG9tQ2hhbmdlcykKIFdJLmFyY2hpdmVNYWluRnJhbWUgPSBm
dW5jdGlvbigpCiB7CiAgICAgV0kuX2Rvd25sb2FkaW5nUGFnZSA9IHRydWU7Ci0gICAgV0kuX3Vw
ZGF0ZURvd25sb2FkVGFiQmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZURvd25sb2FkVG9vbGJh
ckJ1dHRvbigpOwogCiAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOwog
ICAgIHRhcmdldC5QYWdlQWdlbnQuYXJjaGl2ZSgoZXJyb3IsIGRhdGEpID0+IHsKICAgICAgICAg
V0kuX2Rvd25sb2FkaW5nUGFnZSA9IGZhbHNlOwotICAgICAgICBXSS5fdXBkYXRlRG93bmxvYWRU
YWJCYXJCdXR0b24oKTsKKyAgICAgICAgV0kuX3VwZGF0ZURvd25sb2FkVG9vbGJhckJ1dHRvbigp
OwogCiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwppbmRleCAx
YWY4N2E4M2NlOGU2NTkwY2YyOWZhY2RjODMxNzJkYTUzNzE4NmI5Li5kNGMxNTRkOTczOWY4Y2Qy
ZDdlOGUwZjRlNTFlYjhkZDhjZmI2OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCkBAIC0yMTcsNiArMjE3LDcgQEAgV0ku
c2V0dGluZ3MgPSB7CiAKICAgICAvLyBFeHBlcmltZW50YWwKICAgICBleHBlcmltZW50YWxFbmFi
bGVQcmV2aWV3RmVhdHVyZXM6IG5ldyBXSS5TZXR0aW5nKCJleHBlcmltZW50YWwtZW5hYmxlLXBy
ZXZpZXctZmVhdHVyZXMiLCB0cnVlKSwKKyAgICBleHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXI6
IG5ldyBXSS5TZXR0aW5nKCJleHBlcmltZW50YWwtZW5hYmxlLW5ldy10YWItYmFyIiwgZmFsc2Up
LAogICAgIGV4cGVyaW1lbnRhbEVuYWJsZVN0eWxlc0p1bXBUb0VmZmVjdGl2ZTogbmV3IFdJLlNl
dHRpbmcoImV4cGVyaW1lbnRhbC1zdHlsZXMtanVtcC10by1lZmZlY3RpdmUiLCBmYWxzZSksCiAK
ICAgICAvLyBQcm90b2NvbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQ29uc29sZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xlTWFuYWdlci5qcwppbmRleCA4
MmZiYmYxNTcwYzQ5OWZhM2EyMTEzMjJlYjU3ZTUzY2VmNmJhNWQ2Li5kOTBlOWFhZjM0NDA0MWZj
YjI5NGM2NzBmZDYzODZlMGVlNzFjMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xlTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xlTWFuYWdl
ci5qcwpAQCAtMzAsMTEgKzMwLDggQEAgV0kuQ29uc29sZU1hbmFnZXIgPSBjbGFzcyBDb25zb2xl
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAg
ICAgICB0aGlzLl93YXJuaW5nQ291bnQgPSAwOwotICAgICAgICB0aGlzLl9lcnJvckNvdW50ID0g
MDsKICAgICAgICAgdGhpcy5faXNzdWVzID0gW107CiAKLSAgICAgICAgdGhpcy5fbGFzdE1lc3Nh
Z2VMZXZlbCA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1ZXN0ZWQgPSBm
YWxzZTsKICAgICAgICAgdGhpcy5faXNOZXdQYWdlT3JSZWxvYWQgPSBmYWxzZTsKICAgICAgICAg
dGhpcy5fcmVtb3RlT2JqZWN0c1RvUmVsZWFzZSA9IG51bGw7CkBAIC02NSw4ICs2Miw2IEBAIFdJ
LkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IHdhcm5pbmdDb3VudCgpIHsgcmV0dXJuIHRoaXMu
X3dhcm5pbmdDb3VudDsgfQotICAgIGdldCBlcnJvckNvdW50KCkgeyByZXR1cm4gdGhpcy5fZXJy
b3JDb3VudDsgfQogICAgIGdldCBjdXN0b21Mb2dnaW5nQ2hhbm5lbHMoKSB7IHJldHVybiB0aGlz
Ll9jdXN0b21Mb2dnaW5nQ2hhbm5lbHM7IH0KICAgICBnZXQgbG9nQ2hhbm5lbFNvdXJjZXMoKSB7
IHJldHVybiB0aGlzLl9sb2dnaW5nQ2hhbm5lbFNvdXJjZXM7IH0KIApAQCAtMTAxLDExICs5Niw5
IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgICAgICBsZXQgbWVzc2FnZSA9IG5ldyBXSS5Db25zb2xlTWVzc2FnZSh0YXJn
ZXQsIHNvdXJjZSwgbGV2ZWwsIHRleHQsIHR5cGUsIHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRD
b3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgbnVsbCk7CiAKLSAgICAgICAgdGhpcy5faW5j
cmVtZW50TWVzc2FnZUxldmVsQ291bnQobWVzc2FnZS5sZXZlbCwgbWVzc2FnZS5yZXBlYXRDb3Vu
dCk7Ci0KICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29uc29sZU1h
bmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCB7bWVzc2FnZX0pOwogCi0gICAgICAgIGlmIChtZXNz
YWdlLmxldmVsID09PSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZyB8fCBt
ZXNzYWdlLmxldmVsID09PSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IpIHsK
KyAgICAgICAgaWYgKG1lc3NhZ2UubGV2ZWwgPT09ICJ3YXJuaW5nIiB8fCBtZXNzYWdlLmxldmVs
ID09PSAiZXJyb3IiKSB7CiAgICAgICAgICAgICBsZXQgaXNzdWUgPSBuZXcgV0kuSXNzdWVNZXNz
YWdlKG1lc3NhZ2UpOwogICAgICAgICAgICAgdGhpcy5faXNzdWVzLnB1c2goaXNzdWUpOwogCkBA
IC0xMjcsMTIgKzEyMCw4IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIC8vIEZyb250ZW5kIHJlcXVlc3RlZCAi
Y2xlYXIgY29uc29sZSIgYW5kIEJhY2tlbmQgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCB0aGUgcmVx
dWVzdC4KICAgICAgICAgICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1ZXN0ZWQgPSBmYWxzZTsK
IAotICAgICAgICAgICAgdGhpcy5fd2FybmluZ0NvdW50ID0gMDsKLSAgICAgICAgICAgIHRoaXMu
X2Vycm9yQ291bnQgPSAwOwogICAgICAgICAgICAgdGhpcy5faXNzdWVzID0gW107CiAKLSAgICAg
ICAgICAgIHRoaXMuX2xhc3RNZXNzYWdlTGV2ZWwgPSBudWxsOwotCiAgICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db25zb2xlTWFuYWdlci5FdmVudC5DbGVhcmVk
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFJlY2VpdmVkIGFuIHVucmVxdWVz
dGVkIGNsZWFyIGNvbnNvbGUgZXZlbnQuCkBAIC0xNDUsOCArMTM0LDYgQEAgV0kuQ29uc29sZU1h
bmFnZXIgPSBjbGFzcyBDb25zb2xlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgbWVz
c2FnZVJlcGVhdENvdW50VXBkYXRlZChjb3VudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2luY3Jl
bWVudE1lc3NhZ2VMZXZlbENvdW50KHRoaXMuX2xhc3RNZXNzYWdlTGV2ZWwsIDEpOwotCiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50
LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwge2NvdW50fSk7CiAgICAgfQogCkBA
IC0xODIsMjAgKzE2OSw2IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9pbmNyZW1lbnRN
ZXNzYWdlTGV2ZWxDb3VudChsZXZlbCwgY291bnQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGxl
dmVsKSB7Ci0gICAgICAgIGNhc2UgV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5p
bmc6Ci0gICAgICAgICAgICB0aGlzLl93YXJuaW5nQ291bnQgKz0gY291bnQ7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJy
b3I6Ci0gICAgICAgICAgICB0aGlzLl9lcnJvckNvdW50ICs9IGNvdW50OwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9sYXN0TWVzc2FnZUxldmVsID0gbGV2
ZWw7Ci0gICAgfQotCiAgICAgX2RlbGF5ZWRNZXNzYWdlc0NsZWFyZWQoKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2lzTmV3UGFnZU9yUmVsb2FkKSB7CkBAIC0yMDUsMTIgKzE3OCw4IEBAIFdJ
LkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl93YXJu
aW5nQ291bnQgPSAwOwotICAgICAgICB0aGlzLl9lcnJvckNvdW50ID0gMDsKICAgICAgICAgdGhp
cy5faXNzdWVzID0gW107CiAKLSAgICAgICAgdGhpcy5fbGFzdE1lc3NhZ2VMZXZlbCA9IG51bGw7
Ci0KICAgICAgICAgLy8gQSBjb25zb2xlLmNsZWFyKCkgb3IgY29tbWFuZCBsaW5lIGNsZWFyKCkg
aGFwcGVuZWQuCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnNv
bGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5qcwppbmRleCA1MDUzYTgy
NzY5ZGNiYjFhZGIwNjQwZGQ3NWZiMTljOGM5N2QzMGQ4Li42Mzc2ZTM1MTNjODI5ODc4ZDlmOWU0
NzgwNzY2MmVkYTI4YTk3ZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9EZWJ1Zy9Cb290c3RyYXAuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRGVidWcvQm9vdHN0cmFwLmpzCkBAIC01Niw3ICs1Niw3IEBAIFdJLnJ1
bkJvb3RzdHJhcE9wZXJhdGlvbnMgPSBmdW5jdGlvbigpIHsKICAgICBjb25zdCBEdW1wTWVzc2Fn
ZXNTdGF0ZSA9IHtPZmY6ICJvZmYiLCBGaWx0ZXJpbmc6ICJmaWx0ZXJpbmciLCBFdmVyeXRoaW5n
OiAiZXZlcnl0aGluZyJ9OwogICAgIGNvbnN0IGR1bXBNZXNzYWdlc1Rvb2xUaXAgPSBXSS51bmxv
Y2FsaXplZFN0cmluZygiRW5hYmxlIGR1bXAgaW5zcGVjdG9yIG1lc3NhZ2VzIHRvIGNvbnNvbGUu
XG5TaGlmdC1jbGljayB0byBkdW1wIGFsbCBpbnNwZWN0b3IgbWVzc2FnZXMgd2l0aCBubyBmaWx0
ZXJpbmcuIik7CiAgICAgY29uc3QgZHVtcE1lc3NhZ2VzQWN0aXZhdGVkVG9vbFRpcCA9IFdJLnVu
bG9jYWxpemVkU3RyaW5nKCJEaXNhYmxlIGR1bXAgaW5zcGVjdG9yIG1lc3NhZ2VzIHRvIGNvbnNv
bGUiKTsKLSAgICBsZXQgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV0ku
QWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiZHVtcC1tZXNzYWdlcyIsIGR1bXBNZXNzYWdl
c1Rvb2xUaXAsIGR1bXBNZXNzYWdlc0FjdGl2YXRlZFRvb2xUaXAsICJJbWFnZXMvQ29uc29sZS5z
dmciKTsKKyAgICBsZXQgZHVtcE1lc3NhZ2VzVG9vbGJhckl0ZW0gPSBuZXcgV0kuQWN0aXZhdGVC
dXR0b25Ub29sYmFySXRlbSgiZHVtcC1tZXNzYWdlcyIsIGR1bXBNZXNzYWdlc1Rvb2xUaXAsIGR1
bXBNZXNzYWdlc0FjdGl2YXRlZFRvb2xUaXAsICJJbWFnZXMvQ29uc29sZS5zdmciKTsKIAogICAg
IGZ1bmN0aW9uIGR1bXBNZXNzYWdlc0N1cnJlbnRTdGF0ZSgpIHsKICAgICAgICAgaWYgKCFJbnNw
ZWN0b3JCYWNrZW5kLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzKQpAQCAtNzIsMjYgKzcy
LDI3IEBAIFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMgPSBmdW5jdGlvbigpIHsKICAgICAgICAg
Y2FzZSBEdW1wTWVzc2FnZXNTdGF0ZS5PZmY6CiAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gZmFsc2U7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JCYWNrZW5kLmZpbHRlck11bHRpcGxleGluZ0JhY2tlbmRJbnNwZWN0b3JQcm90b2NvbE1l
c3NhZ2VzID0gZmFsc2U7Ci0gICAgICAgICAgICBkdW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9u
SXRlbS5hY3RpdmF0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGR1bXBNZXNzYWdlc1RhYkJhck5h
dmlnYXRpb25JdGVtLmVsZW1lbnQuZmlyc3RDaGlsZC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiY29s
b3IiKTsKKyAgICAgICAgICAgIGR1bXBNZXNzYWdlc1Rvb2xiYXJJdGVtLmFjdGl2YXRlZCA9IGZh
bHNlOworICAgICAgICAgICAgZHVtcE1lc3NhZ2VzVG9vbGJhckl0ZW0uZWxlbWVudC5zdHlsZS5y
ZW1vdmVQcm9wZXJ0eSgiY29sb3IiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IER1bXBNZXNzYWdlc1N0YXRlLkZpbHRlcmluZzoKICAgICAgICAgICAgIEluc3BlY3RvckJhY2tl
bmQuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSB0cnVlOwogICAgICAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5maWx0ZXJNdWx0aXBsZXhpbmdCYWNrZW5kSW5zcGVjdG9yUHJvdG9jb2xN
ZXNzYWdlcyA9IHRydWU7Ci0gICAgICAgICAgICBkdW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9u
SXRlbS5hY3RpdmF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2
aWdhdGlvbkl0ZW0uZWxlbWVudC5maXJzdENoaWxkLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJjb2xv
ciIpOworICAgICAgICAgICAgZHVtcE1lc3NhZ2VzVG9vbGJhckl0ZW0uYWN0aXZhdGVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIGR1bXBNZXNzYWdlc1Rvb2xiYXJJdGVtLmVsZW1lbnQuc3R5bGUucmVt
b3ZlUHJvcGVydHkoImNvbG9yIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBE
dW1wTWVzc2FnZXNTdGF0ZS5FdmVyeXRoaW5nOgogICAgICAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IHRydWU7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JCYWNrZW5kLmZpbHRlck11bHRpcGxleGluZ0JhY2tlbmRJbnNwZWN0b3JQcm90b2NvbE1l
c3NhZ2VzID0gZmFsc2U7Ci0gICAgICAgICAgICBkdW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9u
SXRlbS5hY3RpdmF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2
aWdhdGlvbkl0ZW0uZWxlbWVudC5maXJzdENoaWxkLnN0eWxlLmNvbG9yID0gInJnYigxNjQsIDQx
LCAxNTQpIjsKKyAgICAgICAgICAgIGR1bXBNZXNzYWdlc1Rvb2xiYXJJdGVtLmFjdGl2YXRlZCA9
IHRydWU7CisgICAgICAgICAgICBkdW1wTWVzc2FnZXNUb29sYmFySXRlbS5lbGVtZW50LnN0eWxl
LmNvbG9yID0gInJnYigxNjQsIDQxLCAxNTQpIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGlnbm9yZUNoYW5nZXNUb1N0YXRlID0gZmFsc2U7CiAgICAgfQogCi0gICAg
ZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCAoKSA9PiB7CisgICAgV0kudG9vbGJhci5h
ZGRUb29sYmFySXRlbShkdW1wTWVzc2FnZXNUb29sYmFySXRlbSwgV0kuVG9vbGJhci5TZWN0aW9u
LkNlbnRlclJpZ2h0KTsKKyAgICBkdW1wTWVzc2FnZXNUb29sYmFySXRlbS5hZGRFdmVudExpc3Rl
bmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsICgpID0+IHsKICAgICAg
ICAgbGV0IG5leHRTdGF0ZTsKICAgICAgICAgc3dpdGNoIChkdW1wTWVzc2FnZXNDdXJyZW50U3Rh
dGUoKSkgewogICAgICAgICBjYXNlIER1bXBNZXNzYWdlc1N0YXRlLk9mZjoKQEAgLTExNiwyMSAr
MTE3LDE2IEBAIFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMgPSBmdW5jdGlvbigpIHsKICAgICAv
LyBOZXh0IExldmVsIEluc3BlY3Rvci4KICAgICBsZXQgaW5zcGVjdGlvbkxldmVsID0gSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Lmluc3BlY3Rpb25MZXZlbDsKICAgICBjb25zdCBpbnNwZWN0SW5zcGVj
dG9yVG9vbFRpcCA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCJPcGVuIFdlYiBJbnNwZWN0b3IgWyVk
XSIpLmZvcm1hdChpbnNwZWN0aW9uTGV2ZWwgKyAxKTsKLSAgICBsZXQgaW5zcGVjdEluc3BlY3Rv
clRhYkJhck5hdmlnYXRpb25JdGVtID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJpbnNw
ZWN0LWluc3BlY3RvciIsIGluc3BlY3RJbnNwZWN0b3JUb29sVGlwKTsKLSAgICBpbnNwZWN0SW5z
cGVjdG9yVGFiQmFyTmF2aWdhdGlvbkl0ZW0uZWxlbWVudC50ZXh0Q29udGVudCA9IGluc3BlY3Rp
b25MZXZlbCArIDE7Ci0gICAgaW5zcGVjdEluc3BlY3RvclRhYkJhck5hdmlnYXRpb25JdGVtLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgKCkg
PT4geworICAgIGxldCBpbnNwZWN0SW5zcGVjdG9yVG9vbGJhckl0ZW0gPSBuZXcgV0kuQnV0dG9u
VG9vbGJhckl0ZW0oImluc3BlY3QtaW5zcGVjdG9yIiwgaW5zcGVjdEluc3BlY3RvclRvb2xUaXAp
OworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oaW5zcGVjdEluc3BlY3RvclRvb2xiYXJJ
dGVtLCBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyUmlnaHQpOworICAgIGluc3BlY3RJbnNwZWN0
b3JUb29sYmFySXRlbS5lbGVtZW50LnRleHRDb250ZW50ID0gaW5zcGVjdGlvbkxldmVsICsgMTsK
KyAgICBpbnNwZWN0SW5zcGVjdG9yVG9vbGJhckl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCAoKSA9PiB7CiAgICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5pbnNwZWN0SW5zcGVjdG9yKCk7CiAgICAgfSk7CiAKLSAgICBsZXQgZ3Jv
dXBOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5Hcm91cE5hdmlnYXRpb25JdGVtKFsKLSAgICAgICAg
ZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0sCi0gICAgICAgIGluc3BlY3RJbnNwZWN0
b3JUYWJCYXJOYXZpZ2F0aW9uSXRlbSwKLSAgICBdKTsKLSAgICBXSS50YWJCYXIuYWRkTmF2aWdh
dGlvbkl0ZW1BZnRlcihncm91cE5hdmlnYXRpb25JdGVtKTsKLQogICAgIGZ1bmN0aW9uIHVwZGF0
ZURlYnVnVUkoKSB7Ci0gICAgICAgIGdyb3VwTmF2aWdhdGlvbkl0ZW0uaGlkZGVuID0gIVdJLnNo
b3dEZWJ1Z1VJU2V0dGluZy52YWx1ZTsKLSAgICAgICAgV0kudGFiQmFyLm5lZWRzTGF5b3V0KCk7
CisgICAgICAgIGR1bXBNZXNzYWdlc1Rvb2xiYXJJdGVtLmhpZGRlbiA9ICFXSS5zaG93RGVidWdV
SVNldHRpbmcudmFsdWU7CisgICAgICAgIGluc3BlY3RJbnNwZWN0b3JUb29sYmFySXRlbS5oaWRk
ZW4gPSAhV0kuc2hvd0RlYnVnVUlTZXR0aW5nLnZhbHVlOwogICAgIH0KIAogICAgIFdJLnNob3dE
ZWJ1Z1VJU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwg
KCkgPT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SW1hZ2VzL05ld1RhYi5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9J
bWFnZXMvTmV3VGFiLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGM2ZjIyNWJhYTNmZDIwZTNhODZiNDA1NDFh
MjA0NWQxODc2N2NkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYi5zdmcKQEAgLTAsMCArMSw2IEBACis8P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIGlkPSJyb290IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAx
NiI+CisgICAgPHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHg9IjAuNSIg
eT0iMC41IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHJ4PSIyIi8+CisgICAgPHBhdGggZmlsbD0i
bm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gOCAzIEwgOCAxMyBNIDMgOCBMIDEzIDgi
Lz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvSW1hZ2VzL05ld1RhYlBsdXMuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL05ld1RhYlBsdXMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MTZhOGE0MjI3MzJiNDNh
ODc2NWUxYWIwYWNjOTRhZDBmNmVlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiUGx1cy5zdmcKQEAgLTAsMCArMSw1
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmln
aHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJyb290IiB2ZXJzaW9uPSIxLjEiIHZp
ZXdCb3g9IjAgMCAxNSAxNSI+CisgICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50
Q29sb3IiIGQ9Ik0gNy41IDIgViAxMyBNIDIgNy41IEggMTMiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL09yaWdpbi5zdmcg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvT3JpZ2luLnN2Zwpp
bmRleCBmNjg1M2ViNTRlMGJhNTg2ZDZkZGIyNGFjZmUwNzgyZTZkZjRlYWZiLi41MDNkYzI1YmUx
NmExYzU2MmIxNzVkODRkMjNlYjI3ZGEzZDc3ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvT3JpZ2luLnN2ZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvT3JpZ2luLnN2ZwpAQCAtMSw2ICsxLDYg
QEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8IS0tIENvcHlyaWdo
dCDCqSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Ci08c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InJvb3QiIHZlcnNpb249IjEuMSIgdmll
d0JveD0iMCAwIDY0IDY0Ij4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2NCA2NCI+CiAgICAgPGRlZnM+CiAgICAgICAg
IDxyYWRpYWxHcmFkaWVudCBpZD0iZ3JhZGllbnQiIGN4PSI1OC42JSIgY3k9IjI3Ljc0JSIgZng9
IjU4LjYlIiBmeT0iMjcuNzQlIiByPSI1Ny41JSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0
ZSgwLjU5LCAwLjI4KSwgcm90YXRlKDk4LjYxKSwgc2NhbGUoMSwgMC45OCksIHRyYW5zbGF0ZSgt
MC41OSwgLTAuMjgpIj4KICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9InJnYigxNjgsIDE3
MSwgMTgyKSIgb2Zmc2V0PSIwJSIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NlYXJjaFJlc3VsdHMuc3ZnIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NlYXJjaFJlc3VsdHMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIwODJjMjQ2YmY3N2U5YTA3N2E1ODk1NTRlMmMyMmMwMGViMmVlOGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvU2VhcmNoUmVz
dWx0cy5zdmcKQEAgLTAsMCArMSw3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1
dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIC0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJy
b290IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAxNiI+CisgICAgPHJlY3QgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTUiIGhl
aWdodD0iMTUiIHJ4PSIyIi8+CisgICAgPGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJl
bnRDb2xvciIgY3g9IjciIGN5PSI3IiByPSIzIi8+CisgICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ry
b2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gOS41IDkuNSBMIDEyLjUgMTIuNSIvPgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvU291
cmNlc1BhdXNlZC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFn
ZXMvU291cmNlc1BhdXNlZC5zdmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YmM1
NDcyZWNhZTEwZWQ5MjYyODE3MjU1YTc4ZDUxOWU4YWIyODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL1NvdXJjZXNQYXVzZWQuc3ZnCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCww
IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCEtLSBDb3B5cmln
aHQgwqkgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgotPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJyb290IiB2ZXJzaW9uPSIxLjEiIHZp
ZXdCb3g9IjAgMCAxNiAxNiI+Ci0gICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50
Q29sb3IiIGQ9Ik0gNy43IDE0LjUgMi41IDE0LjUgMi41IDEuNSA5LjUgMS41IDEzLjUgNS41IDEz
LjUgOC44Ii8+Ci0gICAgPHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBkPSJNIDkuMCAzLjAgTCA5
LjAgNi4wIEwgMTIuMCA2LjAgWiIvPgotICAgIDxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjEwLjUi
IGN5PSIxMS41IiByPSI0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIvPgotICAgIDxwYXRoIHN0cm9r
ZT0iY3VycmVudENvbG9yIiBkPSJNIDkuNSA5LjUgTCA5LjUgMTMuNSBNIDExLjUgOS41IEwgMTEu
NSAxMy41Ii8+Ci08L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbAppbmRleCAxM2Y0MjNhZGZmNWI0Y2FjNmZhMzQ1M2M1NmRkMWRmOGM1MGU1M2Fm
Li40OWQxODAzM2JkYjc3MzljOTNlZmZmY2JmZjI4ZWEyNjRkNjljNWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC00Nyw2ICs0Nyw3IEBA
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9CcmVha3BvaW50UG9wb3Zl
ckNvbnRyb2xsZXIuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY3NzIj4KKyAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmNzcyI+CiAgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DUFVUaW1lbGluZU92ZXJ2aWV3R3JhcGguY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NQVVRpbWVsaW5lVmll
dy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ1BVVXNhZ2VD
b21iaW5lZFZpZXcuY3NzIj4KQEAgLTc5LDYgKzgwLDcgQEAKICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IlZpZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcuY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NvbnRlbnRWaWV3LmNzcyI+CiAg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Db250ZW50Vmlld0NvbnRhaW5l
ci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ29udHJvbFRv
b2xiYXJJdGVtLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9D
b29raWVTdG9yYWdlQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRE9NRXZlbnRzQnJlYWtkb3duVmlldy5jc3MiPgpA
QCAtODgsOSArOTAsMTIgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L0RPTVN0b3JhZ2VDb250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9ET01UcmVlT3V0bGluZS5jc3MiPgorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5jc3MiPgogICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGF0YUdyaWQuY3NzIj4KICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RhdGFiYXNlVGFibGVD
b250ZW50Vmlldy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3Mv
RGVidWdnZXJEYXNoYm9hcmRWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iVmlld3MvRGV0YWlsc1NlY3Rpb24uY3NzIj4KICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRlbS5jc3MiPgogICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRHJvcFpvbmVWaWV3LmNzcyI+CkBA
IC0xNTEsNiArMTU2LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLmNzcyI+CiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmNzcyI+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9OZXdUYWJDb250ZW50Vmll
dy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvT2JqZWN0UHJl
dmlld1ZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL09i
amVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IlZpZXdzL09iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LmNzcyI+CkBA
IC0yMzEsNiArMjM3LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L1RpbWVsaW5lVGFiQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL1RpbWVsaW5lVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvVGl0bGVWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9Ub29sYmFyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5jc3MiPgogICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHJlZU91dGxpbmUuY3NzIj4KICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUb2tlblZpZXcuY3NzIj4KQEAgLTM5NSw3ICs0
MDIsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRE9NVHJlZS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9EYXRhYmFzZU9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9EYXRhYmFzZVRhYmxlT2JqZWN0LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RlYnVnZ2VyRGFzaGJvYXJkLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RlYnVnZ2VyRGF0YS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0V2ZW50QnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9FeGVjdXRpb25Db250ZXh0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL0V4ZWN1dGlvbkNvbnRleHRMaXN0LmpzIj48L3NjcmlwdD4KQEAgLTUyNCw2
ICs1MzMsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UcmVlT3V0bGluZS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RyZWVPdXRsaW5lR3JvdXAuanMiPjwvc2NyaXB0
PgogCisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0xlZ2FjeVRhYkJhci5qcyI+PC9zY3JpcHQ+CisK
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXRhYmFzZVVzZXJRdWVyeVZpZXdCYXNlLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGF0YWJhc2VVc2VyUXVlcnlFcnJvclZp
ZXcuanMiPjwvc2NyaXB0PgpAQCAtNTQ2LDYgKzU1Nyw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0ZvbGRlcml6ZWRUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL05ldHdvcmtEZXRhaWxWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvU291cmNlQ29kZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvU3RvcmFnZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KQEAgLTU4
Nyw2ICs1OTksNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Mb2NhbFJlbW90ZU9iamVjdENv
bnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9BY3RpdmF0
ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0FuaW1hdGlvbkNvbGxlY3Rpb25Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL0FuaW1hdGlvbkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+
PC9zY3JpcHQ+CkBAIC02MDUsNiArNjE4LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQm94
TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9DUFVUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9DUFVUaW1lbGluZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9DUFVVc2FnZUNvbWJpbmVkVmlldy5qcyI+PC9zY3JpcHQ+CkBAIC02NDAsNiAr
NjU0LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db250ZXh0TWVudS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29va2llU3RvcmFnZVRyZWVFbGVt
ZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRE9NQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KQEAgLTY1MywxMSArNjY4LDE1IEBACiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iVmlld3MvRGFzaGJvYXJkVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9EYXRhYmFzZUhvc3RUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlVHJlZUVsZW1lbnQuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRl
bS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Ryb3Bab25lVmlldy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0VkaXRhYmxlRGF0YUdyaWROb2RlLmpz
Ij48L3NjcmlwdD4KQEAgLTgzMSw2ICs4NTAsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9U
aW1lbGluZVJ1bGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVGl0bGVW
aWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVG9nZ2xlQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Ub29sYmFy
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNC
dXR0b24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UeXBlVG9rZW5WaWV3
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVHlwZVRyZWVFbGVtZW50Lmpz
Ij48L3NjcmlwdD4KQEAgLTkxMSw3ICs5MzEsNyBAQAogPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGlk
PSJkb2NrZWQtcmVzaXplciI+PC9kaXY+Ci08ZGl2IGlkPSJ1bmRvY2tlZC10aXRsZS1hcmVhIj48
L2Rpdj4KKzxkaXYgaWQ9InRvb2xiYXIiPjwvZGl2PgogPGRpdiBpZD0idGFiLWJhciI+PC9kaXY+
CiA8ZGl2IGlkPSJtYWluIj4KICAgICA8ZGl2IGlkPSJjb250ZW50Ij4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWJ1Z2dlckRhc2hib2Fy
ZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWJ1Z2dl
ckRhc2hib2FyZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDExYjEwZmJlMzE3ZDVjMzYyZTcxNTE0MDc0MTQw
NjY2ZTc2NTVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFzaGJvYXJkLmpzCkBAIC0wLDAgKzEsMjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXSS5EZWJ1Z2dlckRhc2hib2FyZCA9IGNsYXNzIERlYnVnZ2VyRGFzaGJvYXJk
Cit7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGNiOWY1NjM2
ZDQwZTM5YzdlMzkyZWE3M2ZhNWY1MDE1ZDEyNjQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMK
QEAgLTAsMCArMSwyOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuRGVmYXVs
dERhc2hib2FyZCA9IGNsYXNzIERlZmF1bHREYXNoYm9hcmQgZXh0ZW5kcyBXSS5PYmplY3QKK3sK
KyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRo
aXMuX3dhaXRpbmdGb3JGaXJzdE1haW5SZXNvdXJjZVRvU3RhcnRUcmFja2luZ1NpemUgPSB0cnVl
OworCisgICAgICAgIC8vIE5lY2Vzc2FyeSBldmVudCByZXF1aXJlZCB0byB0cmFjayBwYWdlIGxv
YWQgdGltZSBhbmQgcmVzb3VyY2Ugc2l6ZXMuCisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlz
dGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVz
b3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS50aW1lbGluZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhdGVDaGFuZ2Vk
LCB0aGlzLl9oYW5kbGVUaW1lbGluZUNhcHR1cmluZ1N0YXRlQ2hhbmdlZCwgdGhpcyk7CisKKyAg
ICAgICAgLy8gTmVjZXNzYXJ5IGV2ZW50cyByZXF1aXJlZCB0byB0cmFjayBsb2FkIG9mIHJlc291
cmNlcy4KKyAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5S
ZXNvdXJjZVdhc0FkZGVkLCB0aGlzLl9yZXNvdXJjZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAg
V0kuVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0LkV2ZW50LlJlc291cmNlQWRkZWQs
IHRoaXMuX3Jlc291cmNlV2FzQWRkZWQsIHRoaXMpOworICAgICAgICBXSS5uZXR3b3JrTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LkZyYW1lV2FzQWRkZWQs
IHRoaXMuX2ZyYW1lV2FzQWRkZWQsIHRoaXMpOworCisgICAgICAgIC8vIE5lY2Vzc2FyeSBldmVu
dHMgcmVxdWlyZWQgdG8gdHJhY2sgY29uc29sZSBtZXNzYWdlcy4KKyAgICAgICAgV0kuY29uc29s
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5DbGVhcmVk
LCB0aGlzLl9jb25zb2xlV2FzQ2xlYXJlZCwgdGhpcyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVk
LCB0aGlzLl9jb25zb2xlTWVzc2FnZUFkZGVkLCB0aGlzKTsKKyAgICAgICAgV0kuY29uc29sZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5QcmV2aW91c01l
c3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlV2FzUmVwZWF0ZWQs
IHRoaXMpOworCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdvcmtpbmcgYXJvdW5kIHRoZSBv
cmRlciBvZiBldmVudHMuIE5vcm1hbCBwYWdlIG5hdmlnYXRpb24KKyAgICAgICAgLy8gdHJpZ2dl
cnMgYSBNYWluUmVzb3VyY2UgY2hhbmdlIGFuZCB0aGVuIGEgTWFpbkZyYW1lIGNoYW5nZS4gUGFn
ZSBUcmFuc2l0aW9uCisgICAgICAgIC8vIHRyaWdnZXJzIGEgTWFpbkZyYW1lIGNoYW5nZSB0aGVu
IGEgTWFpblJlc291cmNlIGNoYW5nZS4KKyAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VU
YXJnZXQgPSBmYWxzZTsKKworICAgICAgICBXSS5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuTm90aWZpY2F0aW9uLlRyYW5zaXRpb25QYWdlVGFyZ2V0LCB0aGlzLl90cmFuc2l0aW9u
UGFnZVRhcmdldCwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ291bnQgPSAwOwor
ICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gMDsKKyAgICAgICAgdGhpcy5fdGltZSA9IDA7
CisgICAgICAgIHRoaXMuX2xvZ3MgPSAwOworICAgICAgICB0aGlzLl9lcnJvcnMgPSAwOworICAg
ICAgICB0aGlzLl9pc3N1ZXMgPSAwOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0
IHJlc291cmNlc0NvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXND
b3VudDsKKyAgICB9CisKKyAgICBzZXQgcmVzb3VyY2VzQ291bnQodmFsdWUpCisgICAgeworICAg
ICAgICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IHZhbHVlOworICAgICAgICB0aGlzLl9kYXRhRGlk
Q2hhbmdlKCk7CisgICAgfQorCisgICAgZ2V0IHJlc291cmNlc1NpemUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc1NpemU7CisgICAgfQorCisgICAgc2V0IHJlc291cmNl
c1NpemUodmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gdmFsdWU7
CisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBnZXQgdGltZSgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdGltZTsKKyAgICB9CisKKyAgICBzZXQgdGlt
ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3RpbWUgPSB2YWx1ZTsKKyAgICAgICAgdGhp
cy5fZGF0YURpZENoYW5nZSgpOworICAgIH0KKworICAgIGdldCBsb2dzKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9sb2dzOworICAgIH0KKworICAgIHNldCBsb2dzKHZhbHVlKQorICAg
IHsKKyAgICAgICAgdGhpcy5fbG9ncyA9IHZhbHVlOworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hh
bmdlKCk7CisgICAgfQorCisgICAgZ2V0IGVycm9ycygpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fZXJyb3JzOworICAgIH0KKworICAgIHNldCBlcnJvcnModmFsdWUpCisgICAgeworICAg
ICAgICB0aGlzLl9lcnJvcnMgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgp
OworICAgIH0KKworICAgIGdldCBpc3N1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2lzc3VlczsKKyAgICB9CisKKyAgICBzZXQgaXNzdWVzKHZhbHVlKQorICAgIHsKKyAgICAgICAg
dGhpcy5faXNzdWVzID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKKyAg
ICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfZGF0YURpZENoYW5nZSgpCisgICAgeworICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWZhdWx0RGFzaGJvYXJkLkV2
ZW50LkRhdGFEaWRDaGFuZ2UpOworICAgIH0KKworICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2Uo
ZXZlbnQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFu
Y2VvZiBXSS5GcmFtZSk7CisKKyAgICAgICAgaWYgKCFldmVudC50YXJnZXQuaXNNYWluRnJhbWUo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXRoaXMuX3RyYW5zaXRpb25p
bmdQYWdlVGFyZ2V0KSB7CisgICAgICAgICAgICB0aGlzLl90aW1lID0gMDsKKyAgICAgICAgICAg
IHRoaXMuX3Jlc291cmNlc0NvdW50ID0gMTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc1Np
emUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnNpemUgfHwgMDsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IHRyYWNrIHJlc291cmNlIHNp
emVzIG9uIGZyZXNoIGxvYWRzLgorICAgICAgICBpZiAodGhpcy5fd2FpdGluZ0ZvckZpcnN0TWFp
blJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZSkgeworICAgICAgICAgICAgdGhpcy5fd2FpdGlu
Z0ZvckZpcnN0TWFpblJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZSA9IGZhbHNlOworICAgICAg
ICAgICAgV0kuUmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5TaXpl
RGlkQ2hhbmdlLCB0aGlzLl9yZXNvdXJjZVNpemVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworCisgICAgICAgIGlmICghdGhpcy5f
dHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQpCisgICAgICAgICAgICB0aGlzLl9zdGFydFVwZGF0aW5n
VGltZSgpOworCisgICAgICAgIGlmICh0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkKKyAg
ICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gZmFsc2U7CisgICAgfQor
CisgICAgX2hhbmRsZVRpbWVsaW5lQ2FwdHVyaW5nU3RhdGVDaGFuZ2VkKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKFdJLnRpbWVsaW5lTWFuYWdlci5pc0NhcHR1cmluZygpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIC8vIElmIHJlY29yZGluZyBzdG9wcywgd2Ugc2hvdWxkIHN0
b3AgdGhlIHRpbWVyIGlmIGl0IGhhc24ndCBzdG9wcGVkIGFscmVhZHkuCisgICAgICAgIHRoaXMu
X3N0b3BVcGRhdGluZ1RpbWUoKTsKKyAgICB9CisKKyAgICBfcmVzb3VyY2VXYXNBZGRlZChldmVu
dCkKKyAgICB7CisgICAgICAgICsrdGhpcy5yZXNvdXJjZXNDb3VudDsKKyAgICB9CisKKyAgICBf
ZnJhbWVXYXNBZGRlZChldmVudCkKKyAgICB7CisgICAgICAgICsrdGhpcy5yZXNvdXJjZXNDb3Vu
dDsKKyAgICB9CisKKyAgICBfcmVzb3VyY2VTaXplRGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgaWYgKGV2ZW50LnRhcmdldC51cmxDb21wb25lbnRzLnNjaGVtZSA9PT0gImRhdGEiKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBkZWx0YSA9IGV2ZW50LnRhcmdldC5z
aXplIC0gZXZlbnQuZGF0YS5wcmV2aW91c1NpemU7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFp
c05hTihkZWx0YSksICJSZXNvdXJjZSBzaXplIGNoYW5nZSBzaG91bGQgbmV2ZXIgYmUgTmFOLiIp
OworICAgICAgICB0aGlzLnJlc291cmNlc1NpemUgKz0gZGVsdGE7CisgICAgfQorCisgICAgX3N0
YXJ0VXBkYXRpbmdUaW1lKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ1RpbWUo
KTsKKworICAgICAgICB0aGlzLnRpbWUgPSAwOworCisgICAgICAgIHRoaXMuX3RpbWVsaW5lQmFz
ZVRpbWUgPSBEYXRlLm5vdygpOworICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheSA9IDUw
OworICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyID0gc2V0SW50ZXJ2YWwodGhp
cy5fdXBkYXRlVGltZS5iaW5kKHRoaXMpLCB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheSk7CisgICAg
fQorCisgICAgX3N0b3BVcGRhdGluZ1RpbWUoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl90
aW1lSW50ZXJ2YWxJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNs
ZWFySW50ZXJ2YWwodGhpcy5fdGltZUludGVydmFsSWRlbnRpZmllcik7CisgICAgICAgIHRoaXMu
X3RpbWVJbnRlcnZhbElkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgfQorCisgICAgX3VwZGF0
ZVRpbWUoKQorICAgIHsKKyAgICAgICAgdmFyIGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHRoaXMu
X3RpbWVsaW5lQmFzZVRpbWU7CisKKyAgICAgICAgdmFyIHRpbWVJbnRlcnZhbERlbGF5ID0gdGhp
cy5fdGltZUludGVydmFsRGVsYXk7CisgICAgICAgIGlmIChkdXJhdGlvbiA+PSAxMDAwKSAvLyAx
IHNlY29uZAorICAgICAgICAgICAgdGltZUludGVydmFsRGVsYXkgPSAxMDA7CisgICAgICAgIGVs
c2UgaWYgKGR1cmF0aW9uID49IDYwMDAwKSAvLyA2MCBzZWNvbmRzCisgICAgICAgICAgICB0aW1l
SW50ZXJ2YWxEZWxheSA9IDEwMDA7CisgICAgICAgIGVsc2UgaWYgKGR1cmF0aW9uID49IDM2MDAw
MDApIC8vIDEgbWludXRlCisgICAgICAgICAgICB0aW1lSW50ZXJ2YWxEZWxheSA9IDEwMDAwOwor
CisgICAgICAgIGlmICh0aW1lSW50ZXJ2YWxEZWxheSAhPT0gdGhpcy5fdGltZUludGVydmFsRGVs
YXkpIHsKKyAgICAgICAgICAgIHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5ID0gdGltZUludGVydmFs
RGVsYXk7CisKKyAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fdGltZUludGVydmFsSWRl
bnRpZmllcik7CisgICAgICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyID0gc2V0
SW50ZXJ2YWwodGhpcy5fdXBkYXRlVGltZS5iaW5kKHRoaXMpLCB0aGlzLl90aW1lSW50ZXJ2YWxE
ZWxheSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgbWFpbkZyYW1lID0gV0kubmV0d29ya01h
bmFnZXIubWFpbkZyYW1lOworICAgICAgICB2YXIgbWFpbkZyYW1lU3RhcnRUaW1lID0gbWFpbkZy
YW1lLm1haW5SZXNvdXJjZS5maXJzdFRpbWVzdGFtcDsKKyAgICAgICAgdmFyIG1haW5GcmFtZUxv
YWRFdmVudFRpbWUgPSBtYWluRnJhbWUubG9hZEV2ZW50VGltZXN0YW1wOworCisgICAgICAgIGlm
IChpc05hTihtYWluRnJhbWVTdGFydFRpbWUpIHx8IGlzTmFOKG1haW5GcmFtZUxvYWRFdmVudFRp
bWUpKSB7CisgICAgICAgICAgICB0aGlzLnRpbWUgPSBkdXJhdGlvbiAvIDEwMDA7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnRpbWUgPSBtYWluRnJhbWVM
b2FkRXZlbnRUaW1lIC0gbWFpbkZyYW1lU3RhcnRUaW1lOworCisgICAgICAgIHRoaXMuX3N0b3BV
cGRhdGluZ1RpbWUoKTsKKyAgICB9CisKKyAgICBfY29uc29sZU1lc3NhZ2VBZGRlZChldmVudCkK
KyAgICB7CisgICAgICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YS5tZXNzYWdlOworICAgICAg
ICB0aGlzLl9sYXN0Q29uc29sZU1lc3NhZ2VUeXBlID0gbWVzc2FnZS5sZXZlbDsKKyAgICAgICAg
dGhpcy5faW5jcmVtZW50Q29uc29sZU1lc3NhZ2VUeXBlKG1lc3NhZ2UubGV2ZWwsIG1lc3NhZ2Uu
cmVwZWF0Q291bnQpOworICAgIH0KKworICAgIF9jb25zb2xlTWVzc2FnZVdhc1JlcGVhdGVkKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5faW5jcmVtZW50Q29uc29sZU1lc3NhZ2VUeXBlKHRo
aXMuX2xhc3RDb25zb2xlTWVzc2FnZVR5cGUsIDEpOworICAgIH0KKworICAgIF9pbmNyZW1lbnRD
b25zb2xlTWVzc2FnZVR5cGUodHlwZSwgaW5jcmVtZW50KQorICAgIHsKKyAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgICAgIGNhc2UgV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxv
ZzoKKyAgICAgICAgY2FzZSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuSW5mbzoKKyAg
ICAgICAgY2FzZSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRGVidWc6CisgICAgICAg
ICAgICB0aGlzLmxvZ3MgKz0gaW5jcmVtZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmc6CisgICAgICAgICAg
ICB0aGlzLmlzc3VlcyArPSBpbmNyZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3I6CisgICAgICAgICAgICB0
aGlzLmVycm9ycyArPSBpbmNyZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIF9jb25zb2xlV2FzQ2xlYXJlZChldmVudCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2xvZ3MgPSAwOworICAgICAgICB0aGlzLl9pc3N1ZXMgPSAwOworICAgICAgICB0aGlzLl9l
cnJvcnMgPSAwOworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAg
X3RyYW5zaXRpb25QYWdlVGFyZ2V0KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25p
bmdQYWdlVGFyZ2V0ID0gdHJ1ZTsKKworICAgICAgICB0aGlzLl90aW1lID0gMDsKKyAgICAgICAg
dGhpcy5fcmVzb3VyY2VzQ291bnQgPSAwOworICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0g
MDsKKworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7CisgICAgfQorfTsKKworV0kuRGVm
YXVsdERhc2hib2FyZC5FdmVudCA9IHsKKyAgICBEYXRhRGlkQ2hhbmdlOiAiZGVmYXVsdC1kYXNo
Ym9hcmQtZGF0YS1kaWQtY2hhbmdlIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvblRv
b2xiYXJJdGVtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NzU0MmNmNGU1MjdhZmU0MGY1NDUzM2FhY2E5OTc0
YWMwNDU2MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtLmpzCkBAIC0wLDAgKzEsMzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtID0gY2xh
c3MgQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbSBleHRlbmRzIFdJLkFjdGl2YXRlQnV0dG9uTmF2
aWdhdGlvbkl0ZW0KK3sKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRp
cCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIHJvbGUpCisgICAgeworICAgICAgICBzdXBlcihp
ZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIDE2LCAx
Niwgcm9sZSk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0F1ZGl0VGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BdWRpdFRhYkNvbnRlbnRWaWV3LmpzCmluZGV4
IDUzMmQwYzNhZWZlNzlhNzM1MjhmYmZiY2JjMjEyMTZkNjYyODgwZjIuLjIxNWRiYTUyNzY4NmFm
N2I2NWUzNzVhZDMxZmIxZWE0ODEyOTYyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0F1ZGl0VGFiQ29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXVkaXRUYWJDb250ZW50Vmll
dy5qcwpAQCAtMjcsOSArMjcsNyBAQCBXSS5BdWRpdFRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgQXVk
aXRUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGFiQwogewogICAgIGNv
bnN0cnVjdG9yKCkKICAgICB7Ci0gICAgICAgIHN1cGVyKEF1ZGl0VGFiQ29udGVudFZpZXcudGFi
SW5mbygpLCB7Ci0gICAgICAgICAgICBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3I6
IFdJLkF1ZGl0TmF2aWdhdGlvblNpZGViYXJQYW5lbCwKLSAgICAgICAgfSk7CisgICAgICAgIHN1
cGVyKCJhdWRpdCIsIFsiYXVkaXQiXSwgV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8o
V0kuQXVkaXRUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpLCBXSS5BdWRpdE5hdmlnYXRpb25TaWRl
YmFyUGFuZWwpOwogCiAgICAgICAgIHRoaXMuX3N0YXJ0U3RvcFNob3J0Y3V0ID0gbmV3IFdJLktl
eWJvYXJkU2hvcnRjdXQobnVsbCwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuU3BhY2UsIHRoaXMu
X2hhbmRsZVNwYWNlLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9zdGFydFN0b3BTaG9ydGN1
dC5pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0ID0gZmFsc2U7CkBAIC00MSw3ICszOSw2IEBAIFdJ
LkF1ZGl0VGFiQ29udGVudFZpZXcgPSBjbGFzcyBBdWRpdFRhYkNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudEJyb3dzZXJUYWJDCiAgICAgc3RhdGljIHRhYkluZm8oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50aWZpZXI6IEF1ZGl0VGFiQ29udGVudFZpZXcu
VHlwZSwKICAgICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL0F1ZGl0LnN2ZyIsCiAgICAgICAgICAg
ICB0aXRsZTogV0kuVUlTdHJpbmcoIkF1ZGl0IiksCiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9u
SXRlbS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0
b25OYXZpZ2F0aW9uSXRlbS5jc3MKaW5kZXggODE2Y2NkNmI0MWM3YzZlZWM4MzQ2NTdhYjk4ZDll
NjY0ODMwMTAyOC4uMTQ3MGJiMjA2MWQwMGU5NzM3YTc1ZWNiNGMyOGRlNDM0NWVkY2JkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmNzcwpAQCAtNDEsMTAgKzQxLDYgQEAKICAg
ICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDRweDsKIH0KIAotLnRhYi1iYXIgPiAubmF2aWdhdGlv
bi1iYXIgLml0ZW0uYnV0dG9uLmltYWdlLWFuZC10ZXh0ID4gc3BhbiB7Ci0gICAgcGFkZGluZy1i
b3R0b206IDA7Ci19Ci0KIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24udGV4dC1vbmx5IHsK
ICAgICBwYWRkaW5nOiAxcHggOHB4IDNweDsKICAgICBtYXJnaW46IDAgMnB4OyAvKiBXSS5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuZ2V0IHRvdGFsTWFyZ2luICovCkBAIC03OCwyOSAr
NzQsOCBAQAogICAgIGNvbG9yOiB2YXIoLS1nbHlwaC1jb2xvci1kaXNhYmxlZCk7CiB9CiAKLS5u
YXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24gPiBpbWcgewotICAgIHdpZHRoOiAxMDAlOwotICAg
IGhlaWdodDogMTAwJTsKLX0KLQotLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbi5kaXNhYmxl
ZCA+IGltZyB7Ci0gICAgb3BhY2l0eTogMC4zOwotfQotCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1p
bmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5i
dXR0b24gPiBpbWcgewotICAgIG9wYWNpdHk6IDAuNjsKLX0KLQotYm9keTptYXRjaGVzKC53aW5k
b3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAubmF2aWdhdGlvbi1iYXIgLml0
ZW0uYnV0dG9uLmRpc2FibGVkID4gaW1nIHsKLSAgICBvcGFjaXR5OiAwLjE4OwotfQotCiBAbWVk
aWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgLm5hdmlnYXRpb24tYmFyIC5p
dGVtLmJ1dHRvbiB7CiAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLXNlY29uZGFyeSk7
CiAgICAgfQotCi0gICAgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbi5kaXNhYmxlZCA+IGlt
ZyB7Ci0gICAgICAgIGZpbHRlcjogaW52ZXJ0KCk7Ci0gICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25O
YXZpZ2F0aW9uSXRlbS5qcwppbmRleCAxYjcwZDQ2ZjkzMzUyNjYzOGZjNTZjYWM0NTFhZGU2OTg2
ZTJlYjI2Li4wYTczNzJjZTc4ZDNlMWQzNTExNjE5Mzk0MmNhYTQyY2Y1NDVmYzc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZp
Z2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwpAQCAtNDgsOCArNDgsNiBAQCBXSS5CdXR0b25O
YXZpZ2F0aW9uSXRlbSA9IGNsYXNzIEJ1dHRvbk5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV0kuTmF2
aWdhdGlvbkl0ZW0KIAogICAgICAgICB0aGlzLmJ1dHRvblN0eWxlID0gdGhpcy5faW1hZ2UgPyBX
SS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZS5JbWFnZSA6IFdJLkJ1dHRvbk5hdmlnYXRpb25J
dGVtLlN0eWxlLlRleHQ7CiAKLSAgICAgICAgdGhpcy5pbWFnZVR5cGUgPSB0aGlzLl9pbWFnZSA/
IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkltYWdlVHlwZS5TVkcgOiBudWxsOwotCiAgICAgICAg
IGlmICh0aGlzLmJ1dHRvblN0eWxlID09PSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZS5J
bWFnZSkKICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRvb2xUaXBPckxhYmVsOwogICAgIH0K
QEAgLTEyNSwyNyArMTIzLDYgQEAgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBCdXR0
b25OYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdJLk5hdmlnYXRpb25JdGVtCiAgICAgICAgICAgICB0
aGlzLnBhcmVudE5hdmlnYXRpb25CYXIubmVlZHNMYXlvdXQoKTsKICAgICB9CiAKLSAgICBnZXQg
aW1hZ2VUeXBlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pbWFnZVR5cGU7Ci0gICAg
fQotCi0gICAgc2V0IGltYWdlVHlwZShpbWFnZVR5cGUpCi0gICAgewotICAgICAgICBjb25zb2xl
LmFzc2VydCghaW1hZ2VUeXBlIHx8IE9iamVjdC52YWx1ZXMoV0kuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uSW1hZ2VUeXBlKS5pbmNsdWRlcyhpbWFnZVR5cGUpLCBpbWFnZVR5cGUpOwotICAgICAgICBj
b25zb2xlLmFzc2VydCghaW1hZ2VUeXBlIHx8ICh0aGlzLl9idXR0b25TdHlsZSA9PT0gV0kuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGUuSW1hZ2UgfHwgdGhpcy5fYnV0dG9uU3R5bGUgPT09IFdJ
LkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlLkltYWdlQW5kVGV4dCkpOwotCi0gICAgICAgIGlm
ICh0aGlzLl9pbWFnZVR5cGUgPT09IGltYWdlVHlwZSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICB0aGlzLl9pbWFnZVR5cGUgPSBpbWFnZVR5cGU7Ci0KLSAgICAgICAgdGhpcy5fdXBk
YXRlKCk7Ci0KLSAgICAgICAgaWYgKHRoaXMucGFyZW50TmF2aWdhdGlvbkJhcikKLSAgICAgICAg
ICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci5uZWVkc0xheW91dCgpOwotICAgIH0KLQogICAg
IC8vIFByb3RlY3RlZAogCiAgICAgZ2V0IHRvdGFsTWFyZ2luKCkKQEAgLTE3NywyMiArMTU0LDEw
IEBAIFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtID0gY2xhc3MgQnV0dG9uTmF2aWdhdGlvbkl0ZW0g
ZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uSXRlbQogICAgICAgICBpZiAodGhpcy5fYnV0dG9uU3R5bGUg
PT09IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlLlRleHQpCiAgICAgICAgICAgICB0aGlz
LmVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9sYWJlbDsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKHRoaXMuX2ltYWdlVHlwZSkgewotICAgICAgICAgICAgY2FzZSBudWxs
OgotICAgICAgICAgICAgY2FzZSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5JbWFnZVR5cGUuU1ZH
OiB7Ci0gICAgICAgICAgICAgICAgbGV0IGdseXBoRWxlbWVudCA9IFdJLkltYWdlVXRpbGl0aWVz
LnVzZVNWR1N5bWJvbCh0aGlzLl9pbWFnZSwgImdseXBoIik7Ci0gICAgICAgICAgICAgICAgZ2x5
cGhFbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5faW1hZ2VXaWR0aCArICJweCI7Ci0gICAgICAg
ICAgICAgICAgZ2x5cGhFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuX2ltYWdlSGVpZ2h0ICsg
InB4IjsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZ2x5cGhFbGVt
ZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgY2FzZSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5JbWFnZVR5cGUuSU1HOiB7Ci0gICAgICAg
ICAgICAgICAgbGV0IGltZyA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbWciKSk7Ci0gICAgICAgICAgICAgICAgaW1nLnNyYyA9IHRoaXMuX2ltYWdl
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbGV0IGdseXBoRWxlbWVudCA9IFdJLkltYWdlVXRpbGl0aWVzLnVzZVNWR1N5
bWJvbCh0aGlzLl9pbWFnZSwgImdseXBoIik7CisgICAgICAgICAgICBnbHlwaEVsZW1lbnQuc3R5
bGUud2lkdGggPSB0aGlzLl9pbWFnZVdpZHRoICsgInB4IjsKKyAgICAgICAgICAgIGdseXBoRWxl
bWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9pbWFnZUhlaWdodCArICJweCI7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZ2x5cGhFbGVtZW50KTsKIAogICAgICAgICAgICAg
aWYgKHRoaXMuX2J1dHRvblN0eWxlID09PSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZS5J
bWFnZUFuZFRleHQpIHsKICAgICAgICAgICAgICAgICBsZXQgbGFiZWxFbGVtZW50ID0gdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CkBAIC0y
MTEsOCArMTc2LDMgQEAgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGUgPSB7CiAgICAgVGV4
dDogInRleHQtb25seSIsCiAgICAgSW1hZ2VBbmRUZXh0OiAiaW1hZ2UtYW5kLXRleHQiLAogfTsK
LQotV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uSW1hZ2VUeXBlID0gewotICAgIFNWRzogImltYWdl
LXR5cGUtc3ZnIiwKLSAgICBJTUc6ICJpbWFnZS10eXBlLWltZyIsCi19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJhckl0
ZW0uY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9u
VG9vbGJhckl0ZW0uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMWM2ZDY4YzQ2YjczYTgzZmFjZDcyOTRiN2Zm
NGE5NDY3OGZhZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9CdXR0b25Ub29sYmFySXRlbS5jc3MKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLnRvb2xiYXIgLml0ZW0uYnV0dG9uIHsKKyAgICBhbGlnbi1pdGVt
czogY2VudGVyOworICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOworCisgICAgbWFyZ2luOiA0
cHg7CisgICAgcGFkZGluZzogMCAxMHB4OworCisgICAgY29sb3I6IGhzbCgwLCAwJSwgNDUlKTsK
K30KKworLnRvb2xiYXIgLml0ZW0uYnV0dG9uOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSB7CisgICAg
Y29sb3I6IGhzbCgwLCAwJSwgMzAlKTsKK30KKworLnRvb2xiYXIgLml0ZW0uYnV0dG9uOm5vdCgu
ZGlzYWJsZWQpOm1hdGNoZXMoOmZvY3VzLCAuYWN0aXZhdGUuYWN0aXZhdGVkKSB7CisgICAgY29s
b3I6IHZhcigtLWdseXBoLWNvbG9yLWFjdGl2ZSk7Cit9CisKKy50b29sYmFyIC5pdGVtLmJ1dHRv
biA+IC5nbHlwaCB7CisgICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAxNnB4OworfQorCiti
b2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuaXRlbS5idXR0b24geworICAgIG9wYWNpdHk6
IDAuNjU7Cit9CisKKy50b29sYmFyIC5pdGVtLmJ1dHRvbi5kaXNhYmxlZCB7CisgICAgb3BhY2l0
eTogMC41NSAhaW1wb3J0YW50OworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAu
aXRlbS5idXR0b24uZGlzYWJsZWQgeworICAgIG9wYWNpdHk6IDAuMzUgIWltcG9ydGFudDsKK30K
KworQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgeworICAgIC50b29sYmFyIC5p
dGVtLmJ1dHRvbiB7CisgICAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1idXR0b24pOworICAgIH0K
KworICAgIC50b29sYmFyIC5pdGVtLmJ1dHRvbjpub3QoLmRpc2FibGVkKTphY3RpdmUgeworICAg
ICAgICBjb2xvcjogdmFyKC0tY29sb3ItYnV0dG9uLWFjdGl2ZSk7CisgICAgICAgIGJhY2tncm91
bmQtaW1hZ2U6IG5vbmU7CisgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1iYWNrZ3Jv
dW5kLWNvbG9yLXByZXNzZWQpOworICAgIH0KKworICAgIGJvZHk6bm90KC53aW5kb3ctaW5hY3Rp
dmUpIC50b29sYmFyIC5pdGVtLmJ1dHRvbjpub3QoLmRpc2FibGVkKTptYXRjaGVzKDpmb2N1cywg
LmFjdGl2YXRlLmFjdGl2YXRlZCkgPiAuZ2x5cGggeworICAgICAgICBmaWx0ZXI6IGJyaWdodG5l
c3MoMS4zNSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25Ub29sYmFySXRlbS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZTRmNmQwYTFiYjZmZDZmNTUzYjY0YmI2ODZjMzU1YjUwMjA4NzU4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9v
bGJhckl0ZW0uanMKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkJ1dHRv
blRvb2xiYXJJdGVtID0gY2xhc3MgQnV0dG9uVG9vbGJhckl0ZW0gZXh0ZW5kcyBXSS5CdXR0b25O
YXZpZ2F0aW9uSXRlbQoreworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIHRvb2xUaXAsIGlt
YWdlLCByb2xlKQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwgdG9vbFRpcCwgaW1h
Z2UsIDE2LCAxNiwgcm9sZSk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVUYWJDb250ZW50Vmlldy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVUYWJDb250ZW50
Vmlldy5qcwppbmRleCBmNjhhOWZhYzI3YmI1NGYyZGVhYTIwNTU1M2MzMjRlOTVmZGY2YjVhLi4x
MjU5ODZhNjZiZDIxZTJhMzdhZjY2ZGVjOGEwNTI3Mjc2ZGFiYWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
c29sZVRhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNSwxNSArMjUsMTYgQEAKIAogV0kuQ29uc29sZVRh
YkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29uc29sZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29u
dGVudEJyb3dzZXJUYWJDb250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25z
dHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc3VwZXIoQ29uc29sZVRhYkNvbnRl
bnRWaWV3LnRhYkluZm8oKSwge2Rpc2FibGVCYWNrRm9yd2FyZDogdHJ1ZX0pOworICAgICAgICBs
ZXQgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLkNvbnNv
bGVUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIg
fHwgImNvbnNvbGUiLCAiY29uc29sZSIsIHRhYkJhckl0ZW0sIG51bGwsIG51bGwsIHRydWUpOwog
ICAgIH0KIAogICAgIHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0g
ICAgICAgICAgICBpZGVudGlmaWVyOiBDb25zb2xlVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAg
ICAgICAgIGltYWdlOiAiSW1hZ2VzL0NvbnNvbGUuc3ZnIiwKICAgICAgICAgICAgIHRpdGxlOiBX
SS5VSVN0cmluZygiQ29uc29sZSIpLAogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
bnRCcm93c2VyVGFiQ29udGVudFZpZXcuanMKaW5kZXggYmMzZDUxOGFmZjllOTFiZjcxYWE1ZGE1
M2FlYmM0YmYwNTQxYjQyZi4uMmQ3NWMwZGE2NjQwYjM3NWI4NGJiNDJmMTM2ODE5MWE0OGQ5NjZm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzCkBA
IC0yNSwxOSArMjUsMjUgQEAKIAogV0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyA9IGNs
YXNzIENvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50Vmll
dwogewotICAgIGNvbnN0cnVjdG9yKHRhYkluZm8sIHtuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29u
c3RydWN0b3IsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMsIGRpc2FibGVCYWNrRm9y
d2FyZCwgZmxleGlibGVOYXZpZ2F0aW9uSXRlbX0gPSB7fSkKKyAgICBjb25zdHJ1Y3RvcihpZGVu
dGlmaWVyLCBzdHlsZUNsYXNzTmFtZXMsIHRhYkJhckl0ZW0sIG5hdmlnYXRpb25TaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvciwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycywgZGlzYWJsZUJh
Y2tGb3J3YXJkLCBmbGV4aWJsZU5hdmlnYXRpb25JdGVtKQogICAgIHsKLSAgICAgICAgc3VwZXIo
dGFiSW5mbywge25hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciwgZGV0YWlsc1NpZGVi
YXJQYW5lbENvbnN0cnVjdG9yc30pOworICAgICAgICBpZiAodHlwZW9mIHN0eWxlQ2xhc3NOYW1l
cyA9PT0gInN0cmluZyIpCisgICAgICAgICAgICBzdHlsZUNsYXNzTmFtZXMgPSBbc3R5bGVDbGFz
c05hbWVzXTsKIAotICAgICAgICBjb25zdCBjb250ZW50QnJvd3NlckVsZW1lbnQgPSBudWxsOwot
ICAgICAgICBjb25zdCBkaXNhYmxlRmluZEJhbm5lciA9IGZhbHNlOwotICAgICAgICB0aGlzLl9j
b250ZW50QnJvd3NlciA9IG5ldyBXSS5Db250ZW50QnJvd3Nlcihjb250ZW50QnJvd3NlckVsZW1l
bnQsIHRoaXMsIGRpc2FibGVCYWNrRm9yd2FyZCwgZGlzYWJsZUZpbmRCYW5uZXIsIGZsZXhpYmxl
TmF2aWdhdGlvbkl0ZW0pOworICAgICAgICBzdHlsZUNsYXNzTmFtZXMucHVzaCgiY29udGVudC1i
cm93c2VyIik7CisKKyAgICAgICAgdmFyIGNvbnRlbnRCcm93c2VyID0gbmV3IFdJLkNvbnRlbnRC
cm93c2VyKG51bGwsIG51bGwsIGRpc2FibGVCYWNrRm9yd2FyZCwgZmFsc2UsIGZsZXhpYmxlTmF2
aWdhdGlvbkl0ZW0pOworCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIsIHN0eWxlQ2xhc3NOYW1l
cywgdGFiQmFySXRlbSwgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yLCBkZXRhaWxz
U2lkZWJhclBhbmVsQ29uc3RydWN0b3JzKTsKKworICAgICAgICB0aGlzLl9jb250ZW50QnJvd3Nl
ciA9IGNvbnRlbnRCcm93c2VyOworICAgICAgICB0aGlzLl9jb250ZW50QnJvd3Nlci5kZWxlZ2F0
ZSA9IHRoaXM7CiAKICAgICAgICAgdGhpcy5faWdub3JlTmF2aWdhdGlvblNpZGViYXJQYW5lbENv
bGxhcHNlZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX2lnbm9yZURldGFpbHNTaWRlYmFy
UGFuZWxDb2xsYXBzZWRFdmVudCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9pZ25vcmVEZXRhaWxz
U2lkZWJhclBhbmVsU2VsZWN0ZWRFdmVudCA9IGZhbHNlOwogCi0gICAgICAgIHRoaXMuX2xhc3RT
ZWxlY3RlZERldGFpbHNTaWRlYmFyUGFuZWxTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhpcy5f
aWRlbnRpZmllciArICItbGFzdC1zZWxlY3RlZC1kZXRhaWxzLXNpZGViYXItcGFuZWwiLCBudWxs
KTsKKyAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkRGV0YWlsc1NpZGViYXJQYW5lbFNldHRpbmcg
PSBuZXcgV0kuU2V0dGluZyhpZGVudGlmaWVyICsgIi1sYXN0LXNlbGVjdGVkLWRldGFpbHMtc2lk
ZWJhci1wYW5lbCIsIG51bGwpOwogCiAgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuQ29udGVudEJyb3dzZXIuRXZlbnQuQ3VycmVudFJlcHJlc2VudGVkT2Jq
ZWN0c0RpZENoYW5nZSwgdGhpcy5fY29udGVudEJyb3dzZXJDdXJyZW50UmVwcmVzZW50ZWRPYmpl
Y3RzRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRD
aGFuZ2UsIHRoaXMuX2NvbnRlbnRCcm93c2VyQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0
aGlzKTsKQEAgLTQ2LDcgKzUyLDcgQEAgV0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyA9
IGNsYXNzIENvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS4KICAgICAgICAg
Ly8gRXhwbGljaXRseSB1cGRhdGUgdGhlIHBhdGggZm9yIHRoZSBuYXZpZ2F0aW9uIGJhciB0byBw
cmV2ZW50IGl0IGZyb20gc2hvd2luZyB1cCBhcyBibGFuay4KICAgICAgICAgdGhpcy5fY29udGVu
dEJyb3dzZXIudXBkYXRlSGllcmFyY2hpY2FsUGF0aEZvckN1cnJlbnRDb250ZW50VmlldygpOwog
Ci0gICAgICAgIGlmICh0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IpIHsK
KyAgICAgICAgaWYgKG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcikgewogICAgICAg
ICAgICAgbGV0IHNob3dUb29sVGlwID0gV0kuVUlTdHJpbmcoIlNob3cgdGhlIG5hdmlnYXRpb24g
c2lkZWJhciAoJXMpIikuZm9ybWF0KFdJLm5hdmlnYXRpb25TaWRlYmFyS2V5Ym9hcmRTaG9ydGN1
dC5kaXNwbGF5TmFtZSk7CiAgICAgICAgICAgICBsZXQgaGlkZVRvb2xUaXAgPSBXSS5VSVN0cmlu
ZygiSGlkZSB0aGUgbmF2aWdhdGlvbiBzaWRlYmFyICglcykiKS5mb3JtYXQoV0kubmF2aWdhdGlv
blNpZGViYXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKICAgICAgICAgICAgIGxldCBp
bWFnZSA9IFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlv
bi5SVEwgPyAiSW1hZ2VzL1RvZ2dsZVJpZ2h0U2lkZWJhci5zdmciIDogIkltYWdlcy9Ub2dnbGVM
ZWZ0U2lkZWJhci5zdmciOwpAQCAtNjIsNyArNjgsNyBAQCBXSS5Db250ZW50QnJvd3NlclRhYkNv
bnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyBleHRlbmRzIFdJ
LgogICAgICAgICAgICAgV0kubmF2aWdhdGlvblNpZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5T
aWRlYmFyLkV2ZW50LkNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9uYXZpZ2F0aW9uU2lk
ZWJhckNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICh0aGlzLl9kZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLmxlbmd0aCkgeworICAg
ICAgICBpZiAoZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyAmJiBkZXRhaWxzU2lkZWJh
clBhbmVsQ29uc3RydWN0b3JzLmxlbmd0aCkgewogICAgICAgICAgICAgbGV0IHNob3dUb29sVGlw
ID0gV0kuVUlTdHJpbmcoIlNob3cgdGhlIGRldGFpbHMgc2lkZWJhciAoJXMpIikuZm9ybWF0KFdJ
LmRldGFpbHNTaWRlYmFyS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CiAgICAgICAgICAg
ICBsZXQgaGlkZVRvb2xUaXAgPSBXSS5VSVN0cmluZygiSGlkZSB0aGUgZGV0YWlscyBzaWRlYmFy
ICglcykiKS5mb3JtYXQoV0kuZGV0YWlsc1NpZGViYXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlO
YW1lKTsKICAgICAgICAgICAgIGxldCBpbWFnZSA9IFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9u
KCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwgPyAiSW1hZ2VzL1RvZ2dsZUxlZnRTaWRlYmFy
LnN2ZyIgOiAiSW1hZ2VzL1RvZ2dsZVJpZ2h0U2lkZWJhci5zdmciOwpAQCAtODAsOCArODYsNiBA
QCBXSS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudEJyb3dzZXJU
YWJDb250ZW50VmlldyBleHRlbmRzIFdJLgogICAgICAgICAgICAgV0kuZGV0YWlsc1NpZGViYXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5TaWRlYmFyLkV2ZW50LlNpZGViYXJQYW5lbFNlbGVjdGVkLCB0
aGlzLl9kZXRhaWxzU2lkZWJhclBhbmVsU2VsZWN0ZWQsIHRoaXMpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtYnJvd3NlciIpOwotCiAg
ICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9jb250ZW50QnJvd3Nlcik7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
cm9sVG9vbGJhckl0ZW0uY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTIzOWExNjZiMmRjZTBm
OTZhMGUyZTA1YzAzNmFmMTgxMWIyMjM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmNzcwpAQCAt
MCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudG9vbGJhciAuaXRlbS5jb250cm9sIHsK
KyAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwor
CisgICAgcGFkZGluZzogMCAycHg7CisKKyAgICBvcGFjaXR5OiAwLjU7Cit9CisKKy50b29sYmFy
LnNtYWxsLXNpemUgLml0ZW0uY29udHJvbCB7CisgICAgcGFkZGluZzogMnB4OworfQorCisudG9v
bGJhciAuaXRlbS5jb250cm9sOmhvdmVyIHsKKyAgICBvcGFjaXR5OiAwLjc1OworfQorCisudG9v
bGJhciAuaXRlbS5jb250cm9sOmFjdGl2ZSB7CisgICAgb3BhY2l0eTogMTsKK30KKworLnRvb2xi
YXIgLml0ZW0uY29udHJvbCA+IC5nbHlwaCB7CisgICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0
OiAxNnB4OworCisgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICBiYWNrZ3Jv
dW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAu
dG9vbGJhciAuaXRlbS5jb250cm9sIHsKKyAgICBvcGFjaXR5OiAwLjM1OworfQorCisudG9vbGJh
ciAuaXRlbS5jb250cm9sLmRpc2FibGVkIHsKKyAgICBvcGFjaXR5OiAwLjM1ICFpbXBvcnRhbnQ7
Cit9CisKK2JvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5pdGVtLmNvbnRyb2wuZGlzYWJs
ZWQgeworICAgIG9wYWNpdHk6IDAuMiAhaW1wb3J0YW50OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xi
YXJJdGVtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjNDI4YzhhYjEzZDJhNWVkY2IxZDBkMTgxZTRiOWFlZGRi
NzhiOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uanMKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1dJLkNvbnRyb2xUb29sYmFySXRlbSA9IGNsYXNzIENvbnRyb2xUb29sYmFy
SXRlbSBleHRlbmRzIFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtCit7CisgICAgY29uc3RydWN0b3Io
aWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KQorICAg
IHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgs
IGltYWdlSGVpZ2h0LCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBn
ZXQgYWRkaXRpb25hbENsYXNzTmFtZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFsiY29udHJv
bCJdOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmNzcwppbmRleCBjODll
OWQwZjM5ZjFlYjFiZjljMmM2YjE5M2VmZjQ0ZTQzYzg4NmU3Li40MTNkMDZkMjNkMWIyMTViODZk
M2M0YmU1ZTExYzk1MDQ4NTI3ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuY3NzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5jc3MK
QEAgLTU5LDcgKzU5LDcgQEAgYm9keVtkaXI9cnRsXSAuY29udGVudC12aWV3LmRvbS10cmVlIC50
cmVlLW91dGxpbmUuZG9tIGxpIC5zdGF0dXMtaW1hZ2UgewogICAgIGZpbGw6IHZhcigtLWJyZWFr
cG9pbnQtY29sb3IpOwogfQogCi1ib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAud2luZG93LWRv
Y2tlZC1pbmFjdGl2ZSkgLmNvbnRlbnQtdmlldy5kb20tdHJlZSAudHJlZS1vdXRsaW5lLmRvbTpm
b2N1cyBsaTptYXRjaGVzKC5zZWxlY3RlZCwgLmhvdmVyZWQpIC5zdGF0dXMtaW1hZ2UuYnJlYWtw
b2ludCB7Citib2R5Om5vdCgud2luZG93LWluYWN0aXZlKSAuY29udGVudC12aWV3LmRvbS10cmVl
IC50cmVlLW91dGxpbmUuZG9tOmZvY3VzIGxpOm1hdGNoZXMoLnNlbGVjdGVkLCAuaG92ZXJlZCkg
LnN0YXR1cy1pbWFnZS5icmVha3BvaW50IHsKICAgICBzdHJva2U6IHZhcigtLXNlbGVjdGVkLWZv
cmVncm91bmQtY29sb3IpOwogfQogCkBAIC03Niw3ICs3Niw3IEBAIGJvZHk6bm90KC53aW5kb3ct
aW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAuY29udGVudC12aWV3LmRvbS10cmVl
IC50cmVlCiAgICAgc3Ryb2tlOiB2YXIoLS1icmVha3BvaW50LWNvbG9yKTsKIH0KIAotYm9keTpu
b3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC5jb250ZW50LXZp
ZXcuZG9tLXRyZWUgLnRyZWUtb3V0bGluZS5kb206Zm9jdXMgbGk6bWF0Y2hlcyguc2VsZWN0ZWQs
IC5ob3ZlcmVkKSAuc3RhdHVzLWltYWdlLmJyZWFrcG9pbnQuc3VidHJlZSB7Citib2R5Om5vdCgu
d2luZG93LWluYWN0aXZlKSAuY29udGVudC12aWV3LmRvbS10cmVlIC50cmVlLW91dGxpbmUuZG9t
OmZvY3VzIGxpOm1hdGNoZXMoLnNlbGVjdGVkLCAuaG92ZXJlZCkgLnN0YXR1cy1pbWFnZS5icmVh
a3BvaW50LnN1YnRyZWUgewogICAgIHN0cm9rZTogdmFyKC0tc2VsZWN0ZWQtZm9yZWdyb3VuZC1j
b2xvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzNjYmE3ZmI4ZTg1ODcxZTgyZDhhYjc5ZDQzODA5NzFmODhkY2RkOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hi
b2FyZENvbnRhaW5lclZpZXcuY3NzCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZl
OworICAgIG1hcmdpbjogNHB4OworICAgIGhlaWdodDogMjJweDsKKworICAgIGJvcmRlci1yYWRp
dXM6IDRweDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworfQorCitib2R5Om1hdGNoZXMoLnBhZ2Us
IC53ZWItcGFnZSkgLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIgeworICAgIHdpZHRoOiAz
NnZ3OworICAgIG1pbi13aWR0aDogMzUwcHg7Cit9CisKK2JvZHk6bm90KC5wYWdlLCAud2ViLXBh
Z2UpIC50b29sYmFyIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICB3aWR0aDogMjV2dzsKKyAg
ICBtaW4td2lkdGg6IDE3NXB4OworfQorCisudG9vbGJhci5jb2xsYXBzZWQgLmRhc2hib2FyZC1j
b250YWluZXIgeworICAgIG1pbi13aWR0aDogMTc1cHggIWltcG9ydGFudDsKKyAgICB3aWR0aDog
MTc1cHggIWltcG9ydGFudDsKK30KKworLyogRGVmYXVsdCBzdHlsZXMgZm9yIGRhc2hib2FyZHMg
Ki8KKy50b29sYmFyIC5kYXNoYm9hcmQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0
b3A6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7CisgICAg
LXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiAxMHB4OworICAgIC13ZWJraXQtcGFkZGluZy1lbmQ6IDVw
eDsKKyAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNHM7Cit9CisKKy50b29sYmFyIC5kYXNoYm9h
cmQudmlzaWJsZSB7CisgICAgei1pbmRleDogMTsgLyogRXN0YWJsaXNoIGEgc3RhY2tpbmcgY29u
dGV4dC4gKi8KK30KKworLnRvb2xiYXIgLmRhc2hib2FyZDpub3QoLnZpc2libGUpIHsKKyAgICBk
aXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuc2xpZGUt
b3V0LXVwIHsKKyAgICBhbmltYXRpb24tbmFtZTogc2xpZGUtdG9wLWVkZ2U7CisgICAgYW5pbWF0
aW9uLWRpcmVjdGlvbjogcmV2ZXJzZTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1v
dXQtZG93biB7CisgICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlLWJvdHRvbS1lZGdlOworfQorCisu
dG9vbGJhciAuZGFzaGJvYXJkLnNsaWRlLWluLXVwIHsKKyAgICBhbmltYXRpb24tbmFtZTogc2xp
ZGUtYm90dG9tLWVkZ2U7CisgICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogcmV2ZXJzZTsKK30KKwor
LnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1pbi1kb3duIHsKKyAgICBhbmltYXRpb24tbmFtZTog
c2xpZGUtdG9wLWVkZ2U7Cit9CisKK0BrZXlmcmFtZXMgc2xpZGUtdG9wLWVkZ2UgeworICAgIGZy
b20geworICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpOworICAgIH0KKyAgICB0
byB7CisgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKKyAgICB9Cit9CisKK0BrZXlm
cmFtZXMgc2xpZGUtYm90dG9tLWVkZ2UgeworICAgIGZyb20geworICAgICAgICB0cmFuc2Zvcm06
IHRyYW5zbGF0ZVkoMCk7CisgICAgfQorICAgIHRvIHsKKyAgICAgICAgdHJhbnNmb3JtOiB0cmFu
c2xhdGVZKDMwcHgpOworICAgIH0KK30KKworLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2Ut
YXJyb3cgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB3aWR0aDogMTlweDsKKyAgICB0
b3A6IDA7CisgICAgYm90dG9tOiAwOworICAgIHBhZGRpbmc6IDRweCAwOworICAgIG9wYWNpdHk6
IDAuNjsKKworICAgIHotaW5kZXg6IDI7CisgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVh
dDsKKyAgICBiYWNrZ3JvdW5kLXNpemU6IDhweDsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwo
Li4vSW1hZ2VzL1VwRG93bkFycm93cy5zdmcpOworCisgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTog
b3BhY2l0eTsKKyAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzOworICAgIGJhY2tncm91bmQt
Y2xpcDogY29udGVudC1ib3g7CisKKyAgICAtLWRhc2hib2FyZC1hZHZhbmNlLWFycm93LW9mZnNl
dC1lbmQ6IDBweDsKK30KKworYm9keVtkaXI9bHRyXSAuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2
YW5jZS1hcnJvdyB7CisgICAgcmlnaHQ6IHZhcigtLWRhc2hib2FyZC1hZHZhbmNlLWFycm93LW9m
ZnNldC1lbmQpOworfQorCitib2R5W2Rpcj1ydGxdIC5kYXNoYm9hcmQtY29udGFpbmVyIC5hZHZh
bmNlLWFycm93IHsKKyAgICBsZWZ0OiB2YXIoLS1kYXNoYm9hcmQtYWR2YW5jZS1hcnJvdy1vZmZz
ZXQtZW5kKTsKK30KKworLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3c6aG92ZXIg
eworICAgIG9wYWNpdHk6IDAuODsKK30KKworLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2Ut
YXJyb3c6YWN0aXZlIHsKKyAgICBvcGFjaXR5OiAxOworfQorCisuZGFzaGJvYXJkLWNvbnRhaW5l
ciAuYWR2YW5jZS1hcnJvdy5pbmFjdGl2ZSB7CisgICAgb3BhY2l0eTogMDsKKyAgICBwb2ludGVy
LWV2ZW50czogbm9uZTsKK30KKworLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3cu
YWR2YW5jZS1mb3J3YXJkIHsKKyAgICB0b3A6IDA7CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbjog
NTAlIDRweDsKK30KKworLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3cuYWR2YW5j
ZS1iYWNrd2FyZCB7CisgICAgYm90dG9tOiAwOworICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUw
JSAtNHB4OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzk3MzA3MDFjNmNhNDkwY2Q1MzEwNGI1YjJmYzM0ODFhODliMjA4NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2Fy
ZENvbnRhaW5lclZpZXcuanMKQEAgLTAsMCArMSwyODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJ
LkRhc2hib2FyZENvbnRhaW5lclZpZXcgPSBjbGFzcyBEYXNoYm9hcmRDb250YWluZXJWaWV3IGV4
dGVuZHMgV0kuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKKworICAgICAgICB0aGlzLl90b29sYmFySXRlbSA9IG5ldyBXSS5OYXZpZ2F0aW9uSXRl
bSgiZGFzaGJvYXJkLWNvbnRhaW5lciIsICJncm91cCIsIFdJLlVJU3RyaW5nKCJBY3Rpdml0eSBW
aWV3ZXIiKSk7CisKKyAgICAgICAgdGhpcy5fYWR2YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQgPSB0
aGlzLl90b29sYmFySXRlbS5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpKTsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQuY2xh
c3NOYW1lID0gImFkdmFuY2UtYXJyb3cgYWR2YW5jZS1mb3J3YXJkIjsKKyAgICAgICAgdGhpcy5f
YWR2YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50ID0gdGhpcy5fdG9vbGJhckl0ZW0uZWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAgIHRoaXMu
X2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVudC5jbGFzc05hbWUgPSAiYWR2YW5jZS1hcnJvdyBh
ZHZhbmNlLWJhY2t3YXJkIjsKKworICAgICAgICB0aGlzLl9hZHZhbmNlRm9yd2FyZEFycm93RWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2FkdmFuY2VGb3J3YXJkQXJyb3dD
bGlja2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0Vs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJv
d0NsaWNrZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgLy8gUmVwcmVzZW50cyBjdXJyZW50bHkg
b3BlbiBkYXNoYm9hcmRzLCB3aXRoIHRoZSBtb3N0IHJlY2VudCBlbnRyaWVzIGFwcGVuZGVkIHRv
IHRoZSBlbmQuCisgICAgICAgIHRoaXMuX2Rhc2hib2FyZFN0YWNrID0gW107CisgICAgICAgIHRo
aXMuX2N1cnJlbnRJbmRleCA9IC0xOworCisgICAgICAgIHRoaXMuX3VwZGF0ZUFkdmFuY2VBcnJv
d1Zpc2liaWxpdHkoKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCB0b29sYmFy
SXRlbSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW07CisgICAgfQor
CisgICAgZ2V0IGN1cnJlbnREYXNoYm9hcmRWaWV3KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9jdXJyZW50SW5kZXggPT09IC0xKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZFN0YWNrW3RoaXMuX2N1cnJlbnRJbmRleF07CisgICAg
fQorCisgICAgc2hvd0Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRl
ZE9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciBkYXNoYm9hcmRWaWV3ID0gdGhpcy5fZGFzaGJv
YXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAg
aWYgKCFkYXNoYm9hcmRWaWV3KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAg
aWYgKHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcgPT09IGRhc2hib2FyZFZpZXcpCisgICAgICAg
ICAgICByZXR1cm4gZGFzaGJvYXJkVmlldzsKKworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9k
YXNoYm9hcmRTdGFjay5pbmRleE9mKGRhc2hib2FyZFZpZXcpOworICAgICAgICB0aGlzLl9zaG93
RGFzaGJvYXJkQXRJbmRleChpbmRleCk7CisgICAgICAgIHJldHVybiBkYXNoYm9hcmRWaWV3Owor
ICAgIH0KKworICAgIGhpZGVEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICB2YXIgb25seVJldHVybkV4aXN0aW5nVmlld3Mg
PSB0cnVlOworICAgICAgICB2YXIgZGFzaGJvYXJkVmlldyA9IHRoaXMuX2Rhc2hib2FyZFZpZXdG
b3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seVJldHVybkV4aXN0aW5n
Vmlld3MpOworCisgICAgICAgIGlmICh0aGlzLmN1cnJlbnREYXNoYm9hcmRWaWV3ICE9PSBkYXNo
Ym9hcmRWaWV3KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX2N1cnJlbnRJbmRleCA+IDApOworICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkQXRJ
bmRleCh0aGlzLl9jdXJyZW50SW5kZXggLSAxKTsKKyAgICB9CisKKyAgICBjbG9zZURhc2hib2Fy
ZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAg
ICAgIHZhciBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyA9IHRydWU7CisgICAgICAgIHZhciBkYXNo
Ym9hcmRWaWV3ID0gdGhpcy5fZGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJl
c2VudGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyk7CisgICAgICAgIGlmICghZGFz
aGJvYXJkVmlldykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9jbG9zZURh
c2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldyk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisg
ICAgX2FkdmFuY2VGb3J3YXJkQXJyb3dDbGlja2VkKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3No
b3dEYXNoYm9hcmRBdEluZGV4KHRoaXMuX2N1cnJlbnRJbmRleCArIDEpOworICAgIH0KKworICAg
IF9hZHZhbmNlQmFja3dhcmRBcnJvd0NsaWNrZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hv
d0Rhc2hib2FyZEF0SW5kZXgodGhpcy5fY3VycmVudEluZGV4IC0gMSk7CisgICAgfQorCisgICAg
X2Rpc21pc3NBZHZhbmNlQXJyb3dzKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2FkdmFuY2VGb3J3
YXJkQXJyb3dFbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5J
bmFjdGl2ZVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJy
b3dFbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5JbmFjdGl2
ZVN0eWxlQ2xhc3NOYW1lKTsKKyAgICB9CisKKyAgICBfdXBkYXRlQWR2YW5jZUFycm93VmlzaWJp
bGl0eSgpCisgICAgeworICAgICAgICB2YXIgY2FuQWR2YW5jZUZvcndhcmQgPSB0aGlzLl9jdXJy
ZW50SW5kZXggPCB0aGlzLl9kYXNoYm9hcmRTdGFjay5sZW5ndGggLSAxOworICAgICAgICB2YXIg
Y2FuQWR2YW5jZUJhY2t3YXJkID0gdGhpcy5fY3VycmVudEluZGV4ID4gMDsKKyAgICAgICAgdGhp
cy5fYWR2YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXSS5EYXNoYm9h
cmRDb250YWluZXJWaWV3LkluYWN0aXZlU3R5bGVDbGFzc05hbWUsICFjYW5BZHZhbmNlRm9yd2Fy
ZCk7CisgICAgICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVudC5jbGFzc0xpc3Qu
dG9nZ2xlKFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSwg
IWNhbkFkdmFuY2VCYWNrd2FyZCk7CisgICAgfQorCisgICAgX2Rhc2hib2FyZFZpZXdGb3JSZXBy
ZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seVJldHVybkV4aXN0aW5nVmlld3Mp
CisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CisKKyAg
ICAgICAgLy8gSXRlcmF0ZSBvdmVyIGFsbCBrbm93biBkYXNoYm9hcmQgdmlld3MgYW5kIHNlZSBp
ZiBhbnkgYXJlIGZvciB0aGlzIG9iamVjdC4KKyAgICAgICAgZm9yICh2YXIgZGFzaGJvYXJkVmll
dyBvZiB0aGlzLl9kYXNoYm9hcmRTdGFjaykgeworICAgICAgICAgICAgaWYgKGRhc2hib2FyZFZp
ZXcucmVwcmVzZW50ZWRPYmplY3QgPT09IHJlcHJlc2VudGVkT2JqZWN0KQorICAgICAgICAgICAg
ICAgIHJldHVybiBkYXNoYm9hcmRWaWV3OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9ubHlS
ZXR1cm5FeGlzdGluZ1ZpZXdzKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAg
Ly8gTm8gZXhpc3RpbmcgY29udGVudCB2aWV3IGZvdW5kLCBtYWtlIGEgbmV3IG9uZS4KKyAgICAg
ICAgZGFzaGJvYXJkVmlldyA9IFdJLkRhc2hib2FyZFZpZXcuY3JlYXRlKHJlcHJlc2VudGVkT2Jq
ZWN0KTsKKworICAgICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9hcmRWaWV3LCAiVW5rbm93biBy
ZXByZXNlbnRlZE9iamVjdCIsIHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAgaWYgKCFkYXNo
Ym9hcmRWaWV3KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdGhpcy5fZGFz
aGJvYXJkU3RhY2sucHVzaChkYXNoYm9hcmRWaWV3KTsKKyAgICAgICAgdGhpcy5fdG9vbGJhckl0
ZW0uZWxlbWVudC5hcHBlbmRDaGlsZChkYXNoYm9hcmRWaWV3LmVsZW1lbnQpOworCisgICAgICAg
IHJldHVybiBkYXNoYm9hcmRWaWV3OworICAgIH0KKworICAgIF9zaG93RGFzaGJvYXJkQXRJbmRl
eChpbmRleCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5k
ZXggPD0gdGhpcy5fZGFzaGJvYXJkU3RhY2subGVuZ3RoIC0gMSk7CisKKyAgICAgICAgaWYgKHRo
aXMuX2N1cnJlbnRJbmRleCA9PT0gaW5kZXgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdmFyIGFkdmFuY2VEaXJlY3Rpb24gPSBudWxsOworICAgICAgICBpZiAodGhpcy5fY3VycmVu
dEluZGV4IDwgaW5kZXgpCisgICAgICAgICAgICBhZHZhbmNlRGlyZWN0aW9uID0gV0kuRGFzaGJv
YXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0aW9uLkZvcndhcmQ7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGFkdmFuY2VEaXJlY3Rpb24gPSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3
LkFkdmFuY2VEaXJlY3Rpb24uQmFja3dhcmQ7CisgICAgICAgIHZhciBpbml0aWFsRGlyZWN0aW9u
ID0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0aW9uLk5vbmU7CisgICAg
ICAgIHZhciBpc0luaXRpYWxEYXNoYm9hcmQgPSB0aGlzLl9jdXJyZW50SW5kZXggPT09IC0xOwor
ICAgICAgICBpZiAoIWlzSW5pdGlhbERhc2hib2FyZCkKKyAgICAgICAgICAgIHRoaXMuX2hpZGVE
YXNoYm9hcmRWaWV3KHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcsIGFkdmFuY2VEaXJlY3Rpb24p
OworCisgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IGluZGV4OworICAgICAgICB0aGlzLl9z
aG93RGFzaGJvYXJkVmlldyh0aGlzLmN1cnJlbnREYXNoYm9hcmRWaWV3LCBpc0luaXRpYWxEYXNo
Ym9hcmQgPyBpbml0aWFsRGlyZWN0aW9uIDogYWR2YW5jZURpcmVjdGlvbik7CisgICAgfQorCisg
ICAgX3Nob3dEYXNoYm9hcmRWaWV3KGRhc2hib2FyZFZpZXcsIGFkdmFuY2VEaXJlY3Rpb24pCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9hcmRWaWV3IGluc3RhbmNlb2YgV0ku
RGFzaGJvYXJkVmlldyk7CisKKyAgICAgICAgZGFzaGJvYXJkVmlldy5zaG93bigpOworICAgICAg
ICB0aGlzLl9kaXNtaXNzQWR2YW5jZUFycm93cygpOworCisgICAgICAgIHZhciBhbmltYXRpb25D
bGFzcyA9IG51bGw7CisgICAgICAgIGlmIChhZHZhbmNlRGlyZWN0aW9uID09PSBXSS5EYXNoYm9h
cmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24uRm9yd2FyZCkKKyAgICAgICAgICAgIGFu
aW1hdGlvbkNsYXNzID0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5Gb3J3YXJkSW5jb21pbmdE
YXNoYm9hcmRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgaWYgKGFkdmFuY2VEaXJlY3Rpb24gPT09
IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVjdGlvbi5CYWNrd2FyZCkKKyAg
ICAgICAgICAgIGFuaW1hdGlvbkNsYXNzID0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5CYWNr
d2FyZEluY29taW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWU7CisKKyAgICAgICAgdmFyIGNvbnRh
aW5lciA9IHRoaXM7CisgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuVmlzaWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1l
KTsKKworICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25FbmRlZChldmVudCkgeworICAgICAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZGFzaGJvYXJkVmlldy5lbGVtZW50KQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LnJlbW92
ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsIGFuaW1hdGlvbkVuZGVkKTsKKyAgICAgICAg
ICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGFuaW1hdGlvbkNsYXNz
KTsKKyAgICAgICAgICAgIGNvbnRhaW5lci5fdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFuaW1hdGlvbkNsYXNzKSB7CisgICAgICAgICAg
ICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChhbmltYXRpb25DbGFzcyk7Cisg
ICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0
aW9uZW5kIiwgYW5pbWF0aW9uRW5kZWQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRh
c2hib2FyZFZpZXc7CisgICAgfQorCisgICAgX2hpZGVEYXNoYm9hcmRWaWV3KGRhc2hib2FyZFZp
ZXcsIGFkdmFuY2VEaXJlY3Rpb24sIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoZGFzaGJvYXJkVmlldyBpbnN0YW5jZW9mIFdJLkRhc2hib2FyZFZpZXcpOworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLmN1cnJlbnREYXNoYm9hcmRWaWV3ID09PSBkYXNoYm9hcmRW
aWV3KTsKKworICAgICAgICBkYXNoYm9hcmRWaWV3LmhpZGRlbigpOworICAgICAgICB0aGlzLl9k
aXNtaXNzQWR2YW5jZUFycm93cygpOworCisgICAgICAgIHZhciBhbmltYXRpb25DbGFzcyA9IG51
bGw7CisgICAgICAgIGlmIChhZHZhbmNlRGlyZWN0aW9uID09PSBXSS5EYXNoYm9hcmRDb250YWlu
ZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24uRm9yd2FyZCkKKyAgICAgICAgICAgIGFuaW1hdGlvbkNs
YXNzID0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5Gb3J3YXJkT3V0Z29pbmdEYXNoYm9hcmRT
dHlsZUNsYXNzTmFtZTsKKyAgICAgICAgaWYgKGFkdmFuY2VEaXJlY3Rpb24gPT09IFdJLkRhc2hi
b2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVjdGlvbi5CYWNrd2FyZCkKKyAgICAgICAgICAg
IGFuaW1hdGlvbkNsYXNzID0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5CYWNrd2FyZE91dGdv
aW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWU7CisKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IHRo
aXM7CisKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZlbnQpIHsKKyAgICAgICAg
ICAgIGlmIChldmVudC50YXJnZXQgIT09IGRhc2hib2FyZFZpZXcuZWxlbWVudCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5yZW1v
dmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLCBhbmltYXRpb25FbmRlZCk7CisgICAgICAg
ICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShhbmltYXRpb25DbGFz
cyk7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShX
SS5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZpc2libGVEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSk7
CisgICAgICAgICAgICBjb250YWluZXIuX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsK
KworICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFuaW1hdGlv
bkNsYXNzKSB7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChhbmltYXRpb25DbGFzcyk7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIiwgYW5pbWF0aW9uRW5kZWQpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuVmlzaWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1l
KTsKKyAgICB9CisKKyAgICBfY2xvc2VEYXNoYm9hcmRWaWV3KGRhc2hib2FyZFZpZXcpCisgICAg
eworICAgICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9hcmRWaWV3IGluc3RhbmNlb2YgV0kuRGFz
aGJvYXJkVmlldyk7CisKKyAgICAgICAgZnVuY3Rpb24gZGlzc29jaWF0ZURhc2hib2FyZFZpZXco
KSB7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmNsb3NlZCgpOworICAgICAgICAgICAgZGFz
aGJvYXJkVmlldy5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZGFzaGJvYXJkVmlldy5l
bGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2Rhc2hib2Fy
ZFN0YWNrLmluZGV4T2YoZGFzaGJvYXJkVmlldyk7CisKKyAgICAgICAgaWYgKHRoaXMuY3VycmVu
dERhc2hib2FyZFZpZXcgPT09IGRhc2hib2FyZFZpZXcpIHsKKyAgICAgICAgICAgIHZhciBkaXJl
Y3Rpb24gPSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24uQmFja3dh
cmQ7CisgICAgICAgICAgICB0aGlzLl9oaWRlRGFzaGJvYXJkVmlldyh0aGlzLmN1cnJlbnREYXNo
Ym9hcmRWaWV3LCBkaXJlY3Rpb24sIGRpc3NvY2lhdGVEYXNoYm9hcmRWaWV3KTsKKyAgICAgICAg
ICAgIHRoaXMuX2Rhc2hib2FyZFN0YWNrLnNwbGljZShpbmRleCwgMSk7CisgICAgICAgICAgICAt
LXRoaXMuX2N1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRWaWV3
KHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcsIGRpcmVjdGlvbik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9kYXNoYm9hcmRTdGFjay5zcGxpY2UoaW5k
ZXgsIDEpOworICAgICAgICBpZiAodGhpcy5fY3VycmVudEluZGV4ID4gaW5kZXgpCisgICAgICAg
ICAgICAtLXRoaXMuX2N1cnJlbnRJbmRleDsKKyAgICAgICAgZGlzc29jaWF0ZURhc2hib2FyZFZp
ZXcuY2FsbCh0aGlzKTsKKworICAgICAgICB0aGlzLl91cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmls
aXR5KCk7CisgICAgfQorfTsKKworV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5WaXNpYmxlRGFz
aGJvYXJkU3R5bGVDbGFzc05hbWUgPSAidmlzaWJsZSI7CitXSS5EYXNoYm9hcmRDb250YWluZXJW
aWV3LkluYWN0aXZlU3R5bGVDbGFzc05hbWUgPSAiaW5hY3RpdmUiOworCitXSS5EYXNoYm9hcmRD
b250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24gPSB7CisgICAgRm9yd2FyZDogU3ltYm9sKCJk
YXNoYm9hcmQtY29udGFpbmVyLXZpZXctYWR2YW5jZS1kaXJlY3Rpb24tZm9yd2FyZCIpLAorICAg
IEJhY2t3YXJkOiBTeW1ib2woImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVj
dGlvbi1iYWNrd2FyZCIpLAorICAgIE5vbmU6IFN5bWJvbCgiZGFzaGJvYXJkLWNvbnRhaW5lci12
aWV3LWFkdmFuY2UtZGlyZWN0aW9uLW5vbmUiKQorfTsKKworV0kuRGFzaGJvYXJkQ29udGFpbmVy
Vmlldy5Gb3J3YXJkSW5jb21pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSA9ICJzbGlkZS1pbi1k
b3duIjsKK1dJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQmFja3dhcmRJbmNvbWluZ0Rhc2hib2Fy
ZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLWluLXVwIjsKK1dJLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuRm9yd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtb3V0LWRv
d24iOworV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5CYWNrd2FyZE91dGdvaW5nRGFzaGJvYXJk
U3R5bGVDbGFzc05hbWUgPSAic2xpZGUtb3V0LXVwIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBmNDVjYmEyY2MzYWZjMDc0YmZiZTY2NGMyOTU0ZWU2NWQ1ZTJiYjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNo
Ym9hcmRWaWV3LmpzCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkRhc2hi
b2FyZFZpZXcgPSBjbGFzcyBEYXNoYm9hcmRWaWV3IGV4dGVuZHMgV0kuT2JqZWN0Cit7CisgICAg
Y29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QsIGlkZW50aWZpZXIpCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsKKworICAgICAgICBzdXBlcigpOworCisgICAg
ICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3Q7CisKKyAgICAg
ICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRhc2hib2FyZCIpOworICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoaWRlbnRpZmllcik7CisgICAgfQorCisgICAgLy8gU3Rh
dGljCisKKyAgICBzdGF0aWMgY3JlYXRlKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QpOworCisgICAgICAgIGlmIChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkRlZmF1bHREYXNoYm9hcmQpCisgICAgICAgICAg
ICByZXR1cm4gbmV3IFdJLkRlZmF1bHREYXNoYm9hcmRWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsK
KworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5EZWJ1Z2dlckRh
c2hib2FyZCkKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuRGVidWdnZXJEYXNoYm9hcmRWaWV3
KHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICB0aHJvdyAiQ2FuJ3QgbWFrZSBhIERhc2hi
b2FyZFZpZXcgZm9yIGFuIHVua25vd24gcmVwcmVzZW50ZWRPYmplY3QuIjsKKyAgICB9CisKKyAg
ICAvLyBQdWJsaWMKKworICAgIGdldCBlbGVtZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50OworICAgIH0KKworICAgIGdldCByZXByZXNlbnRlZE9iamVjdCgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fcmVwcmVzZW50ZWRPYmplY3Q7CisgICAgfQorCisgICAg
c2hvd24oKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAg
ICB9CisKKyAgICBoaWRkZW4oKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3Vi
Y2xhc3Nlcy4KKyAgICB9CisKKyAgICBjbG9zZWQoKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmNzcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJv
YXJkVmlldy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y3YTY4YTA2NGVkMWNmZjY4NDlkZWNkNmJjMWIwMmYx
NDEyNDg1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5jc3MKQEAgLTAsMCArMSwxOTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVidWdnZXIgeworICAgIGRp
c3BsYXk6IGZsZXg7CisgICAgZmxleC13cmFwOiBub3dyYXA7CisgICAganVzdGlmeS1jb250ZW50
OiBjZW50ZXI7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICAtd2Via2l0LXBhZGRpbmct
c3RhcnQ6IDVweDsKKyAgICAtd2Via2l0LXBhZGRpbmctZW5kOiAxMnB4OworICAgIHRleHQtYWxp
Z246IGNlbnRlcjsKKyAgICBjb2xvcjogaHNsKDAsIDAlLCAyMyUpOworfQorCisuZGFzaGJvYXJk
LmRlYnVnZ2VyID4gLm1lc3NhZ2UgeworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisuZGFz
aGJvYXJkLmRlYnVnZ2VyIC5uYXZpZ2F0aW9uLWJhciB7CisgICAgLXdlYmtpdC1tYXJnaW4tZW5k
OiA0cHg7CisgICAgYm9yZGVyOiAwOworfQorCisudG9vbGJhcjpub3QoLnNtYWxsLXNpemUpIC5k
YXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24tYmFyIHsKKyAgICBtYXJnaW4tdG9wOiAxcHg7
Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbiB7
CisgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKKyAgICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6
IDE2cHg7CisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIHBhZGRpbmc6IDA7CisgICAgYm9yZGVy
OiBub25lICFpbXBvcnRhbnQ7CisgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50
OworICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKK30KKworLmRhc2hib2FyZC5kZWJ1
Z2dlciAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uID4gLmdseXBoIHsKKyAgICB3aWR0aDog
MTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgYW5pbWF0aW9uLW5hbWU6IHB1bHNlLXBhdXNl
LWJ1dHRvbjsKKyAgICBhbmltYXRpb24tZHVyYXRpb246IDFzOworICAgIGFuaW1hdGlvbi10aW1p
bmctZnVuY3Rpb246IGVhc2Utb3V0OworICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGlu
ZmluaXRlOworICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IGFsdGVybmF0ZTsKKyAgICBjb2xvcjog
aHNsKDIwNywgNDYlLCA1OSUpOworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAuZGFzaGJvYXJk
LmRlYnVnZ2VyIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24gPiAuZ2x5cGggeworICAgIGFu
aW1hdGlvbi1uYW1lOiBub25lOworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyIC5uYXZpZ2F0aW9u
LWJhciAuaXRlbS5kZWJ1Z2dlci1kYXNoYm9hcmQtcGF1c2UuYWN0aXZhdGVkIHsKKyAgICBmaWxs
OiBub25lOworICAgIHN0cm9rZTogdmFyKC0tZ2x5cGgtY29sb3ItYWN0aXZlKTsKK30KKworQGtl
eWZyYW1lcyBwdWxzZS1wYXVzZS1idXR0b24geworICAgIGZyb20geyBvcGFjaXR5OiAwLjc7IHRy
YW5zZm9ybTogc2NhbGUoMSk7IH0KKyAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogc2Nh
bGUoMS4xKTsgfQorfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmRpdmlkZXIgeworICAgIHdp
ZHRoOiAxcHg7CisgICAgaGVpZ2h0OiAxMDAlOworCisgICAgbWFyZ2luOiAwIDEwcHg7CisKKyAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoaHNsKDAsIDAlLCA3NCUpLCBoc2wo
MCwgMCUsIDc0JSkpOworICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSA2NiU7CisgICAgYmFja2dy
b3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7
Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiBkaXYgeworICAgIGRpc3BsYXk6IGZsZXg7Cisg
ICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICBmbGV4OiBub25lOworfQorCisuZGFzaGJvYXJk
LmRlYnVnZ2VyID4gLmxvY2F0aW9uIHsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGZsZXg6
IGluaXRpYWw7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gPiAqIHsKKyAg
ICBmbGV4OiBub25lOworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uID4gOmZp
cnN0LWNoaWxkIHsKKyAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CisgICAgd2lkdGg6IDE2cHg7Cisg
ICAgaGVpZ2h0OiAxNnB4OworfQorCisvKiBBZGQgc3BhY2luZyBiZXR3ZWVuIHRoZSBlbGxpcHNp
cydkIGxvY2F0aW9uIGFuZCB0aGUgdXAvZG93biBhcnJvd3MuICovCisuZGFzaGJvYXJkLmRlYnVn
Z2VyID4gLmxvY2F0aW9uID4gOmxhc3QtY2hpbGQgeworICAgIC13ZWJraXQtbWFyZ2luLWVuZDog
NXB4OworfQorCisudG9vbGJhcjpub3QoLnNtYWxsLXNpemUpIC5kYXNoYm9hcmQuZGVidWdnZXIg
PiAubG9jYXRpb24gOm5vdCg6Zmlyc3QtY2hpbGQpIHsKKyAgICBtYXJnaW4tdG9wOiAxcHg7Cit9
CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gaW1nLmljb24geworICAgIHdpZHRo
OiAxNnB4OworICAgIGhlaWdodDogMTZweDsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5s
b2NhdGlvbiA6bWF0Y2hlcyguZnVuY3Rpb24taWNvbiwgLmV2ZW50LWxpc3RlbmVyLWljb24pIHsK
KyAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDVweDsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciA+
IC5sb2NhdGlvbiAuZnVuY3Rpb24tbmFtZSB7CisgICAgY29sb3I6IGhzbCgwLCAwJSwgMTElKTsK
KyAgICBwYWRkaW5nLWJvdHRvbTogMXB4OworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxv
Y2F0aW9uIC5mdW5jdGlvbi1uYW1lOjphZnRlciB7CisgICAgY29udGVudDogIlwwMEEwXDIwMTRc
MDBBMCI7IC8qICZuYnNwOyZtZGFzaDsmbmJzcDsgKi87Cit9CisKKy5kYXNoYm9hcmQuZGVidWdn
ZXIgPiAubG9jYXRpb24gLmdvLXRvLWxpbmsgeworICAgIHBhZGRpbmctYm90dG9tOiAxcHg7Cisg
ICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6IGhzbCgwLCAwJSwgNjYlKTsKKworICAg
IGZsZXg6IGluaXRpYWw7CisgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CisgICAgb3ZlcmZs
b3c6IGhpZGRlbjsKK30KKworLnRvb2xiYXIuY29sbGFwc2VkIC5kYXNoYm9hcmQuZGVidWdnZXIg
PiA6bm90KC5tZXNzYWdlLCAubmF2aWdhdGlvbi1iYXIpIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCisudG9vbGJhci5zbWFsbC1zaXplIC5kYXNoYm9hcmQuZGVidWdnZXIgPiAubWVzc2FnZSB7
CisgICAgZm9udC1zaXplOiAxMHB4OworfQorCisudG9vbGJhci5zbWFsbC1zaXplIC5kYXNoYm9h
cmQuZGVidWdnZXIgPiAubG9jYXRpb24gaW1nLmljb24sCisudG9vbGJhci5zbWFsbC1zaXplIC5k
YXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gPiA6Zmlyc3QtY2hpbGQgeworICAgIHdpZHRo
OiAxNHB4OworICAgIGhlaWdodDogMTRweDsKK30KKworQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNj
aGVtZTogZGFyaykgeworICAgIC50b29sYmFyIC5kYXNoYm9hcmQuZGVidWdnZXIgeworICAgICAg
ICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CisgICAgfQorCisgICAgLmRhc2hib2FyZC5kZWJ1
Z2dlciAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uID4gLmdseXBoIHsKKyAgICAgICAgY29s
b3I6IHZhcigtLWdseXBoLWNvbG9yLWFjdGl2ZSk7CisgICAgfQorCisgICAgLmRhc2hib2FyZC5k
ZWJ1Z2dlciA+IC5sb2NhdGlvbiAuZnVuY3Rpb24tbmFtZSB7CisgICAgICAgIGNvbG9yOiB2YXIo
LS10ZXh0LWNvbG9yLWFjdGl2ZSk7CisgICAgfQorCisgICAgLmRhc2hib2FyZC5kZWJ1Z2dlciA+
IC5sb2NhdGlvbiAuZ28tdG8tbGluayB7CisgICAgICAgIHBhZGRpbmctYm90dG9tOiAxcHg7Cisg
ICAgICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLXNl
Y29uZGFyeSk7CisgICAgfQorCisgICAgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5kaXZpZGVyIHsK
KyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXRleHQtY29s
b3ItdGVydGlhcnkpLCB2YXIoLS10ZXh0LWNvbG9yLXRlcnRpYXJ5KSk7CisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdn
ZXJEYXNoYm9hcmRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxMDMyNjc3OWRmMzQz
ZTE4NWJkY2NkY2M2Y2UzNjI3NGU3MmEwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanMK
QEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkRlYnVnZ2VyRGFzaGJvYXJk
VmlldyA9IGNsYXNzIERlYnVnZ2VyRGFzaGJvYXJkVmlldyBleHRlbmRzIFdJLkRhc2hib2FyZFZp
ZXcKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAg
IHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0LCAiZGVidWdnZXIiKTsKKworICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0
aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9yZWJ1aWxkTG9jYXRpb24sIHRoaXMpOworCisg
ICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV0kuTmF2aWdhdGlvbkJhcjsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7
CisKKyAgICAgICAgdmFyIHRvb2x0aXAgPSBXSS5VSVN0cmluZygiQ29udGludWUgc2NyaXB0IGV4
ZWN1dGlvbiAoJXMgb3IgJXMpIikuZm9ybWF0KFdJLnBhdXNlT3JSZXN1bWVLZXlib2FyZFNob3J0
Y3V0LmRpc3BsYXlOYW1lLCBXSS5wYXVzZU9yUmVzdW1lQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1
dC5kaXNwbGF5TmFtZSk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyUmVzdW1lQnV0dG9uSXRlbSA9
IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkZWJ1Z2dlci1kYXNoYm9hcmQt
cGF1c2UiLCB0b29sdGlwLCB0b29sdGlwLCAiSW1hZ2VzL1Jlc3VtZS5zdmciLCAxNSwgMTUpOwor
ICAgICAgICB0aGlzLl9kZWJ1Z2dlclJlc3VtZUJ1dHRvbkl0ZW0uYWN0aXZhdGVkID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5fZGVidWdnZXJSZXN1bWVCdXR0b25JdGVtLmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fcmVzdW1lQnV0dG9u
Q2xpY2tlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlv
bkl0ZW0odGhpcy5fZGVidWdnZXJSZXN1bWVCdXR0b25JdGVtKTsKKworICAgICAgICB2YXIgbWVz
c2FnZSA9IHRoaXMuX21lc3NhZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisgICAgICAgIG1lc3NhZ2UuY2xhc3NMaXN0LmFkZCgibWVzc2FnZSIpOworICAgICAgICBt
ZXNzYWdlLnRpdGxlID0gbWVzc2FnZS50ZXh0Q29udGVudCA9IFdJLlVJU3RyaW5nKCJEZWJ1Z2dl
ciBQYXVzZWQiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2UpOwor
CisgICAgICAgIHZhciBkaXZpZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICBkaXZpZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkaXZpZGVyIik7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkaXZpZGVyRWxlbWVudCk7CisKKyAgICAg
ICAgdmFyIGxvY2F0aW9uRWxlbWVudCA9IHRoaXMuX2xvY2F0aW9uRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBsb2NhdGlvbkVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgibG9jYXRpb24iKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGxvY2F0
aW9uRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fcmVidWlsZExvY2F0aW9uKCk7CisgICAgfQor
CisgICAgLy8gUHVibGljCisKKyAgICBjbG9zZWQoKQorICAgIHsKKyAgICAgICAgV0kuZGVidWdn
ZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisKKyAgICAg
ICAgc3VwZXIuY2xvc2VkKCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3JlYnVp
bGRMb2NhdGlvbigpCisgICAgeworICAgICAgICBpZiAoIVdJLmRlYnVnZ2VyTWFuYWdlci5hY3Rp
dmVDYWxsRnJhbWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fbG9jYXRp
b25FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgdmFyIGNhbGxGcmFtZSA9IFdJ
LmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWU7CisgICAgICAgIHZhciBmdW5jdGlvbk5h
bWUgPSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lIHx8IFdJLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1
bmN0aW9uKSIpOworCisgICAgICAgIHZhciBpY29uQ2xhc3NOYW1lID0gV0kuRGVidWdnZXJEYXNo
Ym9hcmRWaWV3LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lOworCisgICAgICAgIC8vIFRoaXMg
aXMgbW9yZSB0aGFuIGxpa2VseSBhbiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbiB3aXRoIGFuICJv
biIgcHJlZml4IGFuZCBpdCBpcworICAgICAgICAvLyBhcyBsb25nIG9yIGxvbmdlciB0aGFuIHRo
ZSBzaG9ydGVzdCBldmVudCBsaXN0ZW5lciBuYW1lIC0tICJvbmN1dCIuCisgICAgICAgIGlmIChj
YWxsRnJhbWUuZnVuY3Rpb25OYW1lICYmIGNhbGxGcmFtZS5mdW5jdGlvbk5hbWUuc3RhcnRzV2l0
aCgib24iKSAmJiBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lLmxlbmd0aCA+PSA1KQorICAgICAgICAg
ICAgaWNvbkNsYXNzTmFtZSA9IFdJLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5FdmVudExpc3RlbmVy
SWNvblN0eWxlQ2xhc3NOYW1lOworCisgICAgICAgIHZhciBpY29uRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBpY29uRWxlbWVudC5jbGFzc0xpc3QuYWRk
KGljb25DbGFzc05hbWUpOworICAgICAgICB0aGlzLl9sb2NhdGlvbkVsZW1lbnQuYXBwZW5kQ2hp
bGQoaWNvbkVsZW1lbnQpOworCisgICAgICAgIHZhciBpY29uSW1hZ2VFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgIGljb25JbWFnZUVsZW1lbnQuY2xhc3NO
YW1lID0gImljb24iOworICAgICAgICBpY29uRWxlbWVudC5hcHBlbmRDaGlsZChpY29uSW1hZ2VF
bGVtZW50KTsKKworICAgICAgICB2YXIgbmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgbmFtZUVsZW1lbnQuYXBwZW5kKGZ1bmN0aW9uTmFtZSk7Cisg
ICAgICAgIG5hbWVFbGVtZW50LmNsYXNzTGlzdC5hZGQoImZ1bmN0aW9uLW5hbWUiKTsKKyAgICAg
ICAgdGhpcy5fbG9jYXRpb25FbGVtZW50LmFwcGVuZENoaWxkKG5hbWVFbGVtZW50KTsKKworICAg
ICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgZG9udEZsb2F0OiB0cnVlLAorICAg
ICAgICAgICAgaWdub3JlTmV0d29ya1RhYjogdHJ1ZSwKKyAgICAgICAgICAgIGlnbm9yZVNlYXJj
aFRhYjogdHJ1ZSwKKyAgICAgICAgfTsKKyAgICAgICAgbGV0IGxpbmtFbGVtZW50ID0gV0kuY3Jl
YXRlU291cmNlQ29kZUxvY2F0aW9uTGluayhXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZy
YW1lLnNvdXJjZUNvZGVMb2NhdGlvbiwgb3B0aW9ucyk7CisgICAgICAgIHRoaXMuX2xvY2F0aW9u
RWxlbWVudC5hcHBlbmRDaGlsZChsaW5rRWxlbWVudCk7CisgICAgfQorCisgICAgX3Jlc3VtZUJ1
dHRvbkNsaWNrZWQoKQorICAgIHsKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgp
OworICAgIH0KK307CisKK1dJLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5GdW5jdGlvbkljb25TdHls
ZUNsYXNzTmFtZSA9IFdJLkNhbGxGcmFtZVZpZXcuRnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWU7
CitXSS5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFt
ZSA9IFdJLkNhbGxGcmFtZVZpZXcuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1
bHREYXNoYm9hcmRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTk0M2ZlYzhiODg3
NjBmOGYxODNhMjJjMTk1YjlhNzAwMjdlZjMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuY3Nz
CkBAIC0wLDAgKzEsMjExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitib2R5Om1hdGNoZXMoLnBhZ2Us
IC53ZWItcGFnZSkgLnRvb2xiYXIuY29sbGFwc2VkIC5kYXNoYm9hcmQuZGVmYXVsdCA+IDptYXRj
aGVzKC5yZXNvdXJjZXNTaXplLCAudGltZSwgLmxvZ3MpIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCitib2R5Om5vdCgucGFnZSwgLndlYi1wYWdlKSAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1
bHQgPiA6bWF0Y2hlcygucmVzb3VyY2VzQ291bnQsIC5yZXNvdXJjZXNTaXplLCAudGltZSkgewor
ICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCB7Cisg
ICAgZGlzcGxheTogZmxleDsKKyAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7CisgICAganVzdGlm
eS1jb250ZW50OiBjZW50ZXI7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5p
dGVtIHsKKyAgICBsaW5lLWhlaWdodDogMTNweDsKKworICAgIG1hcmdpbjogMXB4IDA7CisgICAg
cGFkZGluZzogMCA1cHg7CisKKyAgICBkaXNwbGF5OiBmbGV4OworCisgICAgbWluLXdpZHRoOiA0
NXB4OworCisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgYWxpZ24taXRlbXM6IGNl
bnRlcjsKKworICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCB0
cmFuc3BhcmVudDsKKworICAgIGZvbnQtZmFtaWx5OiAtd2Via2l0LXN5c3RlbS1mb250LCBzYW5z
LXNlcmlmOworICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7Cit9CisKKy50
b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IDptYXRjaGVzKC50aW1lLCAucmVzb3VyY2VzU2l6
ZSkgeworICAgIG1pbi13aWR0aDogNzBweDsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZh
dWx0ID4gLml0ZW0uZW5hYmxlZDpob3ZlciB7CisgICAgYm9yZGVyOiAxcHggc29saWQgaHNsYSgw
LCAwJSwgMCUsIDAuMSk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVt
LmVuYWJsZWQ6YWN0aXZlIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBoc2xhKDAsIDAlLCAwJSwg
MC4yKTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0gPiAqIHsKKyAg
ICBkaXNwbGF5OiBmbGV4OworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cit9CisKKy50b29sYmFy
IC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtID4gaW1nIHsKKyAgICBvcGFjaXR5OiAwLjI7Cisg
ICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAxNnB4OworICAgIHBvaW50ZXItZXZlbnRzOiBu
b25lOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkID4g
aW1nIHsKKyAgICBvcGFjaXR5OiAwLjU7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVs
dCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIgPiBpbWcgeworICAgIG9wYWNpdHk6IDAuNjU7Cit9CisK
Ky50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtID4gZGl2IHsKKyAgICBkaXNwbGF5
OiBmbGV4OworICAgIGZsZXg6IDE7CisgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiAycHg7Cisg
ICAgY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjIpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJk
LmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkID4gZGl2IHsKKyAgICBjb2xvcjogaHNsYSgwLCAwJSwg
MCUsIDAuNyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJs
ZWQ6aG92ZXIgPiBkaXYgeworICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC44NSk7Cit9CisK
Ky50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5yZXNvdXJjZXNDb3VudCA+IGltZyB7Cisg
ICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9SZXNvdXJjZXMuc3ZnKTsKK30KKworLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWZhdWx0ID4gLnRpbWUgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9J
bWFnZXMvVGltZS5zdmcpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAubG9n
cyA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9Mb2dzLnN2Zyk7Cit9CisKKy50
b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5yZXNvdXJjZXNTaXplID4gaW1nIHsKKyAgICBj
b250ZW50OiB1cmwoLi4vSW1hZ2VzL1dlaWdodC5zdmcpOworfQorCisudG9vbGJhciAuZGFzaGJv
YXJkLmRlZmF1bHQgPiAuZXJyb3JzID4gaW1nIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2Vz
L0Vycm9ycy5zdmcpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3Jz
LmVuYWJsZWQgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvRXJyb3JzRW5hYmxl
ZC5zdmcpOworICAgIG9wYWNpdHk6IDAuOTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZh
dWx0ID4gLmVycm9ycy5lbmFibGVkOmhvdmVyID4gaW1nIHsKKyAgICBvcGFjaXR5OiAxOworfQor
CisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3JzLmVuYWJsZWQgPiBkaXYgewor
ICAgIGNvbG9yOiBoc2xhKDM1OSwgNTclLCA1MCUsIDAuOSk7Cit9CisKKy50b29sYmFyIC5kYXNo
Ym9hcmQuZGVmYXVsdCA+IC5lcnJvcnMuZW5hYmxlZDpob3ZlciA+IGRpdiB7CisgICAgY29sb3I6
IGhzbCgzNTksIDU3JSwgNTAlKTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4g
Lmlzc3VlcyA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9Jc3N1ZXMuc3ZnKTsK
K30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmlzc3Vlcy5lbmFibGVkID4gaW1n
IHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0lzc3Vlc0VuYWJsZWQuc3ZnKTsKKyAgICBv
cGFjaXR5OiAwLjk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1ZXMu
ZW5hYmxlZDpob3ZlciA+IGltZyB7CisgICAgb3BhY2l0eTogMTsKK30KKworLnRvb2xiYXIgLmRh
c2hib2FyZC5kZWZhdWx0ID4gLmlzc3Vlcy5lbmFibGVkID4gZGl2IHsKKyAgICBjb2xvcjogaHNs
YSg0MywgOTYlLCA0NCUsIDAuOSk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+
IC5pc3N1ZXMuZW5hYmxlZDpob3ZlciA+IGRpdiB7CisgICAgY29sb3I6IGhzbCg0MywgOTYlLCA0
NCUpOworfQorCisvKiBTdHlsZXMgZm9yIHRoZSBwdWxzaW5nIGFuaW1hdGVkIHN0YXRlIG9mIGNv
bnNvbGUgaXRlbXMgKi8KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0ucHVs
c2luZyB7CisgICAgYW5pbWF0aW9uLW5hbWU6IGNvbnNvbGUtaXRlbS1wdWxzZTsKKyAgICBhbmlt
YXRpb24tZHVyYXRpb246IDAuNzVzOworfQorCitAa2V5ZnJhbWVzIGNvbnNvbGUtaXRlbS1wdWxz
ZSB7CisgICAgNTAlIHsgb3BhY2l0eTogMC42OyB9Cit9CisKK0BtZWRpYSAocHJlZmVycy1jb2xv
ci1zY2hlbWU6IGRhcmspIHsKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRl
bSA+IGRpdiB7CisgICAgICAgIC8qIEZJWE1FOiBpbnRyb2R1Y2UgYSB2YXJpYWJsZSBmb3Igb3Bh
Y2l0eSBhbmQgdXNlIGl0IGZvciBib3RoIHRleHQgYW5kIGljb25zICovCisgICAgICAgIGNvbG9y
OiBoc2xhKDAsIDEwMCUsIDEwMCUsIDAuMik7CisgICAgfQorCisgICAgLnRvb2xiYXIgLmRhc2hi
b2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZCA+IGRpdiB7CisgICAgICAgIGNvbG9yOiB2YXIo
LS1nbHlwaC1jb2xvcik7CisgICAgfQorCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0
ID4gLml0ZW0uZW5hYmxlZDpob3ZlciB7CisgICAgICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLCAw
JSwgdmFyKC0tZm9yZWdyb3VuZC1saWdodG5lc3MpLCAwLjEpOworICAgIH0KKworICAgIC50b29s
YmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIgPiBkaXYgeworICAg
ICAgICBjb2xvcjogaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjg1KTsKKyAgICB9CisKKyAgICAudG9v
bGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAucmVzb3VyY2VzQ291bnQgPiBpbWcsCisgICAgLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc1NpemUgPiBpbWcsCisgICAgLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnRpbWUgPiBpbWcsCisgICAgLnRvb2xiYXIgLmRh
c2hib2FyZC5kZWZhdWx0ID4gLmxvZ3MgPiBpbWcsCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5k
ZWZhdWx0ID4gLmVycm9yczpub3QoLmVuYWJsZWQpID4gaW1nLAorICAgIC50b29sYmFyIC5kYXNo
Ym9hcmQuZGVmYXVsdCA+IC5pc3N1ZXM6bm90KC5lbmFibGVkKSA+IGltZyB7CisgICAgICAgIGZp
bHRlcjogdmFyKC0tZmlsdGVyLWludmVydCk7CisgICAgfQorCisgICAgLnRvb2xiYXIgLmRhc2hi
b2FyZCAuaXRlbS5idXR0b24sCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZCAuaXRlbS5idXR0b246
YWN0aXZlIHsKKyAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKKyAgICB9CisKKyAgICAuZGFzaGJv
YXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdyB7CisgICAgICAgIGZpbHRlcjogdmFyKC0tZmls
dGVyLWludmVydCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNjI0OTMyODkzMzdkOWI0ZDJiYjU3ODYyMjQ2M2RhODc0NzhiNDVkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGVmYXVsdERhc2hib2FyZFZpZXcuanMKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitXSS5EZWZhdWx0RGFzaGJvYXJkVmlldyA9IGNsYXNzIERlZmF1bHREYXNo
Ym9hcmRWaWV3IGV4dGVuZHMgV0kuRGFzaGJvYXJkVmlldworeworICAgIGNvbnN0cnVjdG9yKHJl
cHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3Qs
ICJkZWZhdWx0Iik7CisKKyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5l
cihXSS5EZWZhdWx0RGFzaGJvYXJkLkV2ZW50LkRhdGFEaWRDaGFuZ2UsICgpID0+IHsgdGhpcy5f
dXBkYXRlRGlzcGxheVNvb24oKTsgfSk7CisgICAgICAgIHRoaXMuX3NjaGVkdWxlZFVwZGF0ZUlk
ZW50aWZpZXIgPSB1bmRlZmluZWQ7CisKKyAgICAgICAgdGhpcy5faXRlbXMgPSB7CisgICAgICAg
ICAgICByZXNvdXJjZXNDb3VudDogeworICAgICAgICAgICAgICAgIHRvb2x0aXA6IFdJLlVJU3Ry
aW5nKCJTaG93IHBhZ2UgcmVzb3VyY2VzIiksCisgICAgICAgICAgICAgICAgaGFuZGxlcjogdGhp
cy5fcmVzb3VyY2VzSXRlbVdhc0NsaWNrZWQKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBy
ZXNvdXJjZXNTaXplOiB7CisgICAgICAgICAgICAgICAgdG9vbHRpcDogV0kuVUlTdHJpbmcoIlNo
b3cgbmV0d29yayBpbmZvcm1hdGlvbiIpLAorICAgICAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMu
X25ldHdvcmtJdGVtV2FzQ2xpY2tlZAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRpbWU6
IHsKKyAgICAgICAgICAgICAgICB0b29sdGlwOiBXSS5VSVN0cmluZygiU2hvdyBwYWdlIGxvYWQg
dGltaW5nIiksCisgICAgICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fdGltZWxpbmVJdGVtV2Fz
Q2xpY2tlZAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGxvZ3M6IHsKKyAgICAgICAgICAg
ICAgICB0b29sdGlwOiBXSS5VSVN0cmluZygiU2hvdyBtZXNzYWdlcyBsb2dnZWQgdG8gdGhlIENv
bnNvbGUiKSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9jb25zb2xlSXRlbVdhc0Ns
aWNrZWQuYmluZCh0aGlzLCBXSS5Mb2dDb250ZW50Vmlldy5TY29wZXMuTG9ncykKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBlcnJvcnM6IHsKKyAgICAgICAgICAgICAgICB0b29sdGlwOiBX
SS5VSVN0cmluZygiU2hvdyBlcnJvcnMgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIiksCisgICAgICAg
ICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXNDbGlja2VkLmJpbmQodGhpcywg
V0kuTG9nQ29udGVudFZpZXcuU2NvcGVzLkVycm9ycykKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICBpc3N1ZXM6IHsKKyAgICAgICAgICAgICAgICB0b29sdGlwOiBXSS5VSVN0cmluZygiU2hv
dyB3YXJuaW5ncyBsb2dnZWQgdG8gdGhlIENvbnNvbGUiKSwKKyAgICAgICAgICAgICAgICBoYW5k
bGVyOiB0aGlzLl9jb25zb2xlSXRlbVdhc0NsaWNrZWQuYmluZCh0aGlzLCBXSS5Mb2dDb250ZW50
Vmlldy5TY29wZXMuV2FybmluZ3MpCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAg
ICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLl9pdGVtcykKKyAgICAgICAgICAgIHRoaXMuX2FwcGVu
ZEVsZW1lbnRGb3JOYW1lZEl0ZW0obmFtZSk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisg
ICAgX3VwZGF0ZURpc3BsYXlTb29uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zY2hlZHVs
ZWRVcGRhdGVJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu
X3NjaGVkdWxlZFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5f
dXBkYXRlRGlzcGxheS5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICBfdXBkYXRlRGlzcGxheSgp
CisgICAgeworICAgICAgICB0aGlzLl9zY2hlZHVsZWRVcGRhdGVJZGVudGlmaWVyID0gdW5kZWZp
bmVkOworCisgICAgICAgIHZhciBkYXNoYm9hcmQgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Owor
CisgICAgICAgIGZvciAodmFyIGNhdGVnb3J5IG9mIFsibG9ncyIsICJpc3N1ZXMiLCAiZXJyb3Jz
Il0pCisgICAgICAgICAgICB0aGlzLl9zZXRDb25zb2xlSXRlbVZhbHVlKGNhdGVnb3J5LCBkYXNo
Ym9hcmRbY2F0ZWdvcnldKTsKKworICAgICAgICB2YXIgdGltZUl0ZW0gPSB0aGlzLl9pdGVtcy50
aW1lOworICAgICAgICB0aW1lSXRlbS50ZXh0ID0gZGFzaGJvYXJkLnRpbWUgPyBOdW1iZXIuc2Vj
b25kc1RvU3RyaW5nKGRhc2hib2FyZC50aW1lKSA6IGVtRGFzaDsKKyAgICAgICAgdGhpcy5fc2V0
SXRlbUVuYWJsZWQodGltZUl0ZW0sIGRhc2hib2FyZC50aW1lID4gMCk7CisKKyAgICAgICAgdmFy
IGNvdW50SXRlbSA9IHRoaXMuX2l0ZW1zLnJlc291cmNlc0NvdW50OworICAgICAgICBjb3VudEl0
ZW0udGV4dCA9IE51bWJlci5hYmJyZXZpYXRlKGRhc2hib2FyZC5yZXNvdXJjZXNDb3VudCk7Cisg
ICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKGNvdW50SXRlbSwgZGFzaGJvYXJkLnJlc291cmNl
c0NvdW50ID4gMCk7CisKKyAgICAgICAgdmFyIHNpemVJdGVtID0gdGhpcy5faXRlbXMucmVzb3Vy
Y2VzU2l6ZTsKKyAgICAgICAgc2l6ZUl0ZW0udGV4dCA9IGRhc2hib2FyZC5yZXNvdXJjZXNTaXpl
ID8gTnVtYmVyLmJ5dGVzVG9TdHJpbmcoZGFzaGJvYXJkLnJlc291cmNlc1NpemUsIGZhbHNlKSA6
IGVtRGFzaDsKKyAgICAgICAgdGhpcy5fc2V0SXRlbUVuYWJsZWQoc2l6ZUl0ZW0sIGRhc2hib2Fy
ZC5yZXNvdXJjZXNTaXplID4gMCk7CisgICAgfQorCisgICAgX2FwcGVuZEVsZW1lbnRGb3JOYW1l
ZEl0ZW0obmFtZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gdGhpcy5faXRlbXNbbmFtZV07
CisKKyAgICAgICAgaXRlbS5jb250YWluZXIgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICAgICAgaXRlbS5jb250YWluZXIuY2xh
c3NOYW1lID0gIml0ZW0gIiArIG5hbWU7CisKKyAgICAgICAgaXRlbS5jb250YWluZXIuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOworCisgICAgICAgIGl0ZW0ub3V0
bGV0ID0gaXRlbS5jb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpOworCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdGVtLCAidGV4dCIsIHsK
KyAgICAgICAgICAgIHNldDogZnVuY3Rpb24obmV3VGV4dCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBuZXdUZXh0ID0gbmV3VGV4dC50b1N0cmluZygpOworICAgICAgICAgICAgICAg
IGlmIChuZXdUZXh0ID09PSBpdGVtLm91dGxldC50ZXh0Q29udGVudCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGl0ZW0ub3V0bGV0LnRleHRDb250ZW50ID0g
bmV3VGV4dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgaXRlbS5jb250
YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAg
IHRoaXMuX2l0ZW1XYXNDbGlja2VkKG5hbWUpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBf
aXRlbVdhc0NsaWNrZWQobmFtZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gdGhpcy5faXRl
bXNbbmFtZV07CisgICAgICAgIGlmICghaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5z
KFdJLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFzc05hbWUpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChpdGVtLmhhbmRsZXIpCisgICAgICAgICAg
ICBpdGVtLmhhbmRsZXIuY2FsbCh0aGlzKTsKKyAgICB9CisKKyAgICBfcmVzb3VyY2VzSXRlbVdh
c0NsaWNrZWQoKQorICAgIHsKKyAgICAgICAgV0kuc2hvd1NvdXJjZXNUYWIoe2luaXRpYXRvckhp
bnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5EYXNoYm9hcmR9KTsKKyAg
ICB9CisKKyAgICBfbmV0d29ya0l0ZW1XYXNDbGlja2VkKCkKKyAgICB7CisgICAgICAgIFdJLnNo
b3dOZXR3b3JrVGFiKHtpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25J
bml0aWF0b3IuRGFzaGJvYXJkfSk7CisgICAgfQorCisgICAgX3RpbWVsaW5lSXRlbVdhc0NsaWNr
ZWQoKQorICAgIHsKKyAgICAgICAgV0kuc2hvd1RpbWVsaW5lVGFiKHtpbml0aWF0b3JIaW50OiBX
SS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRGFzaGJvYXJkfSk7CisgICAgfQor
CisgICAgX2NvbnNvbGVJdGVtV2FzQ2xpY2tlZChzY29wZSkKKyAgICB7CisgICAgICAgIFdJLnNo
b3dDb25zb2xlVGFiKHNjb3BlLCB7CisgICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJC
cm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRGFzaGJvYXJkLAorICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBfc2V0Q29uc29sZUl0ZW1WYWx1ZShpdGVtTmFtZSwgbmV3VmFsdWUpCisgICAg
eworICAgICAgICB2YXIgaVZhck5hbWUgPSAiXyIgKyBpdGVtTmFtZTsKKyAgICAgICAgdmFyIHBy
ZXZpb3VzVmFsdWUgPSB0aGlzW2lWYXJOYW1lXTsKKyAgICAgICAgdGhpc1tpVmFyTmFtZV0gPSBu
ZXdWYWx1ZTsKKworICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zW2l0ZW1OYW1lXTsKKyAg
ICAgICAgaXRlbS50ZXh0ID0gTnVtYmVyLmFiYnJldmlhdGUobmV3VmFsdWUpOworICAgICAgICB0
aGlzLl9zZXRJdGVtRW5hYmxlZChpdGVtLCBuZXdWYWx1ZSA+IDApOworCisgICAgICAgIGlmIChu
ZXdWYWx1ZSA8PSBwcmV2aW91c1ZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHZhciBjb250YWluZXIgPSBpdGVtLmNvbnRhaW5lcjsKKworICAgICAgICBmdW5jdGlvbiBhbmlt
YXRpb25FbmRlZChldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdl
dCA9PT0gY29udGFpbmVyKSB7CisgICAgICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5y
ZW1vdmUoInB1bHNpbmciKTsKKyAgICAgICAgICAgICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcigiYW5pbWF0aW9uZW5kIiwgYW5pbWF0aW9uRW5kZWQpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgbmVlZCB0byBmb3JjZSBhIHN0eWxlIGludmFsaWRh
dGlvbiBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBhbHJlYWR5CisgICAgICAgIC8vIHdlcmUgYW5pbWF0
aW5nIHRoaXMgaXRlbSBhZnRlciB3ZSd2ZSByZW1vdmVkIHRoZSBwdWxzaW5nIENTUyBjbGFzcy4K
KyAgICAgICAgaWYgKGNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoInB1bHNpbmciKSkgewor
ICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoInB1bHNpbmciKTsKKyAgICAg
ICAgICAgIGNvbnRhaW5lci5yZWNhbGN1bGF0ZVN0eWxlcygpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLCBhbmlt
YXRpb25FbmRlZCk7CisKKyAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInB1bHNpbmci
KTsKKyAgICB9CisKKyAgICBfc2V0SXRlbUVuYWJsZWQoaXRlbSwgZW5hYmxlZCkKKyAgICB7Cisg
ICAgICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgICAgICBpdGVtLmNvbnRhaW5lci50aXRsZSA9
IGl0ZW0udG9vbHRpcDsKKyAgICAgICAgICAgIGl0ZW0uY29udGFpbmVyLmNsYXNzTGlzdC5hZGQo
V0kuRGVmYXVsdERhc2hib2FyZFZpZXcuRW5hYmxlZEl0ZW1TdHlsZUNsYXNzTmFtZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpdGVtLmNvbnRhaW5lci50aXRsZSA9ICIiOworICAg
ICAgICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShXSS5EZWZhdWx0RGFzaGJv
YXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgfQorICAgIH0KK307
CisKK1dJLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFzc05hbWUgPSAi
ZW5hYmxlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9EaXZpZGVyTmF2aWdhdGlvbkl0ZW0uY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzcwppbmRleCAwYzc3
NjY4MDZlYzEyZWI1ZDgwM2IxYjAwZjNiODYxMDBmMDU5ODRmLi4yMzc5MmQyODkzYjgzYTVhMWQ4
M2JhZGY4OTFmNDAyNjUyYjNkNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EaXZpZGVyTmF2aWdhdGlvbkl0ZW0uY3NzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRl
bS5jc3MKQEAgLTI1LDggKzI1LDExIEBACiAKIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5kaXZpZGVy
IHsKICAgICB3aWR0aDogMXB4OwotICAgIGhlaWdodDogMTZweDsKLSAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBoc2woMCwgMCUsIDc0JSk7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIGJhY2tncm91bmQt
aW1hZ2U6IGxpbmVhci1ncmFkaWVudChoc2woMCwgMCUsIDc0JSksIGhzbCgwLCAwJSwgNzQlKSk7
CisgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDE2cHg7CisgICAgYmFja2dyb3VuZC1yZXBlYXQ6
IG5vLXJlcGVhdDsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiB9CiAKIEBtZWRp
YSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSB7CkBAIC0zNyw2ICs0MCw3IEBA
CiAKIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAubmF2aWdhdGlv
bi1iYXIgLml0ZW0uZGl2aWRlciB7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAw
JSwgNDAlKTsKKyAgICAgICAgLS1kaXZpZGVyLWJhY2tncm91bmQ6IGhzbCgwLCAwJSwgNDAlKTsK
KyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLWRpdmlkZXIt
YmFja2dyb3VuZCksIHZhcigtLWRpdmlkZXItYmFja2dyb3VuZCkpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRz
VGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IGZmMjFjZjAyNWYyZTU0MTJmMDlk
YmU3ZGY1ZDY1MjRhYTg3Zjg1YzQuLjYyNzI5N2ZjNzdkYTcyZjhiYzZjYmZkNTNhZDVkMDMzNTFl
OTA4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNUYWJDb250ZW50Vmlldy5qcwpAQCAtMjUsMTgg
KzI1LDE1IEBACiAKIFdJLkVsZW1lbnRzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBFbGVtZW50c1Rh
YkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldwogewot
ICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgbGV0IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBbCi0gICAgICAgICAg
ICBXSS5SdWxlc1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgIFdJLkNvbXB1
dGVkU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgV0kuQ2hhbmdlc0RldGFp
bHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBXSS5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5l
bCwKLSAgICAgICAgXTsKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFiQmFy
SXRlbS5mcm9tVGFiSW5mbyhXSS5FbGVtZW50c1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisK
KyAgICAgICAgbGV0IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBbV0kuUnVsZXNT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsLCBXSS5DaGFuZ2VzRGV0YWlsc1NpZGViYXJQYW5lbCwgV0kuRE9NTm9kZURldGFpbHNTaWRl
YmFyUGFuZWxdOwogICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5oYXNEb21haW4oIkxheWVy
VHJlZSIpKQogICAgICAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycy5wdXNo
KFdJLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwpOwogCi0gICAgICAgIHN1cGVyKEVsZW1l
bnRzVGFiQ29udGVudFZpZXcudGFiSW5mbygpLCB7ZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVj
dG9ycywgZGlzYWJsZUJhY2tGb3J3YXJkOiB0cnVlfSk7CisgICAgICAgIHN1cGVyKGlkZW50aWZp
ZXIgfHwgImVsZW1lbnRzIiwgImVsZW1lbnRzIiwgdGFiQmFySXRlbSwgbnVsbCwgZGV0YWlsc1Np
ZGViYXJQYW5lbENvbnN0cnVjdG9ycywgdHJ1ZSk7CiAKICAgICAgICAgV0kubmV0d29ya01hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRD
aGFuZ2UsIHRoaXMuX21haW5GcmFtZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLkZyYW1l
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwpAQCAtNDUsNyArNDIsNiBAQCBXSS5F
bGVtZW50c1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgRWxlbWVudHNUYWJDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRCcm93cwogICAgIHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyOiBFbGVtZW50c1RhYkNvbnRlbnRWaWV3
LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9FbGVtZW50cy5zdmciLAogICAgICAg
ICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJFbGVtZW50cyIpLAogICAgICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmxleGlibGVT
cGFjZU5hdmlnYXRpb25JdGVtLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5jc3MKaW5kZXggNWZhOTIyZTAx
MDUyMThkZmM1OGU2ZTZlZjg1N2NiN2VjODJmNGIxNy4uMDM0NDA1ZTVmNDJjNzM0YzI3NjNiNGVm
ZGM3M2MyOTE3MmI3MjU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLmNzcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdh
dGlvbkl0ZW0uY3NzCkBAIC0yMywxNCArMjMsMTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0ubmF2aWdhdGlvbi1iYXIgLml0ZW0uZmxleGlibGUtc3BhY2Ug
eworOm1hdGNoZXMoLm5hdmlnYXRpb24tYmFyLCAudG9vbGJhcikgLml0ZW0uZmxleGlibGUtc3Bh
Y2UgewogICAgIGZsZXg6IDE7CiB9CiAKLS5uYXZpZ2F0aW9uLWJhciAuaXRlbS5mbGV4aWJsZS1z
cGFjZS5hbGlnbi1zdGFydCA+IC5pdGVtIHsKKzptYXRjaGVzKC5uYXZpZ2F0aW9uLWJhciwgLnRv
b2xiYXIpIC5pdGVtLmZsZXhpYmxlLXNwYWNlLmFsaWduLXN0YXJ0ID4gLml0ZW0gewogICAgIC13
ZWJraXQtbWFyZ2luLWVuZDogYXV0bzsKIH0KIAotLm5hdmlnYXRpb24tYmFyIC5pdGVtLmZsZXhp
YmxlLXNwYWNlLmFsaWduLWVuZCA+IC5pdGVtIHsKKzptYXRjaGVzKC5uYXZpZ2F0aW9uLWJhciwg
LnRvb2xiYXIpIC5pdGVtLmZsZXhpYmxlLXNwYWNlLmFsaWduLWVuZCA+IC5pdGVtIHsKICAgICAt
d2Via2l0LW1hcmdpbi1zdGFydDogYXV0bzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUYWJCYXJJdGVtLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanMK
aW5kZXggNzdmNWM0ZjE4NTk1OWYzNmNjNjlhYmZiYzQ2ODk5YjI3YzViM2MyZC4uNmQzYWMwNzg2
MDQ2ODkxMjExZGQ5YzdiMTg2MjRmNzhmM2Y3ZDRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0
ZW0uanMKQEAgLTI2LDExICsyNiwxMiBAQAogCiBXSS5HZW5lcmFsVGFiQmFySXRlbSA9IGNsYXNz
IEdlbmVyYWxUYWJCYXJJdGVtIGV4dGVuZHMgV0kuVGFiQmFySXRlbQogewotICAgIGNvbnN0cnVj
dG9yKHJlcHJlc2VudGVkT2JqZWN0LCBpbWFnZSwgdGl0bGUsIHtpc0VwaGVtZXJhbH0gPSB7fSkK
KyAgICBjb25zdHJ1Y3RvcihpbWFnZSwgdGl0bGUsIGlzRXBoZW1lcmFsID0gZmFsc2UpCiAgICAg
ewotICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCwgaW1hZ2UsIHRpdGxlKTsKKyAgICAg
ICAgc3VwZXIoaW1hZ2UsIHRpdGxlKTsKIAogICAgICAgICB0aGlzLl9pc0VwaGVtZXJhbCA9IGlz
RXBoZW1lcmFsOworCiAgICAgICAgIGlmICh0aGlzLl9pc0VwaGVtZXJhbCkgewogICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImVwaGVtZXJhbCIpOwogCkBAIC00MywxNiAr
NDQsOSBAQCBXSS5HZW5lcmFsVGFiQmFySXRlbSA9IGNsYXNzIEdlbmVyYWxUYWJCYXJJdGVtIGV4
dGVuZHMgV0kuVGFiQmFySXRlbQogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gU3RhdGljCi0K
LSAgICBzdGF0aWMgZnJvbVRhYkNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KQorICAgIHN0YXRp
YyBmcm9tVGFiSW5mbyh7aW1hZ2UsIHRpdGxlLCBpc0VwaGVtZXJhbH0pCiAgICAgewotICAgICAg
ICBjb25zb2xlLmFzc2VydCh0YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRW
aWV3KTsKLQotICAgICAgICBsZXQge2ltYWdlLCB0aXRsZX0gPSB0YWJDb250ZW50Vmlldy5jb25z
dHJ1Y3Rvci50YWJJbmZvKCk7Ci0gICAgICAgIHJldHVybiBuZXcgV0kuR2VuZXJhbFRhYkJhckl0
ZW0odGFiQ29udGVudFZpZXcsIGltYWdlLCB0aXRsZSwgewotICAgICAgICAgICAgaXNFcGhlbWVy
YWw6ICF0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rvci5zaG91bGRTYXZlVGFiKCksCi0gICAgICAg
IH0pOworICAgICAgICByZXR1cm4gbmV3IFdJLkdlbmVyYWxUYWJCYXJJdGVtKGltYWdlLCB0aXRs
ZSwgaXNFcGhlbWVyYWwpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhpY3NUYWJDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYXBo
aWNzVGFiQ29udGVudFZpZXcuanMKaW5kZXggY2MwMjllMzhlMDNmYWIwNjE5YzFmNjA1YzRiNTg1
YjExNTVhZWU3OC4uMmU2ZDg1NzIyNjc5ODMwZTRhNjU3NzE5N2Q5YTkyODUzODI3MDNmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhp
Y3NUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNywxNiArMjcsMTcgQEAg
V0kuR3JhcGhpY3NUYWJDb250ZW50VmlldyA9IGNsYXNzIEdyYXBoaWNzVGFiQ29udGVudFZpZXcg
ZXh0ZW5kcyBXSS5Db250ZW50QnJvd3MKIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewotICAg
ICAgICBzdXBlcihHcmFwaGljc1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSwgewotICAgICAgICAg
ICAgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yOiBXSS5DYW52YXNTaWRlYmFyUGFu
ZWwsCi0gICAgICAgICAgICBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzOiBbCi0gICAg
ICAgICAgICAgICAgV0kuUmVjb3JkaW5nU3RhdGVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAg
ICAgICAgICAgIFdJLlJlY29yZGluZ1RyYWNlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAg
ICAgICAgICBXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgICAgIFdJ
LkFuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBdLAotICAgICAgICAg
ICAgZGlzYWJsZUJhY2tGb3J3YXJkOiB0cnVlLAotICAgICAgICB9KTsKKyAgICAgICAgbGV0IHRh
YkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhXSS5HcmFwaGljc1Rh
YkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisKKyAgICAgICAgY29uc3QgbmF2aWdhdGlvblNpZGVi
YXJQYW5lbENvbnN0cnVjdG9yID0gV0kuQ2FudmFzU2lkZWJhclBhbmVsOworICAgICAgICBjb25z
dCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzID0gWworICAgICAgICAgICAgV0kuUmVj
b3JkaW5nU3RhdGVEZXRhaWxzU2lkZWJhclBhbmVsLAorICAgICAgICAgICAgV0kuUmVjb3JkaW5n
VHJhY2VEZXRhaWxzU2lkZWJhclBhbmVsLAorICAgICAgICAgICAgV0kuQ2FudmFzRGV0YWlsc1Np
ZGViYXJQYW5lbCwKKyAgICAgICAgICAgIFdJLkFuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWws
CisgICAgICAgIF07CisgICAgICAgIGNvbnN0IGRpc2FibGVCYWNrRm9yd2FyZCA9IHRydWU7Cisg
ICAgICAgIHN1cGVyKCJncmFwaGljcyIsIFsiZ3JhcGhpY3MiXSwgdGFiQmFySXRlbSwgbmF2aWdh
dGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0
b3JzLCBkaXNhYmxlQmFja0ZvcndhcmQpOwogCiAgICAgICAgIHRoaXMuX2NhbnZhc2VzVHJlZU91
dGxpbmUgPSBuZXcgV0kuVHJlZU91dGxpbmU7CiAgICAgICAgIHRoaXMuX2NhbnZhc2VzVHJlZU91
dGxpbmUuYWxsb3dzUmVwZWF0U2VsZWN0aW9uID0gdHJ1ZTsKQEAgLTY0LDcgKzY1LDYgQEAgV0ku
R3JhcGhpY3NUYWJDb250ZW50VmlldyA9IGNsYXNzIEdyYXBoaWNzVGFiQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db250ZW50QnJvd3MKICAgICBzdGF0aWMgdGFiSW5mbygpCiAgICAgewogICAgICAg
ICByZXR1cm4gewotICAgICAgICAgICAgaWRlbnRpZmllcjogR3JhcGhpY3NUYWJDb250ZW50Vmll
dy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvR3JhcGhpY3Muc3ZnIiwKICAgICAg
ICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiR3JhcGhpY3MiKSwKICAgICAgICAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyb3VwTmF2
aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Hcm91cE5hdmlnYXRpb25JdGVtLmpzCmluZGV4IDVjNjA0ZDlmZjFkODNlOTIxMTIxYjlmOThh
OWIwOTIzZjMxOTA5NGEuLmViYjg4ZDg2MWUyZTRjNTVlN2RmYjUxZjEwMzU5YzFmNmE1NzFhMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dy
b3VwTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvR3JvdXBOYXZpZ2F0aW9uSXRlbS5qcwpAQCAtNTEsMTYgKzUxLDYgQEAgV0ku
R3JvdXBOYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIEdyb3VwTmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBX
SS5OYXZpZ2F0aW9uSXRlbQogICAgICAgICB0aGlzLl9uZWVkc1VwZGF0ZSA9IHRydWU7CiAgICAg
fQogCi0gICAgZ2V0IGhpZGRlbigpCi0gICAgewotICAgICAgICByZXR1cm4gc3VwZXIuaGlkZGVu
IHx8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5ldmVyeSgoaXRlbSkgPT4gaXRlbS5oaWRkZW4pOwot
ICAgIH0KLQotICAgIHNldCBoaWRkZW4oZmxhZykKLSAgICB7Ci0gICAgICAgIHN1cGVyLmhpZGRl
biA9IGZsYWc7Ci0gICAgfQotCiAgICAgZ2V0IHdpZHRoKCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZUl0ZW1zKCk7CkBAIC03NywxMSArNjcsNiBAQCBXSS5Hcm91cE5hdmlnYXRpb25JdGVt
ID0gY2xhc3MgR3JvdXBOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdJLk5hdmlnYXRpb25JdGVtCiAK
ICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGdldCBhZGRpdGlvbmFsQ2xhc3NOYW1lcygpCi0gICAg
ewotICAgICAgICByZXR1cm4gWyJncm91cCJdOwotICAgIH0KLQogICAgIHVwZGF0ZShvcHRpb25z
ID0ge30pCiAgICAgewogICAgICAgICBzdXBlci51cGRhdGUob3B0aW9ucyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnNUYWJDb250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xh
eWVyc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDJiYzBjOWI0MzUwY2M3MWIzNGM4NzAzMzBiOGRk
NjIyNjQ5MzAzNzEuLjJlYWZmNWQ5NTA1N2E0ODhlMGI5ZTA4ZDY0NDdmZjdlZTIxOGIxYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVy
c1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNyw5ICsyNywxMiBAQCBXSS5M
YXllcnNUYWJDb250ZW50VmlldyA9IGNsYXNzIExheWVyc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudEJyb3dzZXJUYQogewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7Ci0gICAgICAg
IHN1cGVyKExheWVyc1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSwgewotICAgICAgICAgICAgZGV0
YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9yczogW1dJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5l
bF0sCi0gICAgICAgIH0pOworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJC
YXJJdGVtLmZyb21UYWJJbmZvKFdJLkxheWVyc1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisK
KyAgICAgICAgY29uc3QgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yID0gbnVsbDsK
KyAgICAgICAgY29uc3QgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyA9IFtXSS5MYXll
ckRldGFpbHNTaWRlYmFyUGFuZWxdOworICAgICAgICBjb25zdCBkaXNhYmxlQmFja0ZvcndhcmQg
PSB0cnVlOworICAgICAgICBzdXBlcigibGF5ZXJzIiwgImxheWVycyIsIHRhYkJhckl0ZW0sIG5h
dmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0
cnVjdG9ycywgZGlzYWJsZUJhY2tGb3J3YXJkKTsKIAogICAgICAgICB0aGlzLl9sYXllckRldGFp
bHNTaWRlYmFyUGFuZWwgPSB0aGlzLmRldGFpbHNTaWRlYmFyUGFuZWxzWzBdOwogICAgICAgICB0
aGlzLl9sYXllckRldGFpbHNTaWRlYmFyUGFuZWwuYWRkRXZlbnRMaXN0ZW5lcihXSS5MYXllckRl
dGFpbHNTaWRlYmFyUGFuZWwuRXZlbnQuU2VsZWN0ZWRMYXllckNoYW5nZWQsIHRoaXMuX2RldGFp
bHNTaWRlYmFyU2VsZWN0ZWRMYXllckNoYW5nZWQsIHRoaXMpOwpAQCAtNDMsNyArNDYsNiBAQCBX
SS5MYXllcnNUYWJDb250ZW50VmlldyA9IGNsYXNzIExheWVyc1RhYkNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudEJyb3dzZXJUYQogICAgIHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyOiBMYXllcnNUYWJDb250ZW50Vmll
dy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvTGF5ZXJzLnN2ZyIsCiAgICAgICAg
ICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIkxheWVycyIpLAogICAgICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5VGFiQmFy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5VGFi
QmFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRkMWJiZGQ5ZDIyZmQ4MDI0YjJmZjI4OWYwMzM1OWNmMGYyOGI4
OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9MZWdhY3lUYWJCYXIuanMKQEAgLTAsMCArMSw4NzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitX
SS5MZWdhY3lUYWJCYXIgPSBjbGFzcyBMZWdhY3lUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3Cit7Cisg
ICAgY29uc3RydWN0b3IoZWxlbWVudCwgdGFiQmFySXRlbXMpCisgICAgeworICAgICAgICBzdXBl
cihlbGVtZW50KTsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJh
ciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRhYmxpc3Qi
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRo
aXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5f
aGFuZGxlTW91c2VMZWF2ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnUuYmluZCh0
aGlzKSk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAidG9wLWJv
cmRlciIpOworCisgICAgICAgIHRoaXMuX3RhYkJhckl0ZW1zID0gW107CisgICAgICAgIHRoaXMu
X2hpZGRlblRhYkJhckl0ZW1zID0gW107CisKKyAgICAgICAgaWYgKHRhYkJhckl0ZW1zKSB7Cisg
ICAgICAgICAgICBmb3IgKGxldCB0YWJCYXJJdGVtIGluIHRhYkJhckl0ZW1zKQorICAgICAgICAg
ICAgICAgIHRoaXMuYWRkVGFiQmFySXRlbSh0YWJCYXJJdGVtKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHRoaXMuYWRkVGFiQmFySXRlbShXSS5zZXR0aW5nc1RhYkNvbnRlbnRWaWV3LnRhYkJhckl0
ZW0sIHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKKworICAgICAgICB0aGlzLl9uZXdUYWJU
YWJCYXJJdGVtID0gbmV3IFdJLlBpbm5lZFRhYkJhckl0ZW0oIkltYWdlcy9OZXdUYWJQbHVzLnN2
ZyIsIFdJLlVJU3RyaW5nKCJDcmVhdGUgYSBuZXcgdGFiIikpOworICAgICAgICB0aGlzLl9uZXdU
YWJUYWJCYXJJdGVtLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsIHRoaXMu
X2hhbmRsZU5ld1RhYk1vdXNlRW50ZXIuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX25ld1Rh
YlRhYkJhckl0ZW0uZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRs
ZU5ld1RhYkNsaWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmFkZFRhYkJhckl0ZW0odGhp
cy5fbmV3VGFiVGFiQmFySXRlbSwge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOworCisgICAg
ICAgIHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0gPSBuZXcgV0kuUGlubmVkVGFiQmFySXRlbSgi
SW1hZ2VzL1RhYlBpY2tlci5zdmciLCBXSS5VSVN0cmluZygiU2hvdyBoaWRkZW4gdGFicyIpKTsK
KyAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InRhYi1waWNrZXIiKTsKKyAgICAgICAgdGhpcy5hZGRUYWJCYXJJdGVtKHRoaXMuX3RhYlBpY2tl
clRhYkJhckl0ZW0sIHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKKyAgICB9CisKKyAgICAv
LyBQdWJsaWMKKworICAgIGdldCBuZXdUYWJUYWJCYXJJdGVtKCkgeyByZXR1cm4gdGhpcy5fbmV3
VGFiVGFiQmFySXRlbTsgfQorCisgICAgdXBkYXRlTmV3VGFiVGFiQmFySXRlbVN0YXRlKCkKKyAg
ICB7CisgICAgICAgIGxldCBuZXdUYWJFeGlzdHMgPSAhV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93
ZWQoV0kuTmV3VGFiQ29udGVudFZpZXcuVHlwZSk7CisgICAgICAgIHRoaXMuX25ld1RhYlRhYkJh
ckl0ZW0uZGlzYWJsZWQgPSBuZXdUYWJFeGlzdHM7CisgICAgfQorCisgICAgYWRkVGFiQmFySXRl
bSh0YWJCYXJJdGVtLCBvcHRpb25zID0ge30pCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5p
bnNlcnRUYWJCYXJJdGVtKHRhYkJhckl0ZW0sIHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aCwgb3B0
aW9ucyk7CisgICAgfQorCisgICAgaW5zZXJ0VGFiQmFySXRlbSh0YWJCYXJJdGVtLCBpbmRleCwg
b3B0aW9ucyA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFiQmFySXRlbSBp
bnN0YW5jZW9mIFdJLlRhYkJhckl0ZW0pOworICAgICAgICBpZiAoISh0YWJCYXJJdGVtIGluc3Rh
bmNlb2YgV0kuVGFiQmFySXRlbSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAg
ICBpZiAodGFiQmFySXRlbS5wYXJlbnRUYWJCYXIgPT09IHRoaXMpCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICBpZiAodGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNl
RW50ZXIpIHsKKyAgICAgICAgICAgIC8vIERlbGF5IGFkZGluZyB0aGUgbmV3IHRhYiB1bnRpbCB3
ZSBjYW4gZXhwYW5kIHRoZSB0YWJzIGFmdGVyIGEgY2xvc2VkIHRhYi4KKyAgICAgICAgICAgIHRo
aXMuX2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlKCkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgdGhpcy5pbnNlcnRUYWJCYXJJdGVtKHRhYkJhckl0ZW0sIGluZGV4LCBvcHRpb25z
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0K
KworICAgICAgICBpZiAodGFiQmFySXRlbS5wYXJlbnRUYWJCYXIpCisgICAgICAgICAgICB0YWJC
YXJJdGVtLnBhcmVudFRhYkJhci5yZW1vdmVUYWJCYXJJdGVtKHRhYkJhckl0ZW0pOworCisgICAg
ICAgIHRhYkJhckl0ZW0ucGFyZW50VGFiQmFyID0gdGhpczsKKworICAgICAgICBpbmRleCA9IE51
bWJlci5jb25zdHJhaW4oaW5kZXgsIDAsIHRoaXMubm9ybWFsVGFiQ291bnQpOworCisgICAgICAg
IGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgeworICAg
ICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpKTsK
KyAgICAgICAgICAgIG9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zID0gdHJ1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIHZhciBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9uczsKKyAgICAgICAgaWYg
KCFvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucykKKyAgICAgICAgICAgIGJlZm9yZVRhYlNpemVz
QW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7
CisKKyAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMuc3BsaWNlKGluZGV4LCAwLCB0YWJCYXJJdGVt
KTsKKworICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCAr
IDFdOworICAgICAgICBsZXQgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0
U2libGluZy5lbGVtZW50IDogdGhpcy5fdGFiQmFySXRlbXMubGFzdFZhbHVlLmVsZW1lbnQ7CisK
KyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jb250YWlucyhuZXh0U2libGluZ0VsZW1lbnQpKQor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQs
IG5leHRTaWJsaW5nRWxlbWVudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZCh0YWJCYXJJdGVtLmVsZW1lbnQpOworCisgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwgIXRoaXMuX2hhc01vcmVUaGFuT25l
Tm9ybWFsVGFiKCkpOworCisgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0g
bnVsbDsKKyAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gbnVsbDsKKwor
ICAgICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbnNlcnRpbmctdGFiIik7CisKKyAgICAgICAgICAgIHRo
aXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGFmdGVyVGFiU2l6ZXNBbmRQb3Np
dGlvbnMpOworCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Vi
a2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHJlbW92ZVN0eWxlcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiaW5zZXJ0aW5nLXRhYiIpOworCisgICAg
ICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYmVpbmctaW5zZXJ0
ZWQiKTsKKworICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlv
bnMoKTsKKworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndl
YmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zKSB7CisgICAgICAgICAgICB2
YXIgYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyA9IHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXpl
c0FuZFBvc2l0aW9ucygpOworCisgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOworCisg
ICAgICAgICAgICBsZXQgdGFiQmFySXRlbXMgPSB0aGlzLl90YWJCYXJJdGVtc0Zyb21MZWZ0VG9S
aWdodCgpOworICAgICAgICAgICAgbGV0IHByZXZpb3VzVGFiQmFySXRlbSA9IHRhYkJhckl0ZW1z
W3RhYkJhckl0ZW1zLmluZGV4T2YodGFiQmFySXRlbSkgLSAxXSB8fCBudWxsOworICAgICAgICAg
ICAgbGV0IHByZXZpb3VzVGFiQmFySXRlbVNpemVBbmRQb3NpdGlvbiA9IHByZXZpb3VzVGFiQmFy
SXRlbSA/IGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zLmdldChwcmV2aW91c1RhYkJhckl0ZW0p
IDogbnVsbDsKKworICAgICAgICAgICAgaWYgKHByZXZpb3VzVGFiQmFySXRlbVNpemVBbmRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucy5zZXQodGFi
QmFySXRlbSwge2xlZnQ6IHByZXZpb3VzVGFiQmFySXRlbVNpemVBbmRQb3NpdGlvbi5sZWZ0ICsg
cHJldmlvdXNUYWJCYXJJdGVtU2l6ZUFuZFBvc2l0aW9uLndpZHRoLCB3aWR0aDogMH0pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25z
LnNldCh0YWJCYXJJdGVtLCB7bGVmdDogMCwgd2lkdGg6IDB9KTsKKworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRh
YkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJiZWluZy1pbnNlcnRlZCIpOworCisgICAg
ICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhiZWZvcmVUYWJT
aXplc0FuZFBvc2l0aW9ucyk7CisKKyAgICAgICAgICAgIHZhciByZW1vdmVTdHlsZXNMaXN0ZW5l
ciA9IHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpOworCisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgdGhpcy5uZWVkc0xheW91dCgpOworCisgICAgICAgIGlmICghKHRhYkJhckl0ZW0gaW5z
dGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKSkKKyAgICAgICAgICAgIHRoaXMudXBkYXRlTmV3
VGFiVGFiQmFySXRlbVN0YXRlKCk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1BZGRlZCwge3RhYkJhckl0ZW19KTsKKwor
ICAgICAgICByZXR1cm4gdGFiQmFySXRlbTsKKyAgICB9CisKKyAgICByZW1vdmVUYWJCYXJJdGVt
KHRhYkJhckl0ZW1PckluZGV4LCBvcHRpb25zID0ge30pCisgICAgeworICAgICAgICBsZXQgdGFi
QmFySXRlbSA9IHRoaXMuX2ZpbmRUYWJCYXJJdGVtKHRhYkJhckl0ZW1PckluZGV4KTsKKyAgICAg
ICAgaWYgKCF0YWJCYXJJdGVtIHx8IHRhYkJhckl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJC
YXJJdGVtKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdGFiQmFySXRlbS5w
YXJlbnRUYWJCYXIgPSBudWxsOworCisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0
ZW0gPT09IHRhYkJhckl0ZW0pIHsKKyAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3RhYkJh
ckl0ZW1zLmluZGV4T2YodGFiQmFySXRlbSk7CisgICAgICAgICAgICB2YXIgbmV4dFRhYkJhckl0
ZW0gPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCArIDFdOworICAgICAgICAgICAgaWYgKCFuZXh0
VGFiQmFySXRlbSB8fCBuZXh0VGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0
ZW0pCisgICAgICAgICAgICAgICAgbmV4dFRhYkJhckl0ZW0gPSB0aGlzLl90YWJCYXJJdGVtc1tp
bmRleCAtIDFdOworCisgICAgICAgICAgICBsZXQgaW5pdGlhdG9ySGludCA9IG9wdGlvbnMuaW5p
dGlhdG9ySGludCB8fCBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuVW5rbm93
bjsKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0VGFiQmFySXRlbShuZXh0VGFiQmFySXRlbSwge2lu
aXRpYXRvckhpbnR9KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgeworICAgICAgICAgICAgcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIG9wdGlvbnMu
c3VwcHJlc3NBbmltYXRpb25zID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBiZWZv
cmVUYWJTaXplc0FuZFBvc2l0aW9uczsKKyAgICAgICAgaWYgKCFvcHRpb25zLnN1cHByZXNzQW5p
bWF0aW9ucykKKyAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5f
cmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgLy8gU3VidHJh
Y3QgMSBmcm9tIG5vcm1hbFRhYkNvdW50IHNpbmNlIGFycmF5cyBiZWdpbiBpbmRleGluZyBhdCAw
LgorICAgICAgICBsZXQgd2FzTGFzdE5vcm1hbFRhYiA9IHRoaXMuX3RhYkJhckl0ZW1zLmluZGV4
T2YodGFiQmFySXRlbSkgPT09IHRoaXMubm9ybWFsVGFiQ291bnQgLSAxOworCisgICAgICAgIHRo
aXMuX3RhYkJhckl0ZW1zLnJlbW92ZSh0YWJCYXJJdGVtKTsKKyAgICAgICAgdGFiQmFySXRlbS5l
bGVtZW50LnJlbW92ZSgpOworCisgICAgICAgIHZhciBoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYiA9
IHRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwgIWhhc01vcmVUaGFuT25lTm9ybWFsVGFiKTsK
KworICAgICAgICBjb25zdCBzaG91bGRPcGVuRGVmYXVsdFRhYiA9ICF0YWJCYXJJdGVtLmlzRGVm
YXVsdFRhYiAmJiAhdGhpcy5ub3JtYWxUYWJDb3VudDsKKyAgICAgICAgaWYgKHNob3VsZE9wZW5E
ZWZhdWx0VGFiKQorICAgICAgICAgICAgb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMgPSB0cnVl
OworCisgICAgICAgIGlmICghaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIgfHwgd2FzTGFzdE5vcm1h
bFRhYiB8fCAhb3B0aW9ucy5zdXBwcmVzc0V4cGFuc2lvbikgeworICAgICAgICAgICAgaWYgKCFv
cHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucykgeworICAgICAgICAgICAgICAgIHRoaXMuX3RhYkFu
aW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZShiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9u
cyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0
KCk7CisKKyAgICAgICAgICAgIHRoaXMudXBkYXRlTmV3VGFiVGFiQmFySXRlbVN0YXRlKCk7CisK
KyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhYkJhci5FdmVu
dC5UYWJCYXJJdGVtUmVtb3ZlZCwge3RhYkJhckl0ZW19KTsKKworICAgICAgICAgICAgaWYgKHNo
b3VsZE9wZW5EZWZhdWx0VGFiKQorICAgICAgICAgICAgICAgIHRoaXMuX29wZW5EZWZhdWx0VGFi
KCk7CisKKyAgICAgICAgICAgIHJldHVybiB0YWJCYXJJdGVtOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIGxhc3ROb3JtYWxUYWJCYXJJdGVtOworCisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVU
YWJzKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNs
b3NpbmctdGFiIik7CisKKyAgICAgICAgICAgIC8vIEZvciBSVEwsIHdlIG5lZWQgdG8gcGxhY2Ug
ZXh0cmEgc3BhY2UgYmV0d2VlbiBwaW5uZWQgdGFiIGFuZCBmaXJzdCBub3JtYWwgdGFiLgorICAg
ICAgICAgICAgLy8gRnJvbSBsZWZ0IHRvIHJpZ2h0IHRoZXJlIGlzIHBpbm5lZCB0YWJzLCBleHRy
YSBzcGFjZSwgdGhlbiBub3JtYWwgdGFicy4gQ29tcHV0ZQorICAgICAgICAgICAgLy8gaG93IG11
Y2ggZXh0cmEgc3BhY2Ugd2UgbmVlZCB0byBhZGRpdGlvbmFsbHkgYWRkIGZvciBub3JtYWwgdGFi
IGl0ZW1zLgorICAgICAgICAgICAgbGV0IGV4dHJhU3BhY2VCZXR3ZWVuTm9ybWFsQW5kUGlubmVk
VGFicyA9IDA7CisgICAgICAgICAgICBpZiAoV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9
PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCkgeworICAgICAgICAgICAgICAgIGV4dHJhU3BhY2VC
ZXR3ZWVuTm9ybWFsQW5kUGlubmVkVGFicyA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKS53aWR0aDsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjdXJyZW50VGFiQmFySXRl
bSBvZiB0aGlzLl90YWJCYXJJdGVtc0Zyb21MZWZ0VG9SaWdodCgpKQorICAgICAgICAgICAgICAg
ICAgICBleHRyYVNwYWNlQmV0d2Vlbk5vcm1hbEFuZFBpbm5lZFRhYnMgLT0gY3VycmVudFRhYkJh
ckl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgbGV0IGxlZnQgPSAwOworICAgICAgICAgICAgZm9yIChsZXQgY3Vy
cmVudFRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXNGcm9tTGVmdFRvUmlnaHQoKSkgewor
ICAgICAgICAgICAgICAgIGxldCBzaXplQW5kUG9zaXRpb24gPSBiZWZvcmVUYWJTaXplc0FuZFBv
c2l0aW9ucy5nZXQoY3VycmVudFRhYkJhckl0ZW0pOworCisgICAgICAgICAgICAgICAgaWYgKCEo
Y3VycmVudFRhYkJhckl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKSkgeworICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50VGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBl
eHRyYVNwYWNlQmV0d2Vlbk5vcm1hbEFuZFBpbm5lZFRhYnMgKyBsZWZ0ICsgInB4IjsKKyAgICAg
ICAgICAgICAgICAgICAgbGVmdCArPSBzaXplQW5kUG9zaXRpb24ud2lkdGg7CisgICAgICAgICAg
ICAgICAgICAgIGxhc3ROb3JtYWxUYWJCYXJJdGVtID0gY3VycmVudFRhYkJhckl0ZW07CisgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBzaXplQW5kUG9z
aXRpb24ubGVmdCArIHNpemVBbmRQb3NpdGlvbi53aWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIHNlbGVjdGVkIHRhYiBhbmQgbGFzdCB0YWIgbmVlZCB0byBkcmF3IGEg
cmlnaHQgYm9yZGVyIGFzIHdlbGwsIHNvIG1ha2UgdGhlbSAxcHggd2lkZXIuCisgICAgICAgICAg
ICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgIHRoaXMuX3Nl
bGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQodGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgpICsgMSkgKyAicHgiOworCisg
ICAgICAgICAgICBpZiAobGFzdE5vcm1hbFRhYkJhckl0ZW0gIT09IHRoaXMuX3NlbGVjdGVkVGFi
QmFySXRlbSkKKyAgICAgICAgICAgICAgICBsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50LnN0
eWxlLndpZHRoID0gKHBhcnNlRmxvYXQobGFzdE5vcm1hbFRhYkJhckl0ZW0uZWxlbWVudC5zdHls
ZS53aWR0aCkgKyAxKSArICJweCI7CisKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gVGhlIHNlbGVjdGVkIHRhYiBuZWVkcyB0byBzdG9wIGRyYXdpbmcgdGhl
IHJpZ2h0IGJvcmRlciwgc28gbWFrZSBpdCAxcHggc21hbGxlci4gT25seSBpZiBpdCBpc24ndCB0
aGUgbGFzdC4KKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gJiYgdGhp
cy5fc2VsZWN0ZWRUYWJCYXJJdGVtICE9PSBsYXN0Tm9ybWFsVGFiQmFySXRlbSkKKyAgICAgICAg
ICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IChw
YXJzZUZsb2F0KHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoKSAt
IDEpICsgInB4IjsKKworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
ImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
ImNsb3NpbmctdGFiIik7CisKKyAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CisKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0
aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucykgeworICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKworICAgICAgICAgICAgdGhpcy5fdGFi
QW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgPSB0cnVlOworCisgICAgICAgICAgICB0aGlz
Ll9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhiZWZvcmVUYWJTaXplc0FuZFBvc2l0
aW9ucyk7CisKKyAgICAgICAgICAgIHZhciByZW1vdmVTdHlsZXNMaXN0ZW5lciA9IHJlbW92ZVN0
eWxlcy5iaW5kKHRoaXMpOworCisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5p
bWF0ZVRhYnMuYmluZCh0aGlzKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5u
ZWVkc0xheW91dCgpOworCisgICAgICAgIHRoaXMudXBkYXRlTmV3VGFiVGFiQmFySXRlbVN0YXRl
KCk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFyLkV2
ZW50LlRhYkJhckl0ZW1SZW1vdmVkLCB7dGFiQmFySXRlbX0pOworCisgICAgICAgIGlmIChzaG91
bGRPcGVuRGVmYXVsdFRhYikKKyAgICAgICAgICAgIHRoaXMuX29wZW5EZWZhdWx0VGFiKCk7CisK
KyAgICAgICAgcmV0dXJuIHRhYkJhckl0ZW07CisgICAgfQorCisgICAgc2VsZWN0UHJldmlvdXNU
YWIoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aCA8PSAxKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBzdGFydEluZGV4ID0gdGhpcy5fdGFi
QmFySXRlbXMuaW5kZXhPZih0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pOworICAgICAgICB2YXIg
bmV3SW5kZXggPSBzdGFydEluZGV4OworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAobmV3
SW5kZXggPT09IDApCisgICAgICAgICAgICAgICAgbmV3SW5kZXggPSB0aGlzLl90YWJCYXJJdGVt
cy5sZW5ndGggLSAxOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0luZGV4
LS07CisKKyAgICAgICAgICAgIGlmICghKHRoaXMuX3RhYkJhckl0ZW1zW25ld0luZGV4XSBpbnN0
YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9IHdoaWxlIChuZXdJbmRleCAhPT0gc3RhcnRJbmRleCk7CisKKyAgICAgICAgaWYgKG5l
d0luZGV4ID09PSBzdGFydEluZGV4KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuc2VsZWN0ZWRUYWJCYXJJdGVtID0gdGhpcy5fdGFiQmFySXRlbXNbbmV3SW5kZXhdOworICAg
IH0KKworICAgIHNlbGVjdE5leHRUYWIoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3RhYkJh
ckl0ZW1zLmxlbmd0aCA8PSAxKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBz
dGFydEluZGV4ID0gdGhpcy5fdGFiQmFySXRlbXMuaW5kZXhPZih0aGlzLl9zZWxlY3RlZFRhYkJh
ckl0ZW0pOworICAgICAgICB2YXIgbmV3SW5kZXggPSBzdGFydEluZGV4OworICAgICAgICBkbyB7
CisgICAgICAgICAgICBpZiAobmV3SW5kZXggPT09IHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aCAt
IDEpCisgICAgICAgICAgICAgICAgbmV3SW5kZXggPSAwOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIG5ld0luZGV4Kys7CisKKyAgICAgICAgICAgIGlmICghKHRoaXMuX3RhYkJh
ckl0ZW1zW25ld0luZGV4XSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9IHdoaWxlIChuZXdJbmRleCAhPT0gc3RhcnRJbmRl
eCk7CisKKyAgICAgICAgaWYgKG5ld0luZGV4ID09PSBzdGFydEluZGV4KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJCYXJJdGVtID0gdGhpcy5fdGFiQmFy
SXRlbXNbbmV3SW5kZXhdOworICAgIH0KKworICAgIGdldCBzZWxlY3RlZFRhYkJhckl0ZW0oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbTsKKyAgICB9CisK
KyAgICBzZXQgc2VsZWN0ZWRUYWJCYXJJdGVtKHRhYkJhckl0ZW1PckluZGV4KQorICAgIHsKKyAg
ICAgICAgdGhpcy5zZWxlY3RUYWJCYXJJdGVtKHRhYkJhckl0ZW1PckluZGV4KTsKKyAgICB9CisK
KyAgICBzZWxlY3RUYWJCYXJJdGVtKHRhYkJhckl0ZW1PckluZGV4LCBvcHRpb25zID0ge30pCisg
ICAgeworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IHRoaXMuX2ZpbmRUYWJCYXJJdGVtKHRhYkJh
ckl0ZW1PckluZGV4KTsKKyAgICAgICAgaWYgKHRhYkJhckl0ZW0gPT09IHRoaXMuX25ld1RhYlRh
YkJhckl0ZW0gfHwgdGFiQmFySXRlbSA9PT0gdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSkgewor
ICAgICAgICAgICAgLy8gR2V0IHRoZSBsYXN0IG5vcm1hbCB0YWIgaXRlbSBpZiB0aGUgaXRlbSBp
cyBub3Qgc2VsZWN0YWJsZS4KKyAgICAgICAgICAgIHRhYkJhckl0ZW0gPSB0aGlzLl90YWJCYXJJ
dGVtc1t0aGlzLm5vcm1hbFRhYkNvdW50IC0gMV07CisgICAgICAgIH0KKworICAgICAgICBpZiAo
dGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtID09PSB0YWJCYXJJdGVtKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGxldCBwcmV2aW91c1RhYkJhckl0ZW0gPSB0aGlzLl9zZWxlY3RlZFRh
YkJhckl0ZW07CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkKKyAgICAg
ICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5zZWxlY3RlZCA9IGZhbHNlOworCisgICAg
ICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSA9IHRhYkJhckl0ZW0gfHwgbnVsbDsKKworICAg
ICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKSB7CisgICAgICAgICAgICB0aGlzLl9z
ZWxlY3RlZFRhYkJhckl0ZW0uc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgaWYgKHRoaXMu
X3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiaGlkZGVuIikp
CisgICAgICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOworICAgICAgICB9CisKKyAgICAg
ICAgbGV0IGluaXRpYXRvckhpbnQgPSBvcHRpb25zLmluaXRpYXRvckhpbnQgfHwgV0kuVGFiQnJv
d3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLlVua25vd247CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtU2VsZWN0ZWQsIHtw
cmV2aW91c1RhYkJhckl0ZW0sIGluaXRpYXRvckhpbnR9KTsKKyAgICB9CisKKyAgICBnZXQgdGFi
QmFySXRlbXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zOworICAg
IH0KKworICAgIGdldCBub3JtYWxUYWJDb3VudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fdGFiQmFySXRlbXMuZmlsdGVyKChpdGVtKSA9PiAhKGl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5u
ZWRUYWJCYXJJdGVtKSkubGVuZ3RoOworICAgIH0KKworICAgIGdldCBzYXZlYWJsZVRhYkNvdW50
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtcy5maWx0ZXIoKGl0ZW0p
ID0+IGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QgJiYgaXRlbS5yZXByZXNlbnRlZE9iamVjdC5jb25z
dHJ1Y3Rvci5zaG91bGRTYXZlVGFiKCkpLmxlbmd0aDsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0
ZWQKKworICAgIGxheW91dCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjYWxjdWxhdGUtd2lkdGgiKTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNvbGxhcHNlZCIpOworCisgICAg
ICAgIGZ1bmN0aW9uIGZvcmNlSXRlbUhpZGRlbihpdGVtLCBoaWRkZW4pIHsKKyAgICAgICAgICAg
IGl0ZW0uZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJoaWRkZW4iLCAhIWhpZGRlbik7CisgICAg
ICAgIH0KKworICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKQorICAg
ICAgICAgICAgZm9yY2VJdGVtSGlkZGVuKGl0ZW0sIGl0ZW0gPT09IHRoaXMuX3RhYlBpY2tlclRh
YkJhckl0ZW0pOworCisgICAgICAgIGZ1bmN0aW9uIG1lYXN1cmVJdGVtV2lkdGgoaXRlbSkgewor
ICAgICAgICAgICAgaWYgKCFpdGVtW1dJLlRhYkJhci5DYWNoZWRXaWR0aFN5bWJvbF0pCisgICAg
ICAgICAgICAgICAgaXRlbVtXSS5UYWJCYXIuQ2FjaGVkV2lkdGhTeW1ib2xdID0gaXRlbS5lbGVt
ZW50LnJlYWxPZmZzZXRXaWR0aDsKKyAgICAgICAgICAgIHJldHVybiBpdGVtW1dJLlRhYkJhci5D
YWNoZWRXaWR0aFN5bWJvbF07CisgICAgICAgIH0KKworICAgICAgICBsZXQgcmVjYWxjdWxhdGVJ
dGVtV2lkdGhzID0gKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1z
LnJlZHVjZSgodG90YWwsIGl0ZW0pID0+IHsKKyAgICAgICAgICAgICAgICBpdGVtW1dJLlRhYkJh
ci5DYWNoZWRXaWR0aFN5bWJvbF0gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRvdGFsICsgbWVhc3VyZUl0ZW1XaWR0aChpdGVtKTsKKyAgICAgICAgICAgIH0sIDApOworICAg
ICAgICB9OworCisgICAgICAgIHRoaXMuX2hpZGRlblRhYkJhckl0ZW1zID0gW107CisKKyAgICAg
ICAgbGV0IHRvdGFsSXRlbVdpZHRoID0gcmVjYWxjdWxhdGVJdGVtV2lkdGhzKCk7CisgICAgICAg
IGxldCBiYXJXaWR0aCA9IHRoaXMuZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisKKyAgICAgICAg
aWYgKHRvdGFsSXRlbVdpZHRoID4gYmFyV2lkdGgpIHsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKKyAgICAgICAgICAgIHRvdGFsSXRlbVdpZHRo
ID0gcmVjYWxjdWxhdGVJdGVtV2lkdGhzKCk7CisgICAgICAgICAgICBpZiAodG90YWxJdGVtV2lk
dGggPiBiYXJXaWR0aCkgeworICAgICAgICAgICAgICAgIGZvcmNlSXRlbUhpZGRlbih0aGlzLl90
YWJQaWNrZXJUYWJCYXJJdGVtLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdG90YWxJdGVtV2lk
dGggKz0gbWVhc3VyZUl0ZW1XaWR0aCh0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbGV0IHRhYkJhckl0ZW1zID0gdGhpcy5fdGFiQmFySXRl
bXNGcm9tTGVmdFRvUmlnaHQoKTsKKyAgICAgICAgICAgIGxldCBpbmRleCA9IHRhYkJhckl0ZW1z
Lmxlbmd0aDsKKyAgICAgICAgICAgIHdoaWxlICh0b3RhbEl0ZW1XaWR0aCA+IGJhcldpZHRoICYm
IC0taW5kZXggPj0gMCkgeworICAgICAgICAgICAgICAgIGxldCBpdGVtID0gdGFiQmFySXRlbXNb
aW5kZXhdOworICAgICAgICAgICAgICAgIGlmIChpdGVtID09PSB0aGlzLnNlbGVjdGVkVGFiQmFy
SXRlbSB8fCBpdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCAtPSBt
ZWFzdXJlSXRlbVdpZHRoKGl0ZW0pOworICAgICAgICAgICAgICAgIGZvcmNlSXRlbUhpZGRlbihp
dGVtLCB0cnVlKTsKKworICAgICAgICAgICAgICAgIHRoaXMuX2hpZGRlblRhYkJhckl0ZW1zLnB1
c2goaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgiY2FsY3VsYXRlLXdpZHRoIik7CisgICAgfQorCisgICAgLy8g
UHJpdmF0ZQorCisgICAgX3RhYkJhckl0ZW1zRnJvbUxlZnRUb1JpZ2h0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlvdXREaXJl
Y3Rpb24uTFRSID8gdGhpcy5fdGFiQmFySXRlbXMgOiB0aGlzLl90YWJCYXJJdGVtcy5zbGljZSgp
LnJldmVyc2UoKTsKKyAgICB9CisKKyAgICBfZmluZFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5k
ZXgpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIHRhYkJhckl0ZW1PckluZGV4ID09PSAibnVt
YmVyIikKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtc1t0YWJCYXJJdGVtT3JJ
bmRleF0gfHwgbnVsbDsKKworICAgICAgICBpZiAodGFiQmFySXRlbU9ySW5kZXggaW5zdGFuY2Vv
ZiBXSS5UYWJCYXJJdGVtKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fdGFiQmFySXRlbXMuaW5j
bHVkZXModGFiQmFySXRlbU9ySW5kZXgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0YWJCYXJJ
dGVtT3JJbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKwor
ICAgIF9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpCisgICAgeworICAgICAgICBsZXQgbm9ybWFs
VGFiQ291bnQgPSAwOworICAgICAgICBmb3IgKGxldCB0YWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJh
ckl0ZW1zKSB7CisgICAgICAgICAgICBpZiAodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5l
ZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICsr
bm9ybWFsVGFiQ291bnQ7CisgICAgICAgICAgICBpZiAobm9ybWFsVGFiQ291bnQgPj0gMikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBfb3BlbkRlZmF1bHRUYWIoKQorICAgIHsKKyAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFyLkV2ZW50Lk9wZW5EZWZhdWx0VGFi
KTsKKyAgICB9CisKKyAgICBfcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCkKKyAg
ICB7CisgICAgICAgIHZhciB0YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMgPSBuZXcgTWFwOwor
CisgICAgICAgIGNvbnN0IGJhclJlY3QgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk7CisKKyAgICAgICAgZm9yICh2YXIgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVt
cykgeworICAgICAgICAgICAgdmFyIGJvdW5kaW5nUmVjdCA9IHRhYkJhckl0ZW0uZWxlbWVudC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgICAgIHRhYkJhckl0ZW1TaXplc0FuZFBv
c2l0aW9ucy5zZXQodGFiQmFySXRlbSwge2xlZnQ6IGJvdW5kaW5nUmVjdC5sZWZ0IC0gYmFyUmVj
dC5sZWZ0LCB3aWR0aDogYm91bmRpbmdSZWN0LndpZHRofSk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gdGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zOworICAgIH0KKworICAgIF9hcHBs
eVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyh0YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMs
IHNraXBUYWJCYXJJdGVtKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgW3RhYkJhckl0ZW0sIHNp
emVBbmRQb3NpdGlvbl0gb2YgdGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKSB7CisgICAgICAg
ICAgICBpZiAoc2tpcFRhYkJhckl0ZW0gJiYgdGFiQmFySXRlbSA9PT0gc2tpcFRhYkJhckl0ZW0p
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1l
bnQuc3R5bGUubGVmdCA9IHNpemVBbmRQb3NpdGlvbi5sZWZ0ICsgInB4IjsKKyAgICAgICAgICAg
IHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IHNpemVBbmRQb3NpdGlvbi53aWR0aCAr
ICJweCI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQ
b3NpdGlvbnMoc2tpcFRhYkJhckl0ZW0pCisgICAgeworICAgICAgICBmb3IgKHZhciB0YWJCYXJJ
dGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICBpZiAoc2tpcFRhYkJhckl0
ZW0gJiYgdGFiQmFySXRlbSA9PT0gc2tpcFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IG51bGw7
CisgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSBudWxsOworICAg
ICAgICB9CisgICAgfQorCisgICAgX2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlKGJlZm9y
ZVRhYlNpemVzQW5kUG9zaXRpb25zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIpOworICAgICAgICAgICAgdGhp
cy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgPSBmYWxzZTsKKworICAgICAgICAg
ICAgaWYgKCFiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucykKKyAgICAgICAgICAgICAgICBiZWZv
cmVUYWJTaXplc0FuZFBvc2l0aW9ucyA9IHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBv
c2l0aW9ucygpOworCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgi
c3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNB
bmRQb3NpdGlvbnMoKTsKKworICAgICAgICAgICAgdmFyIGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlv
bnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKworICAgICAg
ICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYmVmb3JlVGFiU2l6
ZXNBbmRQb3NpdGlvbnMpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InN0YXRpYy1sYXlvdXQiKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJleHBhbmRpbmctdGFicyIpOworCisgICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlU
YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyk7CisK
KyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJh
bnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmci
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5k
aW5nLXRhYnMiKTsKKworICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVz
QW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwor
CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtp
dFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisKKyAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciByZW1vdmVTdHls
ZXNMaXN0ZW5lciA9IHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpOworCisgICAgICAgICAgICByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CisgICAgICAgIH0uYmlu
ZCh0aGlzKSk7CisgICAgfQorCisgICAgX2hhbmRsZU1vdXNlRG93bihldmVudCkKKyAgICB7Cisg
ICAgICAgIC8vIE9ubHkgY29uc2lkZXIgbGVmdCBtb3VzZSBjbGlja3MgZm9yIHRhYiBtb3ZlbWVu
dC4KKyAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBpdGVtRWxlbWVudCA9IGV2ZW50LnRhcmdl
dC5jbG9zZXN0KCIuIiArIFdJLlRhYkJhckl0ZW0uU3R5bGVDbGFzc05hbWUpOworICAgICAgICBp
ZiAoIWl0ZW1FbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCB0YWJC
YXJJdGVtID0gaXRlbUVsZW1lbnRbV0kuVGFiQmFySXRlbS5FbGVtZW50UmVmZXJlbmNlU3ltYm9s
XTsKKyAgICAgICAgaWYgKCF0YWJCYXJJdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICh0YWJCYXJJdGVtLmRpc2FibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICh0YWJCYXJJdGVtID09PSB0aGlzLl9uZXdUYWJUYWJCYXJJdGVtKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmICh0YWJCYXJJdGVtID09PSB0aGlzLl90YWJQaWNrZXJU
YWJCYXJJdGVtKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2hpZGRlblRhYkJhckl0ZW1zLmxl
bmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9p
Z25vcmVUYWJQaWNrZXJNb3VzZURvd24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICB0aGlzLl9pZ25vcmVUYWJQaWNrZXJNb3VzZURvd24gPSB0cnVlOworCisgICAgICAg
ICAgICBsZXQgY29udGV4dE1lbnUgPSBXSS5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZl
bnQpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYWRkQmVmb3JlU2hvd0NhbGxiYWNrKCgpID0+
IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9pZ25vcmVUYWJQaWNrZXJNb3VzZURvd24gPSBmYWxz
ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMu
X2hpZGRlblRhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShpdGVtLnRpdGxlLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0
VGFiQmFySXRlbShpdGVtLCB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWF0b3JIaW50
OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQ29udGV4dE1lbnUsCisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBsZXQgY2xvc2VCdXR0b25FbGVtZW50ID0gZXZlbnQudGFyZ2V0
LmNsb3Nlc3QoIi4iICsgV0kuVGFiQmFySXRlbS5DbG9zZUJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsK
KyAgICAgICAgaWYgKGNsb3NlQnV0dG9uRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLnNlbGVjdFRhYkJhckl0ZW0odGFiQmFySXRlbSwgeworICAgICAgICAgICAg
aW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLlRhYkNs
aWNrLAorICAgICAgICB9KTsKKworICAgICAgICBpZiAodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJ
LlBpbm5lZFRhYkJhckl0ZW0gfHwgIXRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZmlyc3ROb3JtYWxUYWJJdGVtSW5k
ZXggPSAwOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3RhYkJhckl0ZW1zLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fdGFiQmFySXRlbXNbaV0gaW5zdGFu
Y2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICB0aGlzLl9maXJzdE5vcm1hbFRhYkl0ZW1JbmRleCA9IGk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX21vdXNlSXNEb3duID0gdHJ1ZTsK
KworICAgICAgICB0aGlzLl9tb3VzZU1vdmVkRXZlbnRMaXN0ZW5lciA9IHRoaXMuX2hhbmRsZU1v
dXNlTW92ZWQuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fbW91c2VVcEV2ZW50TGlzdGVuZXIg
PSB0aGlzLl9oYW5kbGVNb3VzZVVwLmJpbmQodGhpcyk7CisKKyAgICAgICAgLy8gUmVnaXN0ZXIg
dGhlc2UgbGlzdGVuZXJzIG9uIHRoZSBkb2N1bWVudCBzbyB3ZSBjYW4gdHJhY2sgdGhlIG1vdXNl
IGlmIGl0IGxlYXZlcyB0aGUgdGFiIGJhci4KKyAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fbW91c2VNb3ZlZEV2ZW50TGlzdGVuZXIsIHRydWUpOwor
ICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5fbW91c2VV
cEV2ZW50TGlzdGVuZXIsIHRydWUpOworCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0KKworICAgIF9oYW5kbGVD
bGljayhldmVudCkKKyAgICB7CisgICAgICAgIHZhciBpdGVtRWxlbWVudCA9IGV2ZW50LnRhcmdl
dC5jbG9zZXN0KCIuIiArIFdJLlRhYkJhckl0ZW0uU3R5bGVDbGFzc05hbWUpOworICAgICAgICBp
ZiAoIWl0ZW1FbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciB0YWJC
YXJJdGVtID0gaXRlbUVsZW1lbnRbV0kuVGFiQmFySXRlbS5FbGVtZW50UmVmZXJlbmNlU3ltYm9s
XTsKKyAgICAgICAgaWYgKCF0YWJCYXJJdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICh0YWJCYXJJdGVtLmRpc2FibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGNvbnN0IGNsaWNrZWRNaWRkbGVCdXR0b24gPSBldmVudC5idXR0b24gPT09IDE7CisKKyAg
ICAgICAgdmFyIGNsb3NlQnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KCIuIiAr
IFdJLlRhYkJhckl0ZW0uQ2xvc2VCdXR0b25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGlmIChj
bG9zZUJ1dHRvbkVsZW1lbnQgfHwgY2xpY2tlZE1pZGRsZUJ1dHRvbikgeworICAgICAgICAgICAg
Ly8gRGlzYWxsb3cgY2xvc2luZyB0aGUgZGVmYXVsdCB0YWIgaWYgaXQgaXMgdGhlIG9ubHkgdGFi
LgorICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0uaXNEZWZhdWx0VGFiICYmIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoInNpbmdsZS10YWIiKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGlmICghZXZlbnQuYWx0S2V5KSB7CisgICAgICAgICAgICAgICAg
bGV0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzRXhwYW5zaW9uOiB0
cnVlLAorICAgICAgICAgICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRh
Yk5hdmlnYXRpb25Jbml0aWF0b3IuVGFiQ2xpY2ssCisgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICB0aGlzLnJlbW92ZVRhYkJhckl0ZW0odGFiQmFySXRlbSwgb3B0aW9ucyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3Ig
KGxldCBpID0gdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAg
ICAgICAgICAgICAgICBsZXQgaXRlbSA9IHRoaXMuX3RhYkJhckl0ZW1zW2ldOworICAgICAgICAg
ICAgICAgIGlmIChpdGVtID09PSB0YWJCYXJJdGVtIHx8IGl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5u
ZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICB0aGlzLnJlbW92ZVRhYkJhckl0ZW0oaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBfaGFuZGxlTW91c2VNb3ZlZChldmVudCkKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX21vdXNlSXNEb3duKTsKKyAgICAgICAgaWYgKCF0aGlzLl9tb3VzZUlzRG93bikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zZWxl
Y3RlZFRhYkJhckl0ZW0pOworICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwor
ICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKworICAgICAgICBpZiAoIXRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSkgeworICAgICAgICAgICAg
dGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnModGhpcy5fcmVjb3JkVGFiQmFy
SXRlbVNpemVzQW5kUG9zaXRpb25zKCkpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlz
Ll9tb3VzZU9mZnNldCA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgdGhpcy5fbW91c2VPZmZz
ZXQgPSBldmVudC5wYWdlWCAtIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnRvdGFs
T2Zmc2V0TGVmdDsKKworICAgICAgICB2YXIgdGFiQmFyTW91c2VPZmZzZXQgPSBldmVudC5wYWdl
WCAtIHRoaXMuZWxlbWVudC50b3RhbE9mZnNldExlZnQ7CisgICAgICAgIHZhciBuZXdMZWZ0ID0g
dGFiQmFyTW91c2VPZmZzZXQgLSB0aGlzLl9tb3VzZU9mZnNldDsKKworICAgICAgICB0aGlzLl9z
ZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbmV3TGVmdCArICJweCI7CisK
KyAgICAgICAgdmFyIHNlbGVjdGVkVGFiTWlkWCA9IG5ld0xlZnQgKyAodGhpcy5fc2VsZWN0ZWRU
YWJCYXJJdGVtLmVsZW1lbnQucmVhbE9mZnNldFdpZHRoIC8gMik7CisKKyAgICAgICAgdmFyIGN1
cnJlbnRJbmRleCA9IHRoaXMuX3RhYkJhckl0ZW1zLmluZGV4T2YodGhpcy5fc2VsZWN0ZWRUYWJC
YXJJdGVtKTsKKyAgICAgICAgdmFyIG5ld0luZGV4ID0gY3VycmVudEluZGV4OworCisgICAgICAg
IGZvciAobGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAg
IGlmICh0YWJCYXJJdGVtID09PSB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHZhciB0YWJCYXJJdGVtUmVjdCA9IHRhYkJh
ckl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKworICAgICAgICAgICAgaWYg
KHNlbGVjdGVkVGFiTWlkWCA8IHRhYkJhckl0ZW1SZWN0LmxlZnQgfHwgc2VsZWN0ZWRUYWJNaWRY
ID4gdGFiQmFySXRlbVJlY3QucmlnaHQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIG5ld0luZGV4ID0gdGhpcy5fdGFiQmFySXRlbXMuaW5kZXhPZih0YWJCYXJJdGVt
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3VidHJhY3Qg
MSBmcm9tIG5vcm1hbFRhYkNvdW50IHNpbmNlIGFycmF5cyBiZWdpbiBpbmRleGluZyBhdCAwLgor
ICAgICAgICBuZXdJbmRleCA9IE51bWJlci5jb25zdHJhaW4obmV3SW5kZXgsIHRoaXMuX2ZpcnN0
Tm9ybWFsVGFiSXRlbUluZGV4LCB0aGlzLm5vcm1hbFRhYkNvdW50IC0gMSk7CisKKyAgICAgICAg
aWYgKGN1cnJlbnRJbmRleCA9PT0gbmV3SW5kZXgpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fdGFiQmFySXRlbXMuc3BsaWNlKGN1cnJlbnRJbmRleCwgMSk7CisgICAgICAg
IHRoaXMuX3RhYkJhckl0ZW1zLnNwbGljZShuZXdJbmRleCwgMCwgdGhpcy5fc2VsZWN0ZWRUYWJC
YXJJdGVtKTsKKworICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tu
ZXdJbmRleCArIDFdOworICAgICAgICBsZXQgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxp
bmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogdGhpcy5fbmV3VGFiVGFiQmFySXRlbS5lbGVtZW50
OworCisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fc2VsZWN0ZWRUYWJC
YXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CisKKyAgICAgICAgLy8gRklYTUU6
IEFuaW1hdGUgdGhlIHRhYnMgdGhhdCBtb3ZlIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHNlbGVjdGVk
IHRhYi4gVGhpcyB3YXMgY2F1c2luZyBtZSB0cm91YmxlIHdoZW4gSSB0cmllZC4KKworICAgICAg
ICBsZXQgbGVmdCA9IDA7CisgICAgICAgIGZvciAobGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFi
QmFySXRlbXNGcm9tTGVmdFRvUmlnaHQoKSkgeworICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0g
IT09IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSAmJiB0YWJCYXJJdGVtICE9PSB0aGlzLl9uZXdU
YWJUYWJCYXJJdGVtICYmIHBhcnNlRmxvYXQodGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQp
ICE9PSBsZWZ0KQorICAgICAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0
ID0gbGVmdCArICJweCI7CisgICAgICAgICAgICBsZWZ0ICs9IHBhcnNlRmxvYXQodGFiQmFySXRl
bS5lbGVtZW50LnN0eWxlLndpZHRoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9oYW5kbGVN
b3VzZVVwKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9u
ID09PSAwKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbW91c2VJc0Rvd24pOworICAg
ICAgICBpZiAoIXRoaXMuX21vdXNlSXNEb3duKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZy10YWIiKTsKKworICAg
ICAgICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyKSB7CisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwor
ICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxldCBsZWZ0ID0gMDsKKyAgICAgICAgICAgIGZv
ciAobGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXNGcm9tTGVmdFRvUmlnaHQoKSkg
eworICAgICAgICAgICAgICAgIGlmICh0YWJCYXJJdGVtID09PSB0aGlzLl9zZWxlY3RlZFRhYkJh
ckl0ZW0pCisgICAgICAgICAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0
ID0gbGVmdCArICJweCI7CisgICAgICAgICAgICAgICAgbGVmdCArPSBwYXJzZUZsb2F0KHRhYkJh
ckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICB0aGlzLl9tb3VzZUlzRG93biA9IGZhbHNlOworICAgICAgICB0aGlzLl9tb3VzZU9m
ZnNldCA9IHVuZGVmaW5lZDsKKworICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVy
KCJtb3VzZW1vdmUiLCB0aGlzLl9tb3VzZU1vdmVkRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisgICAg
ICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9tb3VzZVVw
RXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisKKyAgICAgICAgdGhpcy5fbW91c2VNb3ZlZEV2ZW50TGlz
dGVuZXIgPSBudWxsOworICAgICAgICB0aGlzLl9tb3VzZVVwRXZlbnRMaXN0ZW5lciA9IG51bGw7
CisKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
VGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1zUmVvcmRlcmVkKTsKKyAgICB9CisKKyAgICBfaGFuZGxl
TW91c2VMZWF2ZShldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9tb3VzZUlzRG93biB8
fCAhdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAvLyBUaGlzIGV2ZW50IGNhbiBzdGlsbCBmaXJlIHdoZW4gdGhlIG1vdXNlIGlzIGluc2lk
ZSB0aGUgZWxlbWVudCBpZiBET00gbm9kZXMgYXJlIGFkZGVkLCByZW1vdmVkIG9yIGdlbmVyYWxs
eSBjaGFuZ2UgaW5zaWRlLgorICAgICAgICAvLyBDaGVjayBpZiB0aGUgbW91c2UgcmVhbGx5IGRp
ZCBsZWF2ZSB0aGUgZWxlbWVudCBieSBjaGVja2luZyB0aGUgYm91bmRzLgorICAgICAgICAvLyBG
SVhNRTogSXMgdGhpcyBhIFdlYktpdCBidWcgb3IgY29ycmVjdCBiZWhhdmlvcj8KKyAgICAgICAg
Y29uc3QgYmFyUmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAg
ICAgICAgY29uc3QgbmV3VGFiSXRlbVJlY3QgPSB0aGlzLl9uZXdUYWJUYWJCYXJJdGVtLmVsZW1l
bnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGlmIChldmVudC5wYWdlWSA+IGJh
clJlY3QudG9wICYmIGV2ZW50LnBhZ2VZIDwgYmFyUmVjdC5ib3R0b20gJiYgZXZlbnQucGFnZVgg
PiBiYXJSZWN0LmxlZnQgJiYgZXZlbnQucGFnZVggPCAobmV3VGFiSXRlbVJlY3QgPyBuZXdUYWJJ
dGVtUmVjdC5yaWdodCA6IGJhclJlY3QucmlnaHQpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMuX2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlKCk7CisgICAgfQorCisg
ICAgX2hhbmRsZUNvbnRleHRNZW51KGV2ZW50KQorICAgIHsKKyAgICAgICAgbGV0IGNvbnRleHRN
ZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKKworICAgICAgICBm
b3IgKGxldCB0YWJDbGFzcyBvZiBXSS5rbm93blRhYkNsYXNzZXMoKSkgeworICAgICAgICAgICAg
aWYgKCF0YWJDbGFzcy5pc1RhYkFsbG93ZWQoKSB8fCB0YWJDbGFzcy50YWJJbmZvKCkuaXNFcGhl
bWVyYWwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGxldCBvcGVu
VGFiQmFySXRlbSA9IG51bGw7CisgICAgICAgICAgICBmb3IgKGxldCB0YWJCYXJJdGVtIG9mIHRo
aXMuX3RhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0g
dGFiQmFySXRlbS5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgICAgICAgICBpZiAoISh0YWJD
b250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRWaWV3KSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAodGFiQ29udGVudFZpZXcudHlw
ZSA9PT0gdGFiQ2xhc3MuVHlwZSkgeworICAgICAgICAgICAgICAgICAgICBvcGVuVGFiQmFySXRl
bSA9IHRhYkJhckl0ZW07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hl
Y2tib3hJdGVtKHRhYkNsYXNzLnRhYkluZm8oKS50aXRsZSwgKCkgPT4geworICAgICAgICAgICAg
ICAgIGlmIChvcGVuVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVU
YWJCYXJJdGVtKG9wZW5UYWJCYXJJdGVtKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIFdJLmNyZWF0ZU5ld1RhYldpdGhUeXBlKHRhYkNsYXNzLlR5cGUsIHtzaG91
bGRTaG93TmV3VGFiOiB0cnVlfSk7CisgICAgICAgICAgICB9LCAhIW9wZW5UYWJCYXJJdGVtKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIF9oYW5kbGVOZXdUYWJDbGljayhldmVudCkKKyAgICB7
CisgICAgICAgIGxldCBvcHRpb25zID0ge2luaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFi
TmF2aWdhdGlvbkluaXRpYXRvci5UYWJDbGlja307CisgICAgICAgIFdJLnNob3dOZXdUYWJUYWIo
b3B0aW9ucyk7CisgICAgfQorCisgICAgX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXIoZXZlbnQpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVy
IHx8ICF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikgfHwg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2Uo
KTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTWFpbi5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9NYWluLmNzcwppbmRleCBjOWU3MzgzNGU4NjRhODc4MzBmNDc0ZDYwM2FhYzA3N2Uy
MWQzNWJjLi4xMGNkNjRhNDU1OTA5OTVjZGE0OTAyOTIxZTFiZjk4MTUwM2FmOTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NYWluLmNzcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NYWluLmNzcwpA
QCAtNjQsNiArNjQsMTAgQEAgYm9keSB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFj
a2dyb3VuZC1jb2xvci1jb250ZW50KTsKIH0KIAorYm9keS5kb2NrZWQuYm90dG9tIHsKKyAgICBi
b3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKK30KKwogYm9keS5kb2Nr
ZWQucmlnaHQgewogICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9y
KTsKIH0KQEAgLTEwOSwyMyArMTEzLDEyIEBAIGJvZHkuZG9ja2VkLmxlZnQgI2RvY2tlZC1yZXNp
emVyIHsKICAgICBjdXJzb3I6IGNvbC1yZXNpemU7CiB9CiAKLSN1bmRvY2tlZC10aXRsZS1hcmVh
IHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAwOwot
ICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiB2YXIoLS11bmRvY2tlZC10aXRsZS1hcmVhLWhlaWdo
dCk7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNs
KDAsIDAlLCA5MiUpLCBoc2woMCwgMCUsIDg3JSkpOwotICAgIGJveC1zaGFkb3c6IGluc2V0IGhz
bGEoMCwgMCUsIDEwMCUsIDAuNSkgMCAxcHggMXB4OwotfQotCi1ib2R5LmRvY2tlZCAjdW5kb2Nr
ZWQtdGl0bGUtYXJlYSB7Ci0gICAgZGlzcGxheTogbm9uZTsKK2JvZHkuZG9ja2VkLmJvdHRvbSAj
dG9vbGJhciB7CisgICAgY3Vyc29yOiByb3ctcmVzaXplOwogfQogCi1ib2R5LndpbmRvdy1pbmFj
dGl2ZSAjdW5kb2NrZWQtdGl0bGUtYXJlYSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAs
IDAlLCA5NiUpOwotICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Citib2R5LmRvY2tlZC5ib3R0
b20gI3Rvb2xiYXIgLml0ZW06bm90KC5mbGV4aWJsZS1zcGFjZSkgeworICAgIGN1cnNvcjogZGVm
YXVsdDsKIH0KIAogaW5wdXRbdHlwZT1yYW5nZV0gewpAQCAtMTQ0LDcgKzEzNyw3IEBAIGlucHV0
W3R5cGU9cmFuZ2VdOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7CiAKICNtYWluIHsK
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiBjYWxjKHZhcigtLXVuZG9ja2VkLXRp
dGxlLWFyZWEtaGVpZ2h0KSArIHZhcigtLXRhYi1iYXItaGVpZ2h0KSk7CisgICAgdG9wOiBjYWxj
KHZhcigtLXRvb2xiYXItaGVpZ2h0KSArIHZhcigtLXRhYi1iYXItaGVpZ2h0KSk7CiAgICAgbGVm
dDogMDsKICAgICByaWdodDogMDsKICAgICBib3R0b206IDA7CkBAIC00ODIsMTUgKzQ3NSw2IEBA
IGJvZHlbZGlyPXJ0bF0gW2Rpcj1sdHJdIC5nby10by1hcnJvdyB7CiAgICAgfQogfQogCi1Aa2V5
ZnJhbWVzIHRhYi1iYXItY29uc29sZS1pdGVtLXB1bHNlIHsKLSAgICA1MCUgeyBvcGFjaXR5OiAw
LjY7IH0KLX0KLQotLnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iYXIgOm1hdGNoZXMoLmNvbnNvbGUt
d2FybmluZ3MsIC5jb25zb2xlLWVycm9ycyk6bm90KC5kaXNhYmxlZCkucHVsc2luZyB7Ci0gICAg
YW5pbWF0aW9uLW5hbWU6IHRhYi1iYXItY29uc29sZS1pdGVtLXB1bHNlOwotICAgIGFuaW1hdGlv
bi1kdXJhdGlvbjogMC43NXM7Ci19Ci0KIC5kZXZpY2Utc2V0dGluZ3MtY29udGVudCB7CiAgICAg
cG9zaXRpb246IHJlbGF0aXZlOwogICAgIHBhZGRpbmc6IDAgNHB4OwpAQCAtNTU1LDE1ICs1Mzks
NiBAQCBib2R5W2Rpcj1ydGxdIC5kZXZpY2Utc2V0dGluZ3MtY29udGVudCA+IC5yZWZlcmVuY2Ut
cGFnZS1saW5rLWNvbnRhaW5lciB7CiB9CiAKIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIHsKLSAgICAjdW5kb2NrZWQtdGl0bGUtYXJlYSB7Ci0gICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwgMjYlKSwgaHNsKDAs
IDAlLCAyMyUpKTsKLSAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKLSAgICB9Ci0KLSAgICBib2R5
LndpbmRvdy1pbmFjdGl2ZSAjdW5kb2NrZWQtdGl0bGUtYXJlYSB7Ci0gICAgICAgIGJhY2tncm91
bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3IpOwotICAgIH0KLQogICAgIC5nby10by1h
cnJvdyB7CiAgICAgICAgIGZpbHRlcjogaW52ZXJ0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIu
anMKaW5kZXggMzQzZWQxZGEzMWZiM2MwMjFhOWIxOWExMDkyNTIyMWUyYTk0ZGVmNy4uYTI2OTY4
NmQzOTdjYjIyMmFlMGYwODZkNTA1MTgxNTRmODZlODlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpz
CkBAIC0yNSw3ICsyNSw3IEBACiAKIFdJLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9u
QmFyIGV4dGVuZHMgV0kuVmlldwogewotICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHtyb2xlLCBz
aXplc1RvRml0fSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVt
cywgcm9sZSwgbGFiZWwpCiAgICAgewogICAgICAgICBzdXBlcihlbGVtZW50KTsKIApAQCAtMzQs
NiArMzQsOCBAQCBXSS5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRz
IFdJLlZpZXcKIAogICAgICAgICBpZiAocm9sZSkKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlKTsKKyAgICAgICAgaWYgKGxhYmVsKQorICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxhYmVsKTsKIAogICAg
ICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1cy5i
aW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJibHVyIiwgdGhpcy5fYmx1ci5iaW5kKHRoaXMpLCBmYWxzZSk7CkBAIC00MywxOSArNDUsMjEg
QEAgV0kuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXSS5WaWV3
CiAgICAgICAgIHRoaXMuX21vdXNlTW92ZWRFdmVudExpc3RlbmVyID0gdGhpcy5fbW91c2VNb3Zl
ZC5iaW5kKHRoaXMpOwogICAgICAgICB0aGlzLl9tb3VzZVVwRXZlbnRMaXN0ZW5lciA9IHRoaXMu
X21vdXNlVXAuYmluZCh0aGlzKTsKIAotICAgICAgICB0aGlzLl9zaXplc1RvRml0ID0gc2l6ZXNU
b0ZpdCB8fCBmYWxzZTsKICAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoID0gTmFOOwogICAgICAg
ICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMgPSBbXTsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWROYXZp
Z2F0aW9uSXRlbSA9IG51bGw7CisKKyAgICAgICAgaWYgKG5hdmlnYXRpb25JdGVtcykgeworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICAgICAgdGhpcy5hZGROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbXNb
aV0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgc2l6ZXNU
b0ZpdCgpIHsgcmV0dXJuIHRoaXMuX3NpemVzVG9GaXQ7IH0KLQogICAgIGFkZE5hdmlnYXRpb25J
dGVtKG5hdmlnYXRpb25JdGVtLCBwYXJlbnRFbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuaW5zZXJ0TmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0sIEluZmluaXR5LCBwYXJl
bnRFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0TmF2aWdhdGlvbkl0ZW0obmF2
aWdhdGlvbkl0ZW0sIHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGgsIHBhcmVudEVsZW1lbnQp
OwogICAgIH0KIAogICAgIGluc2VydE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtLCBpbmRl
eCwgcGFyZW50RWxlbWVudCkKQEAgLTY5LDcgKzczLDcgQEAgV0kuTmF2aWdhdGlvbkJhciA9IGNs
YXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgbmF2aWdhdGlvbkl0
ZW0uZGlkQXR0YWNoKHRoaXMpOwogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFpc0Zpbml0ZShp
bmRleCkgfHwgKGluZGV4ID49IDAgJiYgaW5kZXggPD0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxl
bmd0aCkpOworICAgICAgICBjb25zb2xlLmFzc2VydChpbmRleCA+PSAwICYmIGluZGV4IDw9IHRo
aXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGgpOwogICAgICAgICBpbmRleCA9IE1hdGgubWF4KDAs
IE1hdGgubWluKGluZGV4LCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoKSk7CiAKICAgICAg
ICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLnNwbGljZShpbmRleCwgMCwgbmF2aWdhdGlvbkl0ZW0p
OwpAQCAtMTY0LDYgKzE2OCwxMiBAQCBXSS5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlv
bkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgcmV0dXJuIHRoaXMuX21pbmltdW1XaWR0aDsK
ICAgICB9CiAKKyAgICBnZXQgc2l6ZXNUb0ZpdCgpCisgICAgeworICAgICAgICAvLyBDYW4gYmUg
b3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CiAgICAgZmluZE5hdmlnYXRpb25JdGVtKGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBmdW5j
dGlvbiBtYXRjaGluZ1NlbGZPckNoaWxkKGl0ZW0pIHsKQEAgLTIxNCw3ICsyMjQsNyBAQCBXSS5O
YXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAg
ICAgICAgIGl0ZW0udXBkYXRlKHtleHBhbmRPbmx5OiB0cnVlfSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAodGhpcy5fc2l6ZXNUb0ZpdCkKKyAgICAgICAgaWYgKHRoaXMuc2l6ZXNUb0ZpdCkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgdmlzaWJsZU5hdmlnYXRpb25JdGVt
cyA9IHRoaXMuX3Zpc2libGVOYXZpZ2F0aW9uSXRlbXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrRGV0YWlsVmlldy5jc3MgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrRGV0YWlsVmll
dy5jc3MKaW5kZXggYzAyZWNiODY2ZTQ0MTM4NGZkYTk4ZDYwMTJkM2M3NmQyNDk3MzYyYS4uYmVh
NTY4ZjRmNDM0Yzk1YWU2YTg2OWJiOTU2NWRlMDkxZGJkMTNkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya0RldGFpbFZpZXcuY3Nz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtE
ZXRhaWxWaWV3LmNzcwpAQCAtMjgsNyArMjgsNyBAQAogICAgIHRvcDogMDsKICAgICBsZWZ0OiAw
OwogICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTogdmFyKC0tbmV0d29yay1zdGF0aXN0aWNzLWhl
aWdodCk7CisgICAgYm90dG9tOiAwOwogICAgIC8qIGxlZnQgb3IgcmlnaHQgc2V0IGJ5IE5ldHdv
cmtUYWJsZVZpZXcgb24gZGlzcGxheSAvIHJlc2l6ZSAqLwogICAgIHotaW5kZXg6IDEwOwogICAg
IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3
LmpzCmluZGV4IDY1MTEwYWNhMjMyNDg0ZmRlYmNmM2ZlOTJjYzE0NzcxYzUwMWM1MTcuLmIwZTNh
MzAxODlkZjg5NmE1ODc0ZjkwZWZjNjczM2Y5MGMwYjA1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3Jr
VGFiQ29udGVudFZpZXcuanMKQEAgLTI1LDkgKzI1LDExIEBACiAKIFdJLk5ldHdvcmtUYWJDb250
ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRl
bnRWaWV3CiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIp
CiAgICAgewotICAgICAgICBzdXBlcihOZXR3b3JrVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsK
KyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5m
byhXSS5OZXR3b3JrVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKworICAgICAgICBzdXBlcihp
ZGVudGlmaWVyIHx8ICJuZXR3b3JrIiwgIm5ldHdvcmsiLCB0YWJCYXJJdGVtKTsKIAogICAgICAg
ICB0aGlzLl9uZXR3b3JrVGFibGVDb250ZW50VmlldyA9IG5ldyBXSS5OZXR3b3JrVGFibGVDb250
ZW50VmlldzsKIApAQCAtNDgsNyArNTAsNiBAQCBXSS5OZXR3b3JrVGFiQ29udGVudFZpZXcgPSBj
bGFzcyBOZXR3b3JrVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmlldwogICAg
IHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBp
ZGVudGlmaWVyOiBOZXR3b3JrVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgICAgIGltYWdl
OiAiSW1hZ2VzL05ldHdvcmsuc3ZnIiwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygi
TmV0d29yayIpLAogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuY3NzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZp
ZXcuY3NzCmluZGV4IGI0ZjBkZWI2YzcyZmRjODNiOTMyNWE1ZmQ4NmNhMTZlNjYwNTEyMjYuLmI0
ZmRiMTJkNjY1NTEzNDAyZTYwM2YwM2U4ZTkxNGUwNmJkODc0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRW
aWV3LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9O
ZXR3b3JrVGFibGVDb250ZW50Vmlldy5jc3MKQEAgLTM2LDEyICszNiw3IEBACiAgICAgY29udGVu
dDogdXJsKC4uL0ltYWdlcy9OZXR3b3JrSEFSLnN2Zyk7CiB9CiAKLS5jb250ZW50LXZpZXcubmV0
d29yayAubmV0d29yay10YWJsZSB7Ci0gICAgZGlzcGxheTogZmxleDsKLSAgICBmbGV4LWRpcmVj
dGlvbjogY29sdW1uOwotfQotCi0uY29udGVudC12aWV3Lm5ldHdvcmsgLm5ldHdvcmstdGFibGUg
PiAudGFibGUgLmljb24geworLmNvbnRlbnQtdmlldy5uZXR3b3JrIC5uZXR3b3JrLXRhYmxlIC5p
Y29uIHsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgd2lkdGg6IDE2cHg7CiAgICAgaGVp
Z2h0OiAxNnB4OwpAQCAtNTAsMTkgKzQ1LDE1IEBACiAgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiA0
cHg7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIGxpOm5vdCguc2VsZWN0ZWQpIC5jZWxs
Om5vdCguY3VycmVudC1zZXNzaW9uKSB7Ci0gICAgb3BhY2l0eTogMC41OwotfQotCi0ubmV0d29y
ay10YWJsZSA+IC50YWJsZSBsaTpub3QoLmZpbGxlcikgLmNlbGwubmFtZSB7CisubmV0d29yay10
YWJsZSBsaTpub3QoLmZpbGxlcikgLmNlbGwubmFtZSB7CiAgICAgY3Vyc29yOiBwb2ludGVyOwog
fQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5pY29uIHsK
Ky5uZXR3b3JrLXRhYmxlIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmljb24gewogICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvRE9NRWxlbWVudC5zdmcpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50
YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlIHsKKy5uZXR3b3JrLXRhYmxlIC5j
ZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUgewogICAgIHdpZHRoOiAxM3B4OwogICAgIGhl
aWdodDogMTNweDsKICAgICB2ZXJ0aWNhbC1hbGlnbjogLTJweDsKQEAgLTcxLDExMiArNjIsMTEy
IEBACiAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKIH0KIAotYm9keVtkaXI9cnRs
XSAubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJl
IHsKK2JvZHlbZGlyPXJ0bF0gLm5ldHdvcmstdGFibGUgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlz
Y2xvc3VyZSB7CiAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogfQogCi0ubmV0d29yay10YWJs
ZSA+IC50YWJsZTpmb2N1cyBsaS5zZWxlY3RlZCAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9z
dXJlIHsKKy5uZXR3b3JrLXRhYmxlOmZvY3VzIGxpLnNlbGVjdGVkIC5jZWxsLmRvbS1ub2RlLm5h
bWUgLmRpc2Nsb3N1cmUgewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvRGlzY2xvc3VyZVRy
aWFuZ2xlcy5zdmcjY2xvc2VkLXNlbGVjdGVkKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFi
bGUgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlzY2xvc3VyZS5leHBhbmRlZCB7CisubmV0d29yay10
YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlLmV4cGFuZGVkIHsKICAgICBjb250
ZW50OiB1cmwoLi4vSW1hZ2VzL0Rpc2Nsb3N1cmVUcmlhbmdsZXMuc3ZnI29wZW4tbm9ybWFsKTsK
IH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGU6Zm9jdXMgbGkuc2VsZWN0ZWQgLmNlbGwuZG9t
LW5vZGUubmFtZSAuZGlzY2xvc3VyZS5leHBhbmRlZCB7CisubmV0d29yay10YWJsZTpmb2N1cyBs
aS5zZWxlY3RlZCAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlLmV4cGFuZGVkIHsKICAg
ICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0Rpc2Nsb3N1cmVUcmlhbmdsZXMuc3ZnI29wZW4tc2Vs
ZWN0ZWQpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZS5ncm91cGVkIC5kYXRhLWNvbnRh
aW5lciAuY2VsbC5uYW1lIHsKKy5uZXR3b3JrLXRhYmxlLmdyb3VwZWQgLmRhdGEtY29udGFpbmVy
IC5jZWxsLm5hbWUgewogICAgIC0taXRlbS1wYWRkaW5nLXN0YXJ0OiAxOXB4OwogICAgIC0taXRl
bS1kaXNjbG9zdXJlLXdpZHRoOiAxMXB4OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZS5n
cm91cGVkIC5kYXRhLWNvbnRhaW5lciAuY2VsbDpub3QoLnBhcmVudCkubmFtZSB7CisubmV0d29y
ay10YWJsZS5ncm91cGVkIC5kYXRhLWNvbnRhaW5lciAuY2VsbDpub3QoLnBhcmVudCkubmFtZSB7
CiAgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiB2YXIoLS1pdGVtLXBhZGRpbmctc3RhcnQpOwog
fQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZS5ncm91cGVkIC5kYXRhLWNvbnRhaW5lciAuY2Vs
bC5jaGlsZC5uYW1lIHsKKy5uZXR3b3JrLXRhYmxlLmdyb3VwZWQgLmRhdGEtY29udGFpbmVyIC5j
ZWxsLmNoaWxkLm5hbWUgewogICAgIC13ZWJraXQtcGFkZGluZy1zdGFydDogY2FsYyh2YXIoLS1p
dGVtLXBhZGRpbmctc3RhcnQpICsgdmFyKC0taXRlbS1kaXNjbG9zdXJlLXdpZHRoKSk7CiB9CiAK
LS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5kYXRhLWNvbnRhaW5lciAuY2VsbC5uYW1lIC5yYW5n
ZSB7CisubmV0d29yay10YWJsZSAuZGF0YS1jb250YWluZXIgLmNlbGwubmFtZSAucmFuZ2Ugewog
ICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC43KTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAu
dGFibGUgLmRhdGEtY29udGFpbmVyIC5jZWxsLm5hbWUgLnJhbmdlOjpiZWZvcmUgeworLm5ldHdv
cmstdGFibGUgLmRhdGEtY29udGFpbmVyIC5jZWxsLm5hbWUgLnJhbmdlOjpiZWZvcmUgewogICAg
IGNvbnRlbnQ6ICJcMDBBMFwyMDE0XDAwQTAiOyAvKiAmbmJzcDsmbWRhc2g7Jm5ic3A7ICovOwog
fQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZTpmb2N1cyAuZGF0YS1jb250YWluZXIgbGkuc2Vs
ZWN0ZWQgLmNlbGwubmFtZSAucmFuZ2UgeworLm5ldHdvcmstdGFibGU6Zm9jdXMgLmRhdGEtY29u
dGFpbmVyIGxpLnNlbGVjdGVkIC5jZWxsLm5hbWUgLnJhbmdlIHsKICAgICBjb2xvcjogaHNsYSgw
LCAwJSwgMTAwJSwgMC45KTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgbGk6bm90KC5z
ZWxlY3RlZCkgLmNlbGw6bWF0Y2hlcyguY2FjaGUtdHlwZSwgLm11bHRpcGxlKSB7CisubmV0d29y
ay10YWJsZSBsaTpub3QoLnNlbGVjdGVkKSAuY2VsbDptYXRjaGVzKC5jYWNoZS10eXBlLCAubXVs
dGlwbGUpIHsKICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvci1ncmF5LW1lZGl1bSk7CiB9CiAK
LS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5lcnJvciB7CisubmV0d29yay10YWJsZSAuZXJyb3Ig
ewogICAgIGNvbG9yOiB2YXIoLS1lcnJvci10ZXh0LWNvbG9yKTsKIH0KIAotLm5ldHdvcmstdGFi
bGUgPiAudGFibGUgLmNlbGwuZG9tYWluID4gLmxvY2sgeworLm5ldHdvcmstdGFibGUgLmNlbGwu
ZG9tYWluID4gLmxvY2sgewogICAgIHdpZHRoOiA4cHg7CiAgICAgaGVpZ2h0OiAxMHB4OwogICAg
IGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvTG9ja2VkLnN2Zyk7CiAgICAgLXdlYmtpdC1tYXJnaW4t
ZW5kOiA1cHg7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIGxpLnNlbGVjdGVkIC5jZWxs
LmRvbWFpbiA+IC5sb2NrIHsKKy5uZXR3b3JrLXRhYmxlIGxpLnNlbGVjdGVkIC5jZWxsLmRvbWFp
biA+IC5sb2NrIHsKICAgICAvKiBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE4OTc3Mz4g
V2ViIEluc3BlY3RvcjogY3JlYXRlIHNwZWNpYWwgTmV0d29yayB3YXRlcmZhbGwgZm9yIG1lZGlh
IGV2ZW50cyAqLwogICAgIGZpbHRlcjogaW52ZXJ0KCk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4g
LnRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIHsKKy5uZXR3b3JrLXRhYmxlIC5jZWxsLm5hbWUg
PiAuc3RhdHVzIHsKICAgICAtd2Via2l0LW1hcmdpbi1zdGFydDogNHB4OwogfQogCi1ib2R5W2Rp
cj1sdHJdIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIHsKK2Jv
ZHlbZGlyPWx0cl0gLm5ldHdvcmstdGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgewogICAgIGZs
b2F0OiByaWdodDsKIH0KIAotYm9keVtkaXI9cnRsXSAubmV0d29yay10YWJsZSA+IC50YWJsZSAu
Y2VsbC5uYW1lID4gLnN0YXR1cyB7Citib2R5W2Rpcj1ydGxdIC5uZXR3b3JrLXRhYmxlIC5jZWxs
Lm5hbWUgPiAuc3RhdHVzIHsKICAgICBmbG9hdDogbGVmdDsKIH0KIAotLm5ldHdvcmstdGFibGUg
PiAudGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgLmluZGV0ZXJtaW5hdGUtcHJvZ3Jlc3Mtc3Bp
bm5lciB7CisubmV0d29yay10YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyAuaW5kZXRlcm1pbmF0
ZS1wcm9ncmVzcy1zcGlubmVyIHsKICAgICBtYXJnaW4tdG9wOiAzcHg7CiAgICAgd2lkdGg6IDE0
cHg7CiAgICAgaGVpZ2h0OiAxNHB4OwogfQogCi0ubmV0d29yay10YWJsZS5zaG93aW5nLWRldGFp
bCA+IC50YWJsZSAuY2VsbDpub3QoLm5hbWUpIHsKKy5zaG93aW5nLWRldGFpbCAubmV0d29yay10
YWJsZSAuY2VsbDpub3QoLm5hbWUpIHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCi0ubmV0d29y
ay10YWJsZS5zaG93aW5nLWRldGFpbCA+IC50YWJsZSAucmVzaXplcjpub3QoOmZpcnN0LW9mLXR5
cGUpIHsKKy5zaG93aW5nLWRldGFpbCAubmV0d29yay10YWJsZSAucmVzaXplcjpub3QoOmZpcnN0
LW9mLXR5cGUpIHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCi0ubmV0d29yay10YWJsZS5zaG93
aW5nLWRldGFpbCA+IC50YWJsZSAudGltZWxpbmUtcnVsZXIgeworLnNob3dpbmctZGV0YWlsIC5u
ZXR3b3JrLXRhYmxlIC50aW1lbGluZS1ydWxlciB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAot
Lm5ldHdvcmstdGFibGUgPiAudGFibGUgLmhlYWRlciAuY2VsbC53YXRlcmZhbGwgeworLm5ldHdv
cmstdGFibGUgLmhlYWRlciAuY2VsbC53YXRlcmZhbGwgewogICAgIC8qIEhpZGUgdGhlIGxhYmVs
IGZvciB0aGlzIGNvbHVtbi4gKi8KICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiB9CiAKLS5uZXR3
b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGw6Zmlyc3Qtb2YtdHlwZSB7Cisu
bmV0d29yay10YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsOmZpcnN0LW9mLXR5cGUgewogICAgIGJh
Y2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wNyk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRh
YmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIHsKKy5uZXR3b3JrLXRhYmxlIDpub3Qo
LmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAg
aGVpZ2h0OiAyMHB4OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIp
IC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciB7CisubmV0d29yay10YWJsZSA6
bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciB7CiAgICAg
cG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMDsKICAgICBsZWZ0OiAwOwpAQCAtMTg0LDcg
KzE3NSw3IEBAIGJvZHlbZGlyPXJ0bF0gLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwubmFt
ZSA+IC5zdGF0dXMgewogICAgIGJvdHRvbTogMDsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFi
bGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAu
ZG9tLWV2ZW50IHsKKy5uZXR3b3JrLXRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxs
IC53YXRlcmZhbGwtY29udGFpbmVyID4gLmRvbS1ldmVudCB7CiAgICAgcG9zaXRpb246IGFic29s
dXRlOwogICAgIHRvcDogY2FsYyg1MCUgLSAodmFyKC0tbm9kZS13YXRlcmZhbGwtZG9tLWV2ZW50
LXNpemUpIC8gMikpOwogICAgIG1pbi13aWR0aDogdmFyKC0tbm9kZS13YXRlcmZhbGwtZG9tLWV2
ZW50LXNpemUpOwpAQCAtMTkzLDE3ICsxODQsMTcgQEAgYm9keVtkaXI9cnRsXSAubmV0d29yay10
YWJsZSA+IC50YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyB7CiAgICAgYm9yZGVyLXJhZGl1czog
Y2FsYyh2YXIoLS1ub2RlLXdhdGVyZmFsbC1kb20tZXZlbnQtc2l6ZSkgLyAyKTsKIH0KIAotLm5l
dHdvcmstdGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVy
ZmFsbC1jb250YWluZXIgPiAuZG9tLWFjdGl2aXR5IHsKKy5uZXR3b3JrLXRhYmxlIDpub3QoLmhl
YWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmRvbS1hY3Rpdml0
eSB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogY2FsYyg1MCUgLSAwLjVweCk7
CiAgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zZWxlY3RlZC1iYWNrZ3JvdW5kLWNv
bG9yLWFjdGl2ZSk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikg
LmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmRvbS1hY3Rpdml0eS5wbGF5
aW5nIHsKKy5uZXR3b3JrLXRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRl
cmZhbGwtY29udGFpbmVyID4gLmRvbS1hY3Rpdml0eS5wbGF5aW5nIHsKICAgICBib3JkZXItdG9w
LXN0eWxlOiBzb2xpZDsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVy
KSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuYXJlYSB7CisubmV0d29y
ay10YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5l
ciA+IC5hcmVhIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiB2YXIoLS1hcmVh
LXBhZGRpbmcpOwogICAgIGhlaWdodDogY2FsYygxMDAlIC0gKHZhcigtLWFyZWEtcGFkZGluZykg
KiAyKSk7CkBAIC0yMTIsMjIgKzIwMywyMiBAQCBib2R5W2Rpcj1ydGxdIC5uZXR3b3JrLXRhYmxl
ID4gLnRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIHsKICAgICAtLWFyZWEtcGFkZGluZzogY2Fs
YygoNTAlIC0gKHZhcigtLW5vZGUtd2F0ZXJmYWxsLWRvbS1ldmVudC1zaXplKSAvIDIpKSAvIDIp
OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVy
ZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5hcmVhLmRvbS1mdWxsc2NyZWVuIHsKKy5uZXR3
b3JrLXRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFp
bmVyID4gLmFyZWEuZG9tLWZ1bGxzY3JlZW4gewogICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgw
LCAwJSwgNDAlKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAu
Y2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuYXJlYS5wb3dlci1lZmZpY2ll
bnQtcGxheWJhY2sgeworLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZh
bGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuYXJlYS5wb3dlci1lZmZpY2llbnQtcGxheWJhY2sg
ewogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldHdvcmstcmVxdWVzdC1jb2xvcik7CiB9
CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC50aW1lbGluZS1ydWxlciB7CisubmV0d29yay10
YWJsZSAudGltZWxpbmUtcnVsZXIgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6
IDA7CiAgICAgYm90dG9tOiAwOwogICAgIG92ZXJmbG93OiBoaWRkZW47CiB9CiAKLS5uZXR3b3Jr
LXRhYmxlID4gLnRhYmxlIC50aW1lbGluZS1ydWxlciA+IC5oZWFkZXIgeworLm5ldHdvcmstdGFi
bGUgLnRpbWVsaW5lLXJ1bGVyID4gLmhlYWRlciB7CiAgICAgdG9wOiBjYWxjKHZhcigtLW5hdmln
YXRpb24tYmFyLWhlaWdodCkgLSB2YXIoLS10aW1lbGluZS1ydWxlci1oZWlnaHQpKTsKIH0KIApA
QCAtMjYwLDExMCArMjUxLDc2IEBAIGJvZHlbZGlyPXJ0bF0gLndhdGVyZmFsbCAuYmxvY2sgewog
ICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YXIoLS1zdGFydC1yYWRpdXMpOwogfQog
Ci0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jayArIC5ibG9jayB7Cisu
bmV0d29yay10YWJsZSAud2F0ZXJmYWxsIC5ibG9jayArIC5ibG9jayB7CiAgICAgLS1zdGFydC1y
YWRpdXM6IDA7CiAgICAgLS1lbmQtcmFkaXVzOiAwOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50
YWJsZSAud2F0ZXJmYWxsIC5ibG9jazptYXRjaGVzKC5tb3VzZS10cmFja2luZywgLmZpbGxlcikg
KyAuYmxvY2s6bm90KC5tb3VzZS10cmFja2luZywgLmZpbGxlciksCi0ubmV0d29yay10YWJsZSA+
IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jazpub3QoLnJlcXVlc3QsIC5yZXNwb25zZSkgKyA6bWF0
Y2hlcygucmVxdWVzdCwgLnJlc3BvbnNlKSB7CisubmV0d29yay10YWJsZSAud2F0ZXJmYWxsIC5i
bG9jazptYXRjaGVzKC5tb3VzZS10cmFja2luZywgLmZpbGxlcikgKyAuYmxvY2s6bm90KC5tb3Vz
ZS10cmFja2luZywgLmZpbGxlciksCisubmV0d29yay10YWJsZSAud2F0ZXJmYWxsIC5ibG9jazpu
b3QoLnJlcXVlc3QsIC5yZXNwb25zZSkgKyA6bWF0Y2hlcygucmVxdWVzdCwgLnJlc3BvbnNlKSB7
CiAgICAgLS1zdGFydC1yYWRpdXM6IDJweDsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUg
LndhdGVyZmFsbCAuYmxvY2s6bGFzdC1jaGlsZCB7CisubmV0d29yay10YWJsZSAud2F0ZXJmYWxs
IC5ibG9jazpsYXN0LWNoaWxkIHsKICAgICAtLWVuZC1yYWRpdXM6IDJweDsKIH0KIAotLm5ldHdv
cmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2sucmVxdWVzdCwKLS5uZXR3b3JrLXRh
YmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLnJlc3BvbnNlIHsKKy53YXRlcmZhbGwgLmJs
b2NrLnJlcXVlc3QsCisud2F0ZXJmYWxsIC5ibG9jay5yZXNwb25zZSB7CiAgICAgdG9wOiAzcHg7
CiAgICAgaGVpZ2h0OiAxNHB4OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJm
YWxsIC5ibG9jay5tb3VzZS10cmFja2luZyB7Cisud2F0ZXJmYWxsIC5ibG9jay5tb3VzZS10cmFj
a2luZyB7CiAgICAgdG9wOiAxcHg7CiAgICAgei1pbmRleDogMjsKICAgICBoZWlnaHQ6IDE4cHg7
CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLmZpbGxlciB7
Cisud2F0ZXJmYWxsIC5ibG9jay5maWxsZXIgewogICAgIHRvcDogOXB4OwogICAgIGhlaWdodDog
MnB4OwogICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleTsKIH0KIAotLm5ldHdvcmstdGFi
bGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2sucmVkaXJlY3QgeworLndhdGVyZmFsbCAuYmxv
Y2sucmVkaXJlY3QgewogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldHdvcmstcmVkaXJl
Y3QtY29sb3IpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9j
ay5xdWV1ZSB7Cisud2F0ZXJmYWxsIC5ibG9jay5xdWV1ZSB7CiAgICAgYmFja2dyb3VuZC1jb2xv
cjogdmFyKC0tbmV0d29yay1xdWV1ZS1jb2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRh
YmxlIC53YXRlcmZhbGwgLmJsb2NrLmRucyB7Cisud2F0ZXJmYWxsIC5ibG9jay5kbnMgewogICAg
IGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldHdvcmstZG5zLWNvbG9yKTsKIH0KIAotLm5ldHdv
cmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2suY29ubmVjdCB7Cisud2F0ZXJmYWxs
IC5ibG9jay5jb25uZWN0IHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXR3b3JrLWNv
bm5lY3QtY29sb3IpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5i
bG9jay5zZWN1cmUgeworLndhdGVyZmFsbCAuYmxvY2suc2VjdXJlIHsKICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB2YXIoLS1uZXR3b3JrLXNlY3VyZS1jb2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxl
ID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLnJlcXVlc3QgeworLndhdGVyZmFsbCAuYmxvY2su
cmVxdWVzdCB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV0d29yay1yZXF1ZXN0LWNv
bG9yKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2sucmVz
cG9uc2UgeworLndhdGVyZmFsbCAuYmxvY2sucmVzcG9uc2UgewogICAgIGJhY2tncm91bmQtY29s
b3I6IHZhcigtLW5ldHdvcmstcmVzcG9uc2UtY29sb3IpOwogfQogCi0ubmV0d29yay10YWJsZSA+
IC5zdGF0aXN0aWNzIHsKLSAgICBkaXNwbGF5OiBmbGV4OwotICAgIGp1c3RpZnktY29udGVudDog
Y2VudGVyOwotICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAgbWluLWhlaWdodDogdmFyKC0t
bmV0d29yay1zdGF0aXN0aWNzLWhlaWdodCk7Ci0gICAgcGFkZGluZzogNHB4IDA7Ci0gICAgYm9y
ZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7Ci19Ci0KLS5uZXR3b3JrLXRh
YmxlID4gLnN0YXRpc3RpY3MgPiAuc3RhdGlzdGljIHsKLSAgICBkaXNwbGF5OiBmbGV4OwotICAg
IHBhZGRpbmc6IDAgOHB4OwotfQotCi0ubmV0d29yay10YWJsZSA+IC5zdGF0aXN0aWNzID4gLnN0
YXRpc3RpY1toaWRkZW5dIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0ubmV0d29yay10YWJs
ZSA+IC5zdGF0aXN0aWNzID4gLnN0YXRpc3RpYyA+IC5pY29uIHsKLSAgICB3aWR0aDogMTZweDsK
LSAgICBoZWlnaHQ6IDE2cHg7Ci19Ci0KLS5uZXR3b3JrLXRhYmxlID4gLnN0YXRpc3RpY3MgPiAu
c3RhdGlzdGljID4gLnRleHQgewotICAgIHBhZGRpbmctdG9wOiAxcHg7Ci0gICAgLXdlYmtpdC1w
YWRkaW5nLXN0YXJ0OiA0cHg7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogYWxsOwotfQotCiBA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgLmNvbnRlbnQtdmlldy50
YWIubmV0d29yayA+IC5jb250ZW50LWJyb3dzZXIgPiAubmF2aWdhdGlvbi1iYXIgLmhpZXJhcmNo
aWNhbC1wYXRoIC5pY29uIHsKICAgICAgICAgZmlsdGVyOiBpbnZlcnQoODglKTsKICAgICB9CiAK
LSAgICAubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5kb21haW4gPiAubG9jayB7CisgICAg
Lm5ldHdvcmstdGFibGUgLmNlbGwuZG9tYWluID4gLmxvY2sgewogICAgICAgICBmaWx0ZXI6IHZh
cigtLWZpbHRlci1pbnZlcnQpOwogICAgIH0KIAotICAgIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
IC5kYXRhLWNvbnRhaW5lciAuY2VsbC5uYW1lIC5yYW5nZSB7CisgICAgLm5ldHdvcmstdGFibGUg
LmRhdGEtY29udGFpbmVyIC5jZWxsLm5hbWUgLnJhbmdlIHsKICAgICAgICAgY29sb3I6IHZhcigt
LXRleHQtY29sb3Itc2Vjb25kYXJ5KTsKICAgICB9Ci0KLSAgICAubmV0d29yay10YWJsZSA+IC5z
dGF0aXN0aWNzID4gLnN0YXRpc3RpYy5kb21haW4tY291bnQgPiAuaWNvbiB7Ci0gICAgICAgIGZp
bHRlcjogaW52ZXJ0KCk7Ci0gICAgICAgIG9wYWNpdHk6IDAuNzsKLSAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFi
bGVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzCmluZGV4IDRlODM3ZmEwYWM0ZDE5ZGY3ODM5
Yzk2YTYwODhjNGU2NWIxN2Y5NzQuLmIyY2UyYTllNGQyYjg5OTJkYTZiYjE3NzcxYjlhNjM4ZjE4
NGNmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzCkBAIC01Niwx
MCArNTYsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJs
ZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICAvLyBGSVhNRTogTmV0
d29yayBUaW1lbGluZS4KICAgICAgICAgLy8gRklYTUU6IFRocm90dGxpbmcuCiAKLSAgICAgICAg
dGhpcy5fc3RhdGlzdGljcyA9IHt9OwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJuZXR3b3JrLXRhYmxlIik7Ci0KICAgICAgICAgdGhpcy5fdHlwZUZpbHRlclNjb3BlQmFy
SXRlbUFsbCA9IG5ldyBXSS5TY29wZUJhckl0ZW0oIm5ldHdvcmstdHlwZS1maWx0ZXItYWxsIiwg
V0kuVUlTdHJpbmcoIkFsbCIpLCB7ZXhjbHVzaXZlOiB0cnVlfSk7CiAgICAgICAgIGxldCB0eXBl
RmlsdGVyU2NvcGVCYXJJdGVtcyA9IFt0aGlzLl90eXBlRmlsdGVyU2NvcGVCYXJJdGVtQWxsXTsK
IApAQCAtMTY4LDcgKzE2NCw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3Mg
TmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIFdJ
LkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdhc0FkZGVk
LCB0aGlzLl9oYW5kbGVGcmFtZVdhc0FkZGVkLCB0aGlzKTsKICAgICAgICAgV0kuUmVzb3VyY2Uu
YWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmluaXNoLCB0aGlz
Ll9yZXNvdXJjZUxvYWRpbmdEaWRGaW5pc2gsIHRoaXMpOwogICAgICAgICBXSS5SZXNvdXJjZS5h
ZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGYWlsLCB0aGlzLl9y
ZXNvdXJjZUxvYWRpbmdEaWRGYWlsLCB0aGlzKTsKLSAgICAgICAgV0kuUmVzb3VyY2UuYWRkRXZl
bnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5TaXplRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVS
ZXNvdXJjZVNpemVEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBXSS5SZXNvdXJjZS5hZGRFdmVu
dExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LlRyYW5zZmVyU2l6ZURpZENoYW5nZSwgdGhpcy5f
cmVzb3VyY2VUcmFuc2ZlclNpemVEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBXSS5uZXR3b3Jr
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50Lk1haW5GcmFt
ZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzKTsKIApAQCAtMzA5LDEx
ICszMDQsOCBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJs
ZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogCiAgICAgcmVzZXQoKQogICAgIHsK
LSAgICAgICAgdGhpcy5fcnVuRm9yTWFpbkNvbGxlY3Rpb24oKGNvbGxlY3Rpb24sIHdhc01haW4p
ID0+IHsKKyAgICAgICAgdGhpcy5fcnVuRm9yTWFpbkNvbGxlY3Rpb24oKGNvbGxlY3Rpb24pID0+
IHsKICAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29sbGVjdGlvbihjb2xsZWN0aW9uKTsKLQotICAg
ICAgICAgICAgaWYgKHdhc01haW4pCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlz
dGljcygpOwogICAgICAgICB9KTsKIAogICAgICAgICBmb3IgKGxldCBkZXRhaWxWaWV3IG9mIHRo
aXMuX2RldGFpbFZpZXdNYXAudmFsdWVzKCkpCkBAIC00NTAsOCArNDQyLDYgQEAgV0kuTmV0d29y
a1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRWaWUKICAgICB7CiAgICAgICAgIGxldCBlbnRyeSA9IHRoaXMuX2FjdGl2ZUNv
bGxlY3Rpb24uZmlsdGVyZWRFbnRyaWVzW3Jvd0luZGV4XTsKIAotICAgICAgICBjZWxsLmNsYXNz
TGlzdC50b2dnbGUoImN1cnJlbnQtc2Vzc2lvbiIsIGVudHJ5LmN1cnJlbnRTZXNzaW9uKTsKLQog
ICAgICAgICBpZiAoZW50cnkucmVzb3VyY2UpCiAgICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC50
b2dnbGUoImVycm9yIiwgZW50cnkucmVzb3VyY2UuaGFkTG9hZGluZ0Vycm9yKCkpOwogCkBAIC02
MTEsNyArNjAxLDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3Jr
VGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgdGhpcy5fdXBk
YXRlRmlsdGVyZWRFbnRyaWVzKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVdhdGVyZmFsbFRpbWVs
aW5lUnVsZXIoKTsKICAgICAgICAgdGhpcy5fcmVsb2FkVGFibGUoKTsKLSAgICAgICAgdGhpcy5f
dXBkYXRlU3RhdGlzdGljcygpOwogICAgICAgICB0aGlzLl9oaWRlRGV0YWlsVmlldygpOwogCiAg
ICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKQEAgLTEyNDksMzEgKzEyMzgsNiBAQCBXSS5OZXR3
b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFZpZQogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRo
aXMuX3RhYmxlKTsKLQotICAgICAgICBsZXQgc3RhdGlzdGljc0NvbnRhaW5lciA9IHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgICAg
IHN0YXRpc3RpY3NDb250YWluZXIuY2xhc3NOYW1lID0gInN0YXRpc3RpY3MiOwotCi0gICAgICAg
IGxldCBjcmVhdGVTdGF0aXN0aWNFbGVtZW50ID0gKG5hbWUsIGltYWdlKSA9PiB7Ci0gICAgICAg
ICAgICBsZXQgc3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGljc1tuYW1lXTsKLSAgICAgICAgICAg
IGlmICghc3RhdGlzdGljKQotICAgICAgICAgICAgICAgIHN0YXRpc3RpYyA9IHRoaXMuX3N0YXRp
c3RpY3NbbmFtZV0gPSB7fTsKLQotICAgICAgICAgICAgc3RhdGlzdGljLmNvbnRhaW5lciA9IHN0
YXRpc3RpY3NDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
IikpOwotICAgICAgICAgICAgc3RhdGlzdGljLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJzdGF0
aXN0aWMiLCBuYW1lKTsKLQotICAgICAgICAgICAgc3RhdGlzdGljLmNvbnRhaW5lci5hcHBlbmRD
aGlsZChXSS5JbWFnZVV0aWxpdGllcy51c2VTVkdTeW1ib2woaW1hZ2UsICJpY29uIikpOwotCi0g
ICAgICAgICAgICBzdGF0aXN0aWMuZWxlbWVudCA9IHN0YXRpc3RpYy5jb250YWluZXIuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwotICAgICAgICAgICAgc3RhdGlz
dGljLmVsZW1lbnQuY2xhc3NOYW1lID0gInRleHQiOwotICAgICAgICB9OwotICAgICAgICBjcmVh
dGVTdGF0aXN0aWNFbGVtZW50KCJkb21haW4tY291bnQiLCAiSW1hZ2VzL09yaWdpbi5zdmciKTsK
LSAgICAgICAgY3JlYXRlU3RhdGlzdGljRWxlbWVudCgicmVzb3VyY2UtY291bnQiLCAiSW1hZ2Vz
L1Jlc291cmNlcy5zdmciKTsKLSAgICAgICAgY3JlYXRlU3RhdGlzdGljRWxlbWVudCgicmVzb3Vy
Y2Utc2l6ZSIsICJJbWFnZXMvV2VpZ2h0LnN2ZyIpOwotICAgICAgICBjcmVhdGVTdGF0aXN0aWNF
bGVtZW50KCJ0cmFuc2Zlci1zaXplIiwgIkltYWdlcy9OZXR3b3JrLnN2ZyIpOwotICAgICAgICBj
cmVhdGVTdGF0aXN0aWNFbGVtZW50KCJyZWRpcmVjdC1jb3VudCIsICJJbWFnZXMvU3RlcE92ZXIu
c3ZnIik7Ci0gICAgICAgIGNyZWF0ZVN0YXRpc3RpY0VsZW1lbnQoImxvYWQtdGltZSIsICJJbWFn
ZXMvVGltZS5zdmciKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7CiAgICAg
fQogCiAgICAgbGF5b3V0KCkKQEAgLTEzMDgsOCArMTI3Miw2IEBAIFdJLk5ldHdvcmtUYWJsZUNv
bnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmllCiAKICAgICAgICAgZm9yIChsZXQgcmVzb3VyY2Ugb2YgcmVzb3VyY2VzKQogICAgICAg
ICAgICAgdGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJsZShyZXNvdXJjZSk7Ci0KLSAg
ICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwogICAgIH0KIAogICAgIGhhbmRsZUNsZWFy
U2hvcnRjdXQoZXZlbnQpCkBAIC0xMzk3LDcgKzEzNTksNiBAQCBXSS5OZXR3b3JrVGFibGVDb250
ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZQogICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydFJlc291cmNlQW5kUmVsb2FkVGFibGUo
cmVzb3VyY2UpOwogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoY29sbGVjdGlvbi5wZW5kaW5n
SW5zZXJ0aW9ucy5sZW5ndGggPT09IG9yaWdpbmFsTGVuZ3RoKTsKICAgICAgICAgICAgIGNvbGxl
Y3Rpb24ucGVuZGluZ0luc2VydGlvbnMgPSBbXTsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0
YXRpc3RpY3MoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNDE3LDcg
KzEzNzgsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJs
ZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICB0aGlzLl91cGRhdGVT
b3J0KCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcmVkRW50cmllcygpOwogICAgICAgICB0
aGlzLl9yZWxvYWRUYWJsZSgpOwotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7CiAg
ICAgfQogCiAgICAgX3BvcHVsYXRlV2l0aEluaXRpYWxSZXNvdXJjZXNJZk5lZWRlZChjb2xsZWN0
aW9uKQpAQCAtMTUwNSw4ICsxNDY1LDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBj
bGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICB1cGRhdGVFeGlzdGluZ0VudHJ5KGNvbGxlY3Rpb24u
ZmlsdGVyZWRFbnRyaWVzW3Jvd0luZGV4XSwgZW50cnkpOwotCi0gICAgICAgIHRoaXMuX3VwZGF0
ZVN0YXRpc3RpY3MoKTsKICAgICB9CiAKICAgICBfaGlkZVBvcG92ZXIoKQpAQCAtMTYzNywzMyAr
MTU5NSwyMyBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJs
ZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogCiAgICAgX21haW5SZXNvdXJjZURp
ZENoYW5nZShldmVudCkKICAgICB7Ci0gICAgICAgIGxldCBmcmFtZSA9IGV2ZW50LnRhcmdldDsK
LQotICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSAmJiAhdGhpcy5fdHJhbnNpdGlvbmlu
Z1BhZ2VUYXJnZXQpCi0gICAgICAgICAgICB0aGlzLl9zdGFydFVwZGF0aW5nTG9hZFRpbWVTdGF0
aXN0aWMoKTsKLQogICAgICAgICB0aGlzLl9ydW5Gb3JNYWluQ29sbGVjdGlvbigoY29sbGVjdGlv
biwgd2FzTWFpbikgPT4gewotICAgICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoV0kuc2V0dGluZ3MuY2xlYXJOZXR3b3JrT25OYXZpZ2F0ZS52
YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNldENvbGxlY3Rpb24oY29sbGVj
dGlvbik7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHdhc01haW4gJiYgIXRoaXMuX25lZWRz
SW5pdGlhbFBvcHVsYXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faGlkZURldGFp
bFZpZXcoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBm
b3IgKGxldCBlbnRyeSBvZiBjb2xsZWN0aW9uLmVudHJpZXMpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBlbnRyeS5jdXJyZW50U2Vzc2lvbiA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGxldCBmcmFtZSA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgICAgIGlmIChmcmFt
ZS5pc01haW5GcmFtZSgpICYmIFdJLnNldHRpbmdzLmNsZWFyTmV0d29ya09uTmF2aWdhdGUudmFs
dWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXNldENvbGxlY3Rpb24oY29sbGVjdGlvbik7
CisKKyAgICAgICAgICAgICAgICBpZiAod2FzTWFpbiAmJiAhdGhpcy5fbmVlZHNJbml0aWFsUG9w
dWxhdGUpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2hpZGVEZXRhaWxWaWV3KCk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICh0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdl
dCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgdGhpcy5fbmVlZHNJbml0aWFsUG9wdWxhdGUgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlV2l0aEluaXRpYWxSZXNvdXJjZXNJZk5lZWRl
ZChjb2xsZWN0aW9uKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMu
X2luc2VydFJlc291cmNlQW5kUmVsb2FkVGFibGUoZnJhbWUubWFpblJlc291cmNlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh3YXNN
YWluKQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKKyAgICAgICAg
ICAgIHRoaXMuX2luc2VydFJlc291cmNlQW5kUmVsb2FkVGFibGUoZnJhbWUubWFpblJlc291cmNl
KTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xNzA2LDQxICsxNjU0LDYgQEAgV0kuTmV0d29y
a1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRWaWUKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgX2hhbmRsZVJlc291cmNl
U2l6ZURpZENoYW5nZShldmVudCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fdGFibGUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fcnVuRm9yTWFpbkNvbGxlY3Rpb24o
KGNvbGxlY3Rpb24sIHdhc01haW4pID0+IHsKLSAgICAgICAgICAgIGxldCByZXNvdXJjZSA9IGV2
ZW50LnRhcmdldDsKLQotICAgICAgICAgICAgLy8gSW4gdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQg
dGhpcyBpcyB0aGUgc29ydCBjb2x1bW4sIHdlIG1heSBuZWVkIHRvIHJlc29ydC4KLSAgICAgICAg
ICAgIGlmICh0aGlzLl90YWJsZS5zb3J0Q29sdW1uSWRlbnRpZmllciA9PT0gInJlc291cmNlU2l6
ZSIpIHsKLSAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnBlbmRpbmdVcGRhdGVzLnB1c2gocmVz
b3VyY2UpOwotICAgICAgICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxldCBpbmRleCA9IGNv
bGxlY3Rpb24uZW50cmllcy5maW5kSW5kZXgoKHgpID0+IHgucmVzb3VyY2UgPT09IHJlc291cmNl
KTsKLSAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgICAgICBsZXQgZW50cnkgPSBjb2xsZWN0aW9uLmVudHJpZXNbaW5kZXhdOwot
ICAgICAgICAgICAgZW50cnkucmVzb3VyY2VTaXplID0gcmVzb3VyY2Uuc2l6ZTsKLQotICAgICAg
ICAgICAgaWYgKCF3YXNNYWluKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAg
ICAgbGV0IHJvd0luZGV4ID0gdGhpcy5fcm93SW5kZXhGb3JSZXByZXNlbnRlZE9iamVjdChyZXNv
dXJjZSk7Ci0gICAgICAgICAgICBpZiAocm93SW5kZXggPT09IC0xKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgdGhpcy5fdGFibGUucmVsb2FkQ2VsbChyb3dJbmRleCwg
InJlc291cmNlU2l6ZSIpOwotCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7
Ci0gICAgICAgIH0pOwotICAgIH0KLQogICAgIF9yZXNvdXJjZVRyYW5zZmVyU2l6ZURpZENoYW5n
ZShldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fdGFibGUpCkBAIC0xNzcxLDE4ICsx
Njg0LDEzIEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxl
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICB0aGlzLl90YWJsZS5yZWxvYWRDZWxsKHJvd0luZGV4LCAidHJhbnNm
ZXJTaXplIik7Ci0KLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKICAgICAg
ICAgfSk7CiAgICAgfQogCiAgICAgX2hhbmRsZVJlc291cmNlQWRkZWQoZXZlbnQpCiAgICAgewot
ICAgICAgICB0aGlzLl9ydW5Gb3JNYWluQ29sbGVjdGlvbigoY29sbGVjdGlvbiwgd2FzTWFpbikg
PT4geworICAgICAgICB0aGlzLl9ydW5Gb3JNYWluQ29sbGVjdGlvbigoY29sbGVjdGlvbikgPT4g
ewogICAgICAgICAgICAgdGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJsZShldmVudC5k
YXRhLnJlc291cmNlKTsKLQotICAgICAgICAgICAgaWYgKHdhc01haW4pCi0gICAgICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTE3
OTEsMTUgKzE2OTksMTIgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3
b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgaWYgKHRo
aXMuX25lZWRzSW5pdGlhbFBvcHVsYXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IHRoaXMuX3J1bkZvck1haW5Db2xsZWN0aW9uKChjb2xsZWN0aW9uLCB3YXNNYWluKSA9PiB7Cisg
ICAgICAgIHRoaXMuX3J1bkZvck1haW5Db2xsZWN0aW9uKChjb2xsZWN0aW9uKSA9PiB7CiAgICAg
ICAgICAgICBsZXQgZnJhbWUgPSBldmVudC5kYXRhLmNoaWxkRnJhbWU7CiAgICAgICAgICAgICBs
ZXQgbWFpblJlc291cmNlID0gZnJhbWUucHJvdmlzaW9uYWxNYWluUmVzb3VyY2UgfHwgZnJhbWUu
bWFpblJlc291cmNlOwogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobWFpblJlc291cmNlLCAi
RnJhbWUgc2hvdWxkIGhhdmUgYSBtYWluIHJlc291cmNlLiIpOwogICAgICAgICAgICAgdGhpcy5f
aW5zZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJsZShtYWluUmVzb3VyY2UpOwogCi0gICAgICAgICAg
ICBpZiAod2FzTWFpbikKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7
Ci0KICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFmcmFtZS5yZXNvdXJjZUNvbGxlY3Rpb24u
c2l6ZSwgIk5ldyBmcmFtZSBzaG91bGQgYmUgZW1wdHkuIik7CiAgICAgICAgICAgICBjb25zb2xl
LmFzc2VydCghZnJhbWUuY2hpbGRGcmFtZUNvbGxlY3Rpb24uc2l6ZSwgIk5ldyBmcmFtZSBzaG91
bGQgYmUgZW1wdHkuIik7CiAgICAgICAgIH0pOwpAQCAtMTkwMyw3ICsxODA4LDYgQEAgV0kuTmV0
d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgICAgIHJlbW90ZUFkZHJlc3M6IHJlc291cmNlLnJl
bW90ZUFkZHJlc3MsCiAgICAgICAgICAgICBjb25uZWN0aW9uSWRlbnRpZmllcjogcmVzb3VyY2Uu
Y29ubmVjdGlvbklkZW50aWZpZXIsCiAgICAgICAgICAgICBzdGFydFRpbWU6IHJlc291cmNlLmZp
cnN0VGltZXN0YW1wLAotICAgICAgICAgICAgY3VycmVudFNlc3Npb246IHRydWUsCiAgICAgICAg
IH07CiAgICAgfQogCkBAIC0yMDcwLDEzMSArMTk3NCw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRl
bnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50
VmllCiAgICAgICAgIHRoaXMuX3VwZGF0ZUVtcHR5RmlsdGVyUmVzdWx0c01lc3NhZ2UoKTsKICAg
ICB9CiAKLSAgICBfdXBkYXRlU3RhdGlzdGljcygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMu
ZGlkSW5pdGlhbExheW91dCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgZW50
cmllcyA9IHRoaXMuX2FjdGl2ZUNvbGxlY3Rpb24uZW50cmllcy5maWx0ZXIoKGVudHJ5KSA9PiBl
bnRyeS5jdXJyZW50U2Vzc2lvbik7Ci0KLSAgICAgICAgbGV0IGRvbWFpbnMgPSBuZXcgU2V0Owot
ICAgICAgICBsZXQgcmVzb3VyY2VTaXplID0gMDsKLSAgICAgICAgbGV0IHRyYW5zZmVyU2l6ZSA9
IDA7Ci0gICAgICAgIGxldCByZWRpcmVjdENvdW50ID0gMDsKLSAgICAgICAgZm9yIChsZXQgZW50
cnkgb2YgZW50cmllcykgewotICAgICAgICAgICAgZG9tYWlucy5hZGQoZW50cnkuZG9tYWluKTsK
LSAgICAgICAgICAgIGlmICghaXNOYU4oZW50cnkucmVzb3VyY2VTaXplKSkKLSAgICAgICAgICAg
ICAgICByZXNvdXJjZVNpemUgKz0gZW50cnkucmVzb3VyY2VTaXplOwotICAgICAgICAgICAgaWYg
KCFpc05hTihlbnRyeS50cmFuc2ZlclNpemUpKQotICAgICAgICAgICAgICAgIHRyYW5zZmVyU2l6
ZSArPSBlbnRyeS50cmFuc2ZlclNpemU7Ci0gICAgICAgICAgICBpZiAoZW50cnkucmVzb3VyY2Up
Ci0gICAgICAgICAgICAgICAgcmVkaXJlY3RDb3VudCArPSBlbnRyeS5yZXNvdXJjZS5yZWRpcmVj
dHMubGVuZ3RoOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljKCJk
b21haW4tY291bnQiLCBkb21haW5zLnNpemUgPT09IDEgPyBXSS5VSVN0cmluZygiJWQgZG9tYWlu
IikgOiBXSS5VSVN0cmluZygiJWQgZG9tYWlucyIpLCBkb21haW5zLnNpemUpOwotCi0gICAgICAg
IGxldCByZXNvdXJjZUNvdW50ID0gZW50cmllcy5sZW5ndGg7Ci0gICAgICAgIHRoaXMuX3VwZGF0
ZVN0YXRpc3RpYygicmVzb3VyY2UtY291bnQiLCByZXNvdXJjZUNvdW50ID09PSAxID8gV0kuVUlT
dHJpbmcoIiVkIHJlc291cmNlIikgOiBXSS5VSVN0cmluZygiJWQgcmVzb3VyY2VzIiksIHJlc291
cmNlQ291bnQpOwotCi0gICAgICAgIGNvbnN0IGhpZ2hlclJlc29sdXRpb24gPSBmYWxzZTsKLSAg
ICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljKCJyZXNvdXJjZS1zaXplIiwgV0kuVUlTdHJpbmco
IiVzIHRvdGFsIiksIE51bWJlci5ieXRlc1RvU3RyaW5nKHJlc291cmNlU2l6ZSwgaGlnaGVyUmVz
b2x1dGlvbikpOwotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWMoInRyYW5zZmVyLXNpemUi
LCBXSS5VSVN0cmluZygiJXMgdHJhbnNmZXJyZWQiKSwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodHJh
bnNmZXJTaXplLCBoaWdoZXJSZXNvbHV0aW9uKSk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3Rh
dGlzdGljKCJyZWRpcmVjdC1jb3VudCIsIHJlZGlyZWN0Q291bnQgPT09IDEgPyBXSS5VSVN0cmlu
ZygiJWQgcmVkaXJlY3QiKSA6IFdJLlVJU3RyaW5nKCIlZCByZWRpcmVjdHMiKSwgcmVkaXJlY3RD
b3VudCk7Ci0KLSAgICAgICAgbGV0IGxvYWRUaW1lU3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGlj
c1sibG9hZC10aW1lIl07Ci0gICAgICAgIGlmIChsb2FkVGltZVN0YXRpc3RpYy5mb3JtYXQgJiYg
dGhpcy5faXNTaG93aW5nTWFpbkNvbGxlY3Rpb24oKSkgewotICAgICAgICAgICAgdGhpcy5fdXBk
YXRlU3RhdGlzdGljKCJsb2FkLXRpbWUiKTsKLSAgICAgICAgICAgIGxvYWRUaW1lU3RhdGlzdGlj
LmNvbnRhaW5lci5oaWRkZW4gPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBs
b2FkVGltZVN0YXRpc3RpYy5jb250YWluZXIuaGlkZGVuID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBf
dXBkYXRlU3RhdGlzdGljKG5hbWUsIGZvcm1hdCwgdmFsdWUpCi0gICAgewotICAgICAgICBsZXQg
c3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGljc1tuYW1lXTsKLQotICAgICAgICBpZiAoZm9ybWF0
KQotICAgICAgICAgICAgc3RhdGlzdGljLmZvcm1hdCA9IGZvcm1hdDsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgZm9ybWF0ID0gc3RhdGlzdGljLmZvcm1hdDsKLQotICAgICAgICBpZiAodmFs
dWUgfHwgdmFsdWUgPT09IDApCi0gICAgICAgICAgICBzdGF0aXN0aWMudmFsdWUgPSB2YWx1ZTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsdWUgPSBzdGF0aXN0aWMudmFsdWU7Ci0KLSAg
ICAgICAgaWYgKHN0YXRpc3RpYy5jb250YWluZXIpCi0gICAgICAgICAgICBzdGF0aXN0aWMuY29u
dGFpbmVyLnRpdGxlID0gZm9ybWF0LmZvcm1hdCh2YWx1ZSk7Ci0KLSAgICAgICAgaWYgKHN0YXRp
c3RpYy5lbGVtZW50KQotICAgICAgICAgICAgc3RhdGlzdGljLmVsZW1lbnQudGV4dENvbnRlbnQg
PSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBfc3RhcnRVcGRhdGluZ0xvYWRUaW1lU3RhdGlzdGljKCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ0xvYWRUaW1lU3RhdGlzdGljKCk7Ci0K
LSAgICAgICAgbGV0IGxvYWRUaW1lU3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGljc1sibG9hZC10
aW1lIl07Ci0gICAgICAgIGlmICghbG9hZFRpbWVTdGF0aXN0aWMpCi0gICAgICAgICAgICBsb2Fk
VGltZVN0YXRpc3RpYyA9IHRoaXMuX3N0YXRpc3RpY3NbImxvYWQtdGltZSJdID0ge307Ci0KLSAg
ICAgICAgbG9hZFRpbWVTdGF0aXN0aWMuc3RhcnQgPSBEYXRlLm5vdygpOwotICAgICAgICBsb2Fk
VGltZVN0YXRpc3RpYy5kZWxheSA9IDUwOwotICAgICAgICBsb2FkVGltZVN0YXRpc3RpYy50aW1l
ciA9IHNldEludGVydmFsKHRoaXMuX3VwZGF0ZUxvYWRUaW1lU3RhdGlzdGljLmJpbmQodGhpcyks
IGxvYWRUaW1lU3RhdGlzdGljLmRlbGF5KTsKLSAgICB9Ci0KLSAgICBfc3RvcFVwZGF0aW5nTG9h
ZFRpbWVTdGF0aXN0aWMoKQotICAgIHsKLSAgICAgICAgbGV0IGxvYWRUaW1lU3RhdGlzdGljID0g
dGhpcy5fc3RhdGlzdGljc1sibG9hZC10aW1lIl07Ci0gICAgICAgIGlmICghbG9hZFRpbWVTdGF0
aXN0aWMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGxvYWRUaW1lU3RhdGlz
dGljLnRpbWVyKSB7Ci0gICAgICAgICAgICBjbGVhckludGVydmFsKGxvYWRUaW1lU3RhdGlzdGlj
LnRpbWVyKTsKLSAgICAgICAgICAgIGxvYWRUaW1lU3RhdGlzdGljLnRpbWVyID0gdW5kZWZpbmVk
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgX3VwZGF0ZUxvYWRUaW1lU3RhdGlzdGljKCkKLSAg
ICB7Ci0gICAgICAgIGxldCBsb2FkVGltZVN0YXRpc3RpYyA9IHRoaXMuX3N0YXRpc3RpY3NbImxv
YWQtdGltZSJdOwotICAgICAgICBjb25zb2xlLmFzc2VydChsb2FkVGltZVN0YXRpc3RpYyk7Ci0K
LSAgICAgICAgbGV0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIGxvYWRUaW1lU3RhdGlzdGljLnN0
YXJ0OwotCi0gICAgICAgIGxldCBkZWxheSA9IGxvYWRUaW1lU3RhdGlzdGljLmRlbGF5OwotICAg
ICAgICBpZiAoZHVyYXRpb24gPj0gMTAwMCkgLy8gMSBzZWNvbmQKLSAgICAgICAgICAgIGRlbGF5
ID0gMTAwOwotICAgICAgICBlbHNlIGlmIChkdXJhdGlvbiA+PSA2MDAwMCkgLy8gNjAgc2Vjb25k
cwotICAgICAgICAgICAgZGVsYXkgPSAxMDAwOwotICAgICAgICBlbHNlIGlmIChkdXJhdGlvbiA+
PSAzNjAwMDAwKSAvLyAxIG1pbnV0ZQotICAgICAgICAgICAgZGVsYXkgPSAxMDAwMDsKLQotICAg
ICAgICBpZiAoZGVsYXkgIT09IGxvYWRUaW1lU3RhdGlzdGljLmRlbGF5KSB7Ci0gICAgICAgICAg
ICBsb2FkVGltZVN0YXRpc3RpYy5kZWxheSA9IGRlbGF5OwotCi0gICAgICAgICAgICBjbGVhcklu
dGVydmFsKGxvYWRUaW1lU3RhdGlzdGljLnRpbWVyKTsKLSAgICAgICAgICAgIGxvYWRUaW1lU3Rh
dGlzdGljLnRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlTG9hZFRpbWVTdGF0aXN0aWMu
YmluZCh0aGlzKSwgbG9hZFRpbWVTdGF0aXN0aWMuZGVsYXkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKLSAgICAgICAg
bGV0IG1haW5GcmFtZVN0YXJ0VGltZSA9IG1haW5GcmFtZS5tYWluUmVzb3VyY2UuZmlyc3RUaW1l
c3RhbXA7Ci0gICAgICAgIGxldCBtYWluRnJhbWVMb2FkRXZlbnRUaW1lID0gbWFpbkZyYW1lLmxv
YWRFdmVudFRpbWVzdGFtcDsKLQotICAgICAgICBpZiAobG9hZFRpbWVTdGF0aXN0aWMuY29udGFp
bmVyKQotICAgICAgICAgICAgbG9hZFRpbWVTdGF0aXN0aWMuY29udGFpbmVyLmhpZGRlbiA9ICF0
aGlzLl9pc1Nob3dpbmdNYWluQ29sbGVjdGlvbigpOwotCi0gICAgICAgIGlmIChpc05hTihtYWlu
RnJhbWVTdGFydFRpbWUpIHx8IGlzTmFOKG1haW5GcmFtZUxvYWRFdmVudFRpbWUpKSB7Ci0gICAg
ICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWMoImxvYWQtdGltZSIsIFdJLlVJU3RyaW5nKCJM
b2FkaW5nIGZvciAlcyIpLCBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKGR1cmF0aW9uIC8gMTAwMCkp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRl
U3RhdGlzdGljKCJsb2FkLXRpbWUiLCBXSS5VSVN0cmluZygiTG9hZGVkIGluICVzIiksIE51bWJl
ci5zZWNvbmRzVG9TdHJpbmcobWFpbkZyYW1lTG9hZEV2ZW50VGltZSAtIG1haW5GcmFtZVN0YXJ0
VGltZSkpOwotCi0gICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ0xvYWRUaW1lU3RhdGlzdGljKCk7
Ci0gICAgfQotCiAgICAgX3JlbG9hZFRhYmxlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RhYmxl
LnJlbG9hZERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmNzcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
YjI5OWI1YWZmNWRiNjkzZDc0YTE1Yzc2Y2ZlMmE0NGU1Y2NlMDRjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVu
dFZpZXcuY3NzCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisubmV3LXRhYi50YWIuY29u
dGVudC12aWV3IHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGZsZXgtZmxvdzogcm93IHdyYXA7
CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgYWxpZ24tY29udGVudDogY2VudGVy
OworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CisKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2wo
MCwgMCUsIDk2JSk7CisKKyAgICBwYWRkaW5nOiAxMHB4OworCisgICAgb3ZlcmZsb3cteTogYXV0
bzsKK30KKworLm5ldy10YWIudGFiLmNvbnRlbnQtdmlldyA+IC50YWItaXRlbSB7CisgICAgZGlz
cGxheTogZmxleDsKKworICAgIG1pbi13aWR0aDogMTEwcHg7CisgICAgbWluLWhlaWdodDogMTEw
cHg7CisKKyAgICBtYXJnaW46IDEwcHg7CisKKyAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwor
ICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cit9CisKKy5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcg
PiAudGFiLWl0ZW0uZGlzYWJsZWQgeworICAgIG9wYWNpdHk6IDAuNTsKKyAgICBmaWx0ZXI6IGJy
aWdodG5lc3MoOTAlKTsKK30KKworLm5ldy10YWIudGFiLmNvbnRlbnQtdmlldyA+IC50YWItaXRl
bSA+IC5ib3ggeworICAgIHdpZHRoOiA5NHB4OworICAgIGhlaWdodDogOTRweDsKKworICAgIHBh
ZGRpbmc6IDE1cHg7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworCisgICAgYmFja2dyb3VuZC1j
b2xvcjogaHNsKDAsIDAlLCA4MiUpOworICAgIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDAlLCAw
LjMzKSAwIDFweCA2cHg7CisKKyAgICBkaXNwbGF5OiBibG9jazsKK30KKworLm5ldy10YWIudGFi
LmNvbnRlbnQtdmlldyA+IC50YWItaXRlbTpub3QoLmRpc2FibGVkKTpob3ZlciA+IC5ib3ggewor
ICAgIGZpbHRlcjogYnJpZ2h0bmVzcyg5MCUpOworfQorCisubmV3LXRhYi50YWIuY29udGVudC12
aWV3ID4gLnRhYi1pdGVtOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSA+IC5ib3ggeworICAgIGZpbHRl
cjogYnJpZ2h0bmVzcyg3NSUpOworfQorCisubmV3LXRhYi50YWIuY29udGVudC12aWV3ID4gLnRh
Yi1pdGVtID4gLmJveCA+IGltZyB7CisgICAgd2lkdGg6IDY0cHg7CisgICAgaGVpZ2h0OiA2NHB4
OworCisgICAgb3BhY2l0eTogMC41NTsgLyogQXNzdW1lcyBibGFjayBnbHlwaHMuICovCisKKyAg
ICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTsKK30KKworLm5ldy10YWIudGFiLmNvbnRlbnQtdmll
dyA+IC50YWItaXRlbSA+IGxhYmVsIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBtYXJnaW4t
dG9wOiA4cHg7Cit9CisKK0BtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKKyAg
ICAubmV3LXRhYi50YWIuY29udGVudC12aWV3IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
dmFyKC0tYmFja2dyb3VuZC1jb2xvci1jb250ZW50KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNv
bnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5YjIzNWZlMGYzNGY3MDA2YTczNGI2NmRlODk5MWZk
OWVlNGEyZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmlldy5qcwpAQCAtMCwwICsxLDE0NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dJLk5ld1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgTmV3VGFiQ29udGVudFZpZXcg
ZXh0ZW5kcyBXSS5UYWJDb250ZW50VmlldworeworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIp
CisgICAgeworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZy
b21UYWJJbmZvKFdJLk5ld1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisgICAgICAgIHRhYkJh
ckl0ZW0uaXNEZWZhdWx0VGFiID0gdHJ1ZTsKKworICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8
ICJuZXctdGFiIiwgIm5ldy10YWIiLCB0YWJCYXJJdGVtKTsKKworICAgICAgICB0aGlzLl90YWJF
bGVtZW50c0J5VGFiQ2xhc3MgPSBuZXcgTWFwOworCisgICAgICAgIGxldCBhbGxUYWJDbGFzc2Vz
ID0gQXJyYXkuZnJvbShXSS5rbm93blRhYkNsYXNzZXMoKSk7CisgICAgICAgIHRoaXMuX3Nob3du
VGFiQ2xhc3NlcyA9IGFsbFRhYkNsYXNzZXMuZmlsdGVyKCh0YWJDbGFzcykgPT4gdGFiQ2xhc3Mu
aXNUYWJBbGxvd2VkKCkgJiYgIXRhYkNsYXNzLnRhYkluZm8oKS5pc0VwaGVtZXJhbCk7CisgICAg
ICAgIHRoaXMuX3Nob3duVGFiQ2xhc3Nlcy5zb3J0KChhLCBiKSA9PiBhLnRhYkluZm8oKS50aXRs
ZS5leHRlbmRlZExvY2FsZUNvbXBhcmUoYi50YWJJbmZvKCkudGl0bGUpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgdGFiSW5mbygpCisgICAgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
aW1hZ2U6ICJJbWFnZXMvTmV3VGFiLnN2ZyIsCisgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJp
bmcoIk5ldyBUYWIiKSwKKyAgICAgICAgICAgIGlzRXBoZW1lcmFsOiB0cnVlLAorICAgICAgICB9
OworICAgIH0KKworICAgIHN0YXRpYyBzaG91bGRTYXZlVGFiKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCB0eXBlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBXSS5OZXdUYWJDb250ZW50Vmlldy5UeXBlOworICAgIH0KKwor
ICAgIHNob3duKCkKKyAgICB7CisgICAgICAgIFdJLnRhYkJhci5hZGRFdmVudExpc3RlbmVyKFdJ
LlRhYkJhci5FdmVudC5UYWJCYXJJdGVtQWRkZWQsIHRoaXMuX3VwZGF0ZVRhYkl0ZW1zLCB0aGlz
KTsKKyAgICAgICAgV0kudGFiQmFyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFiQmFyLkV2ZW50LlRh
YkJhckl0ZW1SZW1vdmVkLCB0aGlzLl91cGRhdGVUYWJJdGVtcywgdGhpcyk7CisKKyAgICAgICAg
dGhpcy5fdXBkYXRlVGFiSXRlbXMoKTsKKyAgICB9CisKKyAgICBoaWRkZW4oKQorICAgIHsKKyAg
ICAgICAgV0kudGFiQmFyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Cisg
ICAgfQorCisgICAgZ2V0IHN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3NlcigpCisgICAgeworICAg
ICAgICAvLyBTaG93aW5nIHRoZSBzcGxpdCBjb25zb2xlIGlzIHByb2JsZW1hdGljIGJlY2F1c2Ug
c29tZSBuZXcgdGFicyB3aWxsIGNhdXNlIGl0IHRvCisgICAgICAgIC8vIGRpc2FwcGVhciBhbmQg
bm90IHJlYXBwZWFyLCBidXQgb3RoZXJzIHdvbid0LiBKdXN0IHByZXZlbnQgaXQgZnJvbSBldmVy
IHNob3dpbmcuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBsYXlvdXQoKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fdGFiRWxlbWVudHNCeVRhYkNsYXNzLmNsZWFyKCk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworCisgICAgICAgIGZvciAobGV0IHRh
YkNsYXNzIG9mIHRoaXMuX3Nob3duVGFiQ2xhc3NlcykgeworICAgICAgICAgICAgbGV0IHRhYkl0
ZW1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB0
YWJJdGVtRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItaXRlbSIpOworICAgICAgICAgICAgdGFi
SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jcmVhdGVOZXdUYWJX
aXRoVHlwZS5iaW5kKHRoaXMsIHRhYkNsYXNzLlR5cGUpKTsKKyAgICAgICAgICAgIHRhYkl0ZW1F
bGVtZW50W1dJLk5ld1RhYkNvbnRlbnRWaWV3LlR5cGVTeW1ib2xdID0gdGFiQ2xhc3MuVHlwZTsK
KworICAgICAgICAgICAgbGV0IGJveEVsZW1lbnQgPSB0YWJJdGVtRWxlbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAgICAgICBib3hFbGVtZW50
LmNsYXNzTGlzdC5hZGQoImJveCIpOworCisgICAgICAgICAgICBsZXQgaW5mbyA9IHRhYkNsYXNz
LnRhYkluZm8oKTsKKyAgICAgICAgICAgIGxldCBpbWFnZUVsZW1lbnQgPSBib3hFbGVtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKKyAgICAgICAgICAgIGlt
YWdlRWxlbWVudC5zcmMgPSBpbmZvLmltYWdlOworCisgICAgICAgICAgICBsZXQgbGFiZWxFbGVt
ZW50ID0gdGFiSXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
bGFiZWwiKSk7CisgICAgICAgICAgICBsYWJlbEVsZW1lbnQudGV4dENvbnRlbnQgPSBpbmZvLnRp
dGxlOworCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGFiSXRlbUVsZW1l
bnQpOworICAgICAgICAgICAgdGhpcy5fdGFiRWxlbWVudHNCeVRhYkNsYXNzLnNldCh0YWJDbGFz
cywgdGFiSXRlbUVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdXBkYXRlVGFi
SXRlbXMoKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfY3JlYXRlTmV3VGFiV2l0
aFR5cGUodGFiVHlwZSwgZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIVdJLmlzTmV3VGFiV2l0
aFR5cGVBbGxvd2VkKHRhYlR5cGUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNv
bnN0IGNhbkNyZWF0ZUFkZGl0aW9uYWxUYWJzID0gdGhpcy5fYWxsb3dhYmxlVGFiVHlwZXMoKS5s
ZW5ndGggPiAxOworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcmVmZXJl
bmNlZFZpZXc6IHRoaXMsCisgICAgICAgICAgICBzaG91bGRSZXBsYWNlVGFiOiAhY2FuQ3JlYXRl
QWRkaXRpb25hbFRhYnMgfHwgIVdJLm1vZGlmaWVyS2V5cy5tZXRhS2V5LAorICAgICAgICAgICAg
c2hvdWxkU2hvd05ld1RhYjogIVdJLm1vZGlmaWVyS2V5cy5tZXRhS2V5LAorICAgICAgICAgICAg
aW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkJ1dHRv
bkNsaWNrLAorICAgICAgICB9OworICAgICAgICBXSS5jcmVhdGVOZXdUYWJXaXRoVHlwZSh0YWJU
eXBlLCBvcHRpb25zKTsKKyAgICB9CisKKyAgICBfYWxsb3dhYmxlVGFiVHlwZXMoKQorICAgIHsK
KyAgICAgICAgbGV0IHRhYlR5cGVzID0gdGhpcy5fc2hvd25UYWJDbGFzc2VzLm1hcCgodGFiQ2xh
c3MpID0+IHRhYkNsYXNzLlR5cGUpOworICAgICAgICByZXR1cm4gdGFiVHlwZXMuZmlsdGVyKCh0
eXBlKSA9PiBXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZCh0eXBlKSk7CisgICAgfQorCisgICAg
X3VwZGF0ZVRhYkl0ZW1zKCkKKyAgICB7CisgICAgICAgIGZvciAobGV0IFt0YWJDbGFzcywgdGFi
SXRlbUVsZW1lbnRdIG9mIHRoaXMuX3RhYkVsZW1lbnRzQnlUYWJDbGFzcy5lbnRyaWVzKCkpIHsK
KyAgICAgICAgICAgIGxldCBhbGxvd2VkID0gV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQodGFi
Q2xhc3MuVHlwZSk7CisgICAgICAgICAgICB0YWJJdGVtRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xl
KFdJLk5ld1RhYkNvbnRlbnRWaWV3LkRpc2FibGVkU3R5bGVDbGFzc05hbWUsICFhbGxvd2VkKTsK
KyAgICAgICAgfQorICAgIH0KK307CisKK1dJLk5ld1RhYkNvbnRlbnRWaWV3LlR5cGUgPSAibmV3
LXRhYiI7CitXSS5OZXdUYWJDb250ZW50Vmlldy5UeXBlU3ltYm9sID0gU3ltYm9sKCJ0eXBlIik7
CisKK1dJLk5ld1RhYkNvbnRlbnRWaWV3LlRhYkl0ZW1TdHlsZUNsYXNzTmFtZSA9ICJ0YWItaXRl
bSI7CitXSS5OZXdUYWJDb250ZW50Vmlldy5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2Fi
bGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpzCmluZGV4IGQ1ODIwM2I2MTI4YmMxZDQ3MDJj
YTZlY2MxYThkZWE2Yjg4ODliYzQuLjliMGJjYzcxNmQ0ZjMyZWQ5ZGU3YWMzY2Y2YTVmNjVmOTY1
N2ZlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRlbS5qcwpAQCAtMjUsMjcgKzI1LDM3IEBACiAK
IFdJLlBpbm5lZFRhYkJhckl0ZW0gPSBjbGFzcyBQaW5uZWRUYWJCYXJJdGVtIGV4dGVuZHMgV0ku
VGFiQmFySXRlbQogewotICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0LCBpbWFnZSwg
dGl0bGUpCisgICAgY29uc3RydWN0b3IoaW1hZ2UsIHRpdGxlKQogICAgIHsKLSAgICAgICAgc3Vw
ZXIocmVwcmVzZW50ZWRPYmplY3QsIGltYWdlLCB0aXRsZSk7CisgICAgICAgIHN1cGVyKGltYWdl
LCB0aXRsZSk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInBpbm5lZCIp
OwotICAgIH0KIAotICAgIC8vIFN0YXRpYworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQo
dGhpcykpOworICAgIH0KIAotICAgIHN0YXRpYyBmcm9tVGFiQ29udGVudFZpZXcodGFiQ29udGVu
dFZpZXcpCisgICAgc3RhdGljIGZyb21UYWJJbmZvKHtpbWFnZSwgdGl0bGV9KQogICAgIHsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGFiQ29udGVudFZpZXcgaW5zdGFuY2VvZiBXSS5UYWJDb250
ZW50Vmlldyk7Ci0KLSAgICAgICAgbGV0IHtpbWFnZSwgdGl0bGV9ID0gdGFiQ29udGVudFZpZXcu
Y29uc3RydWN0b3IudGFiSW5mbygpOwotICAgICAgICByZXR1cm4gbmV3IFdJLlBpbm5lZFRhYkJh
ckl0ZW0odGFiQ29udGVudFZpZXcsIGltYWdlLCB0aXRsZSk7CisgICAgICAgIHJldHVybiBuZXcg
V0kuUGlubmVkVGFiQmFySXRlbShpbWFnZSwgdGl0bGUpOwogICAgIH0KIAotICAgIC8vIFByb3Rl
Y3RlZAotCiAgICAgdGl0bGVEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50
LnRpdGxlID0gdGhpcy50aXRsZTsKICAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfaGFu
ZGxlQ29udGV4dE1lbnVFdmVudChldmVudCkKKyAgICB7CisgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CisKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3Jl
YXRlRnJvbUV2ZW50KGV2ZW50KTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5QaW5uZWRUYWJCYXJJdGVtLkV2ZW50LkNvbnRleHRNZW51LCB7Y29udGV4dE1lbnV9
KTsKKyAgICB9Cit9OworCitXSS5QaW5uZWRUYWJCYXJJdGVtLkV2ZW50ID0geworICAgIENvbnRl
eHRNZW51OiAicGlubmVkLXRhYi1iYXItaXRlbS1jb250ZXh0LW1lbnUiLAogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29s
ZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29u
c29sZS5qcwppbmRleCAwNmJiYzk1MTk2MzU5MDc5Yjg4NTZlY2JmNGQ2YjM5M2Q2NTMxYjE5Li45
ZDIzNGIyMmQwYjJjMGFlNmY2MWYzYTg4OTZkYjBlMWViZDQ0MjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xl
LmpzCkBAIC01MSw4ICs1MSw3IEBAIFdJLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29s
ZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgLy8gd291bGQgYmUgZm9yIENvZGVNaXJyb3IncyBl
dmVudCBoYW5kbGVyIHRvIHBhc3MgaWYgaXQgZG9lc24ndCBkbyBhbnl0aGluZy4KICAgICAgICAg
dGhpcy5wcm9tcHQuZXNjYXBlS2V5SGFuZGxlcldoZW5FbXB0eSA9IGZ1bmN0aW9uKCkgeyBXSS50
b2dnbGVTcGxpdENvbnNvbGUoKTsgfTsKIAotICAgICAgICBjb25zdCBuYXZpZ2F0aW9uYmFyRWxl
bWVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV0kuTmF2aWdh
dGlvbkJhcihuYXZpZ2F0aW9uYmFyRWxlbWVudCwge3NpemVzVG9GaXQ6IHRydWV9KTsKKyAgICAg
ICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXSS5TaXplc1RvRml0TmF2aWdhdGlvbkJhcjsK
ICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX25hdmlnYXRpb25CYXIpOwogCiAgICAgICAg
IHRoaXMuX2FjdGl2ZUV4ZWN1dGlvbkNvbnRleHROYXZpZ2F0aW9uSXRlbURpdmlkZXIgPSBuZXcg
V0kuRGl2aWRlck5hdmlnYXRpb25JdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVy
aW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGguY3NzCmluZGV4IGNjNWM3YmQyM2EwNzNiNGM1
ODNjMzFhYjgyYzJlNmVjY2FjMDg5MWMuLmVlMWZhY2E0NmQ2ODRiZWM4NTBhYjgxOWFjZTNjZjQ3
NDBmNWVkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLmNzcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVs
aW5lT3ZlcnZpZXdHcmFwaC5jc3MKQEAgLTU4LDYgKzU4LDYgQEAKICAgICBwb2ludGVyLWV2ZW50
czogbm9uZTsKIH0KIAotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9j
a2VkLWluYWN0aXZlKSAudGltZWxpbmUtb3ZlcnZpZXctZ3JhcGgucmVuZGVyaW5nLWZyYW1lID4g
LmZyYW1lLW1hcmtlciB7Citib2R5LndpbmRvdy1pbmFjdGl2ZSAudGltZWxpbmUtb3ZlcnZpZXct
Z3JhcGgucmVuZGVyaW5nLWZyYW1lID4gLmZyYW1lLW1hcmtlciB7CiAgICAgYmFja2dyb3VuZC1p
bWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCBoc2woMCwgMCUsIDYwJSksIGhzbCgwLCAw
JSwgNjAlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TZWFyY2hUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDAwNjE2
NDA2MGUwZTVmZTJhNmI0NGFjMDg2MGU3ZDVlOGZhMDE0MDIuLjM0YjMyYzc5YTNlZWQzY2EwNmVk
NDIyZGYzZjVkZDZmYjU1OTgyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3Lmpz
CkBAIC0yNSw0NSArMjUsMzggQEAKIAogV0kuU2VhcmNoVGFiQ29udGVudFZpZXcgPSBjbGFzcyBT
ZWFyY2hUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZp
ZXcKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIGxldCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzID0gWwotICAg
ICAgICAgICAgV0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgV0ku
UHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgV0kuRE9NTm9kZURldGFpbHNT
aWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbCwKLSAgICAgICAgICAgIFdJLlJ1bGVzU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAg
ICAgICBdOworICAgICAgICBsZXQgdGFiQmFySXRlbTsKKyAgICAgICAgaWYgKFdJLnNldHRpbmdz
LmV4cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhci52YWx1ZSkKKyAgICAgICAgICAgIHRhYkJhckl0
ZW0gPSBXSS5QaW5uZWRUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLlNlYXJjaFRhYkNvbnRlbnRW
aWV3LnRhYkluZm8oKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRhYkJhckl0ZW0gPSBX
SS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhXSS5TZWFyY2hUYWJDb250ZW50Vmlldy50
YWJJbmZvKCkpOworCisgICAgICAgIGxldCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3Jz
ID0gW1dJLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwgV0kuUHJvYmVEZXRhaWxzU2lkZWJh
clBhbmVsLAorICAgICAgICAgICAgV0kuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLkNv
bXB1dGVkU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5SdWxlc1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbF07CisKICAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuaGFzRG9tYWluKCJMYXll
clRyZWUiKSkKICAgICAgICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMucHVz
aChXSS5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsKTsKIAotICAgICAgICBzdXBlcihTZWFy
Y2hUYWJDb250ZW50Vmlldy50YWJJbmZvKCksIHsKLSAgICAgICAgICAgIG5hdmlnYXRpb25TaWRl
YmFyUGFuZWxDb25zdHJ1Y3RvcjogV0kuU2VhcmNoU2lkZWJhclBhbmVsLAotICAgICAgICAgICAg
ZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycywKLSAgICAgICAgfSk7CisgICAgICAgIHN1
cGVyKGlkZW50aWZpZXIgfHwgInNlYXJjaCIsICJzZWFyY2giLCB0YWJCYXJJdGVtLCBXSS5TZWFy
Y2hTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMpOworCisgICAg
ICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgU2VhcmNoIHRhYiBpcyBkaXNwbGF5YWJsZSBmcm9tIGEg
cGlubmVkIHRhYiBiYXIgaXRlbS4KKyAgICAgICAgdGFiQmFySXRlbS5yZXByZXNlbnRlZE9iamVj
dCA9IHRoaXM7CiAKICAgICAgICAgdGhpcy5fZm9yY2VQZXJmb3JtU2VhcmNoID0gZmFsc2U7CiAg
ICAgfQogCiAgICAgc3RhdGljIHRhYkluZm8oKQogICAgIHsKKyAgICAgICAgbGV0IGltYWdlID0g
V0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFyLnZhbHVlID8gIkltYWdlcy9T
ZWFyY2guc3ZnIiA6ICJJbWFnZXMvU2VhcmNoUmVzdWx0cy5zdmciOwogICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgaWRlbnRpZmllcjogU2VhcmNoVGFiQ29udGVudFZpZXcuVHlwZSwKLSAg
ICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL1NlYXJjaC5zdmciLAorICAgICAgICAgICAgaW1hZ2Us
CiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIlNlYXJjaCIpLAorICAgICAgICAgICAg
aXNFcGhlbWVyYWw6IHRydWUsCiAgICAgICAgIH07CiAgICAgfQogCi0gICAgc3RhdGljIHNob3Vs
ZFBpblRhYigpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgc2hvdWxkU2F2ZVRhYigpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdHlwZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJD
b250ZW50Vmlldy5qcwppbmRleCA5NGI0N2M4ZjM4ZTNmMzJiNTFlN2Q5NTBhNTY5OWRhNjc5NDZl
MmYyLi5hN2QzOTQwYjE3NDkyODVjZTcwOWQ5YzVlNGUxNzA3YzM4YTYzYTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNv
bnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKQEAgLTI2LDkgKzI2LDE0IEBACiAKIFdJLlNl
dHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5nc1RhYkNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuVGFiQ29udGVudFZpZXcKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0
b3IoaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHN1cGVyKFNldHRpbmdzVGFiQ29udGVudFZp
ZXcudGFiSW5mbygpKTsKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBXSS5QaW5uZWRUYWJCYXJJ
dGVtLmZyb21UYWJJbmZvKFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKwor
ICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJzZXR0aW5ncyIsICJzZXR0aW5ncyIsIHRhYkJh
ckl0ZW0pOworCisgICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgU2V0dGluZ3MgdGFiIGlzIGRp
c3BsYXlhYmxlIGZyb20gYSBwaW5uZWQgdGFiIGJhciBpdGVtLgorICAgICAgICB0YWJCYXJJdGVt
LnJlcHJlc2VudGVkT2JqZWN0ID0gdGhpczsKIAogICAgICAgICB0aGlzLl9zZWxlY3RlZFNldHRp
bmdzVmlldyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3NldHRpbmdzVmlld3MgPSBbXTsKQEAgLTM3
LDE3ICs0MiwxMiBAQCBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NU
YWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaQogICAgIHN0YXRpYyB0YWJJbmZv
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyOiBTZXR0
aW5nc1RhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9HZWFy
LnN2ZyIsCiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIlNldHRpbmdzIiksCisgICAg
ICAgICAgICBpc0VwaGVtZXJhbDogdHJ1ZSwKICAgICAgICAgfTsKICAgICB9CiAKLSAgICBzdGF0
aWMgc2hvdWxkUGluVGFiKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQog
ICAgIHN0YXRpYyBzaG91bGRTYXZlVGFiKCkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTM2MCw2ICszNjAsOSBAQCBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0
dGluZ3NUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaQogICAgICAgICAgICAg
ZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZFNlcGFyYXRvcigpOwogICAgICAgICB9CiAKKyAg
ICAgICAgZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZFNldHRpbmcoV0kuVUlTdHJpbmcoIlVz
ZXIgSW50ZXJmYWNlOiIpLCBXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXIs
IFdJLlVJU3RyaW5nKCJFbmFibGUgTmV3IFRhYiBCYXIiKSk7CisgICAgICAgIGV4cGVyaW1lbnRh
bFNldHRpbmdzVmlldy5hZGRTZXBhcmF0b3IoKTsKKwogICAgICAgICBpZiAoSW5zcGVjdG9yQmFj
a2VuZC5oYXNEb21haW4oIkNTUyIpKSB7CiAgICAgICAgICAgICBsZXQgc3R5bGVzR3JvdXAgPSBl
eHBlcmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkR3JvdXAoV0kuVUlTdHJpbmcoIlN0eWxlczoiKSk7
CiAgICAgICAgICAgICBzdHlsZXNHcm91cC5hZGRTZXR0aW5nKFdJLnNldHRpbmdzLmV4cGVyaW1l
bnRhbEVuYWJsZVN0eWxlc0p1bXBUb0VmZmVjdGl2ZSwgV0kuVUlTdHJpbmcoIlNob3cgSnVtcCB0
byBFZmZlY3RpdmUgUHJvcGVydHkgQnV0dG9uIikpOwpAQCAtMzgzLDYgKzM4Niw3IEBAIFdJLlNl
dHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5nc1RhYkNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuVGFiQ29udGVudFZpCiAgICAgICAgIH0KIAogICAgICAgICBsaXN0ZW5Gb3JDaGFuZ2Uo
V0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlUHJldmlld0ZlYXR1cmVzKTsKKyAgICAgICAg
bGlzdGVuRm9yQ2hhbmdlKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhcik7
CiAKICAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuaGFzRG9tYWluKCJDU1MiKSkKICAgICAg
ICAgICAgIGxpc3RlbkZvckNoYW5nZShXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVTdHls
ZXNKdW1wVG9FZmZlY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMKaW5kZXggNjRkYzg5NTMwNThiZjUxMzg0YzVlNGFj
ZWY1YzBiZjUwYWEzNGU5Ni4uMTBhMTMxOWY1NDQwNGNiYjY3NmZlMjBlZDgzMjlmM2UzNTY1OGU1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U2lkZWJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TaWRlYmFyLmpzCkBAIC00Miw4ICs0Miw3IEBAIFdJLlNpZGViYXIgPSBjbGFzcyBTaWRlYmFy
IGV4dGVuZHMgV0kuVmlldwogICAgICAgICBpZiAoaGFzTmF2aWdhdGlvbkJhcikgewogICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImhhcy1uYXZpZ2F0aW9uLWJhciIpOwog
Ci0gICAgICAgICAgICBjb25zdCBuYXZpZ2F0aW9uQmFyRWxlbWVudCA9IG51bGw7Ci0gICAgICAg
ICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdJLk5hdmlnYXRpb25CYXIobmF2aWdhdGlv
bkJhckVsZW1lbnQsIHtyb2xlOiAidGFibGlzdCJ9KTsKKyAgICAgICAgICAgIHRoaXMuX25hdmln
YXRpb25CYXIgPSBuZXcgV0kuTmF2aWdhdGlvbkJhcihudWxsLCBudWxsLCAidGFibGlzdCIpOwog
ICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGRFdmVudExpc3RlbmVyKFdJLk5hdmln
YXRpb25CYXIuRXZlbnQuTmF2aWdhdGlvbkl0ZW1TZWxlY3RlZCwgdGhpcy5fbmF2aWdhdGlvbkl0
ZW1TZWxlY3RlZCwgdGhpcyk7CiAgICAgICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fbmF2
aWdhdGlvbkJhcik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpemVzVG9GaXROYXZpZ2F0aW9uQmFyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2l6ZXNUb0ZpdE5hdmlnYXRpb25C
YXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjRjOWQ5ZTQ0Yzk2NDcxZGQyNDg0Mjg2ZDRlMzM4Y2MyZTdmN2Zh
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NpemVzVG9GaXROYXZpZ2F0aW9uQmFyLmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXSS5TaXplc1RvRml0TmF2aWdhdGlvbkJhciA9IGNsYXNzIFNpemVzVG9GaXROYXZp
Z2F0aW9uQmFyIGV4dGVuZHMgV0kuTmF2aWdhdGlvbkJhcgoreworICAgIGdldCBzaXplc1RvRml0
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzVGFiQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3Vy
Y2VzVGFiQ29udGVudFZpZXcuanMKaW5kZXggMTNiMWQ1NWE4OTI4ZGQ4MmVlYjE2MWExMjM5OTRk
ZDkwYmM3YjUwZC4uYzVhZDc3YjRiMzZlZjQxNDZkMGVjNmQ3ZWRlMzBjYjY1OWQyNGE3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNl
c1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmlldy5qcwpAQCAtMjcsMjUgKzI3LDE2IEBAIFdJ
LlNvdXJjZXNUYWJDb250ZW50VmlldyA9IGNsYXNzIFNvdXJjZXNUYWJDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRCcm93c2VyCiB7CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsKLSAgICAg
ICAgc3VwZXIoU291cmNlc1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSwgewotICAgICAgICAgICAg
bmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yOiBXSS5Tb3VyY2VzTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCwKLSAgICAgICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnM6
IFsKLSAgICAgICAgICAgICAgICBXSS5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAg
ICAgICAgICAgICAgV0kuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAg
ICAgICAgV0kuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgXSwKLSAgICAg
ICAgfSk7CisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJv
bVRhYkluZm8oV0kuU291cmNlc1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisgICAgICAgIGNv
bnN0IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBbV0kuUmVzb3VyY2VEZXRhaWxz
U2lkZWJhclBhbmVsLCBXSS5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbCwgV0kuUHJvYmVE
ZXRhaWxzU2lkZWJhclBhbmVsXTsKKyAgICAgICAgc3VwZXIoInNvdXJjZXMiLCBbInNvdXJjZXMi
XSwgdGFiQmFySXRlbSwgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwsIGRldGFpbHNT
aWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMpOwogCiAgICAgICAgIHRoaXMuX3Nob3dTY29wZUNoYWlu
RGV0YWlsc1NpZGViYXJQYW5lbCA9IGZhbHNlOwotCi0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHRoaXMu
X2hhbmRsZURlYnVnZ2VyUGF1c2VkLCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIHRoaXMu
X2hhbmRsZURlYnVnZ2VyUmVzdW1lZCwgdGhpcyk7CiAgICAgfQogCiAgICAgc3RhdGljIHRhYklu
Zm8oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50aWZpZXI6IFNv
dXJjZXNUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvU291
cmNlcy5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJTb3VyY2VzIiksCiAg
ICAgICAgIH07CkBAIC0xMDcsMTggKzk4LDYgQEAgV0kuU291cmNlc1RhYkNvbnRlbnRWaWV3ID0g
Y2xhc3MgU291cmNlc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXIKICAg
ICAgICAgaWYgKHRyZWVFbGVtZW50KQogICAgICAgICAgICAgdHJlZUVsZW1lbnQucmV2ZWFsQW5k
U2VsZWN0KCk7CiAgICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2hhbmRsZURlYnVnZ2Vy
UGF1c2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy50YWJCYXJJdGVtLmltYWdlID0gIklt
YWdlcy9Tb3VyY2VzUGF1c2VkLnN2ZyI7Ci0gICAgfQotCi0gICAgX2hhbmRsZURlYnVnZ2VyUmVz
dW1lZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMudGFiQmFySXRlbS5pbWFnZSA9ICJJbWFn
ZXMvU291cmNlcy5zdmciOwotICAgIH0KIH07CiAKIFdJLlNvdXJjZXNUYWJDb250ZW50Vmlldy5U
eXBlID0gInNvdXJjZXMiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzCmluZGV4
IDk1NDBhYjhjYjE2ZDgwMDg3MWU1NzY1MmM5NGZlOTA0YWNlMGE2MGIuLjNkMWYxNTVmNjQ1MDc1
ZmYwZTYxYTE1NmM2ZDk1NTZhMTcwMjQ4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVu
dFZpZXcuanMKQEAgLTI1LDE1ICsyNSwxMiBAQAogCiBXSS5TdG9yYWdlVGFiQ29udGVudFZpZXcg
PSBjbGFzcyBTdG9yYWdlVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlclRh
YkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVjdG9yKGlkZW50
aWZpZXIpCiAgICAgewotICAgICAgICBzdXBlcihTdG9yYWdlVGFiQ29udGVudFZpZXcudGFiSW5m
bygpLCB7Ci0gICAgICAgICAgICBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3I6IFdJ
LlN0b3JhZ2VTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBkZXRhaWxzU2lkZWJhclBhbmVsQ29u
c3RydWN0b3JzOiBbCi0gICAgICAgICAgICAgICAgV0kuQXBwbGljYXRpb25DYWNoZURldGFpbHNT
aWRlYmFyUGFuZWwsCi0gICAgICAgICAgICAgICAgV0kuSW5kZXhlZERhdGFiYXNlRGV0YWlsc1Np
ZGViYXJQYW5lbCwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0pOworICAgICAgICBsZXQgdGFi
QmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLlN0b3JhZ2VUYWJD
b250ZW50Vmlldy50YWJJbmZvKCkpOworICAgICAgICBsZXQgZGV0YWlsc1NpZGViYXJQYW5lbENv
bnN0cnVjdG9ycyA9IFtXSS5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbCwgV0ku
SW5kZXhlZERhdGFiYXNlRGV0YWlsc1NpZGViYXJQYW5lbF07CisKKyAgICAgICAgc3VwZXIoaWRl
bnRpZmllciB8fCAic3RvcmFnZSIsICJzdG9yYWdlIiwgdGFiQmFySXRlbSwgV0kuU3RvcmFnZVNp
ZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyk7CiAKICAgICAgICAg
V0kuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIuZW5hYmxlKCk7CiAgICAgICAgIFdJLmRhdGFiYXNl
TWFuYWdlci5lbmFibGUoKTsKQEAgLTQ0LDcgKzQxLDYgQEAgV0kuU3RvcmFnZVRhYkNvbnRlbnRW
aWV3ID0gY2xhc3MgU3RvcmFnZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dz
ZXIKICAgICBzdGF0aWMgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gewotICAgICAg
ICAgICAgaWRlbnRpZmllcjogU3RvcmFnZVRhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgICAg
ICBpbWFnZTogIkltYWdlcy9TdG9yYWdlLnN2ZyIsCiAgICAgICAgICAgICB0aXRsZTogV0kuVUlT
dHJpbmcoIlN0b3JhZ2UiKSwKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuY3NzCmluZGV4IGVmNTFjYWFkY2RlOGEy
YTExYTdmODY2MWU3MmIzZTE4Yjc1MTY3NTguLjNkN2NkN2FiMmY5YzNhZTg4MTEyM2FlMGU2MDVl
MmJjMmZiZTQxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJhci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGFiQmFyLmNzcwpAQCAtMjUsMTYgKzI1LDI1IEBACiAKIC50YWItYmFyIHsK
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiB2YXIoLS11bmRvY2tlZC10aXRsZS1h
cmVhLWhlaWdodCk7CisgICAgdG9wOiB2YXIoLS10b29sYmFyLWhlaWdodCk7CiAgICAgbGVmdDog
MDsKICAgICByaWdodDogMDsKICAgICBoZWlnaHQ6IHZhcigtLXRhYi1iYXItaGVpZ2h0KTsKIAog
ICAgIGRpc3BsYXk6IGZsZXg7CisgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwor
ICAgIGZsZXgtd3JhcDogd3JhcDsKKworICAgIGJvcmRlci1ib3R0b206IHZhcigtLXRhYi1pdGVt
LW1lZGl1bS1ib3JkZXItc3R5bGUpOwogCiAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdy
YWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA3OCUpLCBoc2woMCwgMCUsIDcyJSkpOwogICAg
IGJhY2tncm91bmQtc2l6ZTogMTAwJSAyMDAlOwogCisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsK
KyAgICBvdmVyZmxvdzogaGlkZGVuOworCisgICAgb3V0bGluZTogbm9uZTsKKwogICAgIC0tdGFi
LWl0ZW0tZGFyay1ib3JkZXItY29sb3I6IGhzbCgwLCAwJSwgNTklKTsKICAgICAtLXRhYi1pdGVt
LW1lZGl1bS1ib3JkZXItY29sb3I6IGhzbCgwLCAwJSwgNjUlKTsKICAgICAtLXRhYi1pdGVtLWxp
Z2h0LWJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCA4NSUpOwpAQCAtNDQsODUgKzUzLDMwIEBACiAg
ICAgLS10YWItaXRlbS1saWdodC1ib3JkZXItc3R5bGU6IDFweCBzb2xpZCB2YXIoLS10YWItaXRl
bS1saWdodC1ib3JkZXItY29sb3IpOwogfQogCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2
ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyIHsKK2JvZHkud2luZG93LWluYWN0
aXZlIC50YWItYmFyIHsKKyAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS10YWItaXRlbS1s
aWdodC1ib3JkZXItY29sb3IpOworCiAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0
YW50OwogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWV4dHJhLWxpZ2h0LWJv
cmRlci1jb2xvcikgIWltcG9ydGFudDsKIH0KIAotLnRhYi1iYXIgPiAuYm9yZGVyIHsKKy50YWIt
YmFyID4gLnRvcC1ib3JkZXIgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7
CiAgICAgbGVmdDogMDsKICAgICByaWdodDogMDsKLSAgICB6LWluZGV4OiAxMDsKICAgICBoZWln
aHQ6IDFweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YWItaXRlbS1tZWRpdW0tYm9y
ZGVyLWNvbG9yKTsKLX0KLQotLnRhYi1iYXIgPiAuYm9yZGVyLnRvcCB7Ci0gICAgdG9wOiAwOwot
fQotCi0udGFiLWJhciA+IC5ib3JkZXIuYm90dG9tIHsKLSAgICBib3R0b206IDA7Ci19Ci0KLWJv
ZHkuZG9ja2VkLmJvdHRvbSAudGFiLWJhciA+IC5ib3JkZXIudG9wIHsKLSAgICBmaWx0ZXI6IGJy
aWdodG5lc3MoODAlKTsKLX0KLQotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5k
b3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC5ib3JkZXIgewotICAgIGJhY2tncm91bmQt
Y29sb3I6IHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcik7Ci19Ci0KLUBtZWRpYSAo
LXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvOiAxKSB7Ci0gICAgYm9keS5kb2NrZWQ6bWF0
Y2hlcygucmlnaHQsIC5sZWZ0KTpub3QoLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFy
ID4gLmJvcmRlci50b3AgewotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsK
LSAgICB9Ci19Ci0KLUBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSB7
Ci0gICAgYm9keS5kb2NrZWQ6bWF0Y2hlcygucmlnaHQsIC5sZWZ0KTpub3QoLndpbmRvdy1kb2Nr
ZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLmJvcmRlci50b3AgewotICAgICAgICBoZWlnaHQ6IDAu
NXB4ICFpbXBvcnRhbnQ7Ci0gICAgfQotfQotCi0udGFiLWJhciA+IC5uYXZpZ2F0aW9uLWJhciB7
Ci0gICAgaGVpZ2h0OiB2YXIoLS10YWItYmFyLWhlaWdodCk7Ci19Ci0KLS50YWItYmFyID4gLm5h
dmlnYXRpb24tYmFyID4gLml0ZW0uZ3JvdXAgPiAuaXRlbSB7Ci0gICAgd2lkdGg6IGF1dG8gIWlt
cG9ydGFudDsKLSAgICBtYXJnaW46IDAgNHB4ICFpbXBvcnRhbnQ7Ci0gICAgcGFkZGluZzogMCAh
aW1wb3J0YW50OwotfQotCi0udGFiLWJhciA+IC5uYXZpZ2F0aW9uLWJhciA+IC5pdGVtLmdyb3Vw
ID4gLml0ZW06bnRoLWNoaWxkKDEgb2YgOm5vdCguaGlkZGVuKSkgewotICAgIC13ZWJraXQtbWFy
Z2luLXN0YXJ0OiAxMnB4ICFpbXBvcnRhbnQ7Ci19Ci0KLS50YWItYmFyID4gLm5hdmlnYXRpb24t
YmFyID4gLml0ZW0uZ3JvdXAgPiAuaXRlbTpudGgtbGFzdC1jaGlsZCgxIG9mIDpub3QoLmhpZGRl
bikpIHsKLSAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDEycHggIWltcG9ydGFudDsKLX0KIAotLnRh
Yi1iYXIgPiAubmF2aWdhdGlvbi1iYXIgLml0ZW0uZGl2aWRlciB7Ci0gICAgbWFyZ2luLXRvcDog
MXB4OwogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRhYi1pdGVtLW1lZGl1bS1ib3JkZXIt
Y29sb3IpOwotfQogCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2Nr
ZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLm5hdmlnYXRpb24tYmFyID4gLml0ZW0uZGl2aWRlciB7
Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9y
KTsKKyAgICB6LWluZGV4OiAwOwogfQogCi0udGFiLWJhciA+IC50YWJzIHsKLSAgICBkaXNwbGF5
OiBmbGV4OwotICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKLSAgICBmbGV4LXdy
YXA6IHdyYXA7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHdpZHRoOiAxMDAlOwotICAg
IGhlaWdodDogMTAwJTsKK2JvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyID4gLnRvcC1ib3Jk
ZXIgeworICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1j
b2xvcik7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbSB7CisudGFiLWJhciA+IC5pdGVt
IHsKICAgICBkaXNwbGF5OiBmbGV4OwogICAgIGZsZXgtZ3JvdzogMTsKIApAQCAtMTM0LDEyICs4
OCwxNCBAQCBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5h
Y3RpdmUpIC50YWItYmFyID4gLm5hdmlnYXRpb24tYgogCiAgICAgcGFkZGluZzogMCA2cHg7CiAK
LSAgICBtaW4td2lkdGg6IGNhbGModmFyKC0tdGFiLWJhci1oZWlnaHQpIC0gMXB4KTsgLyogc3Vi
dHJhY3QgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgKi8KKyAgICBtaW4td2lkdGg6IDI0cHg7CiAg
ICAgb3ZlcmZsb3c6IGhpZGRlbjsKIAogICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFk
aWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwgNzglKSwgaHNsKDAsIDAlLCA3MiUpKTsKICAgICBi
YWNrZ3JvdW5kLXNpemU6IDEwMCUgMjAwJTsKIAorICAgIGJvcmRlci10b3A6IHZhcigtLXRhYi1p
dGVtLW1lZGl1bS1ib3JkZXItc3R5bGUpOworCiAgICAgaGVpZ2h0OiAxMDAlOwogICAgIGxpbmUt
aGVpZ2h0OiAxNXB4OwogICAgIG91dGxpbmU6IG5vbmU7CkBAIC0xNTAsNTMgKzEwNiw1NCBAQCBi
b2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50
YWItYmFyID4gLm5hdmlnYXRpb24tYgogICAgIC8qIHRyYW5zaXRpb24tZGVsYXk6IDUwbXM7ICov
CiB9CiAKLS50YWItYmFyID4gLnRhYnMuY2FsY3VsYXRlLXdpZHRoID4gLml0ZW0geworLnRhYi1i
YXIuY2FsY3VsYXRlLXdpZHRoID4gLml0ZW0gewogICAgIGZsZXg6IGluaXRpYWw7CiB9CiAKLWJv
ZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpLAot
Ym9keVtkaXI9bHRyXSAudGFiLWJhciA+IC50YWJzOm5vdCguaGlkZS1ib3JkZXItc3RhcnQpID4g
Lml0ZW06Zmlyc3QtY2hpbGQsCi1ib2R5W2Rpcj1sdHJdIC50YWItYmFyID4gLnRhYnMuZHJhZ2dp
bmctdGFiID4gLml0ZW0uc2VsZWN0ZWQsCi1ib2R5W2Rpcj1ydGxdIC50YWItYmFyID4gLnRhYnM6
bm90KC5oaWRlLWJvcmRlci1lbmQpID4gLml0ZW06bGFzdC1jaGlsZCB7Citib2R5W2Rpcj1sdHJd
IC50YWItYmFyID4gOm50aC1jaGlsZChuICsgMiBvZiAuaXRlbSksCitib2R5W2Rpcj1sdHJdIC50
YWItYmFyLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkIHsKICAgICBib3JkZXItbGVmdDog
dmFyKC0tdGFiLWl0ZW0tbWVkaXVtLWJvcmRlci1zdHlsZSk7CiB9CiAKLWJvZHlbZGlyPWx0cl0g
LnRhYi1iYXIgPiAudGFiczpub3QoLmhpZGUtYm9yZGVyLWVuZCkgPiAuaXRlbTpsYXN0LWNoaWxk
LAotYm9keVtkaXI9cnRsXSAudGFiLWJhciA+IC50YWJzID4gLml0ZW06bm90KDpmaXJzdC1jaGls
ZCksCi1ib2R5W2Rpcj1ydGxdIC50YWItYmFyID4gLnRhYnM6bm90KC5oaWRlLWJvcmRlci1zdGFy
dCkgPiAuaXRlbTpmaXJzdC1jaGlsZCwKLWJvZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiAudGFicy5k
cmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCB7Citib2R5W2Rpcj1ydGxdIC50YWItYmFyID4g
Om50aC1jaGlsZChuICsgMiBvZiAuaXRlbSksCitib2R5W2Rpcj1ydGxdIC50YWItYmFyLmRyYWdn
aW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkIHsKICAgICBib3JkZXItcmlnaHQ6IHZhcigtLXRhYi1p
dGVtLW1lZGl1bS1ib3JkZXItc3R5bGUpOwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0u
cGlubmVkIHsKKy50YWItYmFyID4gLml0ZW0ucGlubmVkIHsKKyAgICB3aWR0aDogMjRweDsKICAg
ICBmbGV4OiBub25lOwogICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogfQogCi0udGFiLWJh
ciA+IC50YWJzID4gLml0ZW06bm90KC5kaXNhYmxlZCkuc2VsZWN0ZWQgeworLnRhYi1iYXIgPiAu
aXRlbS5waW5uZWQudGFiLXBpY2tlciB7CisgICAgd2lkdGg6IDE4cHg7CisgICAgbWluLXdpZHRo
OiBpbml0aWFsOworfQorCisudGFiLWJhciA+IC5pdGVtOm5vdCguZGlzYWJsZWQpLnNlbGVjdGVk
IHsKKyAgICBib3JkZXItdG9wLWNvbG9yOiBoc2woMCwgMCUsIDc0JSk7CiAgICAgYmFja2dyb3Vu
ZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA4NyUpLCBoc2wo
MCwgMCUsIDgyJSkpOwogICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOwogfQogCi0udGFi
LWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNh
YmxlZCk6aG92ZXIgeworLnRhYi1iYXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxl
Y3RlZCwgLmRpc2FibGVkKTpob3ZlciB7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdy
YWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA2NyUpLCBoc2woMCwgMCUsIDY0JSkpOworICAg
IGJvcmRlci10b3AtY29sb3I6IHZhcigtLXRhYi1pdGVtLWRhcmstYm9yZGVyLWNvbG9yKTsKIH0K
IAotYm9keVtkaXI9bHRyXSAudGFiLWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVt
Om5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIsCi1ib2R5W2Rpcj1sdHJdIC50YWItYmFy
ID4gLnRhYnM6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVk
KTpob3ZlciArIC5pdGVtLAotYm9keVtkaXI9cnRsXSAudGFiLWJhciA+IC50YWJzOm5vdCguYW5p
bWF0aW5nKSA+IC5pdGVtOmxhc3QtY2hpbGQ6bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3Zl
ciB7Citib2R5W2Rpcj1sdHJdIC50YWItYmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCgu
c2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIsCitib2R5W2Rpcj1sdHJdIC50YWItYmFyOm5vdCgu
YW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIgKyAuaXRl
bSB7CiAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWRhcmstYm9yZGVyLWNv
bG9yKTsKIH0KIAotYm9keVtkaXI9bHRyXSAudGFiLWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5n
KSA+IC5pdGVtOmxhc3QtY2hpbGQ6bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciwKLWJv
ZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3Qo
LnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyLAotYm9keVtkaXI9cnRsXSAudGFiLWJhciA+IC50
YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92
ZXIgKyAuaXRlbSB7Citib2R5W2Rpcj1ydGxdIC50YWItYmFyOm5vdCguYW5pbWF0aW5nKSA+IC5p
dGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIsCitib2R5W2Rpcj1ydGxdIC50YWIt
YmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92
ZXIgKyAuaXRlbSB7CiAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS10YWItaXRlbS1kYXJr
LWJvcmRlci1jb2xvcik7CiB9CiAKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2lu
ZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtIHsKLSAgICBib3Jk
ZXItcmlnaHQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcikgIWltcG9y
dGFudDsKLSAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVy
LWNvbG9yKSAhaW1wb3J0YW50OworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRl
bSB7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNv
bG9yKSAhaW1wb3J0YW50OwogCiAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50
OwogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWV4dHJhLWxpZ2h0LWJvcmRl
ci1jb2xvcikgIWltcG9ydGFudDsKQEAgLTIwNCwxMiArMTYxLDIwIEBAIGJvZHk6bWF0Y2hlcygu
d2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFi
cyA+IC5pdGVtCiAgICAgdHJhbnNpdGlvbjogbm9uZTsKIH0KIAotYm9keTptYXRjaGVzKC53aW5k
b3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4g
Lml0ZW0uc2VsZWN0ZWQgeworYm9keVtkaXI9bHRyXS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIg
PiAuaXRlbSB7CisgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJv
cmRlci1jb2xvcikgIWltcG9ydGFudDsKK30KKworYm9keVtkaXI9cnRsXS53aW5kb3ctaW5hY3Rp
dmUgLnRhYi1iYXIgPiAuaXRlbSB7CisgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS10YWIt
aXRlbS1saWdodC1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7Cit9CisKK2JvZHkud2luZG93LWlu
YWN0aXZlIC50YWItYmFyID4gLml0ZW0uc2VsZWN0ZWQgewogICAgIGJhY2tncm91bmQtaW1hZ2U6
IG5vbmUgIWltcG9ydGFudDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDk2JSkg
IWltcG9ydGFudDsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLmNsb3NlIHsKKy50
YWItYmFyID4gLml0ZW0gPiAuY2xvc2UgewogICAgIHdpZHRoOiAxNnB4OwogICAgIGhlaWdodDog
MTZweDsKIApAQCAtMjMwLDI4ICsxOTUsMzYgQEAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3Rp
dmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4gLml0ZW0KICAg
ICAtd2Via2l0LW1hcmdpbi1lbmQ6IDRweDsKIH0KIAotYm9keTpub3QoLndpbmRvdy1pbmFjdGl2
ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtOmhvdmVyID4gLmNsb3NlIHsKK2JvZHk6bm90KC53
aW5kb3ctaW5hY3RpdmUpIC50YWItYmFyID4gLml0ZW06aG92ZXIgPiAuY2xvc2UgewogICAgIG9w
YWNpdHk6IDAuNjsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLmNsb3NlOmhvdmVy
IHsKK2JvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC50YWItYmFyLnNpbmdsZS10YWIgPiAuaXRl
bS5kZWZhdWx0LXRhYjpob3ZlciA+IC5jbG9zZSB7CisgICAgb3BhY2l0eTogMDsKK30KKworLnRh
Yi1iYXIuc2luZ2xlLXRhYiA+IC5pdGVtLmRlZmF1bHQtdGFiID4gLmNsb3NlIHsKKyAgICBwb2lu
dGVyLWV2ZW50czogbm9uZTsKK30KKworLnRhYi1iYXIgPiAuaXRlbSA+IC5jbG9zZTpob3ZlciB7
CiAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgwLCAwJSwgMCUsIDAuMik7CiB9CiAKLS50YWIt
YmFyID4gLnRhYnMgPiAuaXRlbSA+IC5jbG9zZTphY3RpdmUgeworLnRhYi1iYXIgPiAuaXRlbSA+
IC5jbG9zZTphY3RpdmUgewogICAgIG9wYWNpdHk6IDAuOCAhaW1wb3J0YW50OwogfQogCi0udGFi
LWJhciA+IC50YWJzID4gLml0ZW0gPiAuZmxleC1zcGFjZSB7CisudGFiLWJhciA+IC5pdGVtID4g
LmZsZXgtc3BhY2UgewogICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgZmxleDogMTsKIH0KIAotLnRh
Yi1iYXIgPiAudGFicyA+IC5pdGVtLmVwaGVtZXJhbCA+IC5mbGV4LXNwYWNlOmxhc3QtY2hpbGQg
eworLnRhYi1iYXIgPiAuaXRlbS5lcGhlbWVyYWwgPiAuZmxleC1zcGFjZTpsYXN0LWNoaWxkIHsK
ICAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDE2cHg7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAu
aXRlbSA+IC5pY29uIHsKKy50YWItYmFyID4gLml0ZW0gPiAuaWNvbiB7CiAgICAgd2lkdGg6IDE2
cHg7CiAgICAgaGVpZ2h0OiAxNnB4OwogCkBAIC0yNjMsMjggKzIzNiwyOCBAQCBib2R5Om5vdCgu
d2luZG93LWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4gLml0ZW06aG92ZXIgPiAuY2xvc2Ug
ewogICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lOwogfQogCi0udGFiLWJhciA+IC50YWJzID4g
Lml0ZW0ucGlubmVkID4gLmljb24geworLnRhYi1iYXIgPiAuaXRlbS5waW5uZWQgPiAuaWNvbiB7
CiAgICAgd2lkdGg6IDE1cHg7CiAgICAgaGVpZ2h0OiAxNXB4OwogICAgIG1pbi13aWR0aDogMTVw
eDsKICAgICBtaW4taGVpZ2h0OiAxNXB4OwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0u
c2VsZWN0ZWQgPiAuaWNvbiB7CisudGFiLWJhciA+IC5pdGVtLnNlbGVjdGVkID4gLmljb24gewog
ICAgIG9wYWNpdHk6IDAuNzsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtLmRpc2FibGVk
ID4gLmljb24geworLnRhYi1iYXIgPiAuaXRlbS5kaXNhYmxlZCA+IC5pY29uIHsKICAgICBvcGFj
aXR5OiAwLjM1OwogfQogCiBAbWVkaWEgbm90IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykg
ewotICAgIC50YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxl
Y3RlZCwgLmRpc2FibGVkKTpob3ZlciA+IC5pY29uIHsKKyAgICAudGFiLWJhcjpub3QoLmFuaW1h
dGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyID4gLmljb24gewog
ICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgfQogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0
ZW0gPiAudGl0bGUgeworLnRhYi1iYXIgPiAuaXRlbSA+IC50aXRsZSB7CiAgICAgY29sb3I6IGhz
bGEoMCwgMCUsIDAlLCAwLjU1KTsKIAogICAgIGRpc3BsYXk6IGZsZXg7CkBAIC0yOTMsMTEgKzI2
NiwxMSBAQCBib2R5Om5vdCgud2luZG93LWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4gLml0
ZW06aG92ZXIgPiAuY2xvc2UgewogICAgIG1heC13aWR0aDogNDAwcHg7CiB9CiAKLS50YWItYmFy
ID4gLnRhYnM6bm90KC5jb2xsYXBzZWQpID4gLml0ZW0gPiAudGl0bGUgeworLnRhYi1iYXI6bm90
KC5jb2xsYXBzZWQpID4gLml0ZW0gPiAudGl0bGUgewogICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0
OiA2cHg7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC50aXRsZSA+IC5jb250ZW50
IHsKKy50YWItYmFyID4gLml0ZW0gPiAudGl0bGUgPiAuY29udGVudCB7CiAgICAgbWluLXdpZHRo
OiAwOwogICAgIHdpZHRoOiAxMDAlOwogICAgIG92ZXJmbG93OiBoaWRkZW47CkBAIC0zMDUsODQg
KzI3OCw4NCBAQCBib2R5Om5vdCgud2luZG93LWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4g
Lml0ZW06aG92ZXIgPiAuY2xvc2UgewogICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiB9CiAKLS50
YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCk6aG92
ZXIgPiAudGl0bGUgeworLnRhYi1iYXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxl
Y3RlZCk6aG92ZXIgPiAudGl0bGUgewogICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC42KTsK
IH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtLnNlbGVjdGVkID4gLnRpdGxlIHsKKy50YWIt
YmFyID4gLml0ZW0uc2VsZWN0ZWQgPiAudGl0bGUgewogICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAw
JSwgMC43KTsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAuaXRlbSB7CisudGFi
LWJhci5jb2xsYXBzZWQgPiAuaXRlbSB7CiAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiB9
CiAKLS50YWItYmFyID4gLnRhYnMuY29sbGFwc2VkID4gLml0ZW06bm90KC5waW5uZWQpID4gLmlj
b24geworLnRhYi1iYXIuY29sbGFwc2VkID4gLml0ZW06bm90KC5waW5uZWQpID4gLmljb24gewog
ICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuY29sbGFwc2VkID4gLml0
ZW0gPiAuZmxleC1zcGFjZSB7CisudGFiLWJhci5jb2xsYXBzZWQgPiAuaXRlbSA+IC5mbGV4LXNw
YWNlIHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCi0udGFiLWJhciA+IC50YWJzLmNvbGxhcHNl
ZCA+IC5pdGVtID4gLmNsb3NlIHsKKy50YWItYmFyLmNvbGxhcHNlZCA+IC5pdGVtID4gLmNsb3Nl
IHsKICAgICBkaXNwbGF5OiBub25lOwogICAgIC13ZWJraXQtbWFyZ2luLWVuZDogMDsKIH0KIAot
LnRhYi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAuaXRlbTpob3ZlciA+IC5jbG9zZSB7CisudGFi
LWJhci5jb2xsYXBzZWQgPiAuaXRlbTpob3ZlciA+IC5jbG9zZSB7CiAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKIH0KIAotLnRhYi1iYXIgPiAudGFi
cy5jb2xsYXBzZWQgPiAuaXRlbS5lcGhlbWVyYWw6aG92ZXIgPiAuaWNvbiB7CisudGFiLWJhci5j
b2xsYXBzZWQgPiAuaXRlbS5lcGhlbWVyYWw6aG92ZXIgPiAuaWNvbiB7CiAgICAgZGlzcGxheTog
bm9uZTsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAuaXRlbS5lcGhlbWVyYWw6
aG92ZXIgPiAudGl0bGUgeworLnRhYi1iYXIuY29sbGFwc2VkID4gLml0ZW0uZXBoZW1lcmFsOmhv
dmVyID4gLnRpdGxlIHsKICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiB9CiAKLS50YWItYmFyID4g
LnRhYnMuc3RhdGljLWxheW91dCB7CisudGFiLWJhci5zdGF0aWMtbGF5b3V0IHsKICAgICBwb3Np
dGlvbjogcmVsYXRpdmU7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuc3RhdGljLWxheW91dCA+IC5p
dGVtIHsKKy50YWItYmFyLnN0YXRpYy1sYXlvdXQgPiAuaXRlbSB7CiAgICAgcG9zaXRpb246IGFi
c29sdXRlICFpbXBvcnRhbnQ7CiAgICAgdG9wOiAwOwogfQogCi0udGFiLWJhciA+IC50YWJzLmFu
aW1hdGluZy5jbG9zaW5nLXRhYiA+IC5pdGVtIHsKKy50YWItYmFyLmFuaW1hdGluZy5jbG9zaW5n
LXRhYiA+IC5pdGVtIHsKICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0OwogICAgIHRyYW5z
aXRpb24tZHVyYXRpb246IDI1MG1zOwogICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBl
YXNlLWluLW91dDsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5hbmltYXRpbmc6bWF0Y2hlcyguZXhw
YW5kaW5nLXRhYnMsIC5pbnNlcnRpbmctdGFiKSA+IC5pdGVtIHsKKy50YWItYmFyLmFuaW1hdGlu
ZzptYXRjaGVzKC5leHBhbmRpbmctdGFicywgLmluc2VydGluZy10YWIpID4gLml0ZW0gewogICAg
IHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIHdpZHRoOwogICAgIHRyYW5zaXRpb24tZHVyYXRp
b246IDI1MG1zOwogICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsK
IH0KIAotLnRhYi1iYXIgPiAudGFicy5hbmltYXRpbmcuaW5zZXJ0aW5nLXRhYiA+IC5pdGVtLmJl
aW5nLWluc2VydGVkIHsKKy50YWItYmFyLmFuaW1hdGluZy5pbnNlcnRpbmctdGFiID4gLml0ZW0u
YmVpbmctaW5zZXJ0ZWQgewogICAgIHotaW5kZXg6IDI7CiAgICAgbWluLXdpZHRoOiAwICFpbXBv
cnRhbnQ7CiAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogfQogCi0udGFiLWJhciA+IC50YWJz
LmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkLAotLnRhYi1iYXIgPiAudGFicy5zdGF0aWMt
bGF5b3V0Om5vdCguYW5pbWF0aW5nLmluc2VydGluZy10YWIpOm5vdCguZHJhZ2dpbmctdGFiKSA+
IC5pdGVtOm50aC1sYXN0LWNoaWxkKDEgb2YgOm5vdCgucGlubmVkKSksCi0udGFiLWJhciA+IC50
YWJzLmFuaW1hdGluZy5jbG9zaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkIHsKKy50YWItYmFyLmRy
YWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkLAorLnRhYi1iYXIuc3RhdGljLWxheW91dDpub3Qo
LmFuaW1hdGluZy5pbnNlcnRpbmctdGFiKTpub3QoLmRyYWdnaW5nLXRhYikgPiAuaXRlbTpudGgt
bGFzdC1jaGlsZCgxIG9mIDpub3QoLnBpbm5lZCkpLAorLnRhYi1iYXIuYW5pbWF0aW5nLmNsb3Np
bmctdGFiID4gLml0ZW0uc2VsZWN0ZWQgewogICAgIGJvcmRlci1yaWdodDogdmFyKC0tdGFiLWl0
ZW0tbWVkaXVtLWJvcmRlci1zdHlsZSk7CiB9CiAKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0
aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicy5kcmFnZ2luZy10
YWIgPiAuaXRlbS5zZWxlY3RlZCwKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2lu
ZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicy5zdGF0aWMtbGF5b3V0Om5vdCgu
YW5pbWF0aW5nLmluc2VydGluZy10YWIpOm5vdCguZHJhZ2dpbmctdGFiKSA+IC5pdGVtOm50aC1s
YXN0LWNoaWxkKDEgb2YgOm5vdCgucGlubmVkKSksCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFj
dGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMuYW5pbWF0aW5n
LmNsb3NpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQgeworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRh
Yi1iYXIuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQsCitib2R5LndpbmRvdy1pbmFjdGl2
ZSAudGFiLWJhci5zdGF0aWMtbGF5b3V0Om5vdCguYW5pbWF0aW5nLmluc2VydGluZy10YWIpOm5v
dCguZHJhZ2dpbmctdGFiKSA+IC5pdGVtOm50aC1sYXN0LWNoaWxkKDEgb2YgOm5vdCgucGlubmVk
KSksCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhci5hbmltYXRpbmcuY2xvc2luZy10YWIg
PiAuaXRlbS5zZWxlY3RlZCB7CiAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS10YWItaXRl
bS1saWdodC1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7CiB9CiAKLS50YWItYmFyID4gLnRhYnMu
ZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQgeworLnRhYi1iYXIuZHJhZ2dpbmctdGFiID4g
Lml0ZW0uc2VsZWN0ZWQgewogICAgIHotaW5kZXg6IDI7CiAgICAgcG9pbnRlci1ldmVudHM6IG5v
bmU7CiB9CkBAIC00MDAsNDggKzM3Myw0NiBAQCBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2
ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMuYW5pbWF0aQogICAg
ICAgICAtLXRhYi1pdGVtLWV4dHJhLWxpZ2h0LWJvcmRlci1jb2xvcjogdmFyKC0tdGFiLWl0ZW0t
Ym9yZGVyLWNvbG9yKTsKICAgICB9CiAKLSAgICBib2R5LmRvY2tlZC5ib3R0b20gLnRhYi1iYXIg
PiAuYm9yZGVyLnRvcCB7Ci0gICAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxMjAlKTsKLSAgICB9
Ci0KLSAgICAudGFiLWJhciA+IC50YWJzID4gLml0ZW0geworICAgIC50YWItYmFyID4gLml0ZW0g
ewogICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBo
c2woMCwgMCUsIDEyJSksIGhzbCgwLCAwJSwgMTAlKSk7CiAgICAgfQogCi0gICAgLnRhYi1iYXIg
PiAudGFicyA+IC5pdGVtID4gLnRpdGxlIHsKKyAgICAudGFiLWJhciA+IC5pdGVtID4gLnRpdGxl
IHsKICAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICAgfQogCi0gICAgLnRhYi1i
YXIgPiAudGFicyA+IC5pdGVtOm5vdCguZGlzYWJsZWQpLnNlbGVjdGVkIHsKKyAgICAudGFiLWJh
ciA+IC5pdGVtOm5vdCguZGlzYWJsZWQpLnNlbGVjdGVkIHsKICAgICAgICAgYmFja2dyb3VuZC1p
bWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCAyMyUpLCBoc2woMCwg
MCUsIDIxJSkpOworICAgICAgICBib3JkZXItdG9wLWNvbG9yOiBoc2woMCwgMCUsIDM3JSk7CiAg
ICAgfQogCi0gICAgLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3Qo
LnNlbGVjdGVkKTpob3ZlciB7CisgICAgLnRhYi1iYXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06
bm90KC5zZWxlY3RlZCk6aG92ZXIgewogICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXIt
Z3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDExJSksIGhzbCgwLCAwJSwgOSUpKTsKICAg
ICB9CiAKLSAgICAudGFiLWJhciA+IC50YWJzID4gLml0ZW0gPiAuY2xvc2UsCi0gICAgLnRhYi1i
YXIgPiAudGFicyA+IC5pdGVtID4gLmljb24geworICAgIC50YWItYmFyID4gLml0ZW0gPiAuY2xv
c2UsCisgICAgLnRhYi1iYXIgPiAuaXRlbSA+IC5pY29uIHsKICAgICAgICAgZmlsdGVyOiB2YXIo
LS1maWx0ZXItaW52ZXJ0KTsKICAgICB9CiAKLSAgICBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFj
dGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyIHsKKyAgICBib2R5LndpbmRv
dy1pbmFjdGl2ZSAudGFiLWJhciB7CiAgICAgICAgIC0tdGFiLWl0ZW0tYm9yZGVyLWNvbG9yOiBo
c2woMCwgMCUsIDM0JSk7CisgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXRhYi1p
dGVtLWJvcmRlci1jb2xvcik7CiAKICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1w
b3J0YW50OwogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDEzJSkgIWltcG9y
dGFudDsKICAgICB9CiAKLSAgICBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRv
dy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSB7CisgICAgYm9keS53
aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRlbSB7CiAgICAgICAgIGJhY2tncm91bmQtaW1h
Z2U6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAl
LCAxMyUpICFpbXBvcnRhbnQ7CiAgICAgfQogCi0gICAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5h
Y3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4gLml0ZW0u
c2VsZWN0ZWQgeworICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyID4gLml0ZW0uc2Vs
ZWN0ZWQgewogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDE5JSkgIWltcG9y
dGFudDsKICAgICB9CiAKLSAgICBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRv
dy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC50aXRsZSB7Cisg
ICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRlbSA+IC50aXRsZSB7CiAgICAg
ICAgIGNvbG9yOiBoc2woMCwgMCUsIDU4JSkgIWltcG9ydGFudDsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKaW5k
ZXggNzg0ZmM2OTVkNzVhZmJmM2IwNWNlODc4YmUzMDJlYzVmYTgxNjgyOS4uODAxYjE3ZDdjMTUw
OTIzMzBkOTJiYTFiNzcwZjhkNmYwYzBlOWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcwpAQCAtMjUsNTggKzI1LDM0IEBA
CiAKIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKIHsKLSAgICBjb25z
dHJ1Y3RvcihlbGVtZW50KQorICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHRhYkJhckl0ZW1zKQog
ICAgIHsKICAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoInRhYi1iYXIiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0
ZSgicm9sZSIsICJ0YWJsaXN0Iik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUNs
aWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7CisgICAgICAg
IHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRs
ZUNvbnRleHRNZW51LmJpbmQodGhpcykpOwogCi0gICAgICAgIHRoaXMuZWxlbWVudC5jcmVhdGVD
aGlsZCgiZGl2IiwgImJvcmRlciB0b3AiKTsKLQotICAgICAgICBjb25zdCBuYXZpZ2F0aW9uQmFy
QmVmb3JlRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXJCZWZvcmUg
PSBuZXcgV0kuTmF2aWdhdGlvbkJhcihuYXZpZ2F0aW9uQmFyQmVmb3JlRWxlbWVudCwge3NpemVz
VG9GaXQ6IHRydWV9KTsKLSAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX25hdmlnYXRpb25C
YXJCZWZvcmUpOwotCi0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lciA9IHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgICAgIHRoaXMu
X3RhYkNvbnRhaW5lci5jbGFzc05hbWUgPSAidGFicyI7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRh
aW5lci5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFibGlzdCIpOwotICAgICAgICB0aGlzLl90YWJD
b250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxlTW91c2VE
b3duLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVDbGljay5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhp
cy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9oYW5k
bGVNb3VzZUxlYXZlLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRk
RXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudS5iaW5k
KHRoaXMpKTsKLQotICAgICAgICBjb25zdCBuYXZpZ2F0aW9uQmFyQWZ0ZXJFbGVtZW50ID0gbnVs
bDsKLSAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhckFmdGVyID0gbmV3IFdJLk5hdmlnYXRpb25C
YXIobmF2aWdhdGlvbkJhckFmdGVyRWxlbWVudCwge3NpemVzVG9GaXQ6IHRydWV9KTsKLSAgICAg
ICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX25hdmlnYXRpb25CYXJBZnRlcik7Ci0KLSAgICAgICAg
dGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAiYm9yZGVyIGJvdHRvbSIpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJ0b3AtYm9yZGVyIik7CiAKICAgICAg
ICAgdGhpcy5fdGFiQmFySXRlbXMgPSBbXTsKICAgICAgICAgdGhpcy5faGlkZGVuVGFiQmFySXRl
bXMgPSBbXTsKIAotICAgICAgICBjb25zdCB0YWJQaWNrZXJSZXByZXNlbnRlZE9iamVjdCA9IG51
bGw7Ci0gICAgICAgIHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0gPSBuZXcgV0kuUGlubmVkVGFi
QmFySXRlbSh0YWJQaWNrZXJSZXByZXNlbnRlZE9iamVjdCwgIkltYWdlcy9UYWJQaWNrZXIuc3Zn
IiwgV0kuVUlTdHJpbmcoIlNob3cgaGlkZGVuIHRhYnMiKSk7Ci0gICAgICAgIHRoaXMuX3RhYlBp
Y2tlclRhYkJhckl0ZW0uaGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFi
QmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1waWNrZXIiKTsKKyAgICAgICAgaWYg
KHRhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICBmb3IgKGxldCB0YWJCYXJJdGVtIGluIHRhYkJh
ckl0ZW1zKQorICAgICAgICAgICAgICAgIHRoaXMuYWRkVGFiQmFySXRlbSh0YWJCYXJJdGVtKTsK
KyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0gPSBuZXcgV0ku
UGlubmVkVGFiQmFySXRlbSgiSW1hZ2VzL1RhYlBpY2tlci5zdmciLCBXSS5VSVN0cmluZygiU2hv
dyBoaWRkZW4gdGFicyIpKTsKKyAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbS5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInRhYi1waWNrZXIiLCAiaGlkZGVuIik7CiAgICAgICAgIHRoaXMu
YWRkVGFiQmFySXRlbSh0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLCB7c3VwcHJlc3NBbmltYXRp
b25zOiB0cnVlfSk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBhZGROYXZpZ2F0aW9u
SXRlbUJlZm9yZShuYXZpZ2F0aW9uSXRlbSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRp
b25CYXJCZWZvcmUuYWRkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0pOwotCi0gICAgICAg
IHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9Ci0KLSAgICBhZGROYXZpZ2F0aW9uSXRlbUFmdGVy
KG5hdmlnYXRpb25JdGVtKQotICAgIHsKLSAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhckFmdGVy
LmFkZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtKTsKLQotICAgICAgICB0aGlzLm5lZWRz
TGF5b3V0KCk7Ci0gICAgfQotCiAgICAgYWRkVGFiQmFySXRlbSh0YWJCYXJJdGVtLCBvcHRpb25z
ID0ge30pCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5pbnNlcnRUYWJCYXJJdGVtKHRhYkJh
ckl0ZW0sIHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aCwgb3B0aW9ucyk7CkBAIC0xMDksNyArODUs
NyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGluZGV4ID0gTnVtYmVyLmNvbnN0cmFpbihpbmRleCwgdGhpcy5ub3Jt
YWxUYWJDb3VudCwgdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoKTsKIAotICAgICAgICBpZiAodGhp
cy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKKyAgICAg
ICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CiAg
ICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykp
OwogICAgICAgICAgICAgb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMgPSB0cnVlOwogICAgICAg
ICB9CkBAIC0xMjMsMzcgKzk5LDM3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRz
IFdJLlZpZXcKICAgICAgICAgdmFyIG5leHRTaWJsaW5nID0gdGhpcy5fdGFiQmFySXRlbXNbaW5k
ZXggKyAxXTsKICAgICAgICAgbGV0IG5leHRTaWJsaW5nRWxlbWVudCA9IG5leHRTaWJsaW5nID8g
bmV4dFNpYmxpbmcuZWxlbWVudCA6IHRoaXMuX3RhYkJhckl0ZW1zLmxhc3RWYWx1ZS5lbGVtZW50
OwogCi0gICAgICAgIGlmICh0aGlzLl90YWJDb250YWluZXIuY29udGFpbnMobmV4dFNpYmxpbmdF
bGVtZW50KSkKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGFi
QmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOworICAgICAgICBpZiAodGhpcy5l
bGVtZW50LmNvbnRhaW5zKG5leHRTaWJsaW5nRWxlbWVudCkpCisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuaW5zZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFwcGVuZENo
aWxkKHRhYkJhckl0ZW0uZWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGFiQmFySXRlbS5lbGVtZW50KTsKIAotICAgICAgICB0aGlzLl90YWJDb250YWluZXIu
Y2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICF0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1h
bFRhYigpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10
YWIiLCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSk7CiAKICAgICAgICAgdGFiQmFy
SXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxsOwogICAgICAgICB0YWJCYXJJdGVtLmVsZW1l
bnQuc3R5bGUud2lkdGggPSBudWxsOwogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkK
ICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQo
ImFuaW1hdGluZyIpOwotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5h
ZGQoImluc2VydGluZy10YWIiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJpbnNlcnRpbmctdGFiIik7CiAKICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNp
emVzQW5kUG9zaXRpb25zKGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOwogCi0gICAgICAgICAg
ICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVu
ZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIp
OwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKICAgICAgICAg
ewotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoInN0YXRp
Yy1sYXlvdXQiKTsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVt
b3ZlKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xp
c3QucmVtb3ZlKCJpbnNlcnRpbmctdGFiIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoImluc2VydGluZy10YWIiKTsKIAogICAgICAgICAgICAgdGFiQmFy
SXRlbS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImJlaW5nLWluc2VydGVkIik7CiAKICAgICAg
ICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAKLSAgICAg
ICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFu
c2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHls
ZXNMaXN0ZW5lcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NB
bmltYXRpb25zKSB7CkBAIC0xNzAsNyArMTQ2LDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFy
IGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJlZm9y
ZVRhYlNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJCYXJJdGVtLCB7bGVmdDogMCwgd2lkdGg6IDB9
KTsKIAotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInN0YXRp
Yy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0
aWMtbGF5b3V0Iik7CiAgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiYmVpbmctaW5zZXJ0ZWQiKTsKIAogICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVt
U2l6ZXNBbmRQb3NpdGlvbnMoYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOwpAQCAtMjA2LDcg
KzE4Miw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAg
ICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJCYXJJdGVtID0gbmV4dFRhYkJhckl0ZW07CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAodGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygi
YW5pbWF0aW5nIikpIHsKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFp
bnMoImFuaW1hdGluZyIpKSB7CiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVt
b3ZlU3R5bGVzLmJpbmQodGhpcykpOwogICAgICAgICAgICAgb3B0aW9ucy5zdXBwcmVzc0FuaW1h
dGlvbnMgPSB0cnVlOwogICAgICAgICB9CkBAIC0yMjIsNyArMTk4LDcgQEAgV0kuVGFiQmFyID0g
Y2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQu
cmVtb3ZlKCk7CiAKICAgICAgICAgdmFyIGhhc01vcmVUaGFuT25lTm9ybWFsVGFiID0gdGhpcy5f
aGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKTsKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNs
YXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICFoYXNN
b3JlVGhhbk9uZU5vcm1hbFRhYik7CiAKICAgICAgICAgaWYgKCFoYXNNb3JlVGhhbk9uZU5vcm1h
bFRhYiB8fCB3YXNMYXN0Tm9ybWFsVGFiIHx8ICFvcHRpb25zLnN1cHByZXNzRXhwYW5zaW9uKSB7
CiAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zKSB7CkBAIC0yMzks
MTUgKzIxNSwxNSBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAK
ICAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQogICAgICAgICB7Ci0gICAgICAgICAgICB0
aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAg
ICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiY2xvc2luZy10YWIiKTsKKyAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjbG9zaW5nLXRhYiIpOwogCiAgICAgICAg
ICAgICAvLyBGb3IgUlRMLCB3ZSBuZWVkIHRvIHBsYWNlIGV4dHJhIHNwYWNlIGJldHdlZW4gcGlu
bmVkIHRhYiBhbmQgZmlyc3Qgbm9ybWFsIHRhYi4KICAgICAgICAgICAgIC8vIEZyb20gbGVmdCB0
byByaWdodCB0aGVyZSBpcyBwaW5uZWQgdGFicywgZXh0cmEgc3BhY2UsIHRoZW4gbm9ybWFsIHRh
YnMuIENvbXB1dGUKICAgICAgICAgICAgIC8vIGhvdyBtdWNoIGV4dHJhIHNwYWNlIHdlIG5lZWQg
dG8gYWRkaXRpb25hbGx5IGFkZCBmb3Igbm9ybWFsIHRhYiBpdGVtcy4KICAgICAgICAgICAgIGxl
dCBleHRyYVNwYWNlQmV0d2Vlbk5vcm1hbEFuZFBpbm5lZFRhYnMgPSAwOwogICAgICAgICAgICAg
aWYgKFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5S
VEwpIHsKLSAgICAgICAgICAgICAgICBleHRyYVNwYWNlQmV0d2Vlbk5vcm1hbEFuZFBpbm5lZFRh
YnMgPSB0aGlzLl90YWJDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7Cisg
ICAgICAgICAgICAgICAgZXh0cmFTcGFjZUJldHdlZW5Ob3JtYWxBbmRQaW5uZWRUYWJzID0gdGhp
cy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOwogICAgICAgICAgICAgICAg
IGZvciAobGV0IGN1cnJlbnRUYWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zRnJvbUxlZnRU
b1JpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgIGV4dHJhU3BhY2VCZXR3ZWVuTm9ybWFsQW5k
UGlubmVkVGFicyAtPSBjdXJyZW50VGFiQmFySXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpLndpZHRoOwogICAgICAgICAgICAgfQpAQCAtMjcxLDcgKzI0Nyw3IEBAIFdJLlRhYkJh
ciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgIGlmIChsYXN0Tm9y
bWFsVGFiQmFySXRlbSAhPT0gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQogICAgICAgICAgICAg
ICAgIGxhc3ROb3JtYWxUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9h
dChsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoKSArIDEpICsgInB4IjsK
IAotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtp
dFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0
eWxlc0xpc3RlbmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHJlbW92ZVN0eWxl
cygpCkBAIC0yODAsMTYgKzI1NiwxNiBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5k
cyBXSS5WaWV3CiAgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtICYmIHRo
aXMuX3NlbGVjdGVkVGFiQmFySXRlbSAhPT0gbGFzdE5vcm1hbFRhYkJhckl0ZW0pCiAgICAgICAg
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAo
cGFyc2VGbG9hdCh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkg
LSAxKSArICJweCI7CiAKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3Qu
cmVtb3ZlKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFz
c0xpc3QucmVtb3ZlKCJjbG9zaW5nLXRhYiIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoImNsb3NpbmctdGFiIik7CiAKICAgICAgICAgICAgIHRoaXMudXBkYXRl
TGF5b3V0KCk7CiAKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5yZW1vdmVFdmVudExp
c3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRp
b25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
IW9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zKSB7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250
YWluZXIuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKIAogICAgICAgICAgICAgdGhp
cy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgPSB0cnVlOwogCkBAIC0zODIsNyAr
MzU4LDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogCiAgICAg
ICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pIHsKICAgICAgICAgICAgIHRoaXMuX3Nl
bGVjdGVkVGFiQmFySXRlbS5zZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgICAgICBpZiAodGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtLmhpZGRlbikKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3Rl
ZFRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImhpZGRlbiIpKQogICAgICAg
ICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKICAgICAgICAgfQogCkBAIC0zOTUsMjggKzM3
MSwzMiBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAg
IHJldHVybiB0aGlzLl90YWJCYXJJdGVtczsKICAgICB9CiAKLSAgICBnZXQgdGFiQ291bnQoKQor
ICAgIGdldCBub3JtYWxUYWJDb3VudCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGFi
QmFySXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV0kuVGFiQ29udGVudFZpZXcpLmxlbmd0aDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJh
ckl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gIShpdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFy
SXRlbSkpLmxlbmd0aDsKICAgICB9CiAKLSAgICBnZXQgbm9ybWFsVGFiQ291bnQoKQorICAgIGdl
dCBzYXZlYWJsZVRhYkNvdW50KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJ
dGVtcy5maWx0ZXIoKGl0ZW0pID0+ICEoaXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0
ZW0pKS5sZW5ndGg7CisgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtcy5maWx0ZXIoKGl0
ZW0pID0+IGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QgJiYgaXRlbS5yZXByZXNlbnRlZE9iamVjdC5j
b25zdHJ1Y3Rvci5zaG91bGRTYXZlVGFiKCkpLmxlbmd0aDsKICAgICB9CiAKICAgICAvLyBQcm90
ZWN0ZWQKIAogICAgIGxheW91dCgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fdGFiQ29udGFp
bmVyLmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKQorICAgICAgICBpZiAodGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJj
YWxjdWxhdGUtd2lkdGgiKTsKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5y
ZW1vdmUoImNvbGxhcHNlZCIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
Y2FsY3VsYXRlLXdpZHRoIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KCJjb2xsYXBzZWQiKTsKKworICAgICAgICBmdW5jdGlvbiBmb3JjZUl0ZW1IaWRkZW4oaXRlbSwg
aGlkZGVuKSB7CisgICAgICAgICAgICBpdGVtLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaGlk
ZGVuIiwgISFoaWRkZW4pOworICAgICAgICB9CiAKICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0
aGlzLl90YWJCYXJJdGVtcykKLSAgICAgICAgICAgIGl0ZW0uaGlkZGVuID0gaXRlbSA9PT0gdGhp
cy5fdGFiUGlja2VyVGFiQmFySXRlbTsKKyAgICAgICAgICAgIGZvcmNlSXRlbUhpZGRlbihpdGVt
LCBpdGVtID09PSB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtKTsKIAogICAgICAgICBmdW5jdGlv
biBtZWFzdXJlSXRlbVdpZHRoKGl0ZW0pIHsKICAgICAgICAgICAgIGlmICghaXRlbVtXSS5UYWJC
YXIuQ2FjaGVkV2lkdGhTeW1ib2xdKQpAQCAtNDM0LDEzICs0MTQsMTMgQEAgV0kuVGFiQmFyID0g
Y2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl9oaWRkZW5UYWJCYXJJ
dGVtcyA9IFtdOwogCiAgICAgICAgIGxldCB0b3RhbEl0ZW1XaWR0aCA9IHJlY2FsY3VsYXRlSXRl
bVdpZHRocygpOwotICAgICAgICBsZXQgYmFyV2lkdGggPSB0aGlzLl90YWJDb250YWluZXIucmVh
bE9mZnNldFdpZHRoOworICAgICAgICBsZXQgYmFyV2lkdGggPSB0aGlzLmVsZW1lbnQucmVhbE9m
ZnNldFdpZHRoOwogCiAgICAgICAgIGlmICh0b3RhbEl0ZW1XaWR0aCA+IGJhcldpZHRoKSB7Ci0g
ICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7
CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7CiAg
ICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCA9IHJlY2FsY3VsYXRlSXRlbVdpZHRocygpOwogICAg
ICAgICAgICAgaWYgKHRvdGFsSXRlbVdpZHRoID4gYmFyV2lkdGgpIHsKLSAgICAgICAgICAgICAg
ICB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLmhpZGRlbiA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIGZvcmNlSXRlbUhpZGRlbih0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLCBmYWxzZSk7CiAg
ICAgICAgICAgICAgICAgdG90YWxJdGVtV2lkdGggKz0gbWVhc3VyZUl0ZW1XaWR0aCh0aGlzLl90
YWJQaWNrZXJUYWJCYXJJdGVtKTsKICAgICAgICAgICAgIH0KIApAQCAtNDUyLDIxICs0MzIsMTMg
QEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHRvdGFsSXRlbVdpZHRoIC09IG1l
YXN1cmVJdGVtV2lkdGgoaXRlbSk7Ci0gICAgICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSB0cnVl
OworICAgICAgICAgICAgICAgIGZvcmNlSXRlbUhpZGRlbihpdGVtLCB0cnVlKTsKIAogICAgICAg
ICAgICAgICAgIHRoaXMuX2hpZGRlblRhYkJhckl0ZW1zLnB1c2goaXRlbSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJl
bW92ZSgiY2FsY3VsYXRlLXdpZHRoIik7Ci0gICAgfQotCi0gICAgZGlkTGF5b3V0U3VidHJlZSgp
Ci0gICAgewotICAgICAgICBzdXBlci5kaWRMYXlvdXRTdWJ0cmVlKCk7Ci0KLSAgICAgICAgdGhp
cy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoImhpZGUtYm9yZGVyLXN0YXJ0IiwgdGhp
cy5fbmF2aWdhdGlvbkJhckJlZm9yZS5uYXZpZ2F0aW9uSXRlbXMuZXZlcnkoKGl0ZW0pID0+IGl0
ZW0uaGlkZGVuKSk7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xl
KCJoaWRlLWJvcmRlci1lbmQiLCB0aGlzLl9uYXZpZ2F0aW9uQmFyQWZ0ZXIubmF2aWdhdGlvbkl0
ZW1zLmV2ZXJ5KChpdGVtKSA9PiBpdGVtLmhpZGRlbikpOworICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSgiY2FsY3VsYXRlLXdpZHRoIik7CiAgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQpAQCAtNTA4LDcgKzQ4MCw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRz
IFdJLlZpZXcKICAgICB7CiAgICAgICAgIHZhciB0YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMg
PSBuZXcgTWFwOwogCi0gICAgICAgIGxldCBiYXJSZWN0ID0gdGhpcy5fdGFiQ29udGFpbmVyLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBjb25zdCBiYXJSZWN0ID0gdGhpcy5lbGVt
ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCiAgICAgICAgIGZvciAodmFyIHRhYkJhckl0
ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKICAgICAgICAgICAgIHZhciBib3VuZGluZ1JlY3Qg
PSB0YWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CkBAIC01NDcsMzYg
KzUxOSwzNiBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAg
ICAgICAgICBpZiAoIWJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKQogICAgICAgICAgICAgICAg
IGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVz
QW5kUG9zaXRpb25zKCk7CiAKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xp
c3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwogICAgICAgICAgICAgdGhpcy5fY2xlYXJU
YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAogICAgICAgICAgICAgdmFyIGFmdGVyVGFi
U2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlv
bnMoKTsKIAogICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlv
bnMoYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOwotICAgICAgICAgICAgdGhpcy5fdGFiQ29u
dGFpbmVyLmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlz
Ll90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwotICAgICAgICAg
ICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKLSAg
ICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiZXhwYW5kaW5n
LXRhYnMiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3Rh
dGljLWxheW91dCIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiZXhwYW5kaW5nLXRhYnMiKTsKIAogICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFy
SXRlbVNpemVzQW5kUG9zaXRpb25zKGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOwogCi0gICAg
ICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRy
YW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVT
dHlsZXNMaXN0ZW5lcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHJl
bW92ZVN0eWxlcygpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29u
dGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKLSAgICAgICAgICAgICAg
ICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZGlu
Zy10YWJzIik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
InN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoImV4cGFuZGluZy10YWJzIik7CiAKICAgICAgICAgICAgICAgICB0aGlzLl9j
bGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwogCiAgICAgICAgICAgICAgICAgdGhp
cy51cGRhdGVMYXlvdXQoKTsKIAotICAgICAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5y
ZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlz
dGVuZXIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVy
KCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogCiAgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfQpAQCAtNjgxLDcgKzY1Myw3IEBAIFdJ
LlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgdmFyIGNsb3Nl
QnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KCIuIiArIFdJLlRhYkJhckl0ZW0u
Q2xvc2VCdXR0b25TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGlmIChjbG9zZUJ1dHRvbkVsZW1l
bnQgfHwgY2xpY2tlZE1pZGRsZUJ1dHRvbikgewogICAgICAgICAgICAgLy8gRGlzYWxsb3cgY2xv
c2luZyB0aGUgb25seSB0YWIuCi0gICAgICAgICAgICBpZiAodGhpcy5fdGFiQ29udGFpbmVyLmNs
YXNzTGlzdC5jb250YWlucygic2luZ2xlLXRhYiIpKQorICAgICAgICAgICAgaWYgKHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuY29udGFpbnMoInNpbmdsZS10YWIiKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGlmICghZXZlbnQuYWx0S2V5KSB7CkBAIC03MTYsMjMgKzY4
OCwyMSBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OwogCi0gICAgICAgIGlmICghdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygi
c3RhdGljLWxheW91dCIpKSB7CisgICAgICAgIGlmICghdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucygic3RhdGljLWxheW91dCIpKSB7CiAgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJh
ckl0ZW1TaXplc0FuZFBvc2l0aW9ucyh0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3Np
dGlvbnMoKSk7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgi
c3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlz
dC5hZGQoImRyYWdnaW5nLXRhYiIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBjb250YWlu
ZXJPZmZzZXQgPSB0aGlzLl90YWJDb250YWluZXIudG90YWxPZmZzZXRMZWZ0OwotCiAgICAgICAg
IGlmICh0aGlzLl9tb3VzZU9mZnNldCA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgdGhpcy5f
bW91c2VPZmZzZXQgPSBldmVudC5wYWdlWCAtIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVt
ZW50LnRvdGFsT2Zmc2V0TGVmdDsKIAotICAgICAgICBsZXQgdGFiQmFyTW91c2VPZmZzZXQgPSBl
dmVudC5wYWdlWCAtIGNvbnRhaW5lck9mZnNldDsKKyAgICAgICAgdmFyIHRhYkJhck1vdXNlT2Zm
c2V0ID0gZXZlbnQucGFnZVggLSB0aGlzLmVsZW1lbnQudG90YWxPZmZzZXRMZWZ0OwogICAgICAg
ICB2YXIgbmV3TGVmdCA9IHRhYkJhck1vdXNlT2Zmc2V0IC0gdGhpcy5fbW91c2VPZmZzZXQ7CiAK
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IG5l
d0xlZnQgKyAicHgiOwogCi0gICAgICAgIHZhciBzZWxlY3RlZFRhYk1pZFggPSBjb250YWluZXJP
ZmZzZXQgKyBuZXdMZWZ0ICsgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnJlYWxP
ZmZzZXRXaWR0aCAvIDIpOworICAgICAgICB2YXIgc2VsZWN0ZWRUYWJNaWRYID0gbmV3TGVmdCAr
ICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGggLyAyKTsK
IAogICAgICAgICB2YXIgY3VycmVudEluZGV4ID0gdGhpcy5fdGFiQmFySXRlbXMuaW5kZXhPZih0
aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pOwogICAgICAgICB2YXIgbmV3SW5kZXggPSBjdXJyZW50
SW5kZXg7CkBAIC03NjIsNyArNzMyLDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVu
ZHMgV0kuVmlldwogICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tu
ZXdJbmRleCArIDFdOwogICAgICAgICBsZXQgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxp
bmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogbnVsbDsKIAotICAgICAgICB0aGlzLl90YWJDb250
YWluZXIuaW5zZXJ0QmVmb3JlKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LCBuZXh0
U2libGluZ0VsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMu
X3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBBbmltYXRlIHRoZSB0YWJzIHRoYXQgbW92ZSB0byBtYWtlIHJvb20gZm9y
IHRoZSBzZWxlY3RlZCB0YWIuIFRoaXMgd2FzIGNhdXNpbmcgbWUgdHJvdWJsZSB3aGVuIEkgdHJp
ZWQuCiAKQEAgLTc4MSwxMCArNzUxLDEwIEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRl
bmRzIFdJLlZpZXcKICAgICAgICAgaWYgKCF0aGlzLl9tb3VzZUlzRG93bikKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgi
ZHJhZ2dpbmctdGFiIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJk
cmFnZ2luZy10YWIiKTsKIAogICAgICAgICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2lu
Y2VNb3VzZUVudGVyKSB7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0
LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFi
QmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBsZXQgbGVmdCA9IDA7CkBAIC04MTIsMTMgKzc4MiwxMyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICBfaGFuZGxlTW91c2VMZWF2ZShldmVudCkKICAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLl9tb3VzZUlzRG93biB8fCAhdGhpcy5fdGFiQW5pbWF0ZWRD
bG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuY29u
dGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmNv
bnRhaW5zKCJhbmltYXRpbmciKSkKKyAgICAgICAgaWYgKHRoaXMuX21vdXNlSXNEb3duIHx8ICF0
aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoImFuaW1hdGluZyIpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IC8vIFRoaXMgZXZlbnQgY2FuIHN0aWxsIGZpcmUgd2hlbiB0aGUgbW91c2UgaXMgaW5zaWRlIHRo
ZSBlbGVtZW50IGlmIERPTSBub2RlcyBhcmUgYWRkZWQsIHJlbW92ZWQgb3IgZ2VuZXJhbGx5IGNo
YW5nZSBpbnNpZGUuCiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBtb3VzZSByZWFsbHkgZGlkIGxl
YXZlIHRoZSBlbGVtZW50IGJ5IGNoZWNraW5nIHRoZSBib3VuZHMuCiAgICAgICAgIC8vIEZJWE1F
OiBJcyB0aGlzIGEgV2ViS2l0IGJ1ZyBvciBjb3JyZWN0IGJlaGF2aW9yPwotICAgICAgICBsZXQg
YmFyUmVjdCA9IHRoaXMuX3RhYkNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAg
ICAgICAgY29uc3QgYmFyUmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKICAgICAgICAgaWYgKGV2ZW50LnBhZ2VZID4gYmFyUmVjdC50b3AgJiYgZXZlbnQucGFnZVkg
PCBiYXJSZWN0LmJvdHRvbSAmJiBldmVudC5wYWdlWCA+IGJhclJlY3QubGVmdCAmJiBldmVudC5w
YWdlWCA8IGJhclJlY3QucmlnaHQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTgzMCw3ICs4
MDAsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAg
IGxldCBjb250ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7
CiAKICAgICAgICAgZm9yIChsZXQgdGFiQ2xhc3Mgb2YgV0kua25vd25UYWJDbGFzc2VzKCkpIHsK
LSAgICAgICAgICAgIGlmICghdGFiQ2xhc3MuaXNUYWJBbGxvd2VkKCkgfHwgIXRhYkNsYXNzLnNo
b3VsZFNhdmVUYWIoKSkKKyAgICAgICAgICAgIGlmICghdGFiQ2xhc3MuaXNUYWJBbGxvd2VkKCkg
fHwgdGFiQ2xhc3MudGFiSW5mbygpLmlzRXBoZW1lcmFsKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICBsZXQgb3BlblRhYkJhckl0ZW0gPSBudWxsOwpAQCAtODY0LDQg
KzgzNCw1IEBAIFdJLlRhYkJhci5FdmVudCA9IHsKICAgICBUYWJCYXJJdGVtQWRkZWQ6ICJ0YWIt
YmFyLXRhYi1iYXItaXRlbS1hZGRlZCIsCiAgICAgVGFiQmFySXRlbVJlbW92ZWQ6ICJ0YWItYmFy
LXRhYi1iYXItaXRlbS1yZW1vdmVkIiwKICAgICBUYWJCYXJJdGVtc1Jlb3JkZXJlZDogInRhYi1i
YXItdGFiLWJhci1pdGVtcy1yZW9yZGVyZWQiLAorICAgIE9wZW5EZWZhdWx0VGFiOiAidGFiLWJh
ci1vcGVuLWRlZmF1bHQtdGFiIgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzCmluZGV4IGNlZjlkNTY4NzBmZjU5
MWQ1ZmRjMDdjMDI0YjE3M2YzZTM4YTRlYWIuLmM4Njc2ZDA5ZjdmNWY0ODI4Zjg3NGUzOWIxNjky
NWFlNzY1OWM5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJhckl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGFiQmFySXRlbS5qcwpAQCAtMjQsMTEgKzI0LDEyIEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuVGFiQmFySXRlbSA9IGNsYXNz
IFRhYkJhckl0ZW0KK1dJLlRhYkJhckl0ZW0gPSBjbGFzcyBUYWJCYXJJdGVtIGV4dGVuZHMgV0ku
T2JqZWN0CiB7Ci0gICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QsIGltYWdlLCB0aXRs
ZSkKKyAgICBjb25zdHJ1Y3RvcihpbWFnZSwgdGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0KQogICAg
IHsKLSAgICAgICAgdGhpcy5fcmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdCB8
fCBudWxsOworICAgICAgICBzdXBlcigpOworCiAgICAgICAgIHRoaXMuX3BhcmVudFRhYkJhciA9
IG51bGw7CiAKICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwpAQCAtNDcsMTIgKzQ4LDE1IEBAIFdJLlRhYkJhckl0ZW0gPSBjbGFzcyBUYWJCYXJJ
dGVtCiAKICAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlOwogICAgICAgICB0aGlzLmltYWdlID0g
aW1hZ2U7CisgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVj
dDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkgeyByZXR1cm4g
dGhpcy5fZWxlbWVudDsgfQorCiAgICAgZ2V0IHJlcHJlc2VudGVkT2JqZWN0KCkgeyByZXR1cm4g
dGhpcy5fcmVwcmVzZW50ZWRPYmplY3Q7IH0KKyAgICBzZXQgcmVwcmVzZW50ZWRPYmplY3QocmVw
cmVzZW50ZWRPYmplY3QpIHsgdGhpcy5fcmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9i
amVjdCB8fCBudWxsOyB9CiAKICAgICBnZXQgcGFyZW50VGFiQmFyKCkgeyByZXR1cm4gdGhpcy5f
cGFyZW50VGFiQmFyOyB9CiAgICAgc2V0IHBhcmVudFRhYkJhcih0YWJCYXIpeyB0aGlzLl9wYXJl
bnRUYWJCYXIgPSB0YWJCYXIgfHwgbnVsbDsgfQpAQCAtNzksMTcgKzgzLDE3IEBAIFdJLlRhYkJh
ckl0ZW0gPSBjbGFzcyBUYWJCYXJJdGVtCiAKICAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpCiAg
ICAgewotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImRpc2FibGVkIiwg
ISFkaXNhYmxlZCk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZGlz
YWJsZWQiLCBkaXNhYmxlZCk7CiAgICAgfQogCi0gICAgZ2V0IGhpZGRlbigpCisgICAgZ2V0IGlz
RGVmYXVsdFRhYigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoImhpZGRlbiIpOworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuY29udGFpbnMoImRlZmF1bHQtdGFiIik7CiAgICAgfQogCi0gICAgc2V0IGhpZGRlbiho
aWRkZW4pCisgICAgc2V0IGlzRGVmYXVsdFRhYihpc0RlZmF1bHRUYWIpCiAgICAgewotICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIsICEhaGlkZGVuKTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJkZWZhdWx0LXRhYiIsIGlzRGVm
YXVsdFRhYik7CiAgICAgfQogCiAgICAgZ2V0IGltYWdlKCkgeyByZXR1cm4gdGhpcy5faWNvbkVs
ZW1lbnQuc3JjOyB9CkBAIC0xMTAsOCArMTE0LDYgQEAgV0kuVGFiQmFySXRlbSA9IGNsYXNzIFRh
YkJhckl0ZW0KICAgICAgICAgdGhpcy50aXRsZURpZENoYW5nZSgpOwogICAgIH0KIAotICAgIC8v
IFByb3RlY3RlZAotCiAgICAgdGl0bGVEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCmluZGV4IDVjZTc3MTNlZDcxZTdk
ZTI1YzYzOTU5ODAzMzIwZWU5ZWIwNDI1MzcuLjc2ZTE3ZjM5YzMzOWYzMDI1MmRjZmM0ZDFlNDhm
NzdjM2MzZjU5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcwpAQCAtMTY4LDcgKzE2OCw3IEBAIFdJLlRhYkJy
b3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB0aGlzLl90YWJCYXIuYWRkVGFiQmFySXRlbSh0YWJCYXJJdGVtLCBvcHRpb25z
KTsKIAotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3Mu
bGVuZ3RoID09PSB0aGlzLl90YWJCYXIudGFiQ291bnQpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3RoID09PSB0aGlzLl90YWJCYXIuc2F2
ZWFibGVUYWJDb3VudCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFi
Q29udGVudFZpZXcgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNl
bnRUYWJDb250ZW50Vmlld3NbMF0pOwogCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA2LDcg
KzIwNiw3IEBAIFdJLlRhYkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVuZHMgV0kuVmll
dwogCiAgICAgICAgIHRoaXMuX3RhYkJhci5yZW1vdmVUYWJCYXJJdGVtKHRhYkNvbnRlbnRWaWV3
LnRhYkJhckl0ZW0sIG9wdGlvbnMpOwogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Jl
Y2VudFRhYkNvbnRlbnRWaWV3cy5sZW5ndGggPT09IHRoaXMuX3RhYkJhci50YWJDb3VudCk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy5sZW5ndGgg
PT09IHRoaXMuX3RhYkJhci5zYXZlYWJsZVRhYkNvdW50KTsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyB8fCB0aGlzLnNlbGVjdGVkVGFiQ29udGVu
dFZpZXcgPT09IHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3c1swXSk7CiAKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0yNDEsNyArMjQxLDcgQEAgV0kuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJy
b3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRh
aW5lci5zaG93Q29udGVudFZpZXcodGFiQ29udGVudFZpZXcpOwogCiAgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcpOwotICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzLmxlbmd0aCA9PT0gdGhpcy5f
dGFiQmFyLnRhYkNvdW50KTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY2Vu
dFRhYkNvbnRlbnRWaWV3cy5sZW5ndGggPT09IHRoaXMuX3RhYkJhci5zYXZlYWJsZVRhYkNvdW50
KTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50Vmll
dyA9PT0gdGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzWzBdIHx8ICFzaG91bGRTYXZlVGFiKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVy
LmNsb3NlQWxsQ29udGVudFZpZXdzKCk7CkBAIC0yODcsMTIgKzI4NywxMiBAQCBXSS5UYWJCcm93
c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICB0aGlzLl9y
ZWNlbnRUYWJDb250ZW50Vmlld3MucmVtb3ZlKHRhYkNvbnRlbnRWaWV3KTsKIAotICAgICAgICBp
ZiAodGFiQ29udGVudFZpZXcuY29uc3RydWN0b3Iuc2hvdWxkU2F2ZVRhYigpKQorICAgICAgICBp
ZiAoIXRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnRhYkluZm8oKS5pc0VwaGVtZXJhbCkKICAg
ICAgICAgICAgIHRoaXMuX2Nsb3NlZFRhYkNsYXNzZXMuYWRkKHRhYkNvbnRlbnRWaWV3LmNvbnN0
cnVjdG9yKTsKIAogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUNvbnRl
bnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKIAotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9y
ZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3RoID09PSB0aGlzLl90YWJCYXIudGFiQ291bnQpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3Ro
ID09PSB0aGlzLl90YWJCYXIuc2F2ZWFibGVUYWJDb3VudCk7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCF0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRl
bnRWaWV3ID09PSB0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3NbMF0pOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
YWJDb250ZW50Vmlldy5qcwppbmRleCA5YTFiNjI2YjQwMDI5YjQ4MTUwOTI2OTdkY2M0MDNmYTNj
YmNlMmY2Li5hZTkwNjVmOTIxNmZhZGQ1ZmJjYTUxOTZjZDY3MDlkNDAzOTM1MDUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
YWJDb250ZW50Vmlldy5qcwpAQCAtMjUsMzAgKzI1LDM4IEBACiAKIFdJLlRhYkNvbnRlbnRWaWV3
ID0gY2xhc3MgVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogewotICAgIGNv
bnN0cnVjdG9yKHRhYkluZm8sIHtuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IsIGRl
dGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnN9ID0ge30pCisgICAgY29uc3RydWN0b3IoaWRl
bnRpZmllciwgc3R5bGVDbGFzc05hbWVzLCB0YWJCYXJJdGVtLCBuYXZpZ2F0aW9uU2lkZWJhclBh
bmVsQ29uc3RydWN0b3IsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMpCiAgICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydCghbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9y
IHx8IG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3Rvci5wcm90b3R5cGUgaW5zdGFuY2Vv
ZiBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWRl
dGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgfHwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0
cnVjdG9ycy5ldmVyeSgoZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9yKSA9PiBkZXRhaWxz
U2lkZWJhclBhbmVsQ29uc3RydWN0b3IucHJvdG90eXBlIGluc3RhbmNlb2YgV0kuRGV0YWlsc1Np
ZGViYXJQYW5lbCkpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgaWRlbnRpZmllciA9
PT0gInN0cmluZyIpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Ygc3R5bGVDbGFzc05h
bWVzID09PSAic3RyaW5nIiB8fCBzdHlsZUNsYXNzTmFtZXMuZXZlcnkoKGNsYXNzTmFtZSkgPT4g
dHlwZW9mIGNsYXNzTmFtZSA9PT0gInN0cmluZyIpKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlRhYkJhckl0ZW0pOworICAgICAgICBjb25zb2xlLmFz
c2VydCghbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yIHx8IHR5cGVvZiBuYXZpZ2F0
aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IgPT09ICJmdW5jdGlvbiIpOworICAgICAgICBjb25z
b2xlLmFzc2VydCghZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyB8fCBkZXRhaWxzU2lk
ZWJhclBhbmVsQ29uc3RydWN0b3JzLmV2ZXJ5KChkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0
b3IpID0+IHR5cGVvZiBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3IgPT09ICJmdW5jdGlv
biIpKTsKIAogICAgICAgICBzdXBlcihudWxsKTsKIAotICAgICAgICB0aGlzLl9pZGVudGlmaWVy
ID0gdGFiSW5mby5pZGVudGlmaWVyOwotICAgICAgICB0aGlzLl90YWJCYXJJdGVtID0gdGhpcy5j
b25zdHJ1Y3Rvci5zaG91bGRQaW5UYWIoKSA/IFdJLlBpbm5lZFRhYkJhckl0ZW0uZnJvbVRhYkNv
bnRlbnRWaWV3KHRoaXMpIDogV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkNvbnRlbnRWaWV3
KHRoaXMpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiIik7CisKKyAg
ICAgICAgaWYgKHR5cGVvZiBzdHlsZUNsYXNzTmFtZXMgPT09ICJzdHJpbmciKQorICAgICAgICAg
ICAgc3R5bGVDbGFzc05hbWVzID0gW3N0eWxlQ2xhc3NOYW1lc107CisKKyAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoLi4uc3R5bGVDbGFzc05hbWVzKTsKKworICAgICAgICB0aGlz
Ll9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5fdGFiQmFySXRlbSA9IHRh
YkJhckl0ZW07CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3Rv
ciA9IG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciB8fCBudWxsOwogICAgICAgICB0
aGlzLl9kZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzID0gZGV0YWlsc1NpZGViYXJQYW5l
bENvbnN0cnVjdG9ycyB8fCBbXTsKIAogICAgICAgICBjb25zdCBkZWZhdWx0U2lkZWJhcldpZHRo
ID0gMzAwOwogCi0gICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyQ29sbGFwc2VkU2V0dGlu
ZyA9IG5ldyBXSS5TZXR0aW5nKHRoaXMuX2lkZW50aWZpZXIgKyAiLW5hdmlnYXRpb24tc2lkZWJh
ci1jb2xsYXBzZWQiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyV2lk
dGhTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRlbnRpZmllciArICItbmF2aWdhdGlv
bi1zaWRlYmFyLXdpZHRoIiwgZGVmYXVsdFNpZGViYXJXaWR0aCk7Ci0KLSAgICAgICAgdGhpcy5f
ZGV0YWlsc1NpZGViYXJDb2xsYXBzZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRl
bnRpZmllciArICItZGV0YWlscy1zaWRlYmFyLWNvbGxhcHNlZCIsICF0aGlzLmRldGFpbHNTaWRl
YmFyRXhwYW5kZWRCeURlZmF1bHQpOwotICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhclNlbGVj
dGVkUGFuZWxTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRlbnRpZmllciArICItZGV0
YWlscy1zaWRlYmFyLXNlbGVjdGVkLXBhbmVsIiwgbnVsbCk7Ci0gICAgICAgIHRoaXMuX2RldGFp
bHNTaWRlYmFyV2lkdGhTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRlbnRpZmllciAr
ICItZGV0YWlscy1zaWRlYmFyLXdpZHRoIiwgZGVmYXVsdFNpZGViYXJXaWR0aCk7CisgICAgICAg
IHRoaXMuX25hdmlnYXRpb25TaWRlYmFyQ29sbGFwc2VkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5n
KGlkZW50aWZpZXIgKyAiLW5hdmlnYXRpb24tc2lkZWJhci1jb2xsYXBzZWQiLCBmYWxzZSk7Cisg
ICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyV2lkdGhTZXR0aW5nID0gbmV3IFdJLlNldHRp
bmcoaWRlbnRpZmllciArICItbmF2aWdhdGlvbi1zaWRlYmFyLXdpZHRoIiwgZGVmYXVsdFNpZGVi
YXJXaWR0aCk7CiAKLSAgICAgICAgdGhpcy5fY29va2llU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5n
KHRoaXMuX2lkZW50aWZpZXIgKyAiLXRhYi1jb29raWUiLCB7fSk7CisgICAgICAgIHRoaXMuX2Rl
dGFpbHNTaWRlYmFyQ29sbGFwc2VkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50aWZpZXIg
KyAiLWRldGFpbHMtc2lkZWJhci1jb2xsYXBzZWQiLCAhdGhpcy5kZXRhaWxzU2lkZWJhckV4cGFu
ZGVkQnlEZWZhdWx0KTsKKyAgICAgICAgdGhpcy5fZGV0YWlsc1NpZGViYXJTZWxlY3RlZFBhbmVs
U2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci1z
ZWxlY3RlZC1wYW5lbCIsIG51bGwpOworICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhcldpZHRo
U2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci13
aWR0aCIsIGRlZmF1bHRTaWRlYmFyV2lkdGgpOwogCi0gICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJ0YWIiLCB0aGlzLl9pZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5fY29va2ll
U2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLXRhYi1jb29raWUiLCB7fSk7
CiAgICAgfQogCiAgICAgc3RhdGljIGlzVGFiQWxsb3dlZCgpCkBAIC01NywxMiArNjUsNiBAQCBX
SS5UYWJDb250ZW50VmlldyA9IGNsYXNzIFRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZXcKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3RhdGljIHNob3VsZFBp
blRhYigpCi0gICAgewotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHRhYiBzaG91bGQg
bm90IGJlIGFsbG93ZWQgdG8gYmUgY2xvc2VkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCiAgICAgc3RhdGljIHNob3VsZFNhdmVUYWIoKQogICAgIHsKICAgICAgICAgLy8gUmV0dXJu
cyBmYWxzZSBpZiB0aGUgdGFiIHNob3VsZCBub3QgYmUgcmVzdG9yZWQgd2hlbiByZS1vcGVuaW5n
IHRoZSBJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuY3NzCmluZGV4IDY2ZTkxN2U2
NTFjZDUzZDliZTc0MzVhOTc0NjkyZTFjNThiMTZmODQuLjk3ZmQ4NzE4NzIyMTNlNWYxMjdmYWQ2
MWE0ODE1MzZlN2VhNDc2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuY3NzCkBAIC0xMTcs
NyArMTE3LDcgQEAgYm9keVtkaXI9cnRsXSAudGltZWxpbmUtb3ZlcnZpZXc6bm90KC5mcmFtZXMp
ID4gOm1hdGNoZXMoLnNjcm9sbC1jb250YWluZXIsIC50aW0KIH0KIAogLnRpbWVsaW5lLW92ZXJ2
aWV3ID4gLnRyZWUtb3V0bGluZS50aW1lbGluZXMgLml0ZW0uc2VsZWN0ZWQgKyAuaXRlbSwKLWJv
ZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRp
bWVsaW5lLW92ZXJ2aWV3ID4gLnRyZWUtb3V0bGluZS50aW1lbGluZXMgLml0ZW0uc2VsZWN0ZWQg
KyAuaXRlbSB7Citib2R5LndpbmRvdy1pbmFjdGl2ZSAudGltZWxpbmUtb3ZlcnZpZXcgPiAudHJl
ZS1vdXRsaW5lLnRpbWVsaW5lcyAuaXRlbS5zZWxlY3RlZCArIC5pdGVtIHsKICAgICBib3JkZXIt
dG9wLWNvbG9yOiBoc2woMCwgMCUsIDgzJSk7CiB9CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCBib2R5
W2Rpcj1ydGxdIC50aW1lbGluZS1vdmVydmlldyA+IC5zY3JvbGwtY29udGFpbmVyID4gLnNjcm9s
bC13aWR0aC1zaXplciB7CiAgICAgfQogCiAgICAgLnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRyZWUt
b3V0bGluZS50aW1lbGluZXMgLml0ZW0uc2VsZWN0ZWQgKyAuaXRlbSwKLSAgICBib2R5Om1hdGNo
ZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50aW1lbGluZS1v
dmVydmlldyA+IC50cmVlLW91dGxpbmUudGltZWxpbmVzIC5pdGVtLnNlbGVjdGVkICsgLml0ZW0g
eworICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50aW1lbGluZS1vdmVydmlldyA+IC50cmVlLW91
dGxpbmUudGltZWxpbmVzIC5pdGVtLnNlbGVjdGVkICsgLml0ZW0gewogICAgICAgICBib3JkZXIt
dG9wLWNvbG9yOiBoc2xhKDAsIDAlLCB2YXIoLS1mb3JlZ3JvdW5kLWxpZ2h0bmVzcyksIDAuMDkp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkRnJhbWUuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5jc3MKaW5kZXggZDgzZWNk
Mzc1NGIwZDUyYzU2MGFkMzU4YWE5YjVlYTk4MGJmNTQyMi4uZjczZTc4OGFiMDM4NDJjNjdhNWNm
Y2JlOTBlMTg0YjBjNjQxYzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5jc3MKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5jc3MK
QEAgLTUzLDcgKzUzLDcgQEAKICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmln
aHQsIHZhcigtLXNlbGVjdGVkLXRleHQtYmFja2dyb3VuZC1jb2xvciksIHZhcigtLXNlbGVjdGVk
LXRleHQtYmFja2dyb3VuZC1jb2xvcikpIG5vLXJlcGVhdCAxcHggLTFweDsKIH0KIAotYm9keTpt
YXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGltZWxp
bmUtcmVjb3JkLWZyYW1lLnNlbGVjdGVkIHsKK2JvZHkud2luZG93LWluYWN0aXZlIC50aW1lbGlu
ZS1yZWNvcmQtZnJhbWUuc2VsZWN0ZWQgewogICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVu
dCh0byByaWdodCwgaHNsKDAsIDAlLCA5NiUpLCBoc2woMCwgMCUsIDk2JSkpIG5vLXJlcGVhdCAx
cHggLTFweDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmNzcwppbmRleCAzMDAyZmI0MjhlNTlhNmUx
ZDE2YzQyY2ZlNjYxNTQ1YmE5ODVhODU0Li5jOGIwMjRhMTM2NWE4MWQ5NmFjMmRkZjU1MTZkNDM0
NDBhOThhYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmNzcwpAQCAtNzQsNyArNzQsNyBAQCBib2R5
W2Rpcj1ydGxdIC50aW1lbGluZS1ydWxlciA+IC5tYXJrZXJzID4gOm1hdGNoZXMoLmRpdmlkZXIs
IC5tYXJrZXIpIHsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90
dG9tLCBoc2xhKDAsIDAlLCA3MCUsIDApLCBoc2xhKDAsIDAlLCA3MCUsIDIpIDg1JSk7CiB9CiAK
LWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkg
LnRpbWVsaW5lLXJ1bGVyID4gLmhlYWRlciA+IC5kaXZpZGVyIHsKK2JvZHkud2luZG93LWluYWN0
aXZlIC50aW1lbGluZS1ydWxlciA+IC5oZWFkZXIgPiAuZGl2aWRlciB7CiAgICAgYmFja2dyb3Vu
ZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsYSgwLCAwJSwgODUlLCAwKSwg
aHNsYSgwLCAwJSwgODUlLCAxKSA4NSUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250
ZW50Vmlldy5qcwppbmRleCAyNjJkNGVkMzE4OGIwYTk1MjFmMTExZmU2YTgwOTI5ZmY5ZGRmODc3
Li5jNzM5NjI1NzNiNjExOGYzZDdlMDRlNzY2MjdlZjcwODNhMjk3MzEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMKQEAgLTI1LDkgKzI1LDEwIEBACiAKIFdJLlRpbWVs
aW5lVGFiQ29udGVudFZpZXcgPSBjbGFzcyBUaW1lbGluZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKCkKKyAg
ICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc3VwZXIoVGltZWxpbmVU
YWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLkdl
bmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcudGFi
SW5mbygpKTsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAidGltZWxpbmUiLCAidGltZWxp
bmUiLCB0YWJCYXJJdGVtKTsKIAogICAgICAgICAvLyBNYWludGFpbiBhbiBpbnZpc2libGUgdHJl
ZSBvdXRsaW5lIGNvbnRhaW5pbmcgdHJlZSBlbGVtZW50cyBmb3IgYWxsIHJlY29yZGluZ3MuCiAg
ICAgICAgIC8vIFRoZSB2aXNpYmxlIHJlY29yZGluZydzIHRyZWUgZWxlbWVudCBpcyBzZWxlY3Rl
ZCB3aGVuIHRoZSBjb250ZW50IHZpZXcgY2hhbmdlcy4KQEAgLTEwMSw3ICsxMDIsNiBAQCBXSS5U
aW1lbGluZVRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgVGltZWxpbmVUYWJDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRCcm93cwogICAgIHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyOiBUaW1lbGluZVRhYkNvbnRlbnRWaWV3
LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9UaW1lbGluZS5zdmciLAogICAgICAg
ICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJUaW1lbGluZXMiKSwKICAgICAgICAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5j
c3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzgxMmJhMzllY2JhMGY0YWQxNDU0NTBlNGEyMmE0NTQ0YTA2NTlhYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Rvb2xiYXIuY3NzCkBAIC0wLDAgKzEsMjQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudG9v
bGJhciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAw
OworICAgIHJpZ2h0OiAwOworICAgIGhlaWdodDogdmFyKC0tdG9vbGJhci1oZWlnaHQpOworCisg
ICAgZGlzcGxheTogZmxleDsKKyAgICBwYWRkaW5nLXRvcDogM3B4OworICAgIHBhZGRpbmctYm90
dG9tOiAzcHg7CisKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgIG92ZXJmbG93OiBoaWRk
ZW47CisKKyAgICBvdXRsaW5lOiBub25lOworCisgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFy
LWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA5MiUpLCBoc2woMCwgMCUsIDg3JSkpOwor
ICAgIGJveC1zaGFkb3c6IGluc2V0IGhzbGEoMCwgMCUsIDEwMCUsIDAuNSkgMCAxcHggMXB4Owor
fQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciB7CisgICAgYmFja2dyb3VuZC1pbWFn
ZTogbm9uZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDk2JSk7Cit9CisKK2Jv
ZHkubWFjLXBsYXRmb3JtOm5vdCguZG9ja2VkKSAudG9vbGJhciB7CisgICAgcGFkZGluZy10b3A6
IDIxcHg7Cit9CisKK2JvZHkubWFjLXBsYXRmb3JtOm5vdCguZG9ja2VkKSB7CisgICAgLS10b29s
YmFyLWhlaWdodDogNTRweDsKK30KKworLnRvb2xiYXIgLmNvbnRyb2wtc2VjdGlvbiB7CisgICAg
ZGlzcGxheTogZmxleDsKKyAgICBmbGV4LWRpcmVjdGlvbjogcm93OworICAgIGFsaWduLWl0ZW1z
OiBjZW50ZXI7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgbWluLXdpZHRoOiBt
aW4tY29udGVudDsKKyAgICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDZweDsKKyAgICAtd2Via2l0
LXBhZGRpbmctZW5kOiAycHg7Cit9CisKKy50b29sYmFyIC5pdGVtLXNlY3Rpb24geworICAgIGRp
c3BsYXk6IGZsZXg7CisgICAgZmxleDogMTsKKyAgICBtaW4td2lkdGg6IG1pbi1jb250ZW50Owor
fQorCisudG9vbGJhciAuaXRlbS1zZWN0aW9uLmxlZnQgeworICAgIGp1c3RpZnktY29udGVudDog
ZmxleC1zdGFydDsKK30KKworLnRvb2xiYXIgLml0ZW0tc2VjdGlvbi5jZW50ZXItbGVmdCB7Cisg
ICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OworfQorCisudG9vbGJhciAuaXRlbS1zZWN0
aW9uLmNlbnRlci1yaWdodCB7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cit9CisKKy50
b29sYmFyIC5pdGVtLXNlY3Rpb24uY2VudGVyIHsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRl
cjsKK30KKworLnRvb2xiYXIgLml0ZW0tc2VjdGlvbi5yaWdodCB7CisgICAganVzdGlmeS1jb250
ZW50OiBmbGV4LWVuZDsKKyAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7Cit9CisKKy50b29sYmFyIC5p
dGVtIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIG91dGxpbmU6IG5vbmU7Cit9CisKKy50b29s
YmFyIC5zZWFyY2gtYmFyIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBtaW4td2lkdGg6IDEyNXB4
OworfQorCisudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdIHsKKyAg
ICB3aWR0aDogMTAwJTsKKyAgICBmb250LXNpemU6IDEycHg7CisgICAgYmFja2dyb3VuZC1jbGlw
OiBpbml0aWFsOworICAgIG1hcmdpbjogNHB4OworfQorCisudG9vbGJhciAuaXRlbS5idXR0b24s
CisudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdLAorLnRvb2xiYXIg
LmRhc2hib2FyZC1jb250YWluZXIgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFk
aWVudChoc2woMCwgMCUsIDk5JSksIHZhcigtLXBhbmVsLWJhY2tncm91bmQtY29sb3IpKTsKKyAg
ICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAwJSwgMC4zKSAwIDFweCAxcHggLTFweDsKKworICAg
IGJvcmRlci1yYWRpdXM6IDRweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBoc2woMCwgMSUsIDgy
JSk7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogaHNsKDAsIDAlLCA4MyUpOworICAgIGJvcmRlci1i
b3R0b20tY29sb3I6IGhzbCgwLCAwJSwgNzYlKTsKK30KKworLnRvb2xiYXIgLnNlYXJjaC1iYXIg
PiBpbnB1dFt0eXBlPSJzZWFyY2giXSB7CisgICAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUs
IDAuMykgMCAxcHggMXB4IC0xcHgsIDAgMCAwIDdweCBoc2xhKDIxMSwgOTYlLCA0OCUsIDApOwor
ICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgLjI1cyBjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQw
LCAwLjQ0MCwgMSkgLyogZWFzZU91dFF1YXJ0ICovOworfQorCisudG9vbGJhciAuc2VhcmNoLWJh
ciA+IGlucHV0W3R5cGU9InNlYXJjaCJdOmZvY3VzIHsKKyAgICBib3gtc2hhZG93OiBoc2xhKDAs
IDAlLCAwJSwgMC4xNSkgMCAxcHggMCwgMCAwIDAgM3B4IGhzbGEoMjExLCA5NiUsIDQ4JSwgMC40
KTsKK30KKworQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHsKKyAg
ICAudG9vbGJhciAuaXRlbS5idXR0b24sCisgICAgLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1
dFt0eXBlPSJzZWFyY2giXSwKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5lciB7Cisg
ICAgICAgIGJvcmRlcjogMC41cHggc29saWQgaHNsKDAsIDAlLCA3OCUpOworICAgICAgICBib3Jk
ZXItdG9wLWNvbG9yOiBoc2woMCwgMCUsIDgwJSk7CisgICAgICAgIGJvcmRlci1ib3R0b20tY29s
b3I6IGhzbCgwLCAwJSwgNjUlKTsKKyAgICB9Cit9CisKKy50b29sYmFyIC5pdGVtLmJ1dHRvbjph
Y3RpdmUgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChoc2woMCwgMCUs
IDg5JSksIGhzbCgwLCAwJSwgODYlKSk7CisgICAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUs
IDAuMykgMCAxcHggMXB4IC0xcHgsIGluc2V0IDAgMXB4IDFweCAtMXB4IHdoaXRlOworfQorCiti
b2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuaXRlbS5idXR0b24sCitib2R5LndpbmRvdy1p
bmFjdGl2ZSAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdLAorYm9k
eS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIgeworICAgIG9w
YWNpdHk6IDAuNjU7CisgICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC4xNSk7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYmFja2dyb3VuZC1pbWFnZTog
bm9uZTsKK30KKworQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHsK
KyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuaXRlbS5idXR0b24sCisgICAgYm9k
eS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFy
Y2giXSwKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRh
aW5lciB7CisgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAxcHggMCBoc2xhKDAsIDAlLCAw
JSwgMC4xKTsKKyAgICB9Cit9CisKK0BtZWRpYSAobWF4LXdpZHRoOiA1MzlweCkgeworICAgIC50
b29sYmFyIC5pdGVtLmRvd25sb2FkIHsKKyAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICB9Cit9
CisKK0BtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKKyAgICAudG9vbGJhciB7
CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhz
bCgwLCAwJSwgMjYlKSwgaHNsKDAsIDAlLCAyMyUpKTsKKyAgICAgICAgYm94LXNoYWRvdzogbm9u
ZTsKKyAgICB9CisKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciB7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3IpOworICAgIH0KKworICAg
IC50b29sYmFyIC5pdGVtLmJ1dHRvbiwKKyAgICAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0
W3R5cGU9InNlYXJjaCJdIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWJhY2tncm91bmQtY29sb3IpOworICAg
ICAgICBib3JkZXItY29sb3I6IHZhcigtLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yKTsKKyAgICAg
ICAgYm9yZGVyLXRvcC1jb2xvcjogaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjIpOworICAgICAgICBi
b3gtc2hhZG93OiBub25lOworICAgIH0KKworICAgIC50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5w
dXRbdHlwZT0ic2VhcmNoIl0geworICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7Cisg
ICAgfQorCisgICAgLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXTpm
b2N1cyB7CisgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLWFjdGl2ZSk7CisKKyAgICAg
ICAgLyogRklYTUU6IFVzZSBuYXRpdmUgb3V0bGluZSBmb3IgdGhlIGRlZmF1bHQgdGhlbWUgYXMg
d2VsbC4gKi8KKyAgICAgICAgYm94LXNoYWRvdzogdW5zZXQ7CisgICAgICAgIHRyYW5zaXRpb246
IHVuc2V0OworICAgICAgICBvdXRsaW5lOiAtd2Via2l0LWZvY3VzLXJpbmctY29sb3IgYXV0byA1
cHg7CisgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtM3B4OworICAgIH0KKworICAgIC50b29sYmFy
IC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl06OnBsYWNlaG9sZGVyIHsKKyAgICAg
ICAgY29sb3I6IHZhcigtLXRleHQtY29sb3Itc2Vjb25kYXJ5KTsKKyAgICB9CisKKyAgICBib2R5
LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJj
aCJdOjpwbGFjZWhvbGRlciB7CisgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLXRlcnRp
YXJ5KTsKKyAgICB9CisKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuc2VhcmNo
LWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRv
biB7CisgICAgICAgIC8qIFNldHRpbmcgYGNvbG9yYCBoYXMgbm8gZWZmZWN0IG9uIHRoZSBtYWdu
aWZ5aW5nIGdsYXNzIGljb24uICovCisgICAgICAgIG9wYWNpdHk6IDAuNTsKKyAgICB9CisKKyAg
ICAudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgICAgIGJhY2tncm91bmQtaW1h
Z2U6IG5vbmU7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRhc2hib2FyZC1iYWNr
Z3JvdW5kLWNvbG9yKTsKKyAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kYXNoYm9hcmQtYmFj
a2dyb3VuZC1jb2xvcik7CisgICAgICAgIGJvcmRlci10b3AtY29sb3I6IGhzbGEoMCwgMTAwJSwg
MTAwJSwgMC4xKTsKKyAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKKyAgICB9CisKKyAgICAudG9v
bGJhciAuaXRlbS5idXR0b246YWN0aXZlIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9u
ZTsKKyAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjIpOwor
ICAgICAgICBib3gtc2hhZG93OiBub25lOworICAgIH0KKworICAgIGJvZHkud2luZG93LWluYWN0
aXZlIC50b29sYmFyIC5pdGVtLmJ1dHRvbiwKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9v
bGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdLAorICAgIGJvZHkud2luZG93
LWluYWN0aXZlIC50b29sYmFyIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICAgICAgb3BhY2l0
eTogMTsKKyAgICAgICAgY29sb3I6IHZhcigtLWdseXBoLWNvbG9yKTsKKyAgICAgICAgYm9yZGVy
LWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogaHNsYSgwLCAx
MDAlLCAxMDAlLCAwLjEpOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworICAgICAg
ICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tYmFja2dyb3VuZC1jb2xvci1pbmFjdGl2ZSk7Cisg
ICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVG9vbGJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Rvb2xiYXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q3ZTdlMTIyMDFkZmI3Y2M2MmVkOTI3ZGU2OTUz
MzdkZWQ1NzRhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1dJLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV0kuTmF2aWdhdGlvbkJh
cgoreworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcihlbGVt
ZW50LCBudWxsLCAidG9vbGJhciIpOworCisgICAgICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jb250
cm9sU2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV0kuVG9vbGJhci5Db250cm9sU2VjdGlvblN0
eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29u
dHJvbFNlY3Rpb25FbGVtZW50KTsKKworICAgICAgICB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fbGVmdFNlY3Rp
b25FbGVtZW50LmNsYXNzTmFtZSA9IFdJLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFt
ZSArICIgIiArIFdJLlRvb2xiYXIuTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQpOwor
CisgICAgICAgIHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQu
Y2xhc3NOYW1lID0gV0kuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsg
V0kuVG9vbGJhci5DZW50ZXJMZWZ0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudCk7
CisKKyAgICAgICAgdGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQuY2xhc3NO
YW1lID0gV0kuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV0kuVG9v
bGJhci5DZW50ZXJJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQpOworCisgICAgICAgIHRo
aXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUg
PSBXSS5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXSS5Ub29sYmFy
LkNlbnRlclJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQpOworCisgICAg
ICAgIHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXSS5U
b29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXSS5Ub29sYmFyLlJpZ2h0
SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQpOworICAgIH0KKworICAgIC8vIFB1YmxpYwor
CisgICAgYWRkVG9vbGJhckl0ZW0odG9vbGJhckl0ZW0sIHNlY3Rpb25JZGVudGlmaWVyKQorICAg
IHsKKyAgICAgICAgdmFyIHNlY3Rpb25FbGVtZW50OworCisgICAgICAgIHN3aXRjaCAoc2VjdGlv
bklkZW50aWZpZXIpIHsKKyAgICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rpb24uQ29udHJvbDoK
KyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rpb24u
TGVmdDoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fbGVmdFNlY3Rpb25FbGVt
ZW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rp
b24uQ2VudGVyTGVmdDoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fY2VudGVy
TGVmdFNlY3Rpb25FbGVtZW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyOgorICAgICAgICAgICAg
c2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuVG9vbGJhci5TZWN0aW9uLkNlbnRlclJpZ2h0Ogor
ICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25FbGVt
ZW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rp
b24uUmlnaHQ6CisgICAgICAgICAgICBzZWN0aW9uRWxlbWVudCA9IHRoaXMuX3JpZ2h0U2VjdGlv
bkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHNlY3Rpb25FbGVtZW50KTsKKworICAgICAgICB0aGlzLmFkZE5hdmlnYXRpb25J
dGVtKHRvb2xiYXJJdGVtLCBzZWN0aW9uRWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHJvdGVj
dGVkCisKKyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgLy8gQmFpbCBlYXJseSBpZiBvdXIg
c2VjdGlvbnMgYXJlIG5vdCBjcmVhdGVkIHlldC4gVGhpcyBtZWFucyB3ZSBhcmUgYmVpbmcgY2Fs
bGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAgIGlmICghdGhpcy5fbGVmdFNlY3Rpb25F
bGVtZW50IHx8ICF0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudCB8fCAhdGhpcy5fcmlnaHRTZWN0
aW9uRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBGb3JjZSBjb2xs
YXBzZWQgc3R5bGUgZm9yIG5vbi1XZWIgZGVidWdnYWJsZXMuCisgICAgICAgIGlmICghV0kuc2hh
cmVkQXBwLmlzV2ViRGVidWdnYWJsZSgpKSB7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZChXSS5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSB0aGUgY29s
bGFwc2VkIHN0eWxlIGNsYXNzIHRvIHRlc3QgaWYgdGhlIGl0ZW1zIGNhbiBmaXQgYXQgZnVsbCB3
aWR0aC4KKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV0kuTmF2aWdhdGlv
bkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CisKKyAgICAgICAgZnVuY3Rpb24gaXNPdmVy
Zmxvd2luZ1Rvb2xiYXIoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY29udHJvbFNlY3Rp
b25XaWR0aCA9IHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgbGVmdFNlY3Rpb25XaWR0aCA9IHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVu
dC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgICAgICB2YXIgY2VudGVyTGVmdFNlY3Rpb25XaWR0
aCA9IHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAg
ICAgICAgICB2YXIgY2VudGVyU2VjdGlvbldpZHRoID0gdGhpcy5fY2VudGVyU2VjdGlvbkVsZW1l
bnQucmVhbE9mZnNldFdpZHRoOworICAgICAgICAgICAgdmFyIGNlbnRlclJpZ2h0U2VjdGlvbldp
ZHRoID0gdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgcmlnaHRTZWN0aW9uV2lkdGggPSB0aGlzLl9yaWdodFNlY3Rpb25FbGVt
ZW50LnJlYWxPZmZzZXRXaWR0aDsKKworICAgICAgICAgICAgdmFyIHRvb2xiYXJXaWR0aCA9IE1h
dGgucm91bmQodGhpcy5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aCk7CisgICAgICAgICAgICByZXR1
cm4gTWF0aC5yb3VuZChjb250cm9sU2VjdGlvbldpZHRoICsgbGVmdFNlY3Rpb25XaWR0aCArIGNl
bnRlckxlZnRTZWN0aW9uV2lkdGggKyBjZW50ZXJTZWN0aW9uV2lkdGggKyBjZW50ZXJSaWdodFNl
Y3Rpb25XaWR0aCArIHJpZ2h0U2VjdGlvbldpZHRoKSA+IHRvb2xiYXJXaWR0aDsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghaXNPdmVyZmxvd2luZ1Rvb2xiYXIuY2FsbCh0aGlzKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5O
YXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICB9Cit9OworCitXSS5U
b29sYmFyLlN0eWxlQ2xhc3NOYW1lID0gInRvb2xiYXIiOworV0kuVG9vbGJhci5Db250cm9sU2Vj
dGlvblN0eWxlQ2xhc3NOYW1lID0gImNvbnRyb2wtc2VjdGlvbiI7CitXSS5Ub29sYmFyLkl0ZW1T
ZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiaXRlbS1zZWN0aW9uIjsKK1dJLlRvb2xiYXIuTGVmdEl0
ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAibGVmdCI7CitXSS5Ub29sYmFyLkNlbnRlckxlZnRJ
dGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImNlbnRlci1sZWZ0IjsKK1dJLlRvb2xiYXIuQ2Vu
dGVySXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJjZW50ZXIiOworV0kuVG9vbGJhci5DZW50
ZXJSaWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiY2VudGVyLXJpZ2h0IjsKK1dJLlRv
b2xiYXIuUmlnaHRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gInJpZ2h0IjsKKworV0kuVG9v
bGJhci5TZWN0aW9uID0geworICAgIENvbnRyb2w6ICJjb250cm9sIiwKKyAgICBMZWZ0OiAibGVm
dCIsCisgICAgQ2VudGVyTGVmdDogImNlbnRlci1sZWZ0IiwKKyAgICBDZW50ZXI6ICJjZW50ZXIi
LAorICAgIENlbnRlclJpZ2h0OiAiY2VudGVyLXJpZ2h0IiwKKyAgICBSaWdodDogInJpZ2h0Igor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1ZhcmlhYmxlcy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WYXJpYWJsZXMuY3NzCmluZGV4IDRhMzA4ZWVlNzJjMDEzOTNjN2QyMDYxNGE3N2ZkNmZmYTI5
MDU0YWUuLjI1OTcyM2RmOTdkNWU0ZmQ2NWZlNzYzMjRiYWUwNWUzOGQwNjFiMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZhcmlhYmxlcy5j
c3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmFyaWFi
bGVzLmNzcwpAQCAtMTYyLDggKzE2Miw2IEBACiAgICAgLS1jcHUtbWVkaXVtLWNvbG9yOiBoc2wo
NDYsIDkxJSwgNjIlKTsKICAgICAtLWNwdS1oaWdoLWNvbG9yOiBoc2woNiwgNzklLCA1NyUpOwog
Ci0gICAgLS1uZXR3b3JrLXN0YXRpc3RpY3MtaGVpZ2h0OiB2YXIoLS1uYXZpZ2F0aW9uLWJhci1o
ZWlnaHQpOwotCiAgICAgLS1uZXR3b3JrLWhlYWRlci1jb2xvcjogaHNsKDIwNCwgNTIlLCA1NSUp
OwogICAgIC0tbmV0d29yay1zeXN0ZW0tY29sb3I6IGhzbCg3OSwgMzIlLCA1MCUpOwogICAgIC0t
bmV0d29yay1wc2V1ZG8taGVhZGVyLWNvbG9yOiBoc2woMzEyLCAzNSUsIDUxJSk7CkBAIC0xODEs
OSArMTc5LDggQEAKICAgICAtLW9kZC16ZWJyYS1zdHJpcGUtcm93LWJhY2tncm91bmQtY29sb3I6
IHdoaXRlOwogICAgIC0tdHJhbnNwYXJlbnQtc3RyaXBlLWJhY2tncm91bmQtZ3JhZGllbnQ6IGxp
bmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCA1MCUsIGhz
bGEoMCwgMCUsIDAlLCAwLjAzKSA1MCUsIGhzbGEoMCwgMCUsIDAlLCAwLjAzKSkgdG9wIGxlZnQg
LyAxMDAlIDQwcHg7CiAKLSAgICAtLXVuZG9ja2VkLXRpdGxlLWFyZWEtaGVpZ2h0OiAwcHg7Ci0g
ICAgLS10YWItYmFyLWhlaWdodDogdmFyKC0tbmF2aWdhdGlvbi1iYXItaGVpZ2h0KTsKLQorICAg
IC0tdG9vbGJhci1oZWlnaHQ6IDM2cHg7CisgICAgLS10YWItYmFyLWhlaWdodDogMjRweDsKICAg
ICAtLW5hdmlnYXRpb24tYmFyLWhlaWdodDogMjlweDsKIAogICAgIC0tc2xpZGVyLXdpZHRoOiAx
MXB4OwpAQCAtMTk4LDcgKzE5NSw3IEBACiAgICAgLS1kaWZmLWFkZGl0aW9uLWJvcmRlci1jb2xv
cjogaHNsKDkwLCAxMDAlLCA0MCUpOwogfQogCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2
ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIHsKK2JvZHkud2luZG93LWluYWN0aXZlIHsKICAg
ICAvKiBGSVhNRTogVXNlIENTUzQgY29sb3IgYmxlbmQgZnVuY3Rpb25zIG9uY2UgdGhleSdyZSBh
dmFpbGFibGUuICovCiAgICAgLS1zZWxlY3RlZC1iYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIxMiwg
OTIlLCA1NCUsIDAuNSk7CiAKQEAgLTIwNywxNSArMjA0LDExIEBAIGJvZHk6bWF0Y2hlcygud2lu
ZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgewogICAgIC0tZ2x5cGgtb3Bh
Y2l0eTogMC42OwogfQogCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1k
b2NrZWQtaW5hY3RpdmUpICogeworYm9keS53aW5kb3ctaW5hY3RpdmUgKiB7CiAgICAgLS1ib3Jk
ZXItY29sb3I6IGhzbCgwLCAwJSwgODUlKTsKICAgICAtLWJvcmRlci1jb2xvci1kYXJrOiBoc2wo
MCwgMCUsIDcyJSk7CiB9CiAKLWJvZHkubWFjLXBsYXRmb3JtOm5vdCguZG9ja2VkKSB7Ci0gICAg
LS11bmRvY2tlZC10aXRsZS1hcmVhLWhlaWdodDogY2FsYygyMnB4IC8gdmFyKC0tem9vbS1mYWN0
b3IpKTsKLX0KLQogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgIDpy
b290IHsKICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwpAQCAtMjc3LDYgKzI3MCw4
IEBAIGJvZHkubWFjLXBsYXRmb3JtOm5vdCguZG9ja2VkKSB7CiAgICAgICAgIC0tYnV0dG9uLWJh
Y2tncm91bmQtY29sb3ItcHJlc3NlZDogaHNsKDAsIDAlLCA1NSUpOwogICAgICAgICAtLWJ1dHRv
bi1iYWNrZ3JvdW5kLWNvbG9yLWluYWN0aXZlOiBoc2woMCwgMCUsIDI4JSk7CiAKKyAgICAgICAg
LS1kYXNoYm9hcmQtYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCAzNiUpOworCiAgICAgICAg
IC0tcGFuZWwtYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCAyNCUpOwogICAgICAgICAtLXBh
bmVsLWJhY2tncm91bmQtY29sb3ItbGlnaHQ6IGhzbCgwLCAwJSwgMjklKTsKIApAQCAtMzQ5LDE2
ICszNDQsMTYgQEAgYm9keS5tYWMtcGxhdGZvcm06bm90KC5kb2NrZWQpIHsKICAgICAgICAgLS1k
aWZmLWRlbGV0aW9uLWJhY2tncm91bmQtY29sb3I6IGhzbCg1LCA0MCUsIDI4JSk7CiAgICAgfQog
Ci0gICAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0
aXZlKSB7CisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgewogICAgICAgICAtLXNlbGVjdGVkLWJh
Y2tncm91bmQtY29sb3I6IGhzbGEoMjEyLCA5MiUsIDY0JSwgMC41KTsKIAogICAgICAgICAtLWds
eXBoLWNvbG9yOiBoc2woMCwgMCUsIDUyJSk7CiAgICAgICAgIC0tZ2x5cGgtY29sb3ItZGlzYWJs
ZWQ6IGhzbGEoMCwgMCUsIDUyJSwgMC40KTsKICAgICB9CiAKLSAgICBib2R5Om1hdGNoZXMoLndp
bmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpICogeworICAgIGJvZHkud2lu
ZG93LWluYWN0aXZlICogewogICAgICAgICAvKiBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBkdXBsaWNh
dGVkIHNvIHRoYXQgdGhleSBoYXZlIGhpZ2hlciBzcGVjaWZpY2l0eSB0aGFuIFdlYktpdCdzIHN0
eWxlc2hlZXQuCi0gICAgICAgIE90aGVyd2lzZSwgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gaW5z
aWRlICdib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3Rp
dmUpIConIGluIE9wZW5Tb3VyY2Ugb3ZlcnJpZGVzIHdpdGggYSBsaWdodGVyIGNvbG9yLgorICAg
ICAgICBPdGhlcndpc2UsIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uIGluc2lkZSAnYm9keS53aW5k
b3ctaW5hY3RpdmUgKicgaW4gT3BlblNvdXJjZSBvdmVycmlkZXMgd2l0aCBhIGxpZ2h0ZXIgY29s
b3IuCiAgICAgICAgIFdoZW4gbWVyZ2luZyB0byBvcGVuIHNvdXJjZSwgd2Ugc2hvdWxkIGd1YXJk
IHRoZSBleGlzdGluZyAud2luZG93LWluYWN0aXZlIHN0eWxlIHdpdGgKICAgICAgICAgJ0BtZWRp
YSBub3QgYWxsJyB0byBhdm9pZCBhcHBseWluZyB0aGUgZGVmaW5pdGlvbiB0b28gYnJvYWRseS4g
Ki8KICAgICAgICAgLS1ib3JkZXItY29sb3I6IGhzbCgwLCAwJSwgMzMlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDgw
MTM1NjM4MmY4ODhjMjI0YjFmNzI5OTY2YTM0YjAwNTJhMGJmMTcuLmU5YmI2NjA3MmYxY2MyZjdi
MzQ2MjkxZGUxNmMyNjEyNTE1NWYwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMTcyLDE3ICsxNzIsMTcgQEAgZW51
bSB7CiBjb25zdGV4cHIgYXV0byBjcmVhdGVUb3BMZXZlbERvbWFpbnMgPSAiQ1JFQVRFIFRBQkxF
IFRvcExldmVsRG9tYWlucyAoIgogICAgICJ0b3BMZXZlbERvbWFpbklEIElOVEVHRVIgUFJJTUFS
WSBLRVksIENPTlNUUkFJTlQgZmtEb21haW5JRCBGT1JFSUdOIEtFWSh0b3BMZXZlbERvbWFpbklE
KSAiCiAgICAgIlJFRkVSRU5DRVMgT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUg
Q0FTQ0FERSk7Il9zOwotICAgIAorCiBjb25zdGV4cHIgYXV0byBjcmVhdGVTdG9yYWdlQWNjZXNz
VW5kZXJUb3BGcmFtZURvbWFpbnMgPSAiQ1JFQVRFIFRBQkxFIFN0b3JhZ2VBY2Nlc3NVbmRlclRv
cEZyYW1lRG9tYWlucyAoIgogICAgICJkb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCB0b3BMZXZl
bERvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgIgogICAgICJDT05T
VFJBSU5UIGZrRG9tYWluSUQgRk9SRUlHTiBLRVkoZG9tYWluSUQpIFJFRkVSRU5DRVMgT2JzZXJ2
ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSwgIgogICAgICJGT1JFSUdOIEtF
WSh0b3BMZXZlbERvbWFpbklEKSBSRUZFUkVOQ0VTIFRvcExldmVsRG9tYWlucyh0b3BMZXZlbERv
bWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSk7Il9zOwotICAgIAorCiBjb25zdGV4cHIgYXV0byBj
cmVhdGVUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvID0gIkNSRUFURSBUQUJMRSBUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c1RvICgiCiAgICAgInNvdXJjZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEws
IHRvRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgIgogICAgICJGT1JFSUdOIEtFWShzb3VyY2VE
b21haW5JRCkgUkVGRVJFTkNFUyBUb3BMZXZlbERvbWFpbnModG9wTGV2ZWxEb21haW5JRCkgT04g
REVMRVRFIENBU0NBREUsICIKICAgICAiRk9SRUlHTiBLRVkodG9Eb21haW5JRCkgUkVGRVJFTkNF
UyBUb3BMZXZlbERvbWFpbnModG9wTGV2ZWxEb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpOyJf
czsKLSAgICAKKwogY29uc3RleHByIGF1dG8gY3JlYXRlVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNG
cm9tID0gIkNSRUFURSBUQUJMRSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20gKCIKICAgICAi
dGFyZ2V0RG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZnJvbURvbWFpbklEIElOVEVHRVIgTk9U
IE5VTEwsICIKICAgICAiRk9SRUlHTiBLRVkodGFyZ2V0RG9tYWluSUQpIFJFRkVSRU5DRVMgVG9w
TGV2ZWxEb21haW5zKHRvcExldmVsRG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCAiCkBAIC0y
MDIsMTcgKzIwMiwxNyBAQCBjb25zdGV4cHIgYXV0byBjcmVhdGVTdWJmcmFtZVVuZGVyVG9wRnJh
bWVEb21haW5zID0gIkNSRUFURSBUQUJMRSBTdWJmcmFtZVVuZGVyVAogICAgICJzdWJGcmFtZURv
bWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIGxhc3RVcGRhdGVkIFJFQUwgTk9UIE5VTEwsIHRvcEZy
YW1lRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgIgogICAgICJGT1JFSUdOIEtFWShzdWJGcmFt
ZURvbWFpbklEKSBSRUZFUkVOQ0VTIE9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRF
IENBU0NBREUsICIKICAgICAiRk9SRUlHTiBLRVkodG9wRnJhbWVEb21haW5JRCkgUkVGRVJFTkNF
UyBUb3BMZXZlbERvbWFpbnModG9wTGV2ZWxEb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpOyJf
czsKLSAgICAKKwogY29uc3RleHByIGF1dG8gY3JlYXRlU3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
RG9tYWlucyA9ICJDUkVBVEUgVEFCTEUgU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyAo
IgogICAgICJzdWJyZXNvdXJjZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIGxhc3RVcGRhdGVk
IFJFQUwgTk9UIE5VTEwsIHRvcEZyYW1lRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgIgogICAg
ICJGT1JFSUdOIEtFWShzdWJyZXNvdXJjZURvbWFpbklEKSBSRUZFUkVOQ0VTIE9ic2VydmVkRG9t
YWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUsICIKICAgICAiRk9SRUlHTiBLRVkodG9w
RnJhbWVEb21haW5JRCkgUkVGRVJFTkNFUyBUb3BMZXZlbERvbWFpbnModG9wTGV2ZWxEb21haW5J
RCkgT04gREVMRVRFIENBU0NBREUpOyJfczsKLSAgICAKKwogY29uc3RleHByIGF1dG8gY3JlYXRl
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA9ICJDUkVBVEUgVEFCTEUgU3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUbyAoIgogICAgICJzdWJyZXNvdXJjZURvbWFpbklEIElOVEVHRVIgTk9U
IE5VTEwsIGxhc3RVcGRhdGVkIFJFQUwgTk9UIE5VTEwsIHRvRG9tYWluSUQgSU5URUdFUiBOT1Qg
TlVMTCwgIgogICAgICJGT1JFSUdOIEtFWShzdWJyZXNvdXJjZURvbWFpbklEKSBSRUZFUkVOQ0VT
IE9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUsICIKICAgICAiRk9S
RUlHTiBLRVkodG9Eb21haW5JRCkgUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQp
IE9OIERFTEVURSBDQVNDQURFKTsiX3M7Ci0gICAgCisKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSA9ICJDUkVBVEUgVEFCTEUgU3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNGcm9tICgiCiAgICAgInN1YnJlc291cmNlRG9tYWluSUQgSU5URUdFUiBO
T1QgTlVMTCwgZnJvbURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsICIKICAgICAiRk9SRUlHTiBL
RVkoc3VicmVzb3VyY2VEb21haW5JRCkgUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWlu
SUQpIE9OIERFTEVURSBDQVNDQURFLCAiCkBAIC0yODAsNyArMjgwLDcgQEAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlKFdlYlJlc28KICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG9wZW5B
bmREcm9wT2xkRGF0YWJhc2VJZk5lY2Vzc2FyeSgpOwotICAgIAorCiAgICAgLy8gU2luY2Ugd2Ug
YXJlIHVzaW5nIGEgd29ya2VyUXVldWUsIHRoZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2NrcyBt
YXkgYmUgY2FsbGVkIGJ5IGRpZmZlcmVudCB0aHJlYWRzLgogICAgIG1fZGF0YWJhc2UuZGlzYWJs
ZVRocmVhZGluZ0NoZWNrcygpOwogCkBAIC0yOTEsNyArMjkxLDcgQEAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
KFdlYlJlc28KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwog
ICAgIGlmICghbV9kYXRhYmFzZS50dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKSkKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSBmYWlsZWQsIGVycm9y
IG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
IApAQCAtMzk2LDE0ICszOTYsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6b3BlbkFuZERyb3BPbGREYXRhYmFzZUlmTmVjZXNzYXJ5KCkKIGJvb2wgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzRW1wdHkoKSBjb25zdAogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIAorCiAgICAgYm9vbCByZXN1bHQgPSBmYWxz
ZTsKICAgICBpZiAobV9vYnNlcnZlZERvbWFpbkNvdW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQog
ICAgICAgICByZXN1bHQgPSAhbV9vYnNlcnZlZERvbWFpbkNvdW50LmdldENvbHVtbkludCgwKTsK
LSAgICAKKwogICAgIGludCByZXNldFJlc3VsdCA9IG1fb2JzZXJ2ZWREb21haW5Db3VudC5yZXNl
dCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElU
RV9PSyk7Ci0gICAgCisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NTcsMTIgKzQ1Nywx
MiBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hl
bWEoKQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgVG9wRnJhbWVMaW5rRGVj
b3JhdGlvbnNGcm9tIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UubGFz
dEVycm9yKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNy
ZWF0ZVRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIHRhYmxl
IGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UubGFzdEVycm9yKCksIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAor
CiAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVN1YmZyYW1lVW5kZXJU
b3BGcmFtZURvbWFpbnMpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBT
dWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIs
IG1fZGF0YWJhc2UubGFzdEVycm9yKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC00ODIsNyArNDgyLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlU2NoZW1hKCkKICAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZCBub3QgY3JlYXRlIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSB0YWJsZSBp
biBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwog
ICAgIGlmICghY3JlYXRlVW5pcXVlSW5kaWNlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTQ5Miw3ICs0OTIsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjcmVhdGVTY2hlbWEoKQogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6cHJlcGFyZVN0YXRlbWVudHMoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgICAgICAKKwogICAgIGlmIChtX29ic2VydmVkRG9tYWluQ291bnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9pbnNlcnRUb3BMZXZlbERvbWFp
blN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCkBAIC01NzUsNyArNTc1LDcgQEAgYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVsYXRpb25zaGlwRXhpc3Rz
KFdlYkNvcmU6OlNRTGl0ZVN0YXQKIHsKICAgICBpZiAoIWZpcnN0RG9tYWluSUQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
CiAgICAgaWYgKHN0YXRlbWVudC5iaW5kSW50KDEsICpmaXJzdERvbWFpbklEKSAhPSBTUUxJVEVf
T0sKQEAgLTU4OSw3ICs1ODksNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMoV2ViQ29yZTo6U1FMaXRlU3RhdAogCiAgICAgaW50
IHJlc2V0UmVzdWx0ID0gc3RhdGVtZW50LnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNl
dFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKLSAgICAKKwogICAgIHJldHVybiBy
ZWxhdGlvbnNoaXBFeGlzdHM7CiB9CiAKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29sIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXAoV2Vi
Q29yZTo6U1FMaQogCiAgICAgaW50IHJlc2V0UmVzdWx0ID0gc3RhdGVtZW50LnJlc2V0KCk7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsK
LSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MjEsNyArNjIxLDcgQEAgT3B0aW9u
YWw8dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5J
RChjb25zdCBSZWdpc3RyYWIKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRv
bWFpbklERnJvbVN0cmluZyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgfQotICAgIAorCiAgICAgaWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50
LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIGludCByZXNldFJlc3VsdCA9IG1fZG9t
YWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnJlc2V0KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
cmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CkBAIC02MzIsMTkgKzYzMiwx
OSBAQCBPcHRpb25hbDx1bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYgogCiAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9k
b21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQucmVzZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwotICAgIAorCiAgICAgcmV0dXJu
IGRvbWFpbklEOwogfQogCiBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+JiBkb21haW5MaXN0KQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAKKwog
ICAgIGZvciAoYXV0byYgdG9wRnJhbWVSZXNvdXJjZSA6IGRvbWFpbkxpc3QpIHsKLSAgICAgICAg
CisKICAgICAgICAgLy8gSW5zZXJ0IHF1ZXJ5IHdpbGwgZmFpbCBpZiB0b3AgZnJhbWUgZG9tYWlu
IGlzIG5vdCBhbHJlYWR5IGluIHRoZSBkYXRhYmFzZQogICAgICAgICBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0b3BGcmFtZVJlc291cmNlKTsKLSAgICAgICAg
CisKICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKQEAgLTY1
OCwxMyArNjU4LDEzIEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZW5zdXJlQW5kTWFrZURvbWFpbkxpc3QoY29uc3QgSGFzaFNlCiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KGNv
bnN0IFN0cmluZyYgc3RhdGVtZW50LCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWluTGlzdCwgdW5zaWduZWQgZG9tYWluSUQpCiB7CiAgICAgU1FMaXRlU3RhdGVtZW50IGlu
c2VydFJlbGF0aW9uc2hpcFN0YXRlbWVudChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKHN0YXRlbWVu
dCwgZW5zdXJlQW5kTWFrZURvbWFpbkxpc3QoZG9tYWluTGlzdCksICIgKTsiKSk7Ci0gICAgCisK
ICAgICBpZiAoaW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVf
T0sKICAgICAgICAgfHwgaW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50LmJpbmRJbnQoMSwgZG9t
YWluSUQpICE9IFNRTElURV9PSykgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QgZmFpbGVkLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHN0YXRl
bWVudC5jb250YWlucygiUkVQTEFDRSIpKSB7CiAgICAgICAgIGlmIChpbnNlcnRSZWxhdGlvbnNo
aXBTdGF0ZW1lbnQuYmluZERvdWJsZSgyLCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0IGZhaWxlZCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
QEAgLTY4NCw3ICs2ODQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKGNvbnN0IFJlc291cgogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW5JRCA9IGRv
bWFpbklEKGxvYWRTdGF0aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAKKwogICAgIGlm
ICghcmVnaXN0cmFibGVEb21haW5JRCkKICAgICAgICAgcmV0dXJuOwogCkBAIC03ODcsMjQgKzc4
Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3Rh
dGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhCiAKIHN0YXRpYyBjb25zdCBTdHJpbmdWaWV3
IGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpCiB7Ci0gICAgcmV0dXJuIFIicXVlcnkoCi0g
ICAgICAgIGRvbWFpbklELAotICAgICAgICAoY291bnRTdWJGcmFtZVVuZGVyVG9wRnJhbWUgKyBj
b3VudFN1YlJlc291cmNlVW5kZXJUb3BGcmFtZSArIGNvdW50VW5pcXVlUmVkaXJlY3RUbykgYXMg
c3VtCi0gICAgICAgIEZST00gKAotICAgICAgICBTRUxFQ1QKLSAgICAgICAgICAgIGRvbWFpbklE
LAotICAgICAgICAgICAgQ09VTlQoRElTVElOQ1QgZi50b3BGcmFtZURvbWFpbklEKSBhcyBjb3Vu
dFN1YkZyYW1lVW5kZXJUb3BGcmFtZSwKLSAgICAgICAgICAgIENPVU5UKERJU1RJTkNUIHIudG9w
RnJhbWVEb21haW5JRCkgYXMgY291bnRTdWJSZXNvdXJjZVVuZGVyVG9wRnJhbWUsCi0gICAgICAg
ICAgICBDT1VOVChESVNUSU5DVCB0b0RvbWFpbklEKSBhcyBjb3VudFVuaXF1ZVJlZGlyZWN0VG8K
LSAgICAgICAgRlJPTQotICAgICAgICBPYnNlcnZlZERvbWFpbnMgbwotICAgICAgICBMRUZUIEpP
SU4gU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBmIE9OIG8uZG9tYWluSUQgPSBmLnN1YkZy
YW1lRG9tYWluSUQKLSAgICAgICAgTEVGVCBKT0lOIFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMgciBPTiBvLmRvbWFpbklEID0gci5zdWJyZXNvdXJjZURvbWFpbklECi0gICAgICAgIExF
RlQgSk9JTiBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIHUgT04gby5kb21haW5JRCA9IHUu
c3VicmVzb3VyY2VEb21haW5JRAotICAgICAgICBXSEVSRSBpc1ByZXZhbGVudCBMSUtFID8KLSAg
ICAgICAgYW5kIGhhZFVzZXJJbnRlcmFjdGlvbiBMSUtFID8KLSAgICAgICAgR1JPVVAgQlkgZG9t
YWluSUQpIE9SREVSIEJZIHN1bSBERVNDCi0gICAgICAgIClxdWVyeSI7CisgICAgcmV0dXJuICIi
OwogfQogCiBzdGF0aWMgU1FMaXRlU3RhdGVtZW50IG1ha2VNZWRpYW5XaXRoVUlRdWVyeShTUUxp
dGVEYXRhYmFzZSYgZGF0YWJhc2UpCkBAIC05NzEsMTQgKzk1NCwxNCBAQCB1bnNpZ25lZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNv
dXJjZXNXaXRoVQogdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldFRvcFByZXZlbGVudFJlc291cmNlRGF5c1NpbmNlVUkoKSBjb25zdAogewogICAgIFNRTGl0
ZVN0YXRlbWVudCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2lu
Y2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygiU0VMRUNU
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIEZST00gT2JzZXJ2ZWREb21haW5zIElOTkVS
IEpPSU4gKFNFTEVDVCAiLCBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKSwgIiBMSU1JVCAx
KSBhcyBxIE9OIE9ic2VydmVkRG9tYWlucy5kb21haW5JRCA9IHEuZG9tYWluSUQ7IikpOwotICAg
IAorCiAgICAgLy8gUHJlcGFyZQogICAgIGlmICh0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2Vy
SW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnRvcFByZXZhbGVudFJlc291cmNlV2l0aFVz
ZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCBxdWVyeSBmYWls
ZWQgdG8gcHJlcGFyZSwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQotICAgIAorCiAgICAgLy8gQmluZAogICAgIGlmICh0b3BQcmV2YWxlbnRS
ZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQuYmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgdG9wUHJldmFsZW50UmVz
b3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uU3RhdGVtZW50
LmJpbmRJbnQoMiwgMSkgIT0gU1FMSVRFX09LKSB7CkBAIC05ODYsMTYgKzk2OSwxNiBAQCB1bnNp
Z25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VG9wUHJldmVsZW50
UmVzb3VyY2VEYXlzU2luY2VVSQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQotICAgIAorCiAgICAgLy8gU3RlcAogICAgIGlmICh0b3BQcmV2
YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25T
dGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp0b3BQcmV2
YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25T
dGF0ZW1lbnQgcXVlcnkgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMi
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQot
ICAgIAorCiAgICAgZG91YmxlIHJhd1NlY29uZHMgPSB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhV
c2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0Q29sdW1u
RG91YmxlKDApOwogICAgIFdhbGxUaW1lIHdhbGxUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKHJhd1NlY29uZHMpOwotICAgIAorCiAgICAgcmV0dXJuIHdhbGxUaW1lIDw9IFdhbGxUaW1l
KCkgPyAwIDogc3RkOjpmbG9vcigoV2FsbFRpbWU6Om5vdygpIC0gd2FsbFRpbWUpIC8gMjRfaCk7
CiB9CiAKQEAgLTExNTMsNyArMTEzNiw3IEBAIHVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zCiAgICAg
ICAgIFJFTEVBU0VfTE9HKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJIaXQgJXUgcmVjdXJzaXZl
IGNhbGxzIGluIHJlZGlyZWN0IGJhY2t0cmFjZS4gUmV0dXJuaW5nIGVhcmx5LiIsIG1heE51bWJl
ck9mUmVjdXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJhY2VCYWNrKTsKICAgICAgICAgcmV0dXJuIG51
bWJlck9mUmVjdXJzaXZlQ2FsbHM7CiAgICAgfQotICAgIAorCiAgICAgKytudW1iZXJPZlJlY3Vy
c2l2ZUNhbGxzOwogCiAgICAgU3RkU2V0PHVuc2lnbmVkPiBuZXdseUlkZW50aWZpZWREb21haW5z
OwpAQCAtMTE2NCw3ICsxMTQ3LDcgQEAgdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnMKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICAKKwog
ICAgIHdoaWxlIChmaW5kU3VicmVzb3VyY2VzLnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAg
ICAgIGludCBuZXdEb21haW5JRCA9IGZpbmRTdWJyZXNvdXJjZXMuZ2V0Q29sdW1uSW50KDApOwog
ICAgICAgICBhdXRvIGluc2VydFJlc3VsdCA9IG5vblByZXZhbGVudFJlZGlyZWN0aW9uU291cmNl
cy5pbnNlcnQobmV3RG9tYWluSUQpOwpAQCAtMTE3OSw3ICsxMTYyLDcgQEAgdW5zaWduZWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZh
bGVudERvbWFpbnMKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KLSAgICAKKwogICAgIHdoaWxlIChmaW5kVG9wRnJhbWVzLnN0ZXAoKSA9PSBT
UUxJVEVfUk9XKSB7CiAgICAgICAgIGludCBuZXdEb21haW5JRCA9IGZpbmRUb3BGcmFtZXMuZ2V0
Q29sdW1uSW50KDApOwogICAgICAgICBhdXRvIGluc2VydFJlc3VsdCA9IG5vblByZXZhbGVudFJl
ZGlyZWN0aW9uU291cmNlcy5pbnNlcnQobmV3RG9tYWluSUQpOwpAQCAtMTM4MCw3ICsxMzYzLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJgogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgYXV0byBzdWJGcmFtZVN0YXR1cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKHN1YkZyYW1lRG9tYWluKTsKLSAgICAKKwogICAgIHN3aXRjaCAo
Y29va2llQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbikpIHsKICAgICBjYXNl
IENvb2tpZUFjY2Vzczo6Q2Fubm90UmVxdWVzdDoKICAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19J
RihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIElUUERlYnVnLCAiQ2Fubm90IGdyYW50IHN0b3JhZ2Ug
YWNjZXNzIHRvICV7cHJpdmF0ZX1zIHNpbmNlIGl0cyBjb29raWVzIGFyZSBibG9ja2VkIGluIHRo
aXJkLXBhcnR5IGNvbnRleHRzIGFuZCBpdCBoYXMgbm90IHJlY2VpdmVkIHVzZXIgaW50ZXJhY3Rp
b24gYXMgZmlyc3QtcGFydHkuIiwgc3ViRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CkBAIC0xNDEzLDcgKzEzOTYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAg
ICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdU
Rk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZEVh
cmxpZXIsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Olll
cyA/IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2VzcyA6IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6
OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwogICAgIH0pOwpAQCAtMTU1OCw3ICsxNTQxLDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bG9nQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihjb24KIAogICAgIGF1dG8gdG9Eb21haW5SZXN1bHQgPSBlbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0b0RvbWFpbik7CiAgICAgaW5z
ZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdCh0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb21RdWVy
eSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyBmcm9tRG9tYWluIH0pLCB0b0RvbWFpblJl
c3VsdC5zZWNvbmQpOwotICAgIAorCiAgICAgaWYgKGlzUHJldmFsZW50UmVzb3VyY2UoZnJvbURv
bWFpbikpCiAgICAgICAgIHNldElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwo
dG9Eb21haW4sIHRydWUpOwogfQpAQCAtMTYzNCw3ICsxNjE3LDcgQEAgYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJl
Z2lzdHJhYmwKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQg
PT0gU1FMSVRFX09LKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAg
IFdhbGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LmdldENvbHVtbkRvdWJsZSgx
KSk7CiAKICAgICBpZiAoaGFzU3RhdGlzdGljc0V4cGlyZWQobW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUsIG9wZXJhdGluZ0RhdGVzV2luZG93KSkgewpAQCAtMTY0NCw3ICsxNjI3LDcgQEAg
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmwKICAgICAgICAgY2xlYXJVc2VySW50ZXJhY3Rpb24oZG9t
YWluLCBbXSB7IH0pOwogICAgICAgICBoYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKICAgICB9
Ci0gICAgCisKICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRl
bWVudC5yZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0
ID09IFNRTElURV9PSyk7CiAKQEAgLTE2NjQsNyArMTY0Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lz
dHJhYmxlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudC5yZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJl
c2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAKQEAgLTE3MzQsNyArMTcxNyw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKENvbXBsZXRpb25ICiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmIHByZWRp
Y2F0ZVN0YXRlbWVudCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAKKwogICAgIGlmIChwcmVkaWNh
dGVTdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgfHwgcHJlZGljYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAKQEAg
LTE3OTcsMTQgKzE3ODAsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWIKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKGRvbWFpbik7Ci0gICAgCisKICAgICBpZiAobV9jbGVhclByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRF
X09LCiAgICAgICAgIHx8IG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyUHJldmFsZW50UmVzb3VyY2UsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaW50IHJlc2V0UmVzdWx0ID0g
bV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnJlc2V0KCk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KQEAgLTE4MTQs
NyArMTc5Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNl
dEdyYW5kZmF0aGVyZWQoY29uc3QgUmVnaXN0cmFibGVEb21hCiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJs
ZURvbWFpbihkb21haW4pOwotICAgIAorCiAgICAgaWYgKG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0
YXRlbWVudC5iaW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV91cGRh
dGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0g
U1FMSVRFX09LCiAgICAgICAgIHx8IG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKQEAgLTE4MjIsNyArMTgwNSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQoY29uc3QgUmVnaXN0
cmFibGVEb21hCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIAorCiAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVHcmFuZGZhdGhl
cmVkU3RhdGVtZW50LnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVz
ZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KQEAgLTE4MzIsNyArMTgxNSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldElzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBl
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOwotICAg
IAorCiAgICAgaWYgKG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bFN0YXRlbWVudC5iaW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV91
cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50LmJpbmRU
ZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdXBkYXRl
SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudC5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKQEAgLTE5NTAsNyArMTkzMyw3IEBAIHN0ZDo6cGFpcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6QWRkZWRSZWNvcmQsIHVuc2lnbmVkPiBSZXNvdXJj
ZUxvCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4geyBBZGRl
ZFJlY29yZDo6Tm8sIDAgfTsKICAgICB9Ci0gICAgCisKICAgICBpZiAobV9kb21haW5JREZyb21T
dHJpbmdTdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgdW5zaWduZWQg
ZG9tYWluSUQgPSBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7
CiAKQEAgLTIwNDksMTUgKzIwMzIsMTUgQEAgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNVc2VyR3JhbnRlZFMKIFZlY3Rv
cjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcigpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgCisKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+IHJlc3VsdHM7CiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAi
U0VMRUNUIHJlZ2lzdHJhYmxlRG9tYWluIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGlzUHJl
dmFsZW50ID0gMSBBTkQgaGFkVXNlckludGVyYWN0aW9uID0gMCJfcyk7CiAgICAgaWYgKHN0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAg
ICAKKwogICAgIHdoaWxlIChzdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpCiAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVn
aXN0cmFibGVEb21haW5TdHJpbmcoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpKTsKLSAgICAK
KwogICAgIHJldHVybiByZXN1bHRzOwogfQogCkBAIC0yMDY5LDcgKzIwNTIsNyBAQCBWZWN0b3I8
UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpk
b21haW5zVG9CbG9ja0J1dAogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFz
ZSwgIlNFTEVDVCByZWdpc3RyYWJsZURvbWFpbiBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSBp
c1ByZXZhbGVudCA9IDEgQU5EIGhhZFVzZXJJbnRlcmFjdGlvbiA9IDEiX3MpOwogICAgIGlmIChz
dGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7
Ci0gICAgCisKICAgICB3aGlsZSAoc3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQogICAg
ICAgICByZXN1bHRzLmFwcGVuZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJv
bVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKSk7CiAK
QEAgLTIwODQsNyArMjA2Nyw3IEBAIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNXaXRoVXNlckluCiAgICAgU1FMaXRl
U3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHJlZ2lzdHJhYmxlRG9tYWlu
IEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGhhZFVzZXJJbnRlcmFjdGlvbiA9IDEiX3MpOwog
ICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJu
IHJlc3VsdHM7Ci0gICAgCisKICAgICB3aGlsZSAoc3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKQogICAgICAgICByZXN1bHRzLmFwcGVuZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0
KDApKSk7CiAKQEAgLTIxMjQsMTIgKzIxMDcsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXIK
IFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6RG9tYWluRGF0YT4g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnMoKSBjb25zdAogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIAorCiAgICAgVmVjdG9yPERvbWFp
bkRhdGE+IHJlc3VsdHM7CiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNl
LCAiU0VMRUNUIGRvbWFpbklELCByZWdpc3RyYWJsZURvbWFpbiwgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUsIGhhZFVzZXJJbnRlcmFjdGlvbiwgZ3JhbmRmYXRoZXJlZCwgaXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCBGUk9NIE9ic2VydmVkRG9tYWlucyJfcyk7CiAg
ICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4g
cmVzdWx0czsKLSAgICAKKwogICAgIHdoaWxlIChzdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9S
T1cpIHsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQoeyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Rh
dGVtZW50LmdldENvbHVtbkludCgwKSkKICAgICAgICAgICAgICwgUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzdGF0ZW1lbnQuZ2V0
Q29sdW1uVGV4dCgxKSkKQEAgLTIxMzksNyArMjEyMiw3IEBAIFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6RG9tYWluRGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhCiAgICAgICAgICAgICAsIHN0YXRlbWVudC5nZXRDb2x1bW5JbnQoNSkgPyB0cnVlIDogZmFs
c2UKICAgICAgICAgfSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHJlc3VsdHM7CiB9CiAK
QEAgLTIyMDEsNyArMjE4NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNsZWFyR3JhbmRmYXRoZXJpbmcoVmVjdG9yPHVuc2lnbmVkPiYmCiAgICAgU1FMaXRl
U3RhdGVtZW50IGNsZWFyR3JhbmRmYXRoZXJpbmdTdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0
cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZ3JhbmRmYXRoZXJlZCA9IDAgV0hFUkUg
ZG9tYWluSUQgSU4gKCIsIGxpc3RUb0NsZWFyLCAiKSIpKTsKICAgICBpZiAoY2xlYXJHcmFuZGZh
dGhlcmluZ1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm47
Ci0gICAgCisKICAgICBpZiAoY2xlYXJHcmFuZGZhdGhlcmluZ1N0YXRlbWVudC5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
R3JhbmRmYXRoZXJpbmcgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1z
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMjI2MCw3ICsyMjQzLDcgQEAgVmVjdG9yPHN0ZDo6cGFpcjxSZWdpc3Ry
YWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3MK
ICAgICAgICAgY2xlYXJFbmRPZkdyYW5kZmF0aGVyaW5nVGltZVN0YW1wKCk7CiAKICAgICBjbGVh
ckV4cGlyZWRVc2VySW50ZXJhY3Rpb25zKCk7Ci0gICAgCisKICAgICBWZWN0b3I8c3RkOjpwYWly
PFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPj4gZG9tYWluc1RvUmVtb3Zl
V2Vic2l0ZURhdGFGb3I7CiAKICAgICBWZWN0b3I8RG9tYWluRGF0YT4gZG9tYWlucyA9IHRoaXMt
PmRvbWFpbnMoKTsKQEAgLTIyNzcsNyArMjI2MCw3IEBAIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0
cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
CiAgICAgfQogCiAgICAgY2xlYXJHcmFuZGZhdGhlcmluZyhXVEZNb3ZlKGRvbWFpbklEc1RvQ2xl
YXJHcmFuZGZhdGhlcmluZykpOwotICAgIAorCiAgICAgcmV0dXJuIGRvbWFpbnNUb1JlbW92ZVdl
YnNpdGVEYXRhRm9yOwogfQogCkBAIC0yMzM0LDcgKzIzMTcsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICAKKwogICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRlTGFzdFNlZW5TdGF0
ZW1lbnQucmVzZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3Vs
dCA9PSBTUUxJVEVfT0spOwogfQpAQCAtMjM2NCw3ICsyMzQ3LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHIKIAogICAgIGlmIChzaG91bGRTa2lwKGRvbWFpbikpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KGRvbWFpbik7CiAgICAgc2V0UHJldmFsZW50UmVzb3VyY2UoZG9tYWluLCBSZXNvdXJjZUxvYWRQ
cmV2YWxlbmNlOjpWZXJ5SGlnaCk7CiB9CkBAIC0yMzkwLDcgKzIzNzMsNyBAQCBib29sIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0NvcnJlY3RTdWJTdGF0aXN0aWNzQ291
bnQoY29uc3QgUmVnaQogICAgIFNRTGl0ZVN0YXRlbWVudCBzdWJGcmFtZVVuZGVyVG9wRnJhbWVD
b3VudChtX2RhdGFiYXNlLCBjb3VudFN1YmZyYW1lVW5kZXJUb3BGcmFtZVF1ZXJ5KTsKICAgICBT
UUxpdGVTdGF0ZW1lbnQgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lQ291bnQobV9kYXRhYmFzZSwg
Y291bnRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVRdWVyeSk7CiAgICAgU1FMaXRlU3RhdGVtZW50
IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8obV9kYXRhYmFzZSwgY291bnRTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvUXVlcnkpOwotICAgIAorCiAgICAgaWYgKHN1YkZyYW1lVW5kZXJU
b3BGcmFtZUNvdW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lQ291bnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBz
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKQEAg
LTIzOTgsNyArMjM4MSw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmlzQ29ycmVjdFN1YlN0YXRpc3RpY3NDb3VudChjb25zdCBSZWdpCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAg
ICAgaWYgKHN1YkZyYW1lVW5kZXJUb3BGcmFtZUNvdW50LmJpbmRJbnQoMSwgZG9tYWluSUQoc3Vi
ZnJhbWVEb21haW4pLnZhbHVlKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzdWJGcmFtZVVu
ZGVyVG9wRnJhbWVDb3VudC5iaW5kSW50KDIsIGRvbWFpbklEKHRvcEZyYW1lRG9tYWluKS52YWx1
ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lQ291
bnQuYmluZEludCgxLCBkb21haW5JRChzdWJmcmFtZURvbWFpbikudmFsdWUoKSkgIT0gU1FMSVRF
X09LCkBAIC0yNDA5LDEyICsyMzkyLDEyIEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmlzQ29ycmVjdFN1YlN0YXRpc3RpY3NDb3VudChjb25zdCBSZWdpCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgIAorCiAgICAgaWYgKHN1YkZyYW1lVW5kZXJUb3BGcmFtZUNvdW50LnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XCiAgICAgICAgIHx8IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZUNvdW50LnN0ZXAoKSAh
PSBTUUxJVEVfUk9XCiAgICAgICAgIHx8IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc3Rl
cCgpICE9IFNRTElURV9ST1cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJl
dHVybiAoc3ViRnJhbWVVbmRlclRvcEZyYW1lQ291bnQuZ2V0Q29sdW1uSW50KDApID09IDEgJiYg
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lQ291bnQuZ2V0Q29sdW1uSW50KDApID09IDEgJiYgc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5nZXRDb2x1bW5JbnQoMCkgPT0gMSk7CiB9CiAKQEAg
LTI0MzYsMTYgKzI0MTksMTYgQEAgc3RhdGljIHZvaWQgYXBwZW5kTmV4dEVudHJ5KFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIsIFN0cmluZyBlbnRyeSkKIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkIGRv
bWFpbklEKSBjb25zdAogewogICAgIGF1dG8gcmVzdWx0ID0gZW1wdHlTdHJpbmcoKTsKLSAgICAK
KwogICAgIGlmIChtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudC5iaW5kSW50KDEs
IGRvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRC4gU3RhdGVtZW50IGZhaWxlZCB0byBw
cmVwYXJlIG9yIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX2RvbWFpblN0cmlu
Z0Zyb21Eb21haW5JRFN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKICAgICAgICAgcmVz
dWx0ID0gbV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgw
KTsKLSAgICAKKwogICAgIHJlc2V0U3RhdGVtZW50KG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklE
U3RhdGVtZW50KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ3MCwzNiArMjQ1MywzNiBA
QCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0YXRp
c3RpY1N0YXRlbWVudChjb25zdCBTdHJpbgogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFp
bklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJjZURv
bWFpbklEID0gPyI7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNGcm9tIikKICAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklEIGZyb20gU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/
IjsKLSAgICAKKwogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNMaXN0KFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1lLCBjb25zdCBTdHJpbmcm
IGRvbWFpbikgY29uc3QKIHsKICAgICBhdXRvIHF1ZXJ5ID0gZ2V0U3ViU3RhdGlzdGljU3RhdGVt
ZW50KHRhYmxlTmFtZSk7Ci0gICAgCisKICAgICBpZiAocXVlcnkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBTUUxpdGVTdGF0ZW1lbnQgZGF0YShtX2RhdGFiYXNlLCBx
dWVyeSk7Ci0gICAgCisKICAgICBpZiAoZGF0YS5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAg
ICAgIHx8IGRhdGEuYmluZEludCgxLCBkb21haW5JRChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QoZG9tYWluKSkudmFsdWUoKSkgIT0gU1FMSVRFX09LKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNMaXN0LiBT
dGF0ZW1lbnQgZmFpbGVkIHRvIHByZXBhcmUgb3IgYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2
YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpZiAo
ZGF0YS5zdGVwKCkgIT0gU1FMSVRFX1JPVykKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgIik7CiAgICAgYnVpbGRlci5hcHBlbmQodGFibGVO
YW1lKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpcbiIpOwotICAgIAorCiAgICAgYXV0
byByZXN1bHQgPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoZGF0YS5nZXRDb2x1bW5JbnQo
MCkpOwogICAgIGFwcGVuZE5leHRFbnRyeShidWlsZGVyLCByZXN1bHQpOwotICAgIAorCiAgICAg
d2hpbGUgKGRhdGEuc3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgcmVzdWx0ID0gZ2V0
RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKGRhdGEuZ2V0Q29sdW1uSW50KDApKTsKICAgICAgICAg
YXBwZW5kTmV4dEVudHJ5KGJ1aWxkZXIsIHJlc3VsdCk7CkBAIC0yNTIzLDcgKzI1MDYsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5n
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUmVnaXN0
cmFibGUgZG9tYWluOiAiKTsKICAgICBidWlsZGVyLmFwcGVuZChkb21haW4pOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKCdcbicpOwotICAgIAorCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgogICAgIGFw
cGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiIsIG1fZ2V0UmVzb3VyY2VE
YXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChIYWRVc2VySW50ZXJhY3Rpb25J
bmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5j
cHAKaW5kZXggYzJkZjQxNmY1MThlN2Y5MzBmMTgzZDZhMDc4MGJmMTkyYmZhNTdjNS4uMjE5MmMy
OWY0MTgxZTAwYTE1MTA2ZWExYjI5MDk0MDU4NzJlYzQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHkuY3BwCkBAIC0xMzgsNiArMTM4LDExIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OnNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcGxhdGZvcm1TZXRTaGVl
dFJlY3QocmVjdCk7CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnN0YXJ0V2lu
ZG93RHJhZygpCit7CisgICAgcGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKTsKK30KKwogdm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQog
ewogICAgIHBsYXRmb3JtT3BlbkluTmV3VGFiKHVybCk7CkBAIC0xOTMsNiArMTk4LDcgQEAgdm9p
ZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQoKSB7IH0KIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBib29sLCBib29sKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogdm9p
ZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgRmxv
YXRSZWN0JikgeyB9Cit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0
V2luZG93RHJhZygpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1P
cGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJikgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybVNob3dDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mKSB7IH0K
IHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2xvc2VGcm9udGVuZFBhZ2VB
bmRXaW5kb3coKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKaW5kZXggNGQ4N2I5OGI2OTk0ODRi
YTA3MDQ3OTFhNTM0MjEyZGE4ODI2YmU1YS4uZmFiNThmOGNlMDZlYTIxZmJlZTkxMzg5NDMyNDZj
YWU4ZjU0ZjNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKQEAgLTExOCw2ICsxMTgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcyk7CiAgICAg
dm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
KTsKICAgICB2b2lkIHNldFNoZWV0UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAg
ICB2b2lkIHN0YXJ0V2luZG93RHJhZygpOwogICAgIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0
cmluZyYgdXJsKTsKICAgICB2b2lkIHNob3dDZXJ0aWZpY2F0ZShjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mKTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CkBAIC0xMzMsNiArMTM0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJv
b2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcyk7CiAgICAgdm9pZCBwbGF0Zm9ybUFw
cGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogICAg
IHZvaWQgcGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7Cisg
ICAgdm9pZCBwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpOwogICAgIHZvaWQgcGxhdGZvcm1PcGVu
SW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgcGxhdGZvcm1TaG93Q2VydGlm
aWNhdGUoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyODU5YzYwY2Y0NmRkMTc4NTdjMzY2MWQ4
MGE2NDA0MGRhNWFkMTE5Li5iZTA5MWI3OGZiNmE4ZDVkZjdiMjNlMDUwZmZmZjFkOTJhNGJkNGIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMSw2ICsz
MSw4IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVdlYkluc3BlY3RvclByb3h5IHsKIAogICAgIFNldFNo
ZWV0UmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkKIAorICAgIFN0YXJ0V2luZG93RHJhZygp
CisKICAgICBPcGVuSW5OZXdUYWIoU3RyaW5nIHVybCkKICAgICBTaG93Q2VydGlmaWNhdGUoV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbykKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5k
ZXggZmM3Njg2NmY3YTI5NGRmMWExZDY5YWY0NGU4MGJlMjM4ODNlYmUwMi4uNDc1YmJjNDAxZjQ0
MzZkMWQyNGM2MjNkMWEzYTg4MTI4ZWFkNWI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zNDcsNiAr
MzQ3LDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldFNoZWV0UmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiAgICAgcGxhdGZvcm1TZXRTaGVldFJlY3QocmVjdCk7CiB9CiAKK3ZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnN0YXJ0V2luZG93RHJhZygpCit7CisgICAgcGxhdGZvcm1TdGFy
dFdpbmRvd0RyYWcoKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVBy
b2ZpbGluZygpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCkBAIC03NTksNiArNzY0LDEx
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggNDk2YzE3Yjk0Nzg4MzNkYTc5M2Ez
ZGE3NmE5ZTM2ZWQ5ZmNjNjM3OS4uMmIxZmRmY2ExZGZiOGU1YzU1ZmNjZDgwMTZmNDIxZjcxNDE2
M2NjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5LmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldFNoZWV0UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKIAorICAgIHZvaWQgc3Rh
cnRXaW5kb3dEcmFnKCk7CisKICAgICBib29sIGlzUHJvZmlsaW5nUGFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNQcm9maWxpbmdQYWdlOyB9CiAgICAgdm9pZCB0b2dnbGVQYWdlUHJvZmlsaW5nKCk7
CiAKQEAgLTIwNyw2ICsyMDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXRBdHRh
Y2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVk
V2luZG93V2lkdGgodW5zaWduZWQpOwogICAgIHZvaWQgcGxhdGZvcm1TZXRTaGVldFJlY3QoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CisgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0V2luZG93RHJh
ZygpOwogICAgIHZvaWQgcGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKTsK
ICAgICB2b2lkIHBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1YWVm
N2E3ZGZmYmQ3MTE1NTViZmUyNjUzM2ZlNDZiMGJlNzE1M2U5Li5lYmI3NzU1M2M2YjExMDk3MjYy
ZDQ3ZDQxZjI2YjI0YzIxNjIwZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC01Myw0ICs1Myw2IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBTZXRB
dHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogCiAgICAgU2V0U2hlZXRSZWN0KFdl
YkNvcmU6OkZsb2F0UmVjdCByZWN0KQorCisgICAgU3RhcnRXaW5kb3dEcmFnKCkKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggYWMyMGI4NDk3MzJmYTA5ZDQw
ZDhmYmI0OTMyMTExOGRkYTE1NjRmOS4uMTEwODhkZDA4YjA2MDJkMmU5NGU4NTc5NDYwNGEyMjYy
OGNiNDIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTE1
Nyw2ICsxNTcsMTAgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRT
aGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JikKIHsKIH0KIAordm9pZCBSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQoreworfQorCiB2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJ
bnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
Z3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBjN2ZmZjM5NDE5YzcyNDIwOGJlOGZm
ZWY2YjI0ZmM0YTUxYTFhMjlkLi44MTdjMzk4NmQzY2FiNDUyZmVlYTM2OTE1Y2FkMTU4ZDVlZThk
NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dl
Ykluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtNDY0LDYgKzQ2NCwxMSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiBzdGF0aWMgdm9pZCBmaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09iamVj
dCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEp
CiB7CiAgICAgR0ZpbGUqIGZpbGUgPSBHX0ZJTEUoc291cmNlT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDg1NGRhODg2NWZjZWY2MGM5ZWIyMjJhZjFh
NTJiMjMzNDRkOTY5MjQuLjRhYmRlYjVmNmQwNjRjZTk0ZmE3YTJhNTMxMzE4YzRmOGFmN2Y3MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMjI1LDYgKzIyNSwx
MSBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgbV9zaGVldFJlY3QgPSByZWN0OwogfQogCit2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpCit7Cisg
ICAgd2ViVmlldygpLT5fcGFnZS0+c3RhcnRXaW5kb3dEcmFnKCk7Cit9CisKIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJs
KQogewogICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBvcGVuVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOnVybF1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggMTdiYTY3
Njc4M2E5ZTczOWE4NjM2OWE1ZGIyZDU4OTAxODJmM2U1NC4uYmJlNzI4ZDQzNWNhZjcwNTk2NTJh
ZDJiM2Q5ZTIxNzE0NjdlYjBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC03MzQs
NiArNzM0LDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBtX3NoZWV0UmVjdCA9IHJlY3Q7CiB9CiAKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBb
bV9pbnNwZWN0b3JWaWV3Q29udHJvbGxlciB3ZWJWaWV3XS0+X3BhZ2UtPnN0YXJ0V2luZG93RHJh
ZygpOworfQorCiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKQog
ewogICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6
QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eVdpbi5jcHAKaW5kZXggYWQ4NDI0NGEzMjI3ZTZhZjExZTEzMDM5ODllZjJjMzZkMGFhNDg1
Ni4uMzkwYzJiOTRmMmZmNTRhNGYwZGE5ZWFlZTQwMTA4Yzk5ZWFhMGJiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKQEAgLTEzNCw2ICsxMzQsNyBAQCB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUJyaW5nVG9Gcm9udCgpIHsgfQogdm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGJvb2wsIGJvb2wpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CiB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKSB7IH0KK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
U3RhcnRXaW5kb3dEcmFnKCkgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU2hvd0NlcnRpZmljYXRlKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCmluZGV4IDkyOWNiOGJk
YTNjM2QzMmYzOGNjYWJmZDgzNGM4YjVjZWEyNGQ0MTAuLjJkZWFjOTczMTc5NmYyNTVhMTBiY2U4
NDdkNmIwYmY2YTc5NzkwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCkBAIC00NTAs
NCArNDUwLDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybVN0YXJ0V2luZG93RHJhZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJ
bnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclVJLmNwcAppbmRleCA2NTU4YTI1YTFlYTlkMTVkY2JmODJhZjFiMTMwY2Zh
Y2UwYmZhYzRjLi41NThkOGYwYzI0NjIyODY5ODkxZDE5MmFlOWNkNzFhODkyZWFlYmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclVJLmNwcApAQCAtMTEwLDYgKzExMCwxOCBAQCB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclVJOjpjaGFuZ2VTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCksIG1fcGFn
ZS5pZGVudGlmaWVyKCkpOwogfQogCit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzdGFydFdp
bmRvd0RyYWcoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTdGFy
dFdpbmRvd0RyYWcoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIEZsb2F0
UmVjdCBmcmFtZVJlY3QgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+Y2hyb21lKCkud2luZG93UmVjdCgp
OworICAgIGZyYW1lUmVjdC5tb3ZlKHgsIHkpOworICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5jaHJv
bWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVjdCk7Cit9CisKIFdlYkNvcmU6OlVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2UuY29yZVBhZ2UoKS0+dXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCmluZGV4IDYzZjQz
MmRmOGIzNDBjMTc2OTM2NDA2Y2NmZmU1YTc3NWQwYjc5YTkuLmI0YWUxYzFkYWExNjQ3YTIxMWJh
ZjBkNDAwNTk5YjczMTEyODdhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgKQEAgLTYyLDYgKzYyLDgg
QEAgcHVibGljOgogICAgIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGNoYW5nZVNoZWV0UmVj
dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0V2lu
ZG93RHJhZygpIG92ZXJyaWRlOworICAgIHZvaWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0
IHkpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1JlbW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KICAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJLmNwcAppbmRleCA5MTBjYjM1OWRjNDM0NjA4MzYzNzBiMWM2NWZiYTU1MmIyMDBkNjAx
Li4xZmFhNmY2ZWRlNWRkZGEwYTE0YWJkZTJlYzBjMmJiYWFmYzU1ZWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcApA
QCAtMTM3LDYgKzEzNywxOCBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpmcm9udGVuZExvYWRlZCgp
CiAgICAgYnJpbmdUb0Zyb250KCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnN0YXJ0V2lu
ZG93RHJhZygpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93
RHJhZygpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRmxvYXRSZWN0IGZy
YW1lUmVjdCA9IG1fcGFnZS5jb3JlUGFnZSgpLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CisgICAg
ZnJhbWVSZWN0Lm1vdmUoeCwgeSk7CisgICAgbV9wYWdlLmNvcmVQYWdlKCktPmNocm9tZSgpLnNl
dFdpbmRvd1JlY3QoZnJhbWVSZWN0KTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JVSTo6YnJpbmdU
b0Zyb250KCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250
KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCmluZGV4IDhiYmE3YTQ4OTNjNWIx
NDdlMzAwOTE2MDdhNTkzMjFkNjVlNjJiNzQuLjYzOWYyMWM5YjYyMGMzZWY2ZjI1MDdkZDE2MjA2
MGRhNDliNTUzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLmgKQEAgLTkyLDYgKzkyLDkgQEAgcHVibGljOgogICAgIHZvaWQg
d2luZG93T2JqZWN0Q2xlYXJlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJvbnRlbmRMb2FkZWQo
KSBvdmVycmlkZTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJpZGU7CisKICAgICBib29s
IGlzUmVtb3RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBTdHJpbmcgbG9j
YWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBiYWNrZW5kQ29t
bWFuZHNVUkwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50SU9TLm1tCmluZGV4IGUzNWY3YTA0N2VkNjc5ZGIwZGQyMGQ3OGE4OTcwNDI4NDJh
MWM1MzAuLjM2ZmYxMDI2OWQxMzllMDQzZTY5OWYzN2Q1OWI3MTRkZDY2YTJmYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KQEAgLTEzMyw2ICsxMzMsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpkZXRhY2hXaW5kb3coKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKSB7IH0KIHZv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5z
aWduZWQpIHsgfQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0U2hlZXRSZWN0
KGNvbnN0IEZsb2F0UmVjdCYpIHsgfQordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c3RhcnRXaW5kb3dEcmFnKCkgeyB9CiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpp
bnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIHsgfQogdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c2hvd0NlcnRpZmljYXRlKGNvbnN0IENlcnRpZmljYXRlSW5mbyYpIHsg
fQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKSBj
b25zdCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggN2M0YzdmMmVhZTAyY2E5NGE5N2Ux
MDExYTFkZmJkYjkyZjRmZmQ1Ni4uNjUzZTkxMGFkMTQxOTU5NTdiZTBjZDU4OGQ2ODc5Y2U5MjFm
M2I0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTExNiw2ICsxMTYsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHN0YXJ0
V2luZG93RHJhZygpIG92ZXJyaWRlOworCiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwo
KSBjb25zdCBvdmVycmlkZTsKICAgICBJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlIGRlYnVnZ2Fi
bGVUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW5zcGVjdG9yOjpEZWJ1Z2dhYmxlVHlwZTo6
UGFnZTsgfTsKICAgICBTdHJpbmcgdGFyZ2V0UGxhdGZvcm1OYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIm1hY09TIl9zOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDQ0ZjY3Nzhl
ZjllNzZlZWEzZGEwNDI3YTU2YzZkMDE5NTgzZTY0ODguLjBkYmI4MmZiN2I2OTk0NjRmOGU3ZWMy
ZWYzMDY1MTFhMDc0ZWM1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTIxNiw2ICsy
MTYsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRlbmRMb2FkZWQo
KQogICAgIHNldEF0dGFjaGVkV2luZG93KGF0dGFjaGVkID8gRG9ja1NpZGU6OkJvdHRvbSA6IERv
Y2tTaWRlOjpVbmRvY2tlZCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OnN0YXJ0V2luZG93RHJhZygpCit7CisgICAgW1ttX2Zyb250ZW5kV2luZG93Q29udHJvbGxlciB3
aW5kb3ddIHBlcmZvcm1XaW5kb3dEcmFnV2l0aEV2ZW50OltOU0FwcCBjdXJyZW50RXZlbnRdXTsK
K30KKwogU3RyaW5nIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpsb2NhbGl6ZWRTdHJpbmdz
VVJMKCkgY29uc3QKIHsKICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdp
dGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3RvclVJIl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390158</attachid>
            <date>2020-02-07 18:30:40 -0800</date>
            <delta_ts>2020-02-07 19:55:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207422-20200207183038.patch</filename>
            <type>text/plain</type>
            <size>349661</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IwYTRhNzQwNjk4YjZh
NWFhOTdkNzNhM2FiNWIzYTQ4MTM2NGNlNi4uMTU5MTE0NDJhNTUzYjk5NTA0MDg1ZjhkNDZhODE0
M2UwMzM0NjVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAyLTA3ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQg
c2xpbSB0b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgc2xpbSB0b29sYmFyIG5lZWRzIGEgbGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFu
ZGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJldmVydHMgcjI1NTU0NywgcjI1NTg5MCwgcjI1
NTg5MiwgcjI1NTg5MywgYW5kIHIyNTU5MDEuCisKKyAgICAgICAgKiBlbi5scHJvai9Mb2NhbGl6
YWJsZS5zdHJpbmdzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKwogMjAyMC0wMi0wNyAgSmFjayBMZWUgIDxzaGlo
Y2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNyYXNoIGluIFdlYkNvcmU6
OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCmluZGV4IDlhZTRjYjZlNWVhODIzOTQ2N2QyNDJkZjA0OWQ5OWNkYjVjYzdiNTYu
LjNjZmNlYTM5NzMxOTU4M2Q3MGUwMDdiYzljNGM4MTAwODI5OWU3ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIwLTAyLTA3ICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQgc2xpbSB0b29sYmFy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0MjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc2xp
bSB0b29sYmFyIG5lZWRzIGEgbGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFuZGluZy4KKworICAg
ICAgICBUaGlzIHBhdGNoIHJldmVydHMgcjI1NTU0NywgcjI1NTg5MCwgcjI1NTg5MiwgcjI1NTg5
MywgYW5kIHIyNTU5MDEuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL01haW4uanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xlTWFuYWdlci5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdl
cy9OZXdUYWIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9OZXdU
YWJQbHVzLnN2ZzogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvT3JpZ2lu
LnN2ZzoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9TZWFyY2hSZXN1bHRzLnN2Zzog
QWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvU291cmNlc1BhdXNlZC5zdmc6
IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgICog
VXNlckludGVyZmFjZS9Nb2RlbHMvRGVidWdnZXJEYXNoYm9hcmQuanM6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZp
Z2F0aW9uSXRlbS5jc3MuCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERh
c2hib2FyZC5qczogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9BY3RpdmF0
ZUJ1dHRvblRvb2xiYXJJdGVtLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0uY3NzLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQXVkaXRUYWJDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmNzczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uY3NzOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EaXZpZGVyTmF2aWdh
dGlvbkl0ZW0uY3NzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJh
ckl0ZW0uanM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5jc3MuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmNzczogQ29waWVkIGZyb20g
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGl2aWRlck5hdmlnYXRp
b25JdGVtLmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRyb2xUb29sYmFy
SXRlbS5qczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmNzczogQWRkZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanM6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMu
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuY3Nz
OiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJk
Vmlldy5qczogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFz
aGJvYXJkVmlldy5jc3M6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGVm
YXVsdERhc2hib2FyZFZpZXcuanM6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0uY3NzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvR3JvdXBOYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvTGVnYWN5VGFiQmFyLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMuCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9NYWluLmNzczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25C
YXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrRGV0YWlsVmlldy5j
c3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmll
dy5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3
LmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGguY3NzLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanM6IEFkZGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRlbS5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLmNzczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9TaXplc1RvRml0TmF2aWdhdGlvbkJhci5qczogQ29waWVkIGZyb20gU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmxleGlibGVTcGFjZU5hdmlnYXRpb25J
dGVtLmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNUYWJDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3M6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VGFiQnJvd3Nlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRW
aWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlldy5j
c3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEZyYW1lLmNz
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuY3NzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuY3NzOiBBZGRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanM6IEFkZGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvVmFyaWFibGVzLmNzczoKKwogMjAyMC0wMi0wNyAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGFub3Ro
ZXIgUHJvdG9jb2wgVmVyc2lvbiAoaU9TIDEzLjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJlNzQ1MjgwNDkzOGE3
ZWM3ZjRkOWNmMTRiMWQ3NTFmY2E1ZDE3ZWQuLmViM2U0YzQ2N2YzMzQ0ZDRiM2E4N2E3NjZhNjAx
ODZmOGU3ZTQwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDItMDcgIEpvbiBM
ZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJldmVydCBz
bGltIHRvb2xiYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBzbGltIHRvb2xiYXIgbmVlZHMgYSBsaXR0bGUgbW9yZSB3b3JrIGJlZm9yZSBsYW5k
aW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0cyByMjU1NTQ3LCByMjU1ODkwLCByMjU1
ODkyLCByMjU1ODkzLCBhbmQgcjI1NTkwMS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0
b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlN
YWMubW06CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlXaW4uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dl
Ykluc3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9S
ZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUkuaDoKKwogMjAyMC0wMi0wNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBBU1NFUlRJT04gRkFJTEVEOiByZXNl
dFJlc3VsdCA9PSAwIG9uIHJlZ3Jlc3Npb24gdGVzdHMgaW4gSVRQIGNvZGUsIHJlc2V0dGluZyBT
UUxpdGUgc3RhdGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggMGUwZGViN2Mz
YWI0ZmFmNTliYWVhOTgyOGZmNWQyMjNlODQ4NzhlOS4uMWE2ZGUzZThkOTQ1ZTU2MDFhYTIyYjI4
OGRlYThjMDliNWE2NjUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIwLTAyLTA3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQgc2xpbSB0b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0MjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc2xpbSB0b29sYmFyIG5lZWRzIGEgbGl0
dGxlIG1vcmUgd29yayBiZWZvcmUgbGFuZGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJldmVy
dHMgcjI1NTU0NywgcjI1NTg5MCwgcjI1NTg5MiwgcjI1NTg5MywgYW5kIHIyNTU5MDEuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW06CisKIDIwMjAt
MDItMDEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IG1vdmUgdGhlIGl0ZW1zIGluIHRoZSB0b29sYmFyIGludG8gdGhlIHRhYiBiYXIg
dG8gc2F2ZSB2ZXJ0aWNhbCBzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDNl
ZGVlYTE2ODRhMTczNDRkYjc0ZDVlZDBkZjRkNGM1ZDhmNmIzOWEuLmI4MmYxMWQyMzVlM2EwNWQ4
MTQyYjhlOTg0OTFjNGE4ODUxNzM3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAyMC0wMi0wNyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUmV2ZXJ0IHNsaW0gdG9vbGJhcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNsaW0gdG9vbGJhciBuZWVk
cyBhIGxpdHRsZSBtb3JlIHdvcmsgYmVmb3JlIGxhbmRpbmcuCisKKyAgICAgICAgVGhpcyBwYXRj
aCByZXZlcnRzIHIyNTU1NDcsIHIyNTU4OTAsIHIyNTU4OTIsIHIyNTU4OTMsIGFuZCByMjU1OTAx
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorCiAyMDIwLTAyLTA3
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW0hhcmRlbmluZ10g
VmFsaWRhdGUgR2VvbG9jYXRpb24gYWNjZXNzIHBlcm1pc3Npb24gb24gVUlQcm9jZXNzIHNpZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3Mg
Yi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IGIzOWI4
OGE0ZTkwMmYwY2I2MTg5MDc2MzNmZmY3Zjg3MDFmMjViNTQuLjZkNzljNWMwMmExOWM2NjljMzc3
ZTZjMDYwYzMyYTU0NWJjZWVkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxp
emFibGUuc3RyaW5ncwpAQCAtMzQsMTIgKzM0LDEyIEBACiAvKiBUZXh0IHRyYWNrIGNvbnRhaW5z
IGZvcmNlZCBzdWJ0aXRsZXMgKi8KICIlQCBGb3JjZWQiID0gIiVAIEZvcmNlZCI7CiAKLS8qIHZp
c2libGUgbmFtZSBvZiB0aGUgbmV0d29yayBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFw
cGxpY2F0aW9uIG5hbWUuICovCi0iJUAgTmV0d29ya2luZyIgPSAiJUAgTmV0d29ya2luZyI7Ci0K
IC8qIHZpc2libGUgbmFtZSBvZiB0aGUgR1BVIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUg
YXBwbGljYXRpb24gbmFtZS4gKi8KICIlQCBHcmFwaGljcyBhbmQgTWVkaWEiID0gIiVAIEdyYXBo
aWNzIGFuZCBNZWRpYSI7CiAKKy8qIHZpc2libGUgbmFtZSBvZiB0aGUgbmV0d29yayBwcm9jZXNz
LiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuICovCisiJUAgTmV0d29ya2lu
ZyIgPSAiJUAgTmV0d29ya2luZyI7CisKIC8qIFRleHQgdHJhY2sgY29udGFpbnMgc3VidGl0bGVz
IGZvciB0aGUgZGVhZiBhbmQgaGFyZCBvZiBoZWFyaW5nICovCiAiJUAgU0RIIiA9ICIlQCBTREgi
OwogCkBAIC05MSw2ICs5MSw5IEBACiAvKiBNZW51IGl0ZW0gdGl0bGUgZm9yIEtFWUdFTiBwb3At
dXAgbWVudSAqLwogIjIwNDggKEhpZ2ggR3JhZGUpIiA9ICIyMDQ4IChIaWdoIEdyYWRlKSI7CiAK
Ky8qIE5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4g
S2V5Y2hhaW4gKi8KKyI8YXBwbGljYXRpb24+IFdlYkNyeXB0byBNYXN0ZXIgS2V5IiA9ICI8YXBw
bGljYXRpb24+IFdlYkNyeXB0byBNYXN0ZXIgS2V5IjsKKwogLyogd2luZG93IHRpdGxlIGZvciBh
IHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkgKi8K
ICI8ZmlsZW5hbWU+ICVkw5clZCBwaXhlbHMiID0gIjxmaWxlbmFtZT4gJWTDlyVkIHBpeGVscyI7
CiAKQEAgLTM3Niw5ICszNzksNiBAQAogLyogSGlkZSBNZWRpYSBDb250cm9scyBjb250ZXh0IG1l
bnUgaXRlbSAqLwogIkhpZGUgQ29udHJvbHMiID0gIkhpZGUgQ29udHJvbHMiOwogCi0vKiBUaXRs
ZSBmb3IgSGlkZSBMaW5rIFByZXZpZXdzIGFjdGlvbiBidXR0b24gKi8KLSJIaWRlIExpbmsgUHJl
dmlld3MiID0gIkhpZGUgTGluayBQcmV2aWV3cyI7Ci0KIC8qIG1lbnUgaXRlbSB0aXRsZSAqLwog
IkhpZGUgU3BlbGxpbmcgYW5kIEdyYW1tYXIiID0gIkhpZGUgU3BlbGxpbmcgYW5kIEdyYW1tYXIi
OwogCkBAIC03MDMsOSArNzAzLDYgQEAKIC8qIFNob3cgZm9udHMgY29udGV4dCBtZW51IGl0ZW0g
Ki8KICJTaG93IEZvbnRzIiA9ICJTaG93IEZvbnRzIjsKIAotLyogVGl0bGUgZm9yIFNob3cgTGlu
ayBQcmV2aWV3cyBhY3Rpb24gYnV0dG9uICovCi0iU2hvdyBMaW5rIFByZXZpZXdzIiA9ICJTaG93
IExpbmsgUHJldmlld3MiOwotCiAvKiBtZW51IGl0ZW0gdGl0bGUgKi8KICJTaG93IFNwZWxsaW5n
IGFuZCBHcmFtbWFyIiA9ICJTaG93IFNwZWxsaW5nIGFuZCBHcmFtbWFyIjsKIApAQCAtNzYwLDYg
Kzc1Nyw5IEBACiAvKiBTdG9wIHNwZWFraW5nIGNvbnRleHQgbWVudSBpdGVtICovCiAiU3RvcCBT
cGVha2luZyIgPSAiU3RvcCBTcGVha2luZyI7CiAKKy8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KKyJT
dHJpa2VUaHJvdWdoIChVbmRvIGFjdGlvbiBuYW1lKSIgPSAiU3RyaWtlVGhyb3VnaCI7CisKIC8q
IExhYmVsIGZvciBzdHJvbmcgcGFzc3dvcmQuICovCiAiU3Ryb25nIFBhc3N3b3JkIiA9ICJTdHJv
bmcgUGFzc3dvcmQiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oCmluZGV4IDZlNDc3ZTllNTBmOTcxODI2NzUwMDJhNWI0ZDNmNGZi
YjA1ZDY4OWMuLjEzN2QwZTZjMWRhYjRiYmZlZDcwNjk2M2Q0ZTUwNmZlN2JjYzczZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
CkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRM
b2FkZWQoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgPSAwOworCiAg
ICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgdGhlIGRlYnVnZ2FibGUuCiAgICAgdmlydHVhbCBib29s
IGlzUmVtb3RlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZFN0cmlu
Z3NVUkwoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMjA0ZjUwNTY5ZmU5YzRh
ODFhYTA0Y2Y4Y2JhNWMxNWI5NzgzNGMyNS4uMGQ4MzE5MjUyNzgyZGE5NWE3MmVkMzZjYTVmMDQ4
YzdjZDhjODQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtMjcwLDYgKzI3MCwxMyBAQCB2b2lk
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcm
IHVybCkKICAgICBmcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxv
YWRSZXF1ZXN0MikpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om1v
dmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3Qg
PSBtX2Zyb250ZW5kUGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgpOworICAgIGZyYW1lUmVjdC5t
b3ZlKHgsIHkpOworICAgIG1fZnJvbnRlbmRQYWdlLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZy
YW1lUmVjdCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0QXR0
YWNoZWRXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCiB7CiAgICAgY29uc3QgY2hhciogc2lkZSA9
ICJ1bmRvY2tlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCAwNTVkZjQyMDg5MjBmNjc4NzIxYmQ2ZTNm
ZjUxNzIyM2I0YTJmZmUxLi4wZWMzMjBkODkzNzg0NTE5YWNhYTUwYTgyY2UxNmJlNjE4YWIyODhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmgKQEAgLTY3LDYgKzY3LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgc3RhcnRXaW5k
b3dEcmFnKCkgb3ZlcnJpZGUgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlV2luZG93
QnkoZmxvYXQgeCwgZmxvYXQgeSkgZmluYWw7CisKICAgICBXRUJDT1JFX0VYUE9SVCBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSBjb25z
dCBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKERv
Y2tTaWRlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAKaW5kZXggMmY2ZTE5NmQxZWI5NzZlM2M2MzI2NTE4NzUwNjExZGRk
NTkzMTQwNS4uNDE2ODM4OWU0NTQ5MGMyMTNlY2Q5YjZhOTM2NTRiMjRhMzQ2OThlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAK
QEAgLTI1OCw2ICsyNTgsMTggQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNldFNoZWV0
UmVjdChmbG9hdCB4LCBmbG9hdCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWcKICAgICAgICAgbV9j
bGllbnQtPmNoYW5nZVNoZWV0UmVjdChGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwog
fQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zdGFydFdpbmRvd0RyYWcoKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9h
dCB5KSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1vdmVX
aW5kb3dCeSh4LCB5KTsKK30KKwogYm9vbCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmlzUmVtb3Rl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPmlzUmVtb3RlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgK
aW5kZXggNWUyN2NjNjU5NDA5YWE5MjNlN2FmNDA5N2RlODg4ZDZiNzgzYWViNS4uOTgwNjk4NDU4
NDUwMzNkZGQ0ZDFmOTdjZjNjM2U5NDA0MmEyODg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldFNoZWV0UmVjdChmbG9hdCB4LCBmbG9hdCB5LCB1bnNpZ25lZCB3
aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCk7Cisg
ICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3Q7CisKICAgICBib29s
IGlzUmVtb3RlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25z
dDsKICAgICBTdHJpbmcgYmFja2VuZENvbW1hbmRzVVJMKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCmluZGV4IDMxZDk4
MTUwNDA1ZGE0NTBiZWQ4YjdiYzkyMzAxYTRjZDZlY2Y4ZGQuLmQ2YzA4ZWUwZjM0MmUyYTVmYjRl
MmJhMmQ3ODBjN2UyZTU2Y2Q5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC01Nyw2ICs1Nyw5IEBACiAKICAgICB2b2lk
IHNldFNoZWV0UmVjdCh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHks
IHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKIAorICAgIHZvaWQg
c3RhcnRXaW5kb3dEcmFnKCk7CisgICAgdm9pZCBtb3ZlV2luZG93QnkodW5yZXN0cmljdGVkIGZs
b2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5KTsKKwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGlzUmVtb3RlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWxp
emVkU3RyaW5nc1VSTDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJhY2tlbmRD
b21tYW5kc1VSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGIyOTc4ZTI5
ZGFlMzlhODY3ZWJiNDQyNDYxMGM5ZTQ1Yjg2MzhjOTkuLjU4MzU0NjliNmMwZjc1YWFlYjRjOTE3
YTI2YjUzNDRjMGJkZDg1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2Nh
bGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAt
NDAsMTQgKzQwLDggQEAgbG9jYWxpemVkU3RyaW5nc1siJWQgV2FybmluZyJdID0gIiVkIFdhcm5p
bmciOwogbG9jYWxpemVkU3RyaW5nc1siJWQgV2FybmluZ3MiXSA9ICIlZCBXYXJuaW5ncyI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyIlZCBceGQ3ICVkIHBpeGVscyJdID0gIiVkIFx4ZDcgJWQgcGl4ZWxz
IjsKIGxvY2FsaXplZFN0cmluZ3NbIiVkIFx4ZDcgJWQgcGl4ZWxzIChOYXR1cmFsOiAlZCBceGQ3
ICVkIHBpeGVscykiXSA9ICIlZCBceGQ3ICVkIHBpeGVscyAoTmF0dXJhbDogJWQgXHhkNyAlZCBw
aXhlbHMpIjsKLWxvY2FsaXplZFN0cmluZ3NbIiVkIGRvbWFpbiJdID0gIiVkIGRvbWFpbiI7Ci1s
b2NhbGl6ZWRTdHJpbmdzWyIlZCBkb21haW5zIl0gPSAiJWQgZG9tYWlucyI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyIlZCBtYXRjaGVzIl0gPSAiJWQgbWF0Y2hlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIl
ZCBvZiAlZCJdID0gIiVkIG9mICVkIjsKLWxvY2FsaXplZFN0cmluZ3NbIiVkIHJlZGlyZWN0Il0g
PSAiJWQgcmVkaXJlY3QiOwotbG9jYWxpemVkU3RyaW5nc1siJWQgcmVkaXJlY3RzIl0gPSAiJWQg
cmVkaXJlY3RzIjsKLWxvY2FsaXplZFN0cmluZ3NbIiVkIHJlc291cmNlIl0gPSAiJWQgcmVzb3Vy
Y2UiOwotbG9jYWxpemVkU3RyaW5nc1siJWQgcmVzb3VyY2VzIl0gPSAiJWQgcmVzb3VyY2VzIjsK
IGxvY2FsaXplZFN0cmluZ3NbIiVkcHgiXSA9ICIlZHB4IjsKIGxvY2FsaXplZFN0cmluZ3NbIiVk
cHhcdTAwQjIiXSA9ICIlZHB4XHUwMEIyIjsKIGxvY2FsaXplZFN0cmluZ3NbIiVzICglcykiXSA9
ICIlcyAoJXMpIjsKQEAgLTY3LDggKzYxLDYgQEAgbG9jYWxpemVkU3RyaW5nc1siJXMgY2Fubm90
IGJlIG1vZGlmaWVkIl0gPSAiJXMgY2Fubm90IGJlIG1vZGlmaWVkIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIiVzIGRlbGF5Il0gPSAiJXMgZGVsYXkiOwogbG9jYWxpemVkU3RyaW5nc1siJXMgZXZhbFxu
JXMgYXN5bmMiXSA9ICIlcyBldmFsXG4lcyBhc3luYyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlcyBp
bnRlcnZhbCJdID0gIiVzIGludGVydmFsIjsKLWxvY2FsaXplZFN0cmluZ3NbIiVzIHRvdGFsIl0g
PSAiJXMgdG90YWwiOwotbG9jYWxpemVkU3RyaW5nc1siJXMgdHJhbnNmZXJyZWQiXSA9ICIlcyB0
cmFuc2ZlcnJlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlczoiXSA9ICIlczoiOwogbG9jYWxpemVk
U3RyaW5nc1siKEFjdGlvbiAlcykiXSA9ICIoQWN0aW9uICVzKSI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyIoRGlzaykiXSA9ICIoRGlzaykiOwpAQCAtODYsMTQgKzc4LDEzIEBAIGxvY2FsaXplZFN0cmlu
Z3NbIihwcm9ncmFtKSJdID0gIihwcm9ncmFtKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIoc2Vydmlj
ZSB3b3JrZXIpIl0gPSAiKHNlcnZpY2Ugd29ya2VyKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIodW5p
bml0aWFsaXplZCkiXSA9ICIodW5pbml0aWFsaXplZCkiOwogbG9jYWxpemVkU3RyaW5nc1siLCAi
XSA9ICIsICI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyIwIENvbnNvbGUgZXJyb3JzIl0gPSAiMCBDb25z
b2xlIGVycm9ycyI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyIwIENvbnNvbGUgd2FybmluZ3MiXSA9ICIw
IENvbnNvbGUgd2FybmluZ3MiOwogbG9jYWxpemVkU3RyaW5nc1siMSBtYXRjaCJdID0gIjEgbWF0
Y2giOwogbG9jYWxpemVkU3RyaW5nc1siMkQiXSA9ICIyRCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJB
Y2Nlc3NpYmlsaXR5Il0gPSAiQWNjZXNzaWJpbGl0eSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJBY3Rp
b24iXSA9ICJBY3Rpb24iOwogLyogVG9vbHRpcCBmb3IgYSB0aW1lIHJhbmdlIGJhciB0aGF0IHJl
cHJlc2VudHMgd2hlbiBhIENTUyBhbmltYXRpb24vdHJhbnNpdGlvbiBpcyBydW5uaW5nICovCiBs
b2NhbGl6ZWRTdHJpbmdzWyJBY3RpdmUiXSA9ICJBY3RpdmUiOworbG9jYWxpemVkU3RyaW5nc1si
QWN0aXZpdHkgVmlld2VyIl0gPSAiQWN0aXZpdHkgVmlld2VyIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkFkZCJdID0gIkFkZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJBZGQgJXMgUnVsZSJdID0gIkFkZCAl
cyBSdWxlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkFkZCBBY3Rpb24iXSA9ICJBZGQgQWN0aW9uIjsK
QEAgLTI3NCwxMCArMjY1LDYgQEAgbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gY3JlYXRlIGEg
TG9jYWwgT3ZlcnJpZGUgZnJvbSB0aGlzIGNvbnRlbnQiXSA9ICJDbGljawogbG9jYWxpemVkU3Ry
aW5nc1siQ2xpY2sgdG8gaW1wb3J0IGEgZmlsZSBhbmQgY3JlYXRlIGEgTG9jYWwgT3ZlcnJpZGVc
blNoaWZ0LWNsaWNrIHRvIGNyZWF0ZSBhIExvY2FsIE92ZXJyaWRlIGZyb20gdGhpcyBjb250ZW50
Il0gPSAiQ2xpY2sgdG8gaW1wb3J0IGEgZmlsZSBhbmQgY3JlYXRlIGEgTG9jYWwgT3ZlcnJpZGVc
blNoaWZ0LWNsaWNrIHRvIGNyZWF0ZSBhIExvY2FsIE92ZXJyaWRlIGZyb20gdGhpcyBjb250ZW50
IjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIHNlbGVjdCBhIGNvbG9yIl0gPSAiQ2xpY2sg
dG8gc2VsZWN0IGEgY29sb3IiOwogbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gc2VsZWN0IGEg
Y29sb3JcblNoaWZ0LWNsaWNrIHRvIHN3aXRjaCBjb2xvciBmb3JtYXRzIl0gPSAiQ2xpY2sgdG8g
c2VsZWN0IGEgY29sb3JcblNoaWZ0LWNsaWNrIHRvIHN3aXRjaCBjb2xvciBmb3JtYXRzIjsKLWxv
Y2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIHNob3cgJWQgZXJyb3IgaW4gdGhlIENvbnNvbGUiXSA9
ICJDbGljayB0byBzaG93ICVkIGVycm9yIGluIHRoZSBDb25zb2xlIjsKLWxvY2FsaXplZFN0cmlu
Z3NbIkNsaWNrIHRvIHNob3cgJWQgZXJyb3JzIGluIHRoZSBDb25zb2xlIl0gPSAiQ2xpY2sgdG8g
c2hvdyAlZCBlcnJvcnMgaW4gdGhlIENvbnNvbGUiOwotbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sg
dG8gc2hvdyAlZCB3YXJuaW5nIGluIHRoZSBDb25zb2xlIl0gPSAiQ2xpY2sgdG8gc2hvdyAlZCB3
YXJuaW5nIGluIHRoZSBDb25zb2xlIjsKLWxvY2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIHNob3cg
JWQgd2FybmluZ3MgaW4gdGhlIENvbnNvbGUiXSA9ICJDbGljayB0byBzaG93ICVkIHdhcm5pbmdz
IGluIHRoZSBDb25zb2xlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIHZpZXcgdmFyaWFi
bGUgdmFsdWVcblNoaWZ0LWNsaWNrIHRvIHJlcGxhY2UgdmFyaWFibGUgd2l0aCB2YWx1ZSJdID0g
IkNsaWNrIHRvIHZpZXcgdmFyaWFibGUgdmFsdWVcblNoaWZ0LWNsaWNrIHRvIHJlcGxhY2UgdmFy
aWFibGUgd2l0aCB2YWx1ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDbGlja2FibGUiXSA9ICJDbGlj
a2FibGUiOwogbG9jYWxpemVkU3RyaW5nc1siQ2xpZW50cyJdID0gIkNsaWVudHMiOwpAQCAtMzQ4
LDYgKzMzNSw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIkNyZWF0ZSAlcyBSdWxlIl0gPSAiQ3JlYXRl
ICVzIFJ1bGUiOwogbG9jYWxpemVkU3RyaW5nc1siQ3JlYXRlIEJyZWFrcG9pbnQiXSA9ICJDcmVh
dGUgQnJlYWtwb2ludCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDcmVhdGUgTG9jYWwgT3ZlcnJpZGUi
XSA9ICJDcmVhdGUgTG9jYWwgT3ZlcnJpZGUiOwogbG9jYWxpemVkU3RyaW5nc1siQ3JlYXRlIFJl
c291cmNlIl0gPSAiQ3JlYXRlIFJlc291cmNlIjsKK2xvY2FsaXplZFN0cmluZ3NbIkNyZWF0ZSBh
IG5ldyB0YWIiXSA9ICJDcmVhdGUgYSBuZXcgdGFiIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNyb3Nz
LU9yaWdpbiBSZXN0cmljdGlvbnMiXSA9ICJDcm9zcy1PcmlnaW4gUmVzdHJpY3Rpb25zIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkN1cnJlbnQiXSA9ICJDdXJyZW50IjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkN1cnJlbnQgU3RhdGUiXSA9ICJDdXJyZW50IFN0YXRlIjsKQEAgLTM2Nyw2ICszNTUsNyBAQCBs
b2NhbGl6ZWRTdHJpbmdzWyJEYXRhYmFzZSBubyBsb25nZXIgaGFzIGV4cGVjdGVkIHZlcnNpb24u
Il0gPSAiRGF0YWJhc2Ugbm8gbG9uZwogbG9jYWxpemVkU3RyaW5nc1siRGF0YWJhc2VzIl0gPSAi
RGF0YWJhc2VzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkRhdGUiXSA9ICJEYXRlIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIkRlYnVnOiAiXSA9ICJEZWJ1ZzogIjsKK2xvY2FsaXplZFN0cmluZ3NbIkRlYnVn
Z2VyIFBhdXNlZCJdID0gIkRlYnVnZ2VyIFBhdXNlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEZWJ1
Z2dlciBTdGF0ZW1lbnQiXSA9ICJEZWJ1Z2dlciBTdGF0ZW1lbnQiOwogbG9jYWxpemVkU3RyaW5n
c1siRGVidWdnZXIgU3RhdGVtZW50cyJdID0gIkRlYnVnZ2VyIFN0YXRlbWVudHMiOwogbG9jYWxp
emVkU3RyaW5nc1siRGVidWdnZXIgZGlzYWJsZWQgZHVyaW5nIEF1ZGl0Il0gPSAiRGVidWdnZXIg
ZGlzYWJsZWQgZHVyaW5nIEF1ZGl0IjsKQEAgLTQ4Nyw2ICs0NzYsNyBAQCBsb2NhbGl6ZWRTdHJp
bmdzWyJFbmFibGUgRXZlbnQgTGlzdGVuZXIiXSA9ICJFbmFibGUgRXZlbnQgTGlzdGVuZXIiOwog
bG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIEV2ZW50IExpc3RlbmVycyJdID0gIkVuYWJsZSBFdmVu
dCBMaXN0ZW5lcnMiOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIEluc3BlY3RvciBCb290c3Ry
YXAgU2NyaXB0Il0gPSAiRW5hYmxlIEluc3BlY3RvciBCb290c3RyYXAgU2NyaXB0IjsKIGxvY2Fs
aXplZFN0cmluZ3NbIkVuYWJsZSBMb2NhbCBPdmVycmlkZSJdID0gIkVuYWJsZSBMb2NhbCBPdmVy
cmlkZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUgTmV3IFRhYiBCYXIiXSA9ICJFbmFibGUg
TmV3IFRhYiBCYXIiOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIFByZXZpZXcgRmVhdHVyZXMi
XSA9ICJFbmFibGUgUHJldmlldyBGZWF0dXJlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUg
UHJvZ3JhbSJdID0gIkVuYWJsZSBQcm9ncmFtIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBS
dWxlIl0gPSAiRW5hYmxlIFJ1bGUiOwpAQCAtNzA5LDggKzY5OSw2IEBAIGxvY2FsaXplZFN0cmlu
Z3NbIkxpdmUgQWN0aXZpdHkiXSA9ICJMaXZlIEFjdGl2aXR5IjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkxpdmUgU2l6ZSJdID0gIkxpdmUgU2l6ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJMb2FkIFx1MjAx
NCAlcyJdID0gIkxvYWQgXHUyMDE0ICVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkxvYWQgY2FuY2Vs
bGVkIl0gPSAiTG9hZCBjYW5jZWxsZWQiOwotbG9jYWxpemVkU3RyaW5nc1siTG9hZGVkIGluICVz
Il0gPSAiTG9hZGVkIGluICVzIjsKLWxvY2FsaXplZFN0cmluZ3NbIkxvYWRpbmcgZm9yICVzIl0g
PSAiTG9hZGluZyBmb3IgJXMiOwogbG9jYWxpemVkU3RyaW5nc1siTG9jYWwgRmlsZSJdID0gIkxv
Y2FsIEZpbGUiOwogbG9jYWxpemVkU3RyaW5nc1siTG9jYWwgT3ZlcnJpZGUiXSA9ICJMb2NhbCBP
dmVycmlkZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJMb2NhbCBPdmVycmlkZVx1MjAyNiJdID0gIkxv
Y2FsIE92ZXJyaWRlXHUyMDI2IjsKQEAgLTc3NCw2ICs3NjIsNyBAQCBsb2NhbGl6ZWRTdHJpbmdz
WyJOZXR3b3JrIl0gPSAiTmV0d29yayI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJOZXR3b3JrIElzc3Vl
Il0gPSAiTmV0d29yayBJc3N1ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJOZXR3b3JrIFJlcXVlc3Rz
Il0gPSAiTmV0d29yayBSZXF1ZXN0cyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJOZXR3b3JrIFJlcXVl
c3RzOiJdID0gIk5ldHdvcmsgUmVxdWVzdHM6IjsKK2xvY2FsaXplZFN0cmluZ3NbIk5ldyBUYWIi
XSA9ICJOZXcgVGFiIjsKIC8qIEEgc3VibWVudSBpdGVtIG9mICdBZGQnIHRvIGFkZCBET00gbm9k
ZXMgYWZ0ZXIgdGhlIHNlbGVjdGVkIERPTSBub2RlICovCiBsb2NhbGl6ZWRTdHJpbmdzWyJOZXh0
IFNpYmxpbmciXSA9ICJOZXh0IFNpYmxpbmciOwogbG9jYWxpemVkU3RyaW5nc1siTm8iXSA9ICJO
byI7CkBAIC0xMDkyLDE1ICsxMDgxLDIxIEBAIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgU2NvcGUg
Q2hhaW4gb24gcGF1c2UiXSA9ICJTaG93IFNjb3BlIENoYWluIG9uIHBhdXNlIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIlNob3cgYWxsIGFjdGlvbnMiXSA9ICJTaG93IGFsbCBhY3Rpb25zIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIlNob3cgYWxsIHJlc291cmNlcyJdID0gIlNob3cgYWxsIHJlc291cmNlcyI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGNvbXBvc2l0aW5nIGJvcmRlcnMiXSA9ICJTaG93IGNv
bXBvc2l0aW5nIGJvcmRlcnMiOworbG9jYWxpemVkU3RyaW5nc1siU2hvdyBlcnJvcnMgbG9nZ2Vk
IHRvIHRoZSBDb25zb2xlIl0gPSAiU2hvdyBlcnJvcnMgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIjsK
IGxvY2FsaXplZFN0cmluZ3NbIlNob3cgZnVsbCBjZXJ0aWZpY2F0ZSJdID0gIlNob3cgZnVsbCBj
ZXJ0aWZpY2F0ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGhpZGRlbiB0YWJzIl0gPSAiU2hv
dyBoaWRkZW4gdGFicyI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IG1lc3NhZ2VzIGxvZ2dlZCB0
byB0aGUgQ29uc29sZSJdID0gIlNob3cgbWVzc2FnZXMgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIjsK
K2xvY2FsaXplZFN0cmluZ3NbIlNob3cgbmV0d29yayBpbmZvcm1hdGlvbiJdID0gIlNob3cgbmV0
d29yayBpbmZvcm1hdGlvbiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IG9ubHkgZm9yIHNlbGVj
dGVkIG5vZGUiXSA9ICJTaG93IG9ubHkgZm9yIHNlbGVjdGVkIG5vZGUiOworbG9jYWxpemVkU3Ry
aW5nc1siU2hvdyBwYWdlIGxvYWQgdGltaW5nIl0gPSAiU2hvdyBwYWdlIGxvYWQgdGltaW5nIjsK
K2xvY2FsaXplZFN0cmluZ3NbIlNob3cgcGFnZSByZXNvdXJjZXMiXSA9ICJTaG93IHBhZ2UgcmVz
b3VyY2VzIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgcGFnZSBydWxlcnMgYW5kIG5vZGUgYm9y
ZGVyIGxpbmVzIl0gPSAiU2hvdyBwYWdlIHJ1bGVycyBhbmQgbm9kZSBib3JkZXIgbGluZXMiOwog
bG9jYWxpemVkU3RyaW5nc1siU2hvdyBydWxlcnMiXSA9ICJTaG93IHJ1bGVycyI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJTaG93IHRoZSBkZXRhaWxzIHNpZGViYXIgKCVzKSJdID0gIlNob3cgdGhlIGRl
dGFpbHMgc2lkZWJhciAoJXMpIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgdGhlIG5hdmlnYXRp
b24gc2lkZWJhciAoJXMpIl0gPSAiU2hvdyB0aGUgbmF2aWdhdGlvbiBzaWRlYmFyICglcykiOwog
bG9jYWxpemVkU3RyaW5nc1siU2hvdyB0cmFuc3BhcmVuY3kgZ3JpZCJdID0gIlNob3cgdHJhbnNw
YXJlbmN5IGdyaWQiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyB0eXBlIGluZm9ybWF0aW9uIl0g
PSAiU2hvdyB0eXBlIGluZm9ybWF0aW9uIjsKK2xvY2FsaXplZFN0cmluZ3NbIlNob3cgd2Fybmlu
Z3MgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIl0gPSAiU2hvdyB3YXJuaW5ncyBsb2dnZWQgdG8gdGhl
IENvbnNvbGUiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdzoiXSA9ICJTaG93OiI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJTaXRlLXNwZWNpZmljIEhhY2tzIl0gPSAiU2l0ZS1zcGVjaWZpYyBIYWNrcyI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaXplIl0gPSAiU2l6ZSI7CkBAIC0xMjk1LDYgKzEyOTAsNyBA
QCBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGluZyBy
ZXNvdXJjZXMiXSA9ICJVc2UgdGhlIHJlcwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCJd
ID0gIlVzZXIgQWdlbnQiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCBTdHlsZSBTaGVl
dCJdID0gIlVzZXIgQWdlbnQgU3R5bGUgU2hlZXQiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBB
Z2VudDoiXSA9ICJVc2VyIEFnZW50OiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJVc2VyIEludGVyZmFj
ZToiXSA9ICJVc2VyIEludGVyZmFjZToiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBTdHlsZSBT
aGVldCJdID0gIlVzZXIgU3R5bGUgU2hlZXQiOwogbG9jYWxpemVkU3RyaW5nc1siVmFsaWQgRnJv
bSJdID0gIlZhbGlkIEZyb20iOwogbG9jYWxpemVkU3RyaW5nc1siVmFsaWQgVW50aWwiXSA9ICJW
YWxpZCBVbnRpbCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL01haW4uanMKaW5kZXggOTkzNWUwZTZmMTY5OWZiNTEzNmY4Y2QxNDg1MTJiNDg3OTQ1YWFi
NS4uZWFjZTEyNjdjYTA2MTAwZjZjNzBhZjM1NGQyMDQ3ZThkMDRmZGU0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMTI4LDYg
KzEyOCw3IEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIAogICAgIC8vIFJlZ2lzdGVyIGZvciBl
dmVudHMuCiAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgV0kuX2RlYnVnZ2VyRGlkUGF1c2UpOworICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5S
ZXN1bWVkLCBXSS5fZGVidWdnZXJEaWRSZXN1bWUpOwogICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50Lkluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkLCBX
SS5faW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQpOwogICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50LkRPTU5vZGVXYXNJbnNwZWN0ZWQsIFdJLl9kb21O
b2RlV2FzSW5zcGVjdGVkKTsKICAgICBXSS5kb21TdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0
ZWQsIFdJLl9kb21TdG9yYWdlV2FzSW5zcGVjdGVkKTsKQEAgLTE0OCw3ICsxNDksNiBAQCBXSS5s
b2FkZWQgPSBmdW5jdGlvbigpCiAgICAgICAgIFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcuVHlw
ZSwKICAgICAgICAgV0kuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgIFdJLkdy
YXBoaWNzVGFiQ29udGVudFZpZXcuVHlwZSwKLSAgICAgICAgV0kuTGF5ZXJzVGFiQ29udGVudFZp
ZXcuVHlwZSwKICAgICAgICAgV0kuQXVkaXRUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICBX
SS5Db25zb2xlVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICBdKTsKQEAgLTIzNyw2ICsyMzcsNyBA
QCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJyZXNpemUiLCBXSS5fd2luZG93UmVzaXplZCk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoImtleWRvd24iLCBXSS5fd2luZG93S2V5RG93bik7CiAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoImtleXVwIiwgV0kuX3dpbmRvd0tleVVwKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgV0kuX21vdXNlRG93biwgdHJ1ZSk7CiAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIFdJLl9tb3VzZU1vdmVkLCB0cnVlKTsKICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCBXSS5fcGFnZUhpZGRlbik7CiAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgV0kuX2NvbnRleHRNZW51UmVx
dWVzdGVkKTsKQEAgLTI3Nyw4ICsyNzgsMTkgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9u
KCkKICAgICBXSS5zZXR0aW5ncy5zaG93V2hpdGVzcGFjZUNoYXJhY3RlcnMuYWRkRXZlbnRMaXN0
ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHNldFdoaXRlc3BhY2VDaGFyYWN0ZXJDbGFz
c05hbWUpOwogICAgIHNldFdoaXRlc3BhY2VDaGFyYWN0ZXJDbGFzc05hbWUoKTsKIAorICAgIFdJ
LnNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBuZXcgV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldzsK
KworICAgIFdJLl9zZXR0aW5nc0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9y
dGN1dChXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdJLktl
eWJvYXJkU2hvcnRjdXQuS2V5LkNvbW1hLCBXSS5faGFuZGxlU2V0dGluZ3NLZXlib2FyZFNob3J0
Y3V0KTsKKwogICAgIC8vIENyZWF0ZSB0aGUgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMuCi0gICAg
V0kudGFiQmFyID0gbmV3IFdJLlRhYkJhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFiLWJh
ciIpKTsKKyAgICBXSS50b29sYmFyID0gbmV3IFdJLlRvb2xiYXIoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRvb2xiYXIiKSk7CisKKyAgICBpZiAoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5h
YmxlTmV3VGFiQmFyLnZhbHVlKQorICAgICAgICBXSS50YWJCYXIgPSBuZXcgV0kuVGFiQmFyKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWItYmFyIikpOworICAgIGVsc2UgeworICAgICAgICBX
SS50YWJCYXIgPSBuZXcgV0kuTGVnYWN5VGFiQmFyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YWItYmFyIikpOworICAgICAgICBXSS50YWJCYXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYWJCYXIu
RXZlbnQuT3BlbkRlZmF1bHRUYWIsIFdJLl9vcGVuRGVmYXVsdFRhYik7CisgICAgfQogCiAgICAg
V0kuX2NvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKTsK
ICAgICBXSS5fY29udGVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgIm1haW4iKTsKQEAg
LTMzMCw2ICszNDIsNyBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIFdJLl9y
ZXNldFpvb21LZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5
Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAiMCIsIFdJLl9yZXNldFpv
b20pOwogCiAgICAgV0kuX3Nob3dUYWJBdEluZGV4S2V5Ym9hcmRTaG9ydGN1dHMgPSBbMSwgMiwg
MywgNCwgNSwgNiwgNywgOCwgOV0ubWFwKChpKSA9PiBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChX
SS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXSS5LZXlib2Fy
ZFNob3J0Y3V0Lk1vZGlmaWVyLk9wdGlvbiwgYCR7aX1gLCAoZXZlbnQpID0+IHsgV0kuX3Nob3dU
YWJBdEluZGV4RnJvbVNob3J0Y3V0KGkpOyB9KSk7CisgICAgV0kuX29wZW5OZXdUYWJLZXlib2Fy
ZFNob3J0Y3V0ID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5N
b2RpZmllci5Db21tYW5kT3JDb250cm9sIHwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5P
cHRpb24sICJUIiwgV0kuX3Nob3dOZXdUYWJGcm9tU2hvcnRjdXQpOwogCiAgICAgV0kudGFiQnJv
d3NlciA9IG5ldyBXSS5UYWJCcm93c2VyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWItYnJv
d3NlciIpLCBXSS50YWJCYXIsIFdJLm5hdmlnYXRpb25TaWRlYmFyLCBXSS5kZXRhaWxzU2lkZWJh
cik7CiAgICAgV0kudGFiQnJvd3Nlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhYkJyb3dzZXIuRXZl
bnQuU2VsZWN0ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSwgV0kuX3RhYkJyb3dzZXJTZWxlY3Rl
ZFRhYkNvbnRlbnRWaWV3RGlkQ2hhbmdlKTsKQEAgLTM1OCwxMDggKzM3MSw5NCBAQCBXSS5jb250
ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIFdJLnN0ZXBJbnRvQWx0ZXJuYXRlS2V5Ym9hcmRT
aG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuU2VtaWNvbG9u
LCBXSS5kZWJ1Z2dlclN0ZXBJbnRvKTsKICAgICBXSS5zdGVwT3V0QWx0ZXJuYXRlS2V5Ym9hcmRT
aG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXIuU2hpZnQgfCBXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRy
b2wsIFdJLktleWJvYXJkU2hvcnRjdXQuS2V5LlNlbWljb2xvbiwgV0kuZGVidWdnZXJTdGVwT3V0
KTsKIAotICAgIFdJLl9zZXR0aW5nc0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRT
aG9ydGN1dChXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdJ
LktleWJvYXJkU2hvcnRjdXQuS2V5LkNvbW1hLCBXSS5faGFuZGxlU2V0dGluZ3NLZXlib2FyZFNo
b3J0Y3V0KTsKKyAgICBXSS5fY2xvc2VUb29sYmFyQnV0dG9uID0gbmV3IFdJLkNvbnRyb2xUb29s
YmFySXRlbSgiZG9jay1jbG9zZSIsIFdJLlVJU3RyaW5nKCJDbG9zZSIpLCAiSW1hZ2VzL0Nsb3Nl
LnN2ZyIsIDE2LCAxNCk7CisgICAgV0kuX2Nsb3NlVG9vbGJhckJ1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLmNsb3NlKTsKIAot
ICAgIFdJLl90b2dnbGVQcmV2aW91c0RvY2tDb25maWd1cmF0aW9uS2V5Ym9hcmRTaG9ydGN1dCA9
IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29t
bWFuZE9yQ29udHJvbCB8IFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQsICJEIiwg
V0kuX3RvZ2dsZVByZXZpb3VzRG9ja0NvbmZpZ3VyYXRpb24pOworICAgIFdJLl91bmRvY2tUb29s
YmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvblRvb2xiYXJJdGVtKCJ1bmRvY2siLCBXSS5VSVN0cmlu
ZygiRGV0YWNoIGludG8gc2VwYXJhdGUgd2luZG93IiksICJJbWFnZXMvVW5kb2NrLnN2ZyIpOwor
ICAgIFdJLl91bmRvY2tUb29sYmFyQnV0dG9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3Bv
dmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NOYW1lKTsKKyAgICBXSS5fdW5kb2NrVG9vbGJhckJ1
dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNr
ZWQsIFdJLl91bmRvY2spOwogCi0gICAgV0kuX2Nsb3NlVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1
dHRvbk5hdmlnYXRpb25JdGVtKCJkb2NrLWNsb3NlIiwgV0kuVUlTdHJpbmcoIkNsb3NlIiksICJJ
bWFnZXMvQ2xvc2VMYXJnZS5zdmciKTsKLSAgICBXSS5fY2xvc2VUYWJCYXJCdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5jbG9z
ZSk7CisgICAgbGV0IGRvY2tJbWFnZSA9IFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09
IFdJLkxheW91dERpcmVjdGlvbi5SVEwgPyAiSW1hZ2VzL0RvY2tMZWZ0LnN2ZyIgOiAiSW1hZ2Vz
L0RvY2tSaWdodC5zdmciOworICAgIFdJLl9kb2NrVG9TaWRlVG9vbGJhckJ1dHRvbiA9IG5ldyBX
SS5CdXR0b25Ub29sYmFySXRlbSgiZG9jay1yaWdodCIsIFdJLlVJU3RyaW5nKCJEb2NrIHRvIHNp
ZGUgb2Ygd2luZG93IiksIGRvY2tJbWFnZSk7CisgICAgV0kuX2RvY2tUb1NpZGVUb29sYmFyQnV0
dG9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xh
c3NOYW1lKTsKIAotICAgIFdJLl9kb2NrVG9TaWRlVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRv
bk5hdmlnYXRpb25JdGVtKCJkb2NrLXJpZ2h0IiwgV0kuVUlTdHJpbmcoIkRvY2sgdG8gc2lkZSBv
ZiB3aW5kb3ciKSwgV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGly
ZWN0aW9uLlJUTCA/ICJJbWFnZXMvRG9ja0xlZnQuc3ZnIiA6ICJJbWFnZXMvRG9ja1JpZ2h0LnN2
ZyIsIDE4LCAxNik7Ci0gICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24uZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdJLlBvcG92ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFzc05hbWUpOwotICAgIFdJ
Ll9kb2NrVG9TaWRlVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0g
V0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/IFdJLl9kb2NrTGVmdCA6IFdJLl9kb2NrUmlnaHQpOwor
ICAgIGxldCBkb2NrVG9TaWRlQ2FsbGJhY2sgPSBXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigp
ID09PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRMID8gV0kuX2RvY2tMZWZ0IDogV0kuX2RvY2tSaWdo
dDsKKyAgICBXSS5fZG9ja1RvU2lkZVRvb2xiYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBkb2NrVG9TaWRlQ2FsbGJhY2spOwog
Ci0gICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oImRvY2stYm90dG9tIiwgV0kuVUlTdHJpbmcoIkRvY2sgdG8gYm90dG9tIG9mIHdpbmRv
dyIpLCAiSW1hZ2VzL0RvY2tCb3R0b20uc3ZnIiwgMTgsIDE2KTsKLSAgICBXSS5fZG9ja0JvdHRv
bVRhYkJhckJ1dHRvbi5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRv
RGlzbWlzc0NsYXNzTmFtZSk7Ci0gICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fZG9j
a0JvdHRvbSk7CisgICAgV0kuX2RvY2tCb3R0b21Ub29sYmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRv
blRvb2xiYXJJdGVtKCJkb2NrLWJvdHRvbSIsIFdJLlVJU3RyaW5nKCJEb2NrIHRvIGJvdHRvbSBv
ZiB3aW5kb3ciKSwgIkltYWdlcy9Eb2NrQm90dG9tLnN2ZyIpOworICAgIFdJLl9kb2NrQm90dG9t
VG9vbGJhckJ1dHRvbi5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRv
RGlzbWlzc0NsYXNzTmFtZSk7CisgICAgV0kuX2RvY2tCb3R0b21Ub29sYmFyQnV0dG9uLmFkZEV2
ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX2Rv
Y2tCb3R0b20pOwogCi0gICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25O
YXZpZ2F0aW9uSXRlbSgidW5kb2NrIiwgV0kuVUlTdHJpbmcoIkRldGFjaCBpbnRvIHNlcGFyYXRl
IHdpbmRvdyIpLCAiSW1hZ2VzL1VuZG9jay5zdmciLCAxOCwgMTYpOwotICAgIFdJLl91bmRvY2tU
YWJCYXJCdXR0b24uZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBvcG92ZXIuSWdub3JlQXV0b0Rp
c21pc3NDbGFzc05hbWUpOwotICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0
ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fdW5kb2NrKTsK
LQotICAgIFdJLnRhYkJhci5hZGROYXZpZ2F0aW9uSXRlbUJlZm9yZShuZXcgV0kuR3JvdXBOYXZp
Z2F0aW9uSXRlbShbCi0gICAgICAgIFdJLl9jbG9zZVRhYkJhckJ1dHRvbiwKLSAgICAgICAgV0ku
X2RvY2tUb1NpZGVUYWJCYXJCdXR0b24sCi0gICAgICAgIFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0
dG9uLAotICAgICAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uLAotICAgIF0pKTsKKyAgICBXSS5f
dG9nZ2xlUHJldmlvdXNEb2NrQ29uZmlndXJhdGlvbktleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0ku
S2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNv
bnRyb2wgfCBXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0LCAiRCIsIFdJLl90b2dn
bGVQcmV2aW91c0RvY2tDb25maWd1cmF0aW9uKTsKIAotICAgIFdJLl9kb2NrRGl2aWRlclRhYkJh
ck5hdmlnYXRpb25JdGVtID0gbmV3IFdJLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbTsKLSAgICBXSS50
YWJCYXIuYWRkTmF2aWdhdGlvbkl0ZW1CZWZvcmUoV0kuX2RvY2tEaXZpZGVyVGFiQmFyTmF2aWdh
dGlvbkl0ZW0pOworICAgIGxldCByZWxvYWRUb29sVGlwOworICAgIGlmIChXSS5zaGFyZWRBcHAu
ZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCisgICAgICAg
IHJlbG9hZFRvb2xUaXAgPSBXSS5VSVN0cmluZygiUmVzdGFydCAoJXMpIikuZm9ybWF0KFdJLl9y
ZWxvYWRQYWdlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgZWxzZQorICAgICAg
ICByZWxvYWRUb29sVGlwID0gV0kuVUlTdHJpbmcoIlJlbG9hZCBwYWdlICglcylcblJlbG9hZCBw
YWdlIGlnbm9yaW5nIGNhY2hlICglcykiKS5mb3JtYXQoV0kuX3JlbG9hZFBhZ2VLZXlib2FyZFNo
b3J0Y3V0LmRpc3BsYXlOYW1lLCBXSS5fcmVsb2FkUGFnZUZyb21PcmlnaW5LZXlib2FyZFNob3J0
Y3V0LmRpc3BsYXlOYW1lKTsKKyAgICBXSS5fcmVsb2FkVG9vbGJhckJ1dHRvbiA9IG5ldyBXSS5C
dXR0b25Ub29sYmFySXRlbSgicmVsb2FkIiwgcmVsb2FkVG9vbFRpcCwgIkltYWdlcy9SZWxvYWRU
b29sYmFyLnN2ZyIpOworICAgIFdJLl9yZWxvYWRUb29sYmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX3JlbG9hZFRvb2xi
YXJCdXR0b25DbGlja2VkKTsKIAotICAgIGxldCBpbnNwZWN0ZWRQYWdlQ29udHJvbE5hdmlnYXRp
b25JdGVtcyA9IFtdOworICAgIFdJLl9kb3dubG9hZFRvb2xiYXJCdXR0b24gPSBuZXcgV0kuQnV0
dG9uVG9vbGJhckl0ZW0oImRvd25sb2FkIiwgV0kuVUlTdHJpbmcoIkRvd25sb2FkIFdlYiBBcmNo
aXZlIiksICJJbWFnZXMvRG93bmxvYWRBcnJvdy5zdmciKTsKKyAgICBXSS5fZG93bmxvYWRUb29s
YmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQu
Q2xpY2tlZCwgV0kuX2Rvd25sb2FkV2ViQXJjaGl2ZSk7CiAKICAgICBsZXQgZWxlbWVudFNlbGVj
dGlvblRvb2xUaXAgPSBXSS5VSVN0cmluZygiU3RhcnQgZWxlbWVudCBzZWxlY3Rpb24gKCVzKSIp
LmZvcm1hdChXSS5faW5zcGVjdE1vZGVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKICAg
ICBsZXQgYWN0aXZhdGVkRWxlbWVudFNlbGVjdGlvblRvb2xUaXAgPSBXSS5VSVN0cmluZygiU3Rv
cCBlbGVtZW50IHNlbGVjdGlvbiAoJXMpIikuZm9ybWF0KFdJLl9pbnNwZWN0TW9kZUtleWJvYXJk
U2hvcnRjdXQuZGlzcGxheU5hbWUpOwotICAgIFdJLl9pbnNwZWN0TW9kZVRhYkJhckJ1dHRvbiA9
IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJpbnNwZWN0IiwgZWxlbWVudFNl
bGVjdGlvblRvb2xUaXAsIGFjdGl2YXRlZEVsZW1lbnRTZWxlY3Rpb25Ub29sVGlwLCAiSW1hZ2Vz
L0Nyb3NzaGFpci5zdmciKTsKLSAgICBXSS5faW5zcGVjdE1vZGVUYWJCYXJCdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fdG9n
Z2xlSW5zcGVjdE1vZGUpOwotICAgIGluc3BlY3RlZFBhZ2VDb250cm9sTmF2aWdhdGlvbkl0ZW1z
LnB1c2goV0kuX2luc3BlY3RNb2RlVGFiQmFyQnV0dG9uKTsKKyAgICBXSS5faW5zcGVjdE1vZGVU
b29sYmFyQnV0dG9uID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0oImluc3BlY3Qi
LCBlbGVtZW50U2VsZWN0aW9uVG9vbFRpcCwgYWN0aXZhdGVkRWxlbWVudFNlbGVjdGlvblRvb2xU
aXAsICJJbWFnZXMvQ3Jvc3NoYWlyLnN2ZyIpOworICAgIFdJLl9pbnNwZWN0TW9kZVRvb2xiYXJC
dXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlj
a2VkLCBXSS5fdG9nZ2xlSW5zcGVjdE1vZGUpOwogCi0gICAgaWYgKEluc3BlY3RvckZyb250ZW5k
SG9zdC5pc1JlbW90ZSB8fCBXSS5pc0RlYnVnVUlFbmFibGVkKCkpIHsKLSAgICAgICAgLy8gQ09N
UEFUSUJJTElUWSAoaU9TIDEyLjIpOiBQYWdlLm92ZXJyaWRlU2V0dGluZyBkaWQgbm90IGV4aXN0
LgotICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJQYWdlLm92ZXJyaWRl
VXNlckFnZW50IikgJiYgSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJQYWdlLm92ZXJyaWRl
U2V0dGluZyIpKSB7Ci0gICAgICAgICAgICBjb25zdCBkZXZpY2VTZXR0aW5nc1Rvb2x0aXAgPSBX
SS5VSVN0cmluZygiRGV2aWNlIFNldHRpbmdzIik7Ci0gICAgICAgICAgICBXSS5fZGV2aWNlU2V0
dGluZ3NUYWJCYXJCdXR0b24gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgi
ZGV2aWNlLXNldHRpbmdzIiwgZGV2aWNlU2V0dGluZ3NUb29sdGlwLCBkZXZpY2VTZXR0aW5nc1Rv
b2x0aXAsICJJbWFnZXMvRGV2aWNlLnN2ZyIpOwotICAgICAgICAgICAgV0kuX2RldmljZVNldHRp
bmdzVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RXZlbnQuQ2xpY2tlZCwgV0kuX2hhbmRsZURldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uQ2xpY2tl
ZCk7Ci0gICAgICAgICAgICBpbnNwZWN0ZWRQYWdlQ29udHJvbE5hdmlnYXRpb25JdGVtcy5wdXNo
KFdJLl9kZXZpY2VTZXR0aW5nc1RhYkJhckJ1dHRvbik7CisgICAgLy8gQ09NUEFUSUJJTElUWSAo
aU9TIDEyLjIpOiBQYWdlLm92ZXJyaWRlU2V0dGluZyBkaWQgbm90IGV4aXN0LgorICAgIGlmICgo
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlzUmVtb3RlIHx8IFdJLmlzRGVidWdVSUVuYWJsZWQoKSkg
JiYgSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJQYWdlLm92ZXJyaWRlVXNlckFnZW50Iikg
JiYgSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJQYWdlLm92ZXJyaWRlU2V0dGluZyIpKSB7
CisgICAgICAgIGNvbnN0IGRldmljZVNldHRpbmdzVG9vbHRpcCA9IFdJLlVJU3RyaW5nKCJEZXZp
Y2UgU2V0dGluZ3MiKTsKKyAgICAgICAgV0kuX2RldmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbiA9
IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtKCJkZXZpY2Utc2V0dGluZ3MiLCBkZXZp
Y2VTZXR0aW5nc1Rvb2x0aXAsIGRldmljZVNldHRpbmdzVG9vbHRpcCwgIkltYWdlcy9EZXZpY2Uu
c3ZnIik7CisgICAgICAgIFdJLl9kZXZpY2VTZXR0aW5nc1Rvb2xiYXJCdXR0b24uYWRkRXZlbnRM
aXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5faGFuZGxl
RGV2aWNlU2V0dGluZ3NUb29sYmFyQnV0dG9uQ2xpY2tlZCk7CiAKLSAgICAgICAgICAgIFdJLl9k
ZXZpY2VTZXR0aW5nc1BvcG92ZXIgPSBudWxsOwotICAgICAgICB9CisgICAgICAgIFdJLl9kZXZp
Y2VTZXR0aW5nc1BvcG92ZXIgPSBudWxsOworICAgIH0KIAotICAgICAgICBsZXQgcmVsb2FkVG9v
bFRpcDsKLSAgICAgICAgaWYgKFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVi
dWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkKLSAgICAgICAgICAgIHJlbG9hZFRvb2xUaXAgPSBXSS5V
SVN0cmluZygiUmVzdGFydCAoJXMpIikuZm9ybWF0KFdJLl9yZWxvYWRQYWdlS2V5Ym9hcmRTaG9y
dGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbG9hZFRvb2xU
aXAgPSBXSS5VSVN0cmluZygiUmVsb2FkIHBhZ2UgKCVzKVxuUmVsb2FkIHBhZ2UgaWdub3Jpbmcg
Y2FjaGUgKCVzKSIpLmZvcm1hdChXSS5fcmVsb2FkUGFnZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxh
eU5hbWUsIFdJLl9yZWxvYWRQYWdlRnJvbU9yaWdpbktleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5h
bWUpOwotICAgICAgICBXSS5fcmVsb2FkVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmln
YXRpb25JdGVtKCJyZWxvYWQiLCByZWxvYWRUb29sVGlwLCAiSW1hZ2VzL1JlbG9hZFRvb2xiYXIu
c3ZnIik7Ci0gICAgICAgIFdJLl9yZWxvYWRUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihX
SS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fcmVsb2FkVGFiQmFyQnV0
dG9uQ2xpY2tlZCk7Ci0gICAgICAgIGluc3BlY3RlZFBhZ2VDb250cm9sTmF2aWdhdGlvbkl0ZW1z
LnB1c2goV0kuX3JlbG9hZFRhYkJhckJ1dHRvbik7CisgICAgV0kuX3VwZGF0ZVJlbG9hZFRvb2xi
YXJCdXR0b24oKTsKKyAgICBXSS5fdXBkYXRlRG93bmxvYWRUb29sYmFyQnV0dG9uKCk7CisgICAg
V0kuX3VwZGF0ZUluc3BlY3RNb2RlVG9vbGJhckJ1dHRvbigpOwogCi0gICAgICAgIFdJLl9kb3du
bG9hZFRhYkJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiZG93bmxvYWQi
LCBXSS5VSVN0cmluZygiRG93bmxvYWQgV2ViIEFyY2hpdmUiKSwgIkltYWdlcy9Eb3dubG9hZEFy
cm93LnN2ZyIpOwotICAgICAgICBXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0
ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fZG93bmxvYWRX
ZWJBcmNoaXZlKTsKLSAgICAgICAgaW5zcGVjdGVkUGFnZUNvbnRyb2xOYXZpZ2F0aW9uSXRlbXMu
cHVzaChXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24pOwotICAgIH0KKyAgICBXSS5fZGFzaGJvYXJk
cyA9IHsKKyAgICAgICAgZGVmYXVsdDogbmV3IFdJLkRlZmF1bHREYXNoYm9hcmQsCisgICAgICAg
IGRlYnVnZ2VyOiBuZXcgV0kuRGVidWdnZXJEYXNoYm9hcmQsCisgICAgfTsKIAotICAgIFdJLnRh
YkJhci5hZGROYXZpZ2F0aW9uSXRlbUJlZm9yZShuZXcgV0kuR3JvdXBOYXZpZ2F0aW9uSXRlbShp
bnNwZWN0ZWRQYWdlQ29udHJvbE5hdmlnYXRpb25JdGVtcykpOworICAgIFdJLl9kYXNoYm9hcmRD
b250YWluZXIgPSBuZXcgV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldzsKKyAgICBXSS5fZGFzaGJv
YXJkQ29udGFpbmVyLnNob3dEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV0kuX2Rh
c2hib2FyZHMuZGVmYXVsdCk7CiAKLSAgICBXSS5fY29uc29sZURpdmlkZXJOYXZpZ2F0aW9uSXRl
bSA9IG5ldyBXSS5EaXZpZGVyTmF2aWdhdGlvbkl0ZW07Ci0gICAgV0kudGFiQmFyLmFkZE5hdmln
YXRpb25JdGVtQmVmb3JlKFdJLl9jb25zb2xlRGl2aWRlck5hdmlnYXRpb25JdGVtKTsKKyAgICBX
SS50b29sYmFyLmFkZFRvb2xiYXJJdGVtKFdJLl9jbG9zZVRvb2xiYXJCdXR0b24sIFdJLlRvb2xi
YXIuU2VjdGlvbi5Db250cm9sKTsKIAotICAgIFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0
b24gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNvbnNvbGUtd2FybmluZ3MiLCBXSS5V
SVN0cmluZygiMCBDb25zb2xlIHdhcm5pbmdzIiksICJJbWFnZXMvSXNzdWVzRW5hYmxlZC5zdmci
KTsKLSAgICBXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9uLmltYWdlVHlwZSA9IFdJLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLkltYWdlVHlwZS5JTUc7Ci0gICAgV0kuX2NvbnNvbGVXYXJuaW5n
c1RhYkJhckJ1dHRvbi5oaWRkZW4gPSBmYWxzZTsKLSAgICBXSS5fY29uc29sZVdhcm5pbmdzVGFi
QmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQu
Q2xpY2tlZCwgKCkgPT4gewotICAgICAgICBXSS5zaG93Q29uc29sZVRhYihXSS5Mb2dDb250ZW50
Vmlldy5TY29wZXMuV2FybmluZ3MsIHsKLSAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRh
YkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5EYXNoYm9hcmQsCi0gICAgICAgIH0pOwot
ICAgIH0sIFdJKTsKLQotICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uID0gbmV3IFdJ
LkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjb25zb2xlLWVycm9ycyIsIFdJLlVJU3RyaW5nKCIwIENv
bnNvbGUgZXJyb3JzIiksICJJbWFnZXMvRXJyb3JzRW5hYmxlZC5zdmciKTsKLSAgICBXSS5fY29u
c29sZUVycm9yc1RhYkJhckJ1dHRvbi5pbWFnZVR5cGUgPSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5JbWFnZVR5cGUuSU1HOwotICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLmhpZGRl
biA9IGZhbHNlOwotICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgKCkgPT4gewotICAg
ICAgICBXSS5zaG93Q29uc29sZVRhYihXSS5Mb2dDb250ZW50Vmlldy5TY29wZXMuRXJyb3JzLCB7
Ci0gICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25J
bml0aWF0b3IuRGFzaGJvYXJkLAotICAgICAgICB9KTsKLSAgICB9LCBXSSk7CisgICAgV0kudG9v
bGJhci5hZGRUb29sYmFySXRlbShXSS5fdW5kb2NrVG9vbGJhckJ1dHRvbiwgV0kuVG9vbGJhci5T
ZWN0aW9uLkxlZnQpOworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX2RvY2tUb1Np
ZGVUb29sYmFyQnV0dG9uLCBXSS5Ub29sYmFyLlNlY3Rpb24uTGVmdCk7CisgICAgV0kudG9vbGJh
ci5hZGRUb29sYmFySXRlbShXSS5fZG9ja0JvdHRvbVRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIu
U2VjdGlvbi5MZWZ0KTsKKworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX3JlbG9h
ZFRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXJMZWZ0KTsKKyAgICBXSS50
b29sYmFyLmFkZFRvb2xiYXJJdGVtKFdJLl9kb3dubG9hZFRvb2xiYXJCdXR0b24sIFdJLlRvb2xi
YXIuU2VjdGlvbi5DZW50ZXJMZWZ0KTsKIAotICAgIFdJLnRhYkJhci5hZGROYXZpZ2F0aW9uSXRl
bUJlZm9yZShuZXcgV0kuR3JvdXBOYXZpZ2F0aW9uSXRlbShbCi0gICAgICAgIFdJLl9jb25zb2xl
V2FybmluZ3NUYWJCYXJCdXR0b24sCi0gICAgICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0
dG9uLAotICAgIF0pKTsKKyAgICBXSS50b29sYmFyLmFkZFRvb2xiYXJJdGVtKFdJLl9kYXNoYm9h
cmRDb250YWluZXIudG9vbGJhckl0ZW0sIFdJLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXIpOwogCi0g
ICAgV0kuX3VwZGF0ZUluc3BlY3RNb2RlVGFiQmFyQnV0dG9uKCk7Ci0gICAgV0kuX3VwZGF0ZURv
d25sb2FkVGFiQmFyQnV0dG9uKCk7Ci0gICAgV0kuX3VwZGF0ZVJlbG9hZFRhYkJhckJ1dHRvbigp
OworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX2luc3BlY3RNb2RlVG9vbGJhckJ1
dHRvbiwgV0kuVG9vbGJhci5TZWN0aW9uLkNlbnRlclJpZ2h0KTsKIAotICAgIFdJLmNvbnNvbGVN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFk
ZGVkLCBXSS5fdXBkYXRlQ29uc29sZVRhYkJhckJ1dHRvbnMsIFdJKTsKLSAgICBXSS5jb25zb2xl
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3Vz
TWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgV0kuX3VwZGF0ZUNvbnNvbGVUYWJCYXJCdXR0b25z
LCBXSSk7Ci0gICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xl
TWFuYWdlci5FdmVudC5DbGVhcmVkLCBXSS5fdXBkYXRlQ29uc29sZVRhYkJhckJ1dHRvbnMsIFdJ
KTsKLSAgICBXSS5fdXBkYXRlQ29uc29sZVRhYkJhckJ1dHRvbnMoKTsKKyAgICBpZiAoV0kuX2Rl
dmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbikKKyAgICAgICAgV0kudG9vbGJhci5hZGRUb29sYmFy
SXRlbShXSS5fZGV2aWNlU2V0dGluZ3NUb29sYmFyQnV0dG9uLCBXSS5Ub29sYmFyLlNlY3Rpb24u
Q2VudGVyUmlnaHQpOwogCi0gICAgV0kuX2RvY2tlZFJlc2l6ZXJFbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRvY2tlZC1yZXNpemVyIik7Ci0gICAgV0kuX2RvY2tlZFJlc2l6ZXJF
bGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFt
ZSk7Ci0gICAgV0kuX2RvY2tlZFJlc2l6ZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
ZG93biIsIFdJLl9kb2NrZWRSZXNpemVyTW91c2VEb3duKTsKKyAgICBXSS5fc2VhcmNoVGFiQ29u
dGVudFZpZXcgPSBuZXcgV0kuU2VhcmNoVGFiQ29udGVudFZpZXc7CisKKyAgICBpZiAoV0kuc2V0
dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFyLnZhbHVlKSB7CisgICAgICAgIFdJLnRh
YkJyb3dzZXIuYWRkVGFiRm9yQ29udGVudFZpZXcoV0kuX3NlYXJjaFRhYkNvbnRlbnRWaWV3LCB7
c3VwcHJlc3NBbmltYXRpb25zOiB0cnVlfSk7CisgICAgICAgIFdJLnRhYkJhci5hZGRUYWJCYXJJ
dGVtKFdJLnNldHRpbmdzVGFiQ29udGVudFZpZXcudGFiQmFySXRlbSwge3N1cHByZXNzQW5pbWF0
aW9uczogdHJ1ZX0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IGluY3JlbWVudGFsID0g
ZmFsc2U7CisgICAgICAgIFdJLl9zZWFyY2hUb29sYmFySXRlbSA9IG5ldyBXSS5TZWFyY2hCYXIo
Imluc3BlY3Rvci1zZWFyY2giLCBXSS5VSVN0cmluZygiU2VhcmNoIiksIGluY3JlbWVudGFsKTsK
KyAgICAgICAgV0kuX3NlYXJjaFRvb2xiYXJJdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2VhcmNo
QmFyLkV2ZW50LlRleHRDaGFuZ2VkLCBXSS5fc2VhcmNoVGV4dERpZENoYW5nZSk7CisgICAgICAg
IFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX3NlYXJjaFRvb2xiYXJJdGVtLCBXSS5Ub29s
YmFyLlNlY3Rpb24uUmlnaHQpOworICAgIH0KKworICAgIGxldCBkb2NrZWRSZXNpemVyRWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkb2NrZWQtcmVzaXplciIpOworICAgIGRvY2tl
ZFJlc2l6ZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlz
c0NsYXNzTmFtZSk7CisgICAgZG9ja2VkUmVzaXplckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgV0kuX2RvY2tlZFJlc2l6ZXJNb3VzZURvd24pOwogCiAgICAgV0kuX2RvY2tp
bmdBdmFpbGFibGUgPSBmYWxzZTsKIApAQCAtNDc5LDYgKzQ3OCw3IEBAIFdJLmNvbnRlbnRMb2Fk
ZWQgPSBmdW5jdGlvbigpCiAgICAgICAgIFdJLkF1ZGl0VGFiQ29udGVudFZpZXcsCiAgICAgICAg
IFdJLkNvbnNvbGVUYWJDb250ZW50VmlldywKICAgICAgICAgV0kuU2VhcmNoVGFiQ29udGVudFZp
ZXcsCisgICAgICAgIFdJLk5ld1RhYkNvbnRlbnRWaWV3LAogICAgICAgICBXSS5TZXR0aW5nc1Rh
YkNvbnRlbnRWaWV3LAogICAgIF07CiAKQEAgLTQ5MCwxMiArNDkwLDYgQEAgV0kuY29udGVudExv
YWRlZCA9IGZ1bmN0aW9uKCkKIAogICAgIFdJLl9wZW5kaW5nT3BlblRhYnMgPSBbXTsKIAotICAg
IFdJLl9zZWFyY2hUYWJDb250ZW50VmlldyA9IG5ldyBXSS5TZWFyY2hUYWJDb250ZW50VmlldzsK
LSAgICBXSS50YWJCcm93c2VyLmFkZFRhYkZvckNvbnRlbnRWaWV3KFdJLl9zZWFyY2hUYWJDb250
ZW50Vmlldywge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOwotCi0gICAgV0kuX3NldHRpbmdz
VGFiQ29udGVudFZpZXcgPSBuZXcgV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldzsKLSAgICBXSS50
YWJCcm93c2VyLmFkZFRhYkZvckNvbnRlbnRWaWV3KFdJLl9zZXR0aW5nc1RhYkNvbnRlbnRWaWV3
LCB7c3VwcHJlc3NBbmltYXRpb25zOiB0cnVlfSk7Ci0KICAgICAvLyBQcmV2aW91c2x5IHdlIG1h
eSBoYXZlIHN0b3JlZCBkdXBsaWNhdGVzIGluIFdJIHNldHRpbmcuIEF2b2lkIGNyZWF0aW5nIGR1
cGxpY2F0ZSB0YWJzLgogICAgIGxldCBvcGVuVGFiVHlwZXMgPSBXSS5fb3BlblRhYnNTZXR0aW5n
LnZhbHVlOwogICAgIGxldCBzZWVuVGFiVHlwZXMgPSBuZXcgU2V0OwpAQCAtNTIzLDE2ICs1MTcs
MTMgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKIAogICAgIFdJLl9yZXN0b3JlQ29v
a2llRm9yT3BlblRhYnMoV0kuU3RhdGVSZXN0b3JhdGlvblR5cGUuTG9hZCk7CiAKLSAgICBpZiAo
V0kudGFiQmFyLm5vcm1hbFRhYkNvdW50KQotICAgICAgICBXSS50YWJCYXIuc2VsZWN0ZWRUYWJC
YXJJdGVtID0gV0kuX3NlbGVjdGVkVGFiSW5kZXhTZXR0aW5nLnZhbHVlOwotICAgIGVsc2Ugewot
ICAgICAgICAvLyBJZiBubyB0YWJzIHdlcmUgYWJsZSB0byBiZSByZXN0b3JlZCwgc2hvdyBhbGwg
dGFicyB0aGF0IGFyZSBhbGxvd2VkLgotICAgICAgICBmb3IgKGxldCB0YWJUeXBlIG9mIFdJLl9v
cGVuVGFic1NldHRpbmcuZGVmYXVsdFZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoV0kuaXNOZXdU
YWJXaXRoVHlwZUFsbG93ZWQodGFiVHlwZSkpCi0gICAgICAgICAgICAgICAgV0kuY3JlYXRlTmV3
VGFiV2l0aFR5cGUodGFiVHlwZSkKLSAgICAgICAgfQorICAgIFdJLnRhYkJhci5zZWxlY3RlZFRh
YkJhckl0ZW0gPSBXSS5fc2VsZWN0ZWRUYWJJbmRleFNldHRpbmcudmFsdWU7CisKKyAgICBpZiAo
IVdJLnRhYkJhci5zZWxlY3RlZFRhYkJhckl0ZW0pCiAgICAgICAgIFdJLnRhYkJhci5zZWxlY3Rl
ZFRhYkJhckl0ZW0gPSAwOwotICAgIH0KKworICAgIGlmICghV0kudGFiQmFyLm5vcm1hbFRhYkNv
dW50KQorICAgICAgICBXSS5zaG93TmV3VGFiVGFiKHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9
KTsKIAogICAgIC8vIExpc3RlbiB0byB0aGUgZXZlbnRzIGFmdGVyIHJlc3RvcmluZyB0aGUgc2F2
ZWQgdGFicyB0byBhdm9pZCByZWN1cnNpb24uCiAgICAgV0kudGFiQmFyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1BZGRlZCwgV0kuX3JlbWVtYmVyT3BlblRhYnMp
OwpAQCAtNTQyLDE3ICs1MzMsOSBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAg
IGZ1bmN0aW9uIHVwZGF0ZUNvbnNvbGVTYXZlZFJlc3VsdFByZWZpeENTU1ZhcmlhYmxlKCkgewog
ICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCItLWNvbnNvbGUtc2F2ZWQt
cmVzdWx0LXByZWZpeCIsICJcIiIgKyBXSS5SdW50aW1lTWFuYWdlci5wcmVmZXJyZWRTYXZlZFJl
c3VsdFByZWZpeCgpICsgIlwiIik7CiAgICAgfQotCi0gICAgV0kuc2V0dGluZ3MuY29uc29sZVNh
dmVkUmVzdWx0QWxpYXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQs
IHVwZGF0ZUNvbnNvbGVTYXZlZFJlc3VsdFByZWZpeENTU1ZhcmlhYmxlLCBXSS5zZXR0aW5ncyk7
CisgICAgV0kuc2V0dGluZ3MuY29uc29sZVNhdmVkUmVzdWx0QWxpYXMuYWRkRXZlbnRMaXN0ZW5l
cihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHVwZGF0ZUNvbnNvbGVTYXZlZFJlc3VsdFByZWZp
eENTU1ZhcmlhYmxlKTsKICAgICB1cGRhdGVDb25zb2xlU2F2ZWRSZXN1bHRQcmVmaXhDU1NWYXJp
YWJsZSgpOwogCi0gICAgZnVuY3Rpb24gdXBkYXRlWm9vbUZhY3RvckNTU1ZhcmlhYmxlKCkgewot
ICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCItLXpvb20tZmFjdG9yIiwg
V0kuc2V0dGluZ3Muem9vbUZhY3Rvci52YWx1ZSk7Ci0gICAgfQotCi0gICAgV0kuc2V0dGluZ3Mu
em9vbUZhY3Rvci5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdXBk
YXRlWm9vbUZhY3RvckNTU1ZhcmlhYmxlLCBXSS5zZXR0aW5ncyk7Ci0gICAgdXBkYXRlWm9vbUZh
Y3RvckNTU1ZhcmlhYmxlKCk7Ci0KICAgICAvLyBTaWduYWwgdGhhdCB0aGUgZnJvbnRlbmQgaXMg
bm93IHJlYWR5IHRvIHJlY2VpdmUgbWVzc2FnZXMuCiAgICAgV0kuX2JhY2tlbmRUYXJnZXRBdmFp
bGFibGVQcm9taXNlLnByb21pc2UudGhlbigoKSA9PiB7CiAgICAgICAgIEluc3BlY3RvckZyb250
ZW5kQVBJLmxvYWRDb21wbGV0ZWQoKTsKQEAgLTY4OSwxMCArNjcyLDE1IEBAIFdJLl9yZW1lbWJl
ck9wZW5UYWJzID0gZnVuY3Rpb24oKQogICAgIFdJLl9vcGVuVGFic1NldHRpbmcudmFsdWUgPSBv
cGVuVGFiczsKIH07CiAKK1dJLl9vcGVuRGVmYXVsdFRhYiA9IGZ1bmN0aW9uKGV2ZW50KQorewor
ICAgIFdJLnNob3dOZXdUYWJUYWIoe3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOworfTsKKwog
V0kuX2hhbmRsZVNldHRpbmdzS2V5Ym9hcmRTaG9ydGN1dCA9IGZ1bmN0aW9uKGV2ZW50KQogewog
ICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVSswMDJDIikgeyAvLyAiLCIKLSAgICAg
ICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcoV0kuX3NldHRpbmdzVGFiQ29u
dGVudFZpZXcsIHsKKyAgICAgICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXco
V0kuc2V0dGluZ3NUYWJDb250ZW50VmlldywgewogICAgICAgICAgICAgaW5pdGlhdG9ySGludDog
V0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLktleWJvYXJkU2hvcnRjdXQsCiAg
ICAgICAgIH0pOwogICAgIH0KQEAgLTcyMCw2ICs3MDgsMjAgQEAgV0kuX3RyeVRvUmVzdG9yZVBl
bmRpbmdUYWJzID0gZnVuY3Rpb24oKQogICAgIH0KIAogICAgIFdJLl9wZW5kaW5nT3BlblRhYnMg
PSBzdGlsbFBlbmRpbmdPcGVuVGFiczsKKworICAgIGlmICghV0kuc2V0dGluZ3MuZXhwZXJpbWVu
dGFsRW5hYmxlTmV3VGFiQmFyLnZhbHVlKQorICAgICAgICBXSS50YWJCYXIudXBkYXRlTmV3VGFi
VGFiQmFySXRlbVN0YXRlKCk7Cit9OworCitXSS5zaG93TmV3VGFiVGFiID0gZnVuY3Rpb24ob3B0
aW9ucykKK3sKKyAgICBpZiAoIVdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKFdJLk5ld1RhYkNv
bnRlbnRWaWV3LlR5cGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBsZXQgdGFiQ29udGVudFZp
ZXcgPSBXSS50YWJCcm93c2VyLmJlc3RUYWJDb250ZW50Vmlld0ZvckNsYXNzKFdJLk5ld1RhYkNv
bnRlbnRWaWV3KTsKKyAgICBpZiAoIXRhYkNvbnRlbnRWaWV3KQorICAgICAgICB0YWJDb250ZW50
VmlldyA9IG5ldyBXSS5OZXdUYWJDb250ZW50VmlldzsKKyAgICBXSS50YWJCcm93c2VyLnNob3dU
YWJGb3JDb250ZW50Vmlldyh0YWJDb250ZW50Vmlldywgb3B0aW9ucyk7CiB9OwogCiBXSS5pc05l
d1RhYldpdGhUeXBlQWxsb3dlZCA9IGZ1bmN0aW9uKHRhYlR5cGUpCkBAIC03MzcsNiArNzM5LDEz
IEBAIFdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkID0gZnVuY3Rpb24odGFiVHlwZSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAodGFiQ2xhc3MgPT09IFdJLk5l
d1RhYkNvbnRlbnRWaWV3KSB7CisgICAgICAgIGxldCBhbGxUYWJzID0gQXJyYXkuZnJvbShXSS5r
bm93blRhYkNsYXNzZXMoKSk7CisgICAgICAgIGxldCBhZGRhYmxlVGFicyA9IGFsbFRhYnMuZmls
dGVyKCh0YWJDbGFzcykgPT4gIXRhYkNsYXNzLnRhYkluZm8oKS5pc0VwaGVtZXJhbCk7CisgICAg
ICAgIGxldCBjYW5NYWtlTmV3VGFiID0gYWRkYWJsZVRhYnMuc29tZSgodGFiQ2xhc3MpID0+IFdJ
LmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKHRhYkNsYXNzLlR5cGUpKTsKKyAgICAgICAgcmV0dXJu
IGNhbk1ha2VOZXdUYWI7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9OwogCkBAIC03ODAs
OSArNzg5LDkgQEAgV0kuYWN0aXZhdGVFeHRyYURvbWFpbnMgPSBmdW5jdGlvbihkb21haW5zKQog
ICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuaW5pdGlhbGl6ZVRhcmdldChXSS5tYWluVGFy
Z2V0KTsKICAgICB9CiAKLSAgICBXSS5fdXBkYXRlSW5zcGVjdE1vZGVUYWJCYXJCdXR0b24oKTsK
LSAgICBXSS5fdXBkYXRlRG93bmxvYWRUYWJCYXJCdXR0b24oKTsKLSAgICBXSS5fdXBkYXRlUmVs
b2FkVGFiQmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZVJlbG9hZFRvb2xiYXJCdXR0b24oKTsK
KyAgICBXSS5fdXBkYXRlRG93bmxvYWRUb29sYmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZUlu
c3BlY3RNb2RlVG9vbGJhckJ1dHRvbigpOwogCiAgICAgV0kuX3RyeVRvUmVzdG9yZVBlbmRpbmdU
YWJzKCk7CiB9OwpAQCAtODQyLDYgKzg1MSw4IEBAIFdJLnVwZGF0ZURvY2tlZFN0YXRlID0gZnVu
Y3Rpb24oc2lkZSkKIAogICAgIFdJLmRvY2tlZCA9IHNpZGUgIT09IFdJLkRvY2tDb25maWd1cmF0
aW9uLlVuZG9ja2VkOwogCisgICAgV0kuX2lnbm9yZVRvb2xiYXJNb2RlRGlkQ2hhbmdlRXZlbnRz
ID0gdHJ1ZTsKKwogICAgIGlmIChzaWRlID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b20p
IHsKICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJkb2NrZWQiLCBXSS5Eb2Nr
Q29uZmlndXJhdGlvbi5Cb3R0b20pOwogICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5y
ZW1vdmUoIndpbmRvdy1pbmFjdGl2ZSIsIFdJLkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0LCBXSS5E
b2NrQ29uZmlndXJhdGlvbi5MZWZ0KTsKQEAgLTg1NCw2ICs4NjUsOCBAQCBXSS51cGRhdGVEb2Nr
ZWRTdGF0ZSA9IGZ1bmN0aW9uKHNpZGUpCiAgICAgfSBlbHNlCiAgICAgICAgIGRvY3VtZW50LmJv
ZHkuY2xhc3NMaXN0LnJlbW92ZSgiZG9ja2VkIiwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQs
IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQsIFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbSk7
CiAKKyAgICBXSS5faWdub3JlVG9vbGJhck1vZGVEaWRDaGFuZ2VFdmVudHMgPSBmYWxzZTsKKwog
ICAgIFdJLl91cGRhdGVEb2NrTmF2aWdhdGlvbkl0ZW1zKCk7CiAKICAgICBpZiAoIVdJLmRvY2tl
ZENvbmZpZ3VyYXRpb25TdXBwb3J0c1NwbGl0Q29udGVudEJyb3dzZXIoKSAmJiAhV0kuZG9lc0N1
cnJlbnRUYWJTdXBwb3J0U3BsaXRDb250ZW50QnJvd3NlcigpKQpAQCAtMTExOSwxMCArMTEzMiwx
MCBAQCBXSS5pc1Nob3dpbmdMYXllcnNUYWIgPSBmdW5jdGlvbigpCiAKIFdJLnNob3dTZXR0aW5n
c1RhYiA9IGZ1bmN0aW9uKG9wdGlvbnMgPSB7fSkKIHsKLSAgICBXSS50YWJCcm93c2VyLnNob3dU
YWJGb3JDb250ZW50VmlldyhXSS5fc2V0dGluZ3NUYWJDb250ZW50Vmlldywgb3B0aW9ucyk7Cisg
ICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcoV0kuc2V0dGluZ3NUYWJDb250
ZW50Vmlldywgb3B0aW9ucyk7CiAKICAgICBpZiAob3B0aW9ucy5ibGFja2JveFBhdHRlcm5Ub1Nl
bGVjdCkKLSAgICAgICAgV0kuX3NldHRpbmdzVGFiQ29udGVudFZpZXcuc2VsZWN0QmxhY2tib3hQ
YXR0ZXJuKG9wdGlvbnMuYmxhY2tib3hQYXR0ZXJuVG9TZWxlY3QpOworICAgICAgICBXSS5zZXR0
aW5nc1RhYkNvbnRlbnRWaWV3LnNlbGVjdEJsYWNrYm94UGF0dGVybihvcHRpb25zLmJsYWNrYm94
UGF0dGVyblRvU2VsZWN0KTsKIH07CiAKIFdJLmluZGVudFN0cmluZyA9IGZ1bmN0aW9uKCkKQEAg
LTEzNjcsMTQgKzEzODAsMzUgQEAgV0kuZGVidWdnZXJTdGVwT3V0ID0gZnVuY3Rpb24oZXZlbnQp
CiAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnN0ZXBPdXQoKTsKIH07CiAKLVdJLl9mb2N1c1NlYXJj
aEZpZWxkID0gZnVuY3Rpb24oZXZlbnQpCitXSS5fc2VhcmNoVGV4dERpZENoYW5nZSA9IGZ1bmN0
aW9uKGV2ZW50KQogewotICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KFdJ
Ll9zZWFyY2hUYWJDb250ZW50VmlldywgeworICAgIHZhciB0YWJDb250ZW50VmlldyA9IFdJLnRh
YkJyb3dzZXIuYmVzdFRhYkNvbnRlbnRWaWV3Rm9yQ2xhc3MoV0kuU2VhcmNoVGFiQ29udGVudFZp
ZXcpOworICAgIGlmICghdGFiQ29udGVudFZpZXcpCisgICAgICAgIHRhYkNvbnRlbnRWaWV3ID0g
bmV3IFdJLlNlYXJjaFRhYkNvbnRlbnRWaWV3OworCisgICAgdmFyIHNlYXJjaFF1ZXJ5ID0gV0ku
X3NlYXJjaFRvb2xiYXJJdGVtLnRleHQ7CisgICAgV0kuX3NlYXJjaFRvb2xiYXJJdGVtLnRleHQg
PSAiIjsKKworICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRl
bnRWaWV3LCB7CiAgICAgICAgIC8vIENsYXNzaWZ5IHRoaXMgYXMgYSBrZXlib2FyZCBzaG9ydGN1
dCwgYXMgdGhlIG9ubHkgb3RoZXIgd2F5IHRvIGdldCB0byBTZWFyY2ggVGFiIGlzIHZpYSBUYWJC
YXIgaXRzZWxmLgogICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmln
YXRpb25Jbml0aWF0b3IuS2V5Ym9hcmRTaG9ydGN1dCwKICAgICB9KTsKIAotICAgIFdJLl9zZWFy
Y2hUYWJDb250ZW50Vmlldy5mb2N1c1NlYXJjaEZpZWxkKCk7CisgICAgdGFiQ29udGVudFZpZXcu
cGVyZm9ybVNlYXJjaChzZWFyY2hRdWVyeSk7Cit9OworCitXSS5fZm9jdXNTZWFyY2hGaWVsZCA9
IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGlmIChXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFi
bGVOZXdUYWJCYXIudmFsdWUpCisgICAgICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRl
bnRWaWV3KFdJLl9zZWFyY2hUYWJDb250ZW50Vmlldyk7CisKKyAgICBpZiAoV0kudGFiQnJvd3Nl
ci5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0kuU2VhcmNoVGFiQ29udGVudFZp
ZXcpIHsKKyAgICAgICAgV0kudGFiQnJvd3Nlci5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3LmZvY3Vz
U2VhcmNoRmllbGQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXSS5fc2Vh
cmNoVG9vbGJhckl0ZW0pCisgICAgICAgIFdJLl9zZWFyY2hUb29sYmFySXRlbS5mb2N1cygpOwog
fTsKIAogV0kuX2ZvY3VzQ2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMTQ4Myw5ICsxNTE3
LDE2IEBAIFdJLl9kZWJ1Z2dlckRpZFBhdXNlID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgV0ku
c2hvd1NvdXJjZXNUYWIoe3Nob3dTY29wZUNoYWluU2lkZWJhcjogV0kuc2V0dGluZ3Muc2hvd1Nj
b3BlQ2hhaW5PblBhdXNlLnZhbHVlfSk7CiAKKyAgICBXSS5fZGFzaGJvYXJkQ29udGFpbmVyLnNo
b3dEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV0kuX2Rhc2hib2FyZHMuZGVidWdn
ZXIpOworCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmJyaW5nVG9Gcm9udCgpOwogfTsKIAor
V0kuX2RlYnVnZ2VyRGlkUmVzdW1lID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgV0kuX2Rhc2hi
b2FyZENvbnRhaW5lci5jbG9zZURhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXSS5f
ZGFzaGJvYXJkcy5kZWJ1Z2dlcik7Cit9OworCiBXSS5fZnJhbWVXYXNBZGRlZCA9IGZ1bmN0aW9u
KGV2ZW50KQogewogICAgIGlmICghV0kuX2ZyYW1lSWRlbnRpZmllclRvU2hvd1NvdXJjZUNvZGVX
aGVuQXZhaWxhYmxlKQpAQCAtMTUxMSw3ICsxNTUyLDcgQEAgV0kuX2ZyYW1lV2FzQWRkZWQgPSBm
dW5jdGlvbihldmVudCkKIAogV0kuX21haW5GcmFtZURpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50
KQogewotICAgIFdJLl91cGRhdGVEb3dubG9hZFRhYkJhckJ1dHRvbigpOworICAgIFdJLl91cGRh
dGVEb3dubG9hZFRvb2xiYXJCdXR0b24oKTsKIAogICAgIFdJLnVwZGF0ZVdpbmRvd1RpdGxlKCk7
CiB9OwpAQCAtMTUyNyw3ICsxNTY4LDcgQEAgV0kuX21haW5SZXNvdXJjZURpZENoYW5nZSA9IGZ1
bmN0aW9uKGV2ZW50KQogICAgICAgICBXSS5fcmVzdG9yZUNvb2tpZUZvck9wZW5UYWJzKFdJLlN0
YXRlUmVzdG9yYXRpb25UeXBlLk5hdmlnYXRpb24pOwogICAgIH0pOwogCi0gICAgV0kuX3VwZGF0
ZURvd25sb2FkVGFiQmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZURvd25sb2FkVG9vbGJhckJ1
dHRvbigpOwogCiAgICAgV0kudXBkYXRlV2luZG93VGl0bGUoKTsKIH07CkBAIC0xNTQ2LDggKzE1
ODcsNiBAQCBXSS5fcmVzdG9yZUNvb2tpZUZvck9wZW5UYWJzID0gZnVuY3Rpb24ocmVzdG9yYXRp
b25UeXBlKQogICAgICAgICB2YXIgdGFiQ29udGVudFZpZXcgPSB0YWJCYXJJdGVtLnJlcHJlc2Vu
dGVkT2JqZWN0OwogICAgICAgICBpZiAoISh0YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRh
YkNvbnRlbnRWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIXRhYkNv
bnRlbnRWaWV3LmNvbnN0cnVjdG9yLnNob3VsZFNhdmVUYWIoKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB0YWJDb250ZW50Vmlldy5yZXN0b3JlU3RhdGVGcm9tQ29va2llKHJlc3Rv
cmF0aW9uVHlwZSk7CiAgICAgfQogCkBAIC0xNTY5LDggKzE2MDgsNiBAQCBXSS5fc2F2ZUNvb2tp
ZUZvck9wZW5UYWJzID0gZnVuY3Rpb24oKQogICAgICAgICB2YXIgdGFiQ29udGVudFZpZXcgPSB0
YWJCYXJJdGVtLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICBpZiAoISh0YWJDb250ZW50Vmll
dyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnNob3VsZFNhdmVUYWIoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB0YWJDb250ZW50Vmlldy5zYXZlU3RhdGVU
b0Nvb2tpZSgpOwogICAgIH0KIH07CkBAIC0xNTk1LDYgKzE2MzIsNyBAQCBXSS5fd2luZG93Qmx1
cnJlZCA9IGZ1bmN0aW9uKGV2ZW50KQogCiBXSS5fd2luZG93UmVzaXplZCA9IGZ1bmN0aW9uKGV2
ZW50KQogeworICAgIFdJLnRvb2xiYXIudXBkYXRlTGF5b3V0KFdJLlZpZXcuTGF5b3V0UmVhc29u
LlJlc2l6ZSk7CiAgICAgV0kudGFiQmFyLnVwZGF0ZUxheW91dChXSS5WaWV3LkxheW91dFJlYXNv
bi5SZXNpemUpOwogICAgIFdJLl90YWJCcm93c2VyU2l6ZURpZENoYW5nZSgpOwogICAgIFdJLl91
cGRhdGVTaGVldFJlY3QoKTsKQEAgLTE2MzgsNiArMTY3NiwxMiBAQCBXSS5fd2luZG93S2V5VXAg
PSBmdW5jdGlvbihldmVudCkKICAgICBXSS5fdXBkYXRlTW9kaWZpZXJLZXlzKGV2ZW50KTsKIH07
CiAKK1dJLl9tb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBpZiAoV0kudG9vbGJh
ci5lbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpCisgICAgICAgIFdJLl90b29sYmFyTW91
c2VEb3duKGV2ZW50KTsKK307CisKIFdJLl9tb3VzZU1vdmVkID0gZnVuY3Rpb24oZXZlbnQpCiB7
CiAgICAgV0kuX3VwZGF0ZU1vZGlmaWVyS2V5cyhldmVudCk7CkBAIC0xNzIyLDE4ICsxNzY2LDE2
IEBAIFdJLl90b2dnbGVQcmV2aW91c0RvY2tDb25maWd1cmF0aW9uID0gZnVuY3Rpb24oZXZlbnQp
CiBXSS5fdXBkYXRlRG9ja05hdmlnYXRpb25JdGVtcyA9IGZ1bmN0aW9uKCkKIHsKICAgICBpZiAo
V0kuX2RvY2tpbmdBdmFpbGFibGUgfHwgV0kuZG9ja2VkKSB7Ci0gICAgICAgIFdJLl9jbG9zZVRh
YkJhckJ1dHRvbi5oaWRkZW4gPSAhV0kuZG9ja2VkOwotICAgICAgICBXSS5fdW5kb2NrVGFiQmFy
QnV0dG9uLmhpZGRlbiA9IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3Vy
YXRpb24uVW5kb2NrZWQ7Ci0gICAgICAgIFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0dG9uLmhpZGRl
biA9IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9t
OwotICAgICAgICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0Nv
bmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0IHx8IFdJLl9kb2NrQ29u
ZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdDsKKyAgICAgICAgV0kuX2Ns
b3NlVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSAhV0kuZG9ja2VkOworICAgICAgICBXSS5fdW5kb2Nr
VG9vbGJhckJ1dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tD
b25maWd1cmF0aW9uLlVuZG9ja2VkOworICAgICAgICBXSS5fZG9ja0JvdHRvbVRvb2xiYXJCdXR0
b24uaGlkZGVuID0gV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlv
bi5Cb3R0b207CisgICAgICAgIFdJLl9kb2NrVG9TaWRlVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSBX
SS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0IHx8IFdJ
Ll9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdDsKICAgICB9
IGVsc2UgewotICAgICAgICBXSS5fY2xvc2VUYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAg
ICAgICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwotICAgICAgICBXSS5f
ZG9ja0JvdHRvbVRhYkJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwotICAgICAgICBXSS5fZG9ja1Rv
U2lkZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOworICAgICAgICBXSS5fY2xvc2VUb29sYmFy
QnV0dG9uLmhpZGRlbiA9IHRydWU7CisgICAgICAgIFdJLl91bmRvY2tUb29sYmFyQnV0dG9uLmhp
ZGRlbiA9IHRydWU7CisgICAgICAgIFdJLl9kb2NrQm90dG9tVG9vbGJhckJ1dHRvbi5oaWRkZW4g
PSB0cnVlOworICAgICAgICBXSS5fZG9ja1RvU2lkZVRvb2xiYXJCdXR0b24uaGlkZGVuID0gdHJ1
ZTsKICAgICB9Ci0KLSAgICBXSS5fdXBkYXRlVGFiQmFyRGl2aWRlcnMoKTsKIH07CiAKIFdJLl90
YWJCcm93c2VyU2l6ZURpZENoYW5nZSA9IGZ1bmN0aW9uKCkKQEAgLTE3NjMsNiArMTgwNSw3IEBA
IFdJLl9zaWRlYmFyV2lkdGhEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKIFdJLl9zZXR1cFZp
ZXdIaWVyYXJjaHkgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHJvb3RWaWV3ID0gV0kuVmlldy5y
b290VmlldygpOworICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcoV0kudG9vbGJhcik7CiAgICAgcm9v
dFZpZXcuYWRkU3VidmlldyhXSS50YWJCYXIpOwogICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcoV0ku
bmF2aWdhdGlvblNpZGViYXIpOwogICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcoV0kudGFiQnJvd3Nl
cik7CkBAIC0xNzg4LDYgKzE4MzEsMjAgQEAgV0kuX3RhYkJyb3dzZXJTZWxlY3RlZFRhYkNvbnRl
bnRWaWV3RGlkQ2hhbmdlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgV0kuaGlkZVNwbGl0Q29uc29s
ZSgpOwogfTsKIAorV0kuX3Rvb2xiYXJNb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkKK3sKKyAg
ICBpZiAoZXZlbnQuY3RybEtleSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFdJLl9kb2Nr
Q29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQgfHwgV0kuX2RvY2tD
b25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0KQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoV0kuZG9ja2VkKQorICAgICAgICBXSS5fZG9ja2VkUmVzaXplck1vdXNl
RG93bihldmVudCk7CisgICAgZWxzZQorICAgICAgICBXSS5fbW92ZVdpbmRvd01vdXNlRG93bihl
dmVudCk7Cit9OworCiBXSS5fZG9ja2VkUmVzaXplck1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50
KQogewogICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtleSkKQEAgLTE3
OTcsNyArMTg1NCw4IEBAIFdJLl9kb2NrZWRSZXNpemVyTW91c2VEb3duID0gZnVuY3Rpb24oZXZl
bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE9ubHkgc3RhcnQgZHJhZ2dpbmcgaWYgdGhl
IHRhcmdldCBpcyBvbmUgb2YgdGhlIGVsZW1lbnRzIHRoYXQgd2UgZXhwZWN0LgotICAgIGlmIChl
dmVudC50YXJnZXQgIT09IFdJLl9kb2NrZWRSZXNpemVyRWxlbWVudCkKKyAgICBpZiAoZXZlbnQu
dGFyZ2V0LmlkICE9PSAiZG9ja2VkLXJlc2l6ZXIiICYmICFldmVudC50YXJnZXQuY2xhc3NMaXN0
LmNvbnRhaW5zKCJ0b29sYmFyIikgJiYKKyAgICAgICAgIWV2ZW50LnRhcmdldC5jbGFzc0xpc3Qu
Y29udGFpbnMoImZsZXhpYmxlLXNwYWNlIikgJiYgIWV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29u
dGFpbnMoIml0ZW0tc2VjdGlvbiIpKQogICAgICAgICByZXR1cm47CiAKICAgICBldmVudFtXSS5Q
b3BvdmVyLkV2ZW50UHJldmVudERpc21pc3NTeW1ib2xdID0gdHJ1ZTsKQEAgLTE4NjUsNiArMTky
Myw1NCBAQCBXSS5fZG9ja2VkUmVzaXplck1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQogICAg
IFdJLmVsZW1lbnREcmFnU3RhcnQocmVzaXplckVsZW1lbnQsIGRvY2tlZFJlc2l6ZXJEcmFnLCBk
b2NrZWRSZXNpemVyRHJhZ0VuZCwgZXZlbnQsIFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0ku
RG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tID8gInJvdy1yZXNpemUiIDogImNvbC1yZXNpemUiKTsK
IH07CiAKK1dJLl9tb3ZlV2luZG93TW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAg
Y29uc29sZS5hc3NlcnQoIVdJLmRvY2tlZCk7CisKKyAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAw
IHx8IGV2ZW50LmN0cmxLZXkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE9ubHkgc3RhcnQg
ZHJhZ2dpbmcgaWYgdGhlIHRhcmdldCBpcyBvbmUgb2YgdGhlIGVsZW1lbnRzIHRoYXQgd2UgZXhw
ZWN0LgorICAgIGlmICghZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygidG9vbGJhciIp
ICYmICFldmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGV4aWJsZS1zcGFjZSIpICYm
CisgICAgICAgICFldmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJpdGVtLXNlY3Rpb24i
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXZlbnRbV0kuUG9wb3Zlci5FdmVudFByZXZlbnRE
aXNtaXNzU3ltYm9sXSA9IHRydWU7CisKKyAgICBpZiAoV0kuUGxhdGZvcm0ubmFtZSA9PT0gIm1h
YyIpIHsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnN0YXJ0V2luZG93RHJhZygpOwor
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgdmFyIGxhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKKyAgICB2YXIgbGFzdFNjcmVl
blkgPSBldmVudC5zY3JlZW5ZOworCisgICAgZnVuY3Rpb24gdG9vbGJhckRyYWcoZXZlbnQpCisg
ICAgeworICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHZhciB4ID0gZXZlbnQuc2NyZWVuWCAtIGxhc3RTY3JlZW5YOworICAgICAg
ICB2YXIgeSA9IGV2ZW50LnNjcmVlblkgLSBsYXN0U2NyZWVuWTsKKworICAgICAgICBJbnNwZWN0
b3JGcm9udGVuZEhvc3QubW92ZVdpbmRvd0J5KHgsIHkpOworCisgICAgICAgIGxhc3RTY3JlZW5Y
ID0gZXZlbnQuc2NyZWVuWDsKKyAgICAgICAgbGFzdFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRvb2xiYXJEcmFnRW5kKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBXSS5lbGVtZW50RHJhZ0VuZChldmVudCk7CisgICAgfQorCisgICAgV0kuZWxlbWVudERyYWdT
dGFydChldmVudC50YXJnZXQsIHRvb2xiYXJEcmFnLCB0b29sYmFyRHJhZ0VuZCwgZXZlbnQsICJk
ZWZhdWx0Iik7Cit9OworCiBXSS5fZG9tU3RvcmFnZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2
ZW50KQogewogICAgIFdJLnNob3dTdG9yYWdlVGFiKHtpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93
c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuSW5zcGVjdH0pOwpAQCAtMTg5Myw3ICsxOTk5LDcg
QEAgV0kuX2RvbU5vZGVXYXNJbnNwZWN0ZWQgPSBmdW5jdGlvbihldmVudCkKIAogV0kuX2luc3Bl
Y3RNb2RlU3RhdGVDaGFuZ2VkID0gZnVuY3Rpb24oZXZlbnQpCiB7Ci0gICAgV0kuX2luc3BlY3RN
b2RlVGFiQmFyQnV0dG9uLmFjdGl2YXRlZCA9IFdJLmRvbU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFi
bGVkOworICAgIFdJLl9pbnNwZWN0TW9kZVRvb2xiYXJCdXR0b24uYWN0aXZhdGVkID0gV0kuZG9t
TWFuYWdlci5pbnNwZWN0TW9kZUVuYWJsZWQ7CiB9OwogCiBXSS5fdG9nZ2xlSW5zcGVjdE1vZGUg
PSBmdW5jdGlvbihldmVudCkKQEAgLTE5MDEsNyArMjAwNyw3IEBAIFdJLl90b2dnbGVJbnNwZWN0
TW9kZSA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIFdJLmRvbU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFi
bGVkID0gIVdJLmRvbU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFibGVkOwogfTsKIAotV0kuX2hhbmRs
ZURldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQorV0ku
X2hhbmRsZURldmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihldmVu
dCkKIHsKICAgICBpZiAoV0kuX2RldmljZVNldHRpbmdzUG9wb3ZlcikgewogICAgICAgICBXSS5f
ZGV2aWNlU2V0dGluZ3NQb3BvdmVyLmRpc21pc3MoKTsKQEAgLTE5MTIsNyArMjAxOCw3IEBAIFdJ
Ll9oYW5kbGVEZXZpY2VTZXR0aW5nc1RhYkJhckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihldmVu
dCkKICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CiAKICAgICBmdW5j
dGlvbiB1cGRhdGVBY3RpdmF0ZWRTdGF0ZSgpIHsKLSAgICAgICAgV0kuX2RldmljZVNldHRpbmdz
VGFiQmFyQnV0dG9uLmFjdGl2YXRlZCA9IFdJLl9vdmVycmlkZW5EZXZpY2VVc2VyQWdlbnQgfHwg
V0kuX292ZXJyaWRlbkRldmljZVNldHRpbmdzLnNpemUgPiAwOworICAgICAgICBXSS5fZGV2aWNl
U2V0dGluZ3NUb29sYmFyQnV0dG9uLmFjdGl2YXRlZCA9IFdJLl9vdmVycmlkZW5EZXZpY2VVc2Vy
QWdlbnQgfHwgV0kuX292ZXJyaWRlbkRldmljZVNldHRpbmdzLnNpemUgPiAwOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIGFwcGx5T3ZlcnJpZGRlblVzZXJBZ2VudCh2YWx1ZSwgZm9yY2UpIHsKQEAg
LTE5OTAsMTAgKzIwOTYsMTAgQEAgV0kuX2hhbmRsZURldmljZVNldHRpbmdzVGFiQmFyQnV0dG9u
Q2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIH0KIAogICAgIGZ1bmN0aW9uIGNhbGN1bGF0
ZVRhcmdldEZyYW1lKCkgewotICAgICAgICByZXR1cm4gV0kuUmVjdC5yZWN0RnJvbUNsaWVudFJl
Y3QoV0kuX2RldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkpLnBhZCgyKTsKKyAgICAgICAgcmV0dXJuIFdJLlJlY3QucmVjdEZyb21DbGllbnRS
ZWN0KFdJLl9kZXZpY2VTZXR0aW5nc1Rvb2xiYXJCdXR0b24uZWxlbWVudC5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKSk7CiAgICAgfQogCi0gICAgY29uc3QgcHJlZmVycmVkRWRnZXMgPSBbV0kuUmVj
dEVkZ2UuTUFYX1ksIFdJLlJlY3RFZGdlLk1BWF9YXTsKKyAgICBjb25zdCBwcmVmZXJyZWRFZGdl
cyA9IFtXSS5SZWN0RWRnZS5NQVhfWSwgV0kuUmVjdEVkZ2UuTUlOX1gsIFdJLlJlY3RFZGdlLk1B
WF9YXTsKIAogICAgIFdJLl9kZXZpY2VTZXR0aW5nc1BvcG92ZXIgPSBuZXcgV0kuUG9wb3ZlcihX
SSk7CiAgICAgV0kuX2RldmljZVNldHRpbmdzUG9wb3Zlci53aW5kb3dSZXNpemVIYW5kbGVyID0g
ZnVuY3Rpb24oZXZlbnQpIHsKQEAgLTIyMDAsNyArMjMwNiw3IEBAIFdJLl9yZWxvYWRQYWdlRnJv
bU9yaWdpbiA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIHRhcmdldC5QYWdlQWdlbnQucmVsb2FkLmlu
dm9rZSh7aWdub3JlQ2FjaGU6IHRydWV9KTsKIH07CiAKLVdJLl9yZWxvYWRUYWJCYXJCdXR0b25D
bGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCitXSS5fcmVsb2FkVG9vbGJhckJ1dHRvbkNsaWNrZWQg
PSBmdW5jdGlvbihldmVudCkKIHsKICAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmluc3Bl
Y3Rpb25MZXZlbCA+IDEpIHsKICAgICAgICAgV0kuX3JlbG9hZEluc3BlY3RlZEluc3BlY3Rvcigp
OwpAQCAtMjIxMiwxMDYgKzIzMTgsMjkgQEAgV0kuX3JlbG9hZFRhYkJhckJ1dHRvbkNsaWNrZWQg
PSBmdW5jdGlvbihldmVudCkKICAgICB0YXJnZXQuUGFnZUFnZW50LnJlbG9hZC5pbnZva2Uoe2ln
bm9yZUNhY2hlOiBXSS5tb2RpZmllcktleXMuc2hpZnRLZXl9KTsKIH07CiAKLVdJLl91cGRhdGVS
ZWxvYWRUYWJCYXJCdXR0b24gPSBmdW5jdGlvbigpCitXSS5fdXBkYXRlUmVsb2FkVG9vbGJhckJ1
dHRvbiA9IGZ1bmN0aW9uKCkKIHsKLSAgICBpZiAoIVdJLl9yZWxvYWRUYWJCYXJCdXR0b24pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFdJLl9yZWxvYWRUYWJCYXJCdXR0b24uaGlkZGVuID0gIUlu
c3BlY3RvckJhY2tlbmQuaGFzRG9tYWluKCJQYWdlIik7Ci0gICAgV0kuX3VwZGF0ZVRhYkJhckRp
dmlkZXJzKCk7CisgICAgV0kuX3JlbG9hZFRvb2xiYXJCdXR0b24uaGlkZGVuID0gIUluc3BlY3Rv
ckJhY2tlbmQuaGFzRG9tYWluKCJQYWdlIik7CiB9OwogCi1XSS5fdXBkYXRlRG93bmxvYWRUYWJC
YXJCdXR0b24gPSBmdW5jdGlvbigpCitXSS5fdXBkYXRlRG93bmxvYWRUb29sYmFyQnV0dG9uID0g
ZnVuY3Rpb24oKQogewotICAgIGlmICghV0kuX2Rvd25sb2FkVGFiQmFyQnV0dG9uKQotICAgICAg
ICByZXR1cm47Ci0KICAgICBpZiAoIUluc3BlY3RvckJhY2tlbmQuaGFzRG9tYWluKCJQYWdlIikp
IHsKLSAgICAgICAgV0kuX2Rvd25sb2FkVGFiQmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7Ci0gICAg
ICAgIFdJLl91cGRhdGVUYWJCYXJEaXZpZGVycygpOworICAgICAgICBXSS5fZG93bmxvYWRUb29s
YmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAoV0kuX2Rvd25sb2FkaW5nUGFnZSkgewotICAgICAgICBXSS5fZG93bmxvYWRUYWJCYXJCdXR0
b24uZW5hYmxlZCA9IGZhbHNlOworICAgICAgICBXSS5fZG93bmxvYWRUb29sYmFyQnV0dG9uLmVu
YWJsZWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFdJLl9kb3dubG9h
ZFRhYkJhckJ1dHRvbi5lbmFibGVkID0gV0kuY2FuQXJjaGl2ZU1haW5GcmFtZSgpOwotfTsKLQot
V0kuX3VwZGF0ZUluc3BlY3RNb2RlVGFiQmFyQnV0dG9uID0gZnVuY3Rpb24oKQotewotICAgIFdJ
Ll9pbnNwZWN0TW9kZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSAhSW5zcGVjdG9yQmFja2VuZC5oYXNE
b21haW4oIkRPTSIpOwotICAgIFdJLl91cGRhdGVUYWJCYXJEaXZpZGVycygpOwotfTsKLQotV0ku
X3VwZGF0ZVRhYkJhckRpdmlkZXJzID0gZnVuY3Rpb24oKQotewotICAgIGxldCBjbG9zZUhpZGRl
biA9IFdJLl9jbG9zZVRhYkJhckJ1dHRvbi5oaWRkZW47Ci0gICAgbGV0IGRvY2tUb1NpZGVIaWRk
ZW4gPSBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5oaWRkZW47Ci0gICAgbGV0IGRvY2tCb3R0
b21IaWRkZW4gPSBXSS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRvbi5oaWRkZW47Ci0gICAgbGV0IHVu
ZG9ja0hpZGRlbiA9IFdJLl91bmRvY2tUYWJCYXJCdXR0b24uaGlkZGVuOwotCi0gICAgbGV0IGlu
c3BlY3RNb2RlSGlkZGVuID0gV0kuX2luc3BlY3RNb2RlVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAg
ICBsZXQgZGV2aWNlU2V0dGluZ3NIaWRkZW4gPSBXSS5fZGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0
b24gJiYgV0kuX2RldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgcmVs
b2FkSGlkZGVuID0gV0kuX3JlbG9hZFRhYkJhckJ1dHRvbiAmJiBXSS5fcmVsb2FkVGFiQmFyQnV0
dG9uLmhpZGRlbjsKLSAgICBsZXQgZG93bmxvYWRIaWRkZW4gPSBXSS5fZG93bmxvYWRUYWJCYXJC
dXR0b24gJiYgV0kuX2Rvd25sb2FkVGFiQmFyQnV0dG9uLmhpZGRlbjsKLQotICAgIGxldCB3YXJu
aW5nc0hpZGRlbiA9IFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24uaGlkZGVuOwotICAg
IGxldCBlcnJvcnNIaWRkZW4gPSBXSS5fY29uc29sZUVycm9yc1RhYkJhckJ1dHRvbi5oaWRkZW47
Ci0KLSAgICAvLyBIaWRlIHRoZSBkaXZpZGVyIGlmIGV2ZXJ5dGhpbmcgdG8gdGhlIGxlZnQgaXMg
aGlkZGVuIE9SIGlmIGV2ZXJ5dGhpbmcgdG8gdGhlIHJpZ2h0IGlzIGhpZGRlbi4KLSAgICBXSS5f
ZG9ja0RpdmlkZXJUYWJCYXJOYXZpZ2F0aW9uSXRlbS5oaWRkZW4gPSAoY2xvc2VIaWRkZW4gJiYg
ZG9ja1RvU2lkZUhpZGRlbiAmJiBkb2NrQm90dG9tSGlkZGVuICYmIHVuZG9ja0hpZGRlbikgfHwg
KGluc3BlY3RNb2RlSGlkZGVuICYmIGRldmljZVNldHRpbmdzSGlkZGVuICYmIHJlbG9hZEhpZGRl
biAmJiBkb3dubG9hZEhpZGRlbiAmJiB3YXJuaW5nc0hpZGRlbiAmJiBlcnJvcnNIaWRkZW4pOwot
ICAgIFdJLl9jb25zb2xlRGl2aWRlck5hdmlnYXRpb25JdGVtLmhpZGRlbiA9IChjbG9zZUhpZGRl
biAmJiBkb2NrVG9TaWRlSGlkZGVuICYmIGRvY2tCb3R0b21IaWRkZW4gJiYgdW5kb2NrSGlkZGVu
ICYmIGluc3BlY3RNb2RlSGlkZGVuICYmIGRldmljZVNldHRpbmdzSGlkZGVuICYmIHJlbG9hZEhp
ZGRlbiAmJiBkb3dubG9hZEhpZGRlbikgfHwgKHdhcm5pbmdzSGlkZGVuICYmIGVycm9yc0hpZGRl
bik7Ci0KLSAgICBXSS50YWJCYXIubmVlZHNMYXlvdXQoKTsKKyAgICBXSS5fZG93bmxvYWRUb29s
YmFyQnV0dG9uLmVuYWJsZWQgPSBXSS5jYW5BcmNoaXZlTWFpbkZyYW1lKCk7CiB9OwogCi1XSS5f
dXBkYXRlQ29uc29sZVRhYkJhckJ1dHRvbnMgPSBmdW5jdGlvbigpCitXSS5fdXBkYXRlSW5zcGVj
dE1vZGVUb29sYmFyQnV0dG9uID0gZnVuY3Rpb24oKQogewotICAgIGZ1bmN0aW9uIHB1bHNlKGVs
ZW1lbnQpIHsKLSAgICAgICAgLy8gV2UgbmVlZCB0byBmb3JjZSBhIHN0eWxlIGludmFsaWRhdGlv
biBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBhbHJlYWR5Ci0gICAgICAgIC8vIHdlcmUgYW5pbWF0aW5n
IHRoaXMgaXRlbSBhZnRlciB3ZSd2ZSByZW1vdmVkIHRoZSBwdWxzaW5nIENTUyBjbGFzcy4KLSAg
ICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJwdWxzaW5nIikpIHsKLSAgICAg
ICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgicHVsc2luZyIpOwotICAgICAgICAgICAg
ZWxlbWVudC5yZWNhbGN1bGF0ZVN0eWxlcygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLCAoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJwdWxzaW5nIik7Ci0gICAgICAg
ICAgICB9LCB7b25jZTogdHJ1ZX0pOwotICAgICAgICB9Ci0KLSAgICAgICAgZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJwdWxzaW5nIik7Ci0gICAgfQotICAgIGxldCB3YXJuaW5nQ291bnQgPSBXSS5j
b25zb2xlTWFuYWdlci53YXJuaW5nQ291bnQ7Ci0gICAgaWYgKHdhcm5pbmdDb3VudCkgewotICAg
ICAgICBsZXQgd2FybmluZ0Zvcm1hdCA9ICh3YXJuaW5nQ291bnQgPT09IDEpID8gV0kuVUlTdHJp
bmcoIkNsaWNrIHRvIHNob3cgJWQgd2FybmluZyBpbiB0aGUgQ29uc29sZSIpIDogV0kuVUlTdHJp
bmcoIkNsaWNrIHRvIHNob3cgJWQgd2FybmluZ3MgaW4gdGhlIENvbnNvbGUiKTsKLSAgICAgICAg
V0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi50b29sdGlwID0gd2FybmluZ0Zvcm1hdC5m
b3JtYXQod2FybmluZ0NvdW50KTsKLSAgICAgICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1
dHRvbi5oaWRkZW4gPSBmYWxzZTsKLQotICAgICAgICBpZiAod2FybmluZ0NvdW50ICE9PSBXSS5f
Y29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9uLl9fbGFzdFdhcm5pbmdDb3VudCkKLSAgICAgICAg
ICAgIHB1bHNlKFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24uZWxlbWVudCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5oaWRkZW4g
PSB0cnVlOwotICAgIH0KLQotICAgIGxldCBlcnJvckNvdW50ID0gV0kuY29uc29sZU1hbmFnZXIu
ZXJyb3JDb3VudDsKLSAgICBpZiAoZXJyb3JDb3VudCkgewotICAgICAgICBsZXQgZXJyb3JGb3Jt
YXQgPSAoZXJyb3JDb3VudCA9PT0gMSkgPyBXSS5VSVN0cmluZygiQ2xpY2sgdG8gc2hvdyAlZCBl
cnJvciBpbiB0aGUgQ29uc29sZSIpIDogV0kuVUlTdHJpbmcoIkNsaWNrIHRvIHNob3cgJWQgZXJy
b3JzIGluIHRoZSBDb25zb2xlIik7Ci0gICAgICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0
dG9uLnRvb2x0aXAgPSBlcnJvckZvcm1hdC5mb3JtYXQoZXJyb3JDb3VudCk7Ci0gICAgICAgIFdJ
Ll9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLmhpZGRlbiA9IGZhbHNlOwotCi0gICAgICAgIGlm
IChlcnJvckNvdW50ICE9PSBXSS5fY29uc29sZUVycm9yc1RhYkJhckJ1dHRvbi5fX2xhc3RFcnJv
ckNvdW50KQotICAgICAgICAgICAgcHVsc2UoV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0b24u
ZWxlbWVudCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJC
dXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBXSS5fdXBkYXRlVGFiQmFyRGl2aWRl
cnMoKTsKLQotICAgIFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24uX19sYXN0V2Fybmlu
Z0NvdW50ID0gd2FybmluZ0NvdW50OwotICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9u
Ll9fbGFzdEVycm9yQ291bnQgPSBlcnJvckNvdW50OworICAgIFdJLl9pbnNwZWN0TW9kZVRvb2xi
YXJCdXR0b24uaGlkZGVuID0gIUluc3BlY3RvckJhY2tlbmQuaGFzRG9tYWluKCJET00iKTsKIH07
CiAKIFdJLl9zaG93Q29uc29sZVRhYiA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMjY2OCw5ICsyNjk3
LDE0IEBAIFdJLnNldExheW91dERpcmVjdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKQogICAgIEluc3Bl
Y3RvckZyb250ZW5kSG9zdC5yZW9wZW4oKTsKIH07CiAKK1dJLl9zaG93TmV3VGFiRnJvbVNob3J0
Y3V0ID0gZnVuY3Rpb24oKQoreworICAgIFdJLnNob3dOZXdUYWJUYWIoe2luaXRpYXRvckhpbnQ6
IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5LZXlib2FyZFNob3J0Y3V0fSk7
Cit9CisKIFdJLl9zaG93VGFiQXRJbmRleEZyb21TaG9ydGN1dCA9IGZ1bmN0aW9uKGkpCiB7Ci0g
ICAgaWYgKGkgPD0gV0kudGFiQmFyLnRhYkNvdW50KSB7CisgICAgaWYgKGkgPD0gV0kudGFiQmFy
LnRhYkJhckl0ZW1zLmxlbmd0aCkgewogICAgICAgICBXSS50YWJCYXIuc2VsZWN0VGFiQmFySXRl
bShpIC0gMSwgewogICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJO
YXZpZ2F0aW9uSW5pdGlhdG9yLktleWJvYXJkU2hvcnRjdXQsCiAgICAgICAgIH0pOwpAQCAtMzEy
MCwxMiArMzE1NCwxMiBAQCBXSS5yZXZlcnRET01DaGFuZ2VzID0gZnVuY3Rpb24oZG9tQ2hhbmdl
cykKIFdJLmFyY2hpdmVNYWluRnJhbWUgPSBmdW5jdGlvbigpCiB7CiAgICAgV0kuX2Rvd25sb2Fk
aW5nUGFnZSA9IHRydWU7Ci0gICAgV0kuX3VwZGF0ZURvd25sb2FkVGFiQmFyQnV0dG9uKCk7Cisg
ICAgV0kuX3VwZGF0ZURvd25sb2FkVG9vbGJhckJ1dHRvbigpOwogCiAgICAgbGV0IHRhcmdldCA9
IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOwogICAgIHRhcmdldC5QYWdlQWdlbnQuYXJjaGl2ZSgo
ZXJyb3IsIGRhdGEpID0+IHsKICAgICAgICAgV0kuX2Rvd25sb2FkaW5nUGFnZSA9IGZhbHNlOwot
ICAgICAgICBXSS5fdXBkYXRlRG93bmxvYWRUYWJCYXJCdXR0b24oKTsKKyAgICAgICAgV0kuX3Vw
ZGF0ZURvd25sb2FkVG9vbGJhckJ1dHRvbigpOwogCiAgICAgICAgIGlmIChlcnJvcikKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvU2V0dGluZy5qcwppbmRleCAxYWY4N2E4M2NlOGU2NTkwY2YyOWZhY2RjODMxNzJk
YTUzNzE4NmI5Li5kNGMxNTRkOTczOWY4Y2QyZDdlOGUwZjRlNTFlYjhkZDhjZmI2OWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5n
LmpzCkBAIC0yMTcsNiArMjE3LDcgQEAgV0kuc2V0dGluZ3MgPSB7CiAKICAgICAvLyBFeHBlcmlt
ZW50YWwKICAgICBleHBlcmltZW50YWxFbmFibGVQcmV2aWV3RmVhdHVyZXM6IG5ldyBXSS5TZXR0
aW5nKCJleHBlcmltZW50YWwtZW5hYmxlLXByZXZpZXctZmVhdHVyZXMiLCB0cnVlKSwKKyAgICBl
eHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXI6IG5ldyBXSS5TZXR0aW5nKCJleHBlcmltZW50YWwt
ZW5hYmxlLW5ldy10YWItYmFyIiwgZmFsc2UpLAogICAgIGV4cGVyaW1lbnRhbEVuYWJsZVN0eWxl
c0p1bXBUb0VmZmVjdGl2ZTogbmV3IFdJLlNldHRpbmcoImV4cGVyaW1lbnRhbC1zdHlsZXMtanVt
cC10by1lZmZlY3RpdmUiLCBmYWxzZSksCiAKICAgICAvLyBQcm90b2NvbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29uc29sZU1h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9Db25zb2xlTWFuYWdlci5qcwppbmRleCA4MmZiYmYxNTcwYzQ5OWZhM2EyMTEzMjJlYjU3ZTUz
Y2VmNmJhNWQ2Li5kOTBlOWFhZjM0NDA0MWZjYjI5NGM2NzBmZDYzODZlMGVlNzFjMmQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9D
b25zb2xlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9Db25zb2xlTWFuYWdlci5qcwpAQCAtMzAsMTEgKzMwLDggQEAgV0kuQ29u
c29sZU1hbmFnZXIgPSBjbGFzcyBDb25zb2xlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
IHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICB0aGlzLl93YXJuaW5nQ291bnQgPSAwOwot
ICAgICAgICB0aGlzLl9lcnJvckNvdW50ID0gMDsKICAgICAgICAgdGhpcy5faXNzdWVzID0gW107
CiAKLSAgICAgICAgdGhpcy5fbGFzdE1lc3NhZ2VMZXZlbCA9IG51bGw7CiAgICAgICAgIHRoaXMu
X2NsZWFyTWVzc2FnZXNSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5faXNOZXdQYWdl
T3JSZWxvYWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fcmVtb3RlT2JqZWN0c1RvUmVsZWFzZSA9
IG51bGw7CkBAIC02NSw4ICs2Miw2IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29s
ZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IHdh
cm5pbmdDb3VudCgpIHsgcmV0dXJuIHRoaXMuX3dhcm5pbmdDb3VudDsgfQotICAgIGdldCBlcnJv
ckNvdW50KCkgeyByZXR1cm4gdGhpcy5fZXJyb3JDb3VudDsgfQogICAgIGdldCBjdXN0b21Mb2dn
aW5nQ2hhbm5lbHMoKSB7IHJldHVybiB0aGlzLl9jdXN0b21Mb2dnaW5nQ2hhbm5lbHM7IH0KICAg
ICBnZXQgbG9nQ2hhbm5lbFNvdXJjZXMoKSB7IHJldHVybiB0aGlzLl9sb2dnaW5nQ2hhbm5lbFNv
dXJjZXM7IH0KIApAQCAtMTAxLDExICs5Niw5IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3Mg
Q29uc29sZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBsZXQgbWVzc2FnZSA9
IG5ldyBXSS5Db25zb2xlTWVzc2FnZSh0YXJnZXQsIHNvdXJjZSwgbGV2ZWwsIHRleHQsIHR5cGUs
IHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwg
bnVsbCk7CiAKLSAgICAgICAgdGhpcy5faW5jcmVtZW50TWVzc2FnZUxldmVsQ291bnQobWVzc2Fn
ZS5sZXZlbCwgbWVzc2FnZS5yZXBlYXRDb3VudCk7Ci0KICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCB7bWVz
c2FnZX0pOwogCi0gICAgICAgIGlmIChtZXNzYWdlLmxldmVsID09PSBXSS5Db25zb2xlTWVzc2Fn
ZS5NZXNzYWdlTGV2ZWwuV2FybmluZyB8fCBtZXNzYWdlLmxldmVsID09PSBXSS5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IpIHsKKyAgICAgICAgaWYgKG1lc3NhZ2UubGV2ZWwgPT09
ICJ3YXJuaW5nIiB8fCBtZXNzYWdlLmxldmVsID09PSAiZXJyb3IiKSB7CiAgICAgICAgICAgICBs
ZXQgaXNzdWUgPSBuZXcgV0kuSXNzdWVNZXNzYWdlKG1lc3NhZ2UpOwogICAgICAgICAgICAgdGhp
cy5faXNzdWVzLnB1c2goaXNzdWUpOwogCkBAIC0xMjcsMTIgKzEyMCw4IEBAIFdJLkNvbnNvbGVN
YW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
ICAgIC8vIEZyb250ZW5kIHJlcXVlc3RlZCAiY2xlYXIgY29uc29sZSIgYW5kIEJhY2tlbmQgc3Vj
Y2Vzc2Z1bGx5IGNvbXBsZXRlZCB0aGUgcmVxdWVzdC4KICAgICAgICAgICAgIHRoaXMuX2NsZWFy
TWVzc2FnZXNSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAgICAgICAgICAgdGhpcy5fd2FybmluZ0Nv
dW50ID0gMDsKLSAgICAgICAgICAgIHRoaXMuX2Vycm9yQ291bnQgPSAwOwogICAgICAgICAgICAg
dGhpcy5faXNzdWVzID0gW107CiAKLSAgICAgICAgICAgIHRoaXMuX2xhc3RNZXNzYWdlTGV2ZWwg
PSBudWxsOwotCiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5D
b25zb2xlTWFuYWdlci5FdmVudC5DbGVhcmVkKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIFJlY2VpdmVkIGFuIHVucmVxdWVzdGVkIGNsZWFyIGNvbnNvbGUgZXZlbnQuCkBAIC0x
NDUsOCArMTM0LDYgQEAgV0kuQ29uc29sZU1hbmFnZXIgPSBjbGFzcyBDb25zb2xlTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZChjb3VudCkK
ICAgICB7Ci0gICAgICAgIHRoaXMuX2luY3JlbWVudE1lc3NhZ2VMZXZlbENvdW50KHRoaXMuX2xh
c3RNZXNzYWdlTGV2ZWwsIDEpOwotCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBk
YXRlZCwge2NvdW50fSk7CiAgICAgfQogCkBAIC0xODIsMjAgKzE2OSw2IEBAIFdJLkNvbnNvbGVN
YW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF9pbmNyZW1lbnRNZXNzYWdlTGV2ZWxDb3VudChsZXZlbCwgY291bnQp
Ci0gICAgewotICAgICAgICBzd2l0Y2ggKGxldmVsKSB7Ci0gICAgICAgIGNhc2UgV0kuQ29uc29s
ZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmc6Ci0gICAgICAgICAgICB0aGlzLl93YXJuaW5n
Q291bnQgKz0gY291bnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXSS5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3I6Ci0gICAgICAgICAgICB0aGlzLl9lcnJvckNv
dW50ICs9IGNvdW50OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICB0
aGlzLl9sYXN0TWVzc2FnZUxldmVsID0gbGV2ZWw7Ci0gICAgfQotCiAgICAgX2RlbGF5ZWRNZXNz
YWdlc0NsZWFyZWQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2lzTmV3UGFnZU9yUmVsb2Fk
KSB7CkBAIC0yMDUsMTIgKzE3OCw4IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29s
ZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICB0aGlzLl93YXJuaW5nQ291bnQgPSAwOwotICAgICAgICB0aGlzLl9l
cnJvckNvdW50ID0gMDsKICAgICAgICAgdGhpcy5faXNzdWVzID0gW107CiAKLSAgICAgICAgdGhp
cy5fbGFzdE1lc3NhZ2VMZXZlbCA9IG51bGw7Ci0KICAgICAgICAgLy8gQSBjb25zb2xlLmNsZWFy
KCkgb3IgY29tbWFuZCBsaW5lIGNsZWFyKCkgaGFwcGVuZWQuCiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVn
L0Jvb3RzdHJhcC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVn
L0Jvb3RzdHJhcC5qcwppbmRleCA1MDUzYTgyNzY5ZGNiYjFhZGIwNjQwZGQ3NWZiMTljOGM5N2Qz
MGQ4Li42Mzc2ZTM1MTNjODI5ODc4ZDlmOWU0NzgwNzY2MmVkYTI4YTk3ZmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Zy9Cb290c3RyYXAuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvQm9vdHN0cmFw
LmpzCkBAIC01Niw3ICs1Niw3IEBAIFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMgPSBmdW5jdGlv
bigpIHsKICAgICBjb25zdCBEdW1wTWVzc2FnZXNTdGF0ZSA9IHtPZmY6ICJvZmYiLCBGaWx0ZXJp
bmc6ICJmaWx0ZXJpbmciLCBFdmVyeXRoaW5nOiAiZXZlcnl0aGluZyJ9OwogICAgIGNvbnN0IGR1
bXBNZXNzYWdlc1Rvb2xUaXAgPSBXSS51bmxvY2FsaXplZFN0cmluZygiRW5hYmxlIGR1bXAgaW5z
cGVjdG9yIG1lc3NhZ2VzIHRvIGNvbnNvbGUuXG5TaGlmdC1jbGljayB0byBkdW1wIGFsbCBpbnNw
ZWN0b3IgbWVzc2FnZXMgd2l0aCBubyBmaWx0ZXJpbmcuIik7CiAgICAgY29uc3QgZHVtcE1lc3Nh
Z2VzQWN0aXZhdGVkVG9vbFRpcCA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCJEaXNhYmxlIGR1bXAg
aW5zcGVjdG9yIG1lc3NhZ2VzIHRvIGNvbnNvbGUiKTsKLSAgICBsZXQgZHVtcE1lc3NhZ2VzVGFi
QmFyTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgi
ZHVtcC1tZXNzYWdlcyIsIGR1bXBNZXNzYWdlc1Rvb2xUaXAsIGR1bXBNZXNzYWdlc0FjdGl2YXRl
ZFRvb2xUaXAsICJJbWFnZXMvQ29uc29sZS5zdmciKTsKKyAgICBsZXQgZHVtcE1lc3NhZ2VzVG9v
bGJhckl0ZW0gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbSgiZHVtcC1tZXNzYWdl
cyIsIGR1bXBNZXNzYWdlc1Rvb2xUaXAsIGR1bXBNZXNzYWdlc0FjdGl2YXRlZFRvb2xUaXAsICJJ
bWFnZXMvQ29uc29sZS5zdmciKTsKIAogICAgIGZ1bmN0aW9uIGR1bXBNZXNzYWdlc0N1cnJlbnRT
dGF0ZSgpIHsKICAgICAgICAgaWYgKCFJbnNwZWN0b3JCYWNrZW5kLmR1bXBJbnNwZWN0b3JQcm90
b2NvbE1lc3NhZ2VzKQpAQCAtNzIsMjYgKzcyLDI3IEBAIFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlv
bnMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgY2FzZSBEdW1wTWVzc2FnZXNTdGF0ZS5PZmY6CiAg
ICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2Vz
ID0gZmFsc2U7CiAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmZpbHRlck11bHRpcGxleGlu
Z0JhY2tlbmRJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gZmFsc2U7Ci0gICAgICAgICAgICBk
dW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGR1bXBNZXNzYWdlc1RhYkJhck5hdmlnYXRpb25JdGVtLmVsZW1lbnQuZmlyc3RDaGls
ZC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiY29sb3IiKTsKKyAgICAgICAgICAgIGR1bXBNZXNzYWdl
c1Rvb2xiYXJJdGVtLmFjdGl2YXRlZCA9IGZhbHNlOworICAgICAgICAgICAgZHVtcE1lc3NhZ2Vz
VG9vbGJhckl0ZW0uZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiY29sb3IiKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIER1bXBNZXNzYWdlc1N0YXRlLkZpbHRlcmluZzoK
ICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2Fn
ZXMgPSB0cnVlOwogICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5maWx0ZXJNdWx0aXBsZXhp
bmdCYWNrZW5kSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IHRydWU7Ci0gICAgICAgICAgICBk
dW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSB0cnVlOwotICAgICAg
ICAgICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0uZWxlbWVudC5maXJzdENoaWxk
LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJjb2xvciIpOworICAgICAgICAgICAgZHVtcE1lc3NhZ2Vz
VG9vbGJhckl0ZW0uYWN0aXZhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGR1bXBNZXNzYWdlc1Rv
b2xiYXJJdGVtLmVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoImNvbG9yIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBEdW1wTWVzc2FnZXNTdGF0ZS5FdmVyeXRoaW5nOgog
ICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdl
cyA9IHRydWU7CiAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmZpbHRlck11bHRpcGxleGlu
Z0JhY2tlbmRJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gZmFsc2U7Ci0gICAgICAgICAgICBk
dW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSB0cnVlOwotICAgICAg
ICAgICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0uZWxlbWVudC5maXJzdENoaWxk
LnN0eWxlLmNvbG9yID0gInJnYigxNjQsIDQxLCAxNTQpIjsKKyAgICAgICAgICAgIGR1bXBNZXNz
YWdlc1Rvb2xiYXJJdGVtLmFjdGl2YXRlZCA9IHRydWU7CisgICAgICAgICAgICBkdW1wTWVzc2Fn
ZXNUb29sYmFySXRlbS5lbGVtZW50LnN0eWxlLmNvbG9yID0gInJnYigxNjQsIDQxLCAxNTQpIjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlnbm9yZUNoYW5nZXNUb1N0
YXRlID0gZmFsc2U7CiAgICAgfQogCi0gICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0
ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2Vk
LCAoKSA9PiB7CisgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShkdW1wTWVzc2FnZXNUb29s
YmFySXRlbSwgV0kuVG9vbGJhci5TZWN0aW9uLkNlbnRlclJpZ2h0KTsKKyAgICBkdW1wTWVzc2Fn
ZXNUb29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2
ZW50LkNsaWNrZWQsICgpID0+IHsKICAgICAgICAgbGV0IG5leHRTdGF0ZTsKICAgICAgICAgc3dp
dGNoIChkdW1wTWVzc2FnZXNDdXJyZW50U3RhdGUoKSkgewogICAgICAgICBjYXNlIER1bXBNZXNz
YWdlc1N0YXRlLk9mZjoKQEAgLTExNiwyMSArMTE3LDE2IEBAIFdJLnJ1bkJvb3RzdHJhcE9wZXJh
dGlvbnMgPSBmdW5jdGlvbigpIHsKICAgICAvLyBOZXh0IExldmVsIEluc3BlY3Rvci4KICAgICBs
ZXQgaW5zcGVjdGlvbkxldmVsID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmluc3BlY3Rpb25MZXZl
bDsKICAgICBjb25zdCBpbnNwZWN0SW5zcGVjdG9yVG9vbFRpcCA9IFdJLnVubG9jYWxpemVkU3Ry
aW5nKCJPcGVuIFdlYiBJbnNwZWN0b3IgWyVkXSIpLmZvcm1hdChpbnNwZWN0aW9uTGV2ZWwgKyAx
KTsKLSAgICBsZXQgaW5zcGVjdEluc3BlY3RvclRhYkJhck5hdmlnYXRpb25JdGVtID0gbmV3IFdJ
LkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJpbnNwZWN0LWluc3BlY3RvciIsIGluc3BlY3RJbnNwZWN0
b3JUb29sVGlwKTsKLSAgICBpbnNwZWN0SW5zcGVjdG9yVGFiQmFyTmF2aWdhdGlvbkl0ZW0uZWxl
bWVudC50ZXh0Q29udGVudCA9IGluc3BlY3Rpb25MZXZlbCArIDE7Ci0gICAgaW5zcGVjdEluc3Bl
Y3RvclRhYkJhck5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgKCkgPT4geworICAgIGxldCBpbnNwZWN0SW5zcGVjdG9y
VG9vbGJhckl0ZW0gPSBuZXcgV0kuQnV0dG9uVG9vbGJhckl0ZW0oImluc3BlY3QtaW5zcGVjdG9y
IiwgaW5zcGVjdEluc3BlY3RvclRvb2xUaXApOworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0
ZW0oaW5zcGVjdEluc3BlY3RvclRvb2xiYXJJdGVtLCBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVy
UmlnaHQpOworICAgIGluc3BlY3RJbnNwZWN0b3JUb29sYmFySXRlbS5lbGVtZW50LnRleHRDb250
ZW50ID0gaW5zcGVjdGlvbkxldmVsICsgMTsKKyAgICBpbnNwZWN0SW5zcGVjdG9yVG9vbGJhckl0
ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2Vk
LCAoKSA9PiB7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5pbnNwZWN0SW5zcGVjdG9y
KCk7CiAgICAgfSk7CiAKLSAgICBsZXQgZ3JvdXBOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5Hcm91
cE5hdmlnYXRpb25JdGVtKFsKLSAgICAgICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0
ZW0sCi0gICAgICAgIGluc3BlY3RJbnNwZWN0b3JUYWJCYXJOYXZpZ2F0aW9uSXRlbSwKLSAgICBd
KTsKLSAgICBXSS50YWJCYXIuYWRkTmF2aWdhdGlvbkl0ZW1BZnRlcihncm91cE5hdmlnYXRpb25J
dGVtKTsKLQogICAgIGZ1bmN0aW9uIHVwZGF0ZURlYnVnVUkoKSB7Ci0gICAgICAgIGdyb3VwTmF2
aWdhdGlvbkl0ZW0uaGlkZGVuID0gIVdJLnNob3dEZWJ1Z1VJU2V0dGluZy52YWx1ZTsKLSAgICAg
ICAgV0kudGFiQmFyLm5lZWRzTGF5b3V0KCk7CisgICAgICAgIGR1bXBNZXNzYWdlc1Rvb2xiYXJJ
dGVtLmhpZGRlbiA9ICFXSS5zaG93RGVidWdVSVNldHRpbmcudmFsdWU7CisgICAgICAgIGluc3Bl
Y3RJbnNwZWN0b3JUb29sYmFySXRlbS5oaWRkZW4gPSAhV0kuc2hvd0RlYnVnVUlTZXR0aW5nLnZh
bHVlOwogICAgIH0KIAogICAgIFdJLnNob3dEZWJ1Z1VJU2V0dGluZy5hZGRFdmVudExpc3RlbmVy
KFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgKCkgPT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYi5zdmcgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
OGM2ZjIyNWJhYTNmZDIwZTNhODZiNDA1NDFhMjA0NWQxODc2N2NkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYi5zdmcK
QEAgLTAsMCArMSw2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pgor
PCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0t
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJyb290IiB2ZXJz
aW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAxNiI+CisgICAgPHJlY3QgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJjdXJyZW50Q29sb3IiIHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUi
IHJ4PSIyIi8+CisgICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9
Ik0gOCAzIEwgOCAxMyBNIDMgOCBMIDEzIDgiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYlBsdXMuc3ZnIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYlBsdXMuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI2MTZhOGE0MjI3MzJiNDNhODc2NWUxYWIwYWNjOTRhZDBmNmVlMmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
TmV3VGFiUGx1cy5zdmcKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IGlkPSJyb290IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNSAxNSI+CisgICAgPHBhdGgg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gNy41IDIgViAxMyBNIDIgNy41
IEggMTMiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvSW1hZ2VzL09yaWdpbi5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9JbWFnZXMvT3JpZ2luLnN2ZwppbmRleCBmNjg1M2ViNTRlMGJhNTg2ZDZkZGIyNGFj
ZmUwNzgyZTZkZjRlYWZiLi41MDNkYzI1YmUxNmExYzU2MmIxNzVkODRkMjNlYjI3ZGEzZDc3ZTQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
T3JpZ2luLnN2ZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFn
ZXMvT3JpZ2luLnN2ZwpAQCAtMSw2ICsxLDYgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+CiA8IS0tIENvcHlyaWdodCDCqSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4gLS0+Ci08c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
aWQ9InJvb3QiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDY0IDY0Ij4KKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2
NCA2NCI+CiAgICAgPGRlZnM+CiAgICAgICAgIDxyYWRpYWxHcmFkaWVudCBpZD0iZ3JhZGllbnQi
IGN4PSI1OC42JSIgY3k9IjI3Ljc0JSIgZng9IjU4LjYlIiBmeT0iMjcuNzQlIiByPSI1Ny41JSIg
Z3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwLjU5LCAwLjI4KSwgcm90YXRlKDk4LjYxKSwg
c2NhbGUoMSwgMC45OCksIHRyYW5zbGF0ZSgtMC41OSwgLTAuMjgpIj4KICAgICAgICAgICAgIDxz
dG9wIHN0b3AtY29sb3I9InJnYigxNjgsIDE3MSwgMTgyKSIgb2Zmc2V0PSIwJSIvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NlYXJjaFJl
c3VsdHMuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Nl
YXJjaFJlc3VsdHMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwODJjMjQ2YmY3N2U5YTA3N2E1ODk1NTRlMmMy
MmMwMGViMmVlOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9JbWFnZXMvU2VhcmNoUmVzdWx0cy5zdmcKQEAgLTAsMCArMSw3IEBACis8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJyb290IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAg
MCAxNiAxNiI+CisgICAgPHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHg9
IjAuNSIgeT0iMC41IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHJ4PSIyIi8+CisgICAgPGNpcmNs
ZSBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgY3g9IjciIGN5PSI3IiByPSIzIi8+
CisgICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gOS41IDku
NSBMIDEyLjUgMTIuNSIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9JbWFnZXMvU291cmNlc1BhdXNlZC5zdmcgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvU291cmNlc1BhdXNlZC5zdmcKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YmM1NDcyZWNhZTEwZWQ5MjYyODE3MjU1YTc4ZDUxOWU4
YWIyODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NvdXJjZXNQYXVzZWQuc3Zn
CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJVVEYtOCI/PgotPCEtLSBDb3B5cmlnaHQgwqkgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIC0tPgotPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IGlkPSJyb290IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAxNiI+Ci0gICAgPHBhdGgg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gNy43IDE0LjUgMi41IDE0LjUg
Mi41IDEuNSA5LjUgMS41IDEzLjUgNS41IDEzLjUgOC44Ii8+Ci0gICAgPHBhdGggZmlsbD0iY3Vy
cmVudENvbG9yIiBkPSJNIDkuMCAzLjAgTCA5LjAgNi4wIEwgMTIuMCA2LjAgWiIvPgotICAgIDxj
aXJjbGUgZmlsbD0ibm9uZSIgY3g9IjEwLjUiIGN5PSIxMS41IiByPSI0IiBzdHJva2U9ImN1cnJl
bnRDb2xvciIvPgotICAgIDxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJNIDkuNSA5LjUg
TCA5LjUgMTMuNSBNIDExLjUgOS41IEwgMTEuNSAxMy41Ii8+Ci08L3N2Zz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCAxM2Y0MjNhZGZmNWI0
Y2FjNmZhMzQ1M2M1NmRkMWRmOGM1MGU1M2FmLi40OWQxODAzM2JkYjc3MzljOTNlZmZmY2JmZjI4
ZWEyNjRkNjljNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuY3NzIj4KICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MiPgog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0J1dHRvblRv
b2xiYXJJdGVtLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9D
UFVUaW1lbGluZU92ZXJ2aWV3R3JhcGguY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL0NQVVRpbWVsaW5lVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iVmlld3MvQ1BVVXNhZ2VDb21iaW5lZFZpZXcuY3NzIj4KQEAgLTc5LDYgKzgw
LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NvbnRlbnRCcm93
c2VyVGFiQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
IlZpZXdzL0NvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iVmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuY3NzIj4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RPTUJyZWFrcG9pbnRUcmVl
RWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRE9N
RXZlbnRzQnJlYWtkb3duVmlldy5jc3MiPgpAQCAtODgsOSArOTAsMTIgQEAKICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5jc3MiPgog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3
LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9ET01UcmVlT3V0
bGluZS5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGFzaGJv
YXJkQ29udGFpbmVyVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvRGF0YUdyaWQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5jc3MiPgorICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmNzcyI+Cisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmll
dy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGV0YWlsc1Nl
Y3Rpb24uY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0Rpdmlk
ZXJOYXZpZ2F0aW9uSXRlbS5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvRHJvcFpvbmVWaWV3LmNzcyI+CkBAIC0xNTEsNiArMTU2LDcgQEAKICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmNzcyI+
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9OZXR3b3JrVGltZWxpbmVP
dmVydmlld0dyYXBoLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3
cy9OZXR3b3JrVGltZWxpbmVWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9OZXdUYWJDb250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iVmlld3MvT2JqZWN0UHJldmlld1ZpZXcuY3NzIj4KICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL09iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQu
Y3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL09iamVjdFRyZWVN
YXBFbnRyeVRyZWVFbGVtZW50LmNzcyI+CkBAIC0yMzEsNiArMjM3LDcgQEAKICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuY3NzIj4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1RpbWVsaW5lVmlldy5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVGl0bGVWaWV3LmNzcyI+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Ub29sYmFyLmNzcyI+CiAg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1
dHRvbi5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHJlZU91
dGxpbmUuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVU
b2tlblZpZXcuY3NzIj4KQEAgLTM5NSw3ICs0MDIsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvRE9NVHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9EYXRhYmFz
ZU9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9EYXRhYmFzZVRh
YmxlT2JqZWN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RlYnVnZ2Vy
RGFzaGJvYXJkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RlYnVnZ2Vy
RGF0YS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9EZWZhdWx0RGFzaGJv
YXJkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0V2ZW50QnJlYWtwb2lu
dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9FeGVjdXRpb25Db250ZXh0
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0V4ZWN1dGlvbkNvbnRleHRM
aXN0LmpzIj48L3NjcmlwdD4KQEAgLTUyNCw2ICs1MzMsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9UcmVlT3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Ry
ZWVPdXRsaW5lR3JvdXAuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0xl
Z2FjeVRhYkJhci5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXRh
YmFzZVVzZXJRdWVyeVZpZXdCYXNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvRGF0YWJhc2VVc2VyUXVlcnlFcnJvclZpZXcuanMiPjwvc2NyaXB0PgpAQCAtNTQ2LDYgKzU1
Nyw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0ZvbGRlcml6ZWRUcmVlRWxlbWVudC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL05ldHdvcmtEZXRhaWxWaWV3LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVt
ZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU291cmNlQ29kZVRyZWVF
bGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU3RvcmFnZVRyZWVF
bGVtZW50LmpzIj48L3NjcmlwdD4KQEAgLTU4Nyw2ICs1OTksNyBAQAogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9Mb2NhbFJlbW90ZU9iamVjdENvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KIAogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0FuaW1hdGlvbkNvbGxlY3Rpb25D
b250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0FuaW1hdGlv
bkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQW5pbWF0
aW9uRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CkBAIC02MDUsNiArNjE4LDcgQEAK
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DUFVUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DUFVUaW1lbGluZVZpZXcu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DUFVVc2FnZUNvbWJpbmVkVmll
dy5qcyI+PC9zY3JpcHQ+CkBAIC02NDAsNiArNjU0LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQ29udGVudFZpZXdDb250YWluZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9Db250ZXh0TWVudS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Nv
bnRleHRNZW51VXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
Q29udHJvbFRvb2xiYXJJdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29va2llU3RvcmFnZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KQEAgLTY1
MywxMSArNjY4LDE1IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RPTVRyZWVFbGVtZW50UGF0
aENvbXBvbmVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RPTVRyZWVP
dXRsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRE9NVHJlZVVwZGF0
ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXNoYm9hcmRDb250YWlu
ZXJWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGFzaGJvYXJkVmll
dy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlQ29udGVudFZp
ZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXRhYmFzZUhvc3RUcmVl
RWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlVGFi
bGVDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFi
YXNlVGFibGVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L0RhdGFiYXNlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRlbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0Ryb3Bab25lVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0VkaXRhYmxlRGF0YUdyaWROb2RlLmpzIj48L3NjcmlwdD4KQEAgLTgzMSw2ICs4NTAsNyBA
QAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UaW1lbGluZVJ1bGVyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvVGl0bGVWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9Ub29sYmFyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9UeXBlVG9rZW5WaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvVHlwZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KQEAgLTkxMSw3ICs5MzEsNyBA
QAogPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGlkPSJkb2NrZWQtcmVzaXplciI+PC9kaXY+Ci08ZGl2
IGlkPSJ1bmRvY2tlZC10aXRsZS1hcmVhIj48L2Rpdj4KKzxkaXYgaWQ9InRvb2xiYXIiPjwvZGl2
PgogPGRpdiBpZD0idGFiLWJhciI+PC9kaXY+CiA8ZGl2IGlkPSJtYWluIj4KICAgICA8ZGl2IGlk
PSJjb250ZW50Ij4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9EZWJ1Z2dlckRhc2hib2FyZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9EZWJ1Z2dlckRhc2hib2FyZC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDEx
YjEwZmJlMzE3ZDVjMzYyZTcxNTE0MDc0MTQwNjY2ZTc2NTVlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFzaGJv
YXJkLmpzCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5EZWJ1Z2dlckRhc2hib2Fy
ZCA9IGNsYXNzIERlYnVnZ2VyRGFzaGJvYXJkCit7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2Fy
ZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOGNiOWY1NjM2ZDQwZTM5YzdlMzkyZWE3M2ZhNWY1MDE1ZDEyNjQy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworV0kuRGVmYXVsdERhc2hib2FyZCA9IGNsYXNzIERlZmF1bHREYXNo
Ym9hcmQgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAg
ICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3dhaXRpbmdGb3JGaXJzdE1haW5SZXNvdXJj
ZVRvU3RhcnRUcmFja2luZ1NpemUgPSB0cnVlOworCisgICAgICAgIC8vIE5lY2Vzc2FyeSBldmVu
dCByZXF1aXJlZCB0byB0cmFjayBwYWdlIGxvYWQgdGltZSBhbmQgcmVzb3VyY2Ugc2l6ZXMuCisg
ICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291
cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgICAg
ICBXSS50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UaW1lbGluZU1hbmFnZXIu
RXZlbnQuQ2FwdHVyaW5nU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVUaW1lbGluZUNhcHR1cmlu
Z1N0YXRlQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAgICAgLy8gTmVjZXNzYXJ5IGV2ZW50cyByZXF1
aXJlZCB0byB0cmFjayBsb2FkIG9mIHJlc291cmNlcy4KKyAgICAgICAgV0kuRnJhbWUuYWRkRXZl
bnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCB0aGlzLl9yZXNvdXJj
ZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgV0kuVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoV0ku
VGFyZ2V0LkV2ZW50LlJlc291cmNlQWRkZWQsIHRoaXMuX3Jlc291cmNlV2FzQWRkZWQsIHRoaXMp
OworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtN
YW5hZ2VyLkV2ZW50LkZyYW1lV2FzQWRkZWQsIHRoaXMuX2ZyYW1lV2FzQWRkZWQsIHRoaXMpOwor
CisgICAgICAgIC8vIE5lY2Vzc2FyeSBldmVudHMgcmVxdWlyZWQgdG8gdHJhY2sgY29uc29sZSBt
ZXNzYWdlcy4KKyAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5D
b25zb2xlTWFuYWdlci5FdmVudC5DbGVhcmVkLCB0aGlzLl9jb25zb2xlV2FzQ2xlYXJlZCwgdGhp
cyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29s
ZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCB0aGlzLl9jb25zb2xlTWVzc2FnZUFkZGVkLCB0
aGlzKTsKKyAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25z
b2xlTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMu
X2NvbnNvbGVNZXNzYWdlV2FzUmVwZWF0ZWQsIHRoaXMpOworCisgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGlzIHdvcmtpbmcgYXJvdW5kIHRoZSBvcmRlciBvZiBldmVudHMuIE5vcm1hbCBwYWdlIG5h
dmlnYXRpb24KKyAgICAgICAgLy8gdHJpZ2dlcnMgYSBNYWluUmVzb3VyY2UgY2hhbmdlIGFuZCB0
aGVuIGEgTWFpbkZyYW1lIGNoYW5nZS4gUGFnZSBUcmFuc2l0aW9uCisgICAgICAgIC8vIHRyaWdn
ZXJzIGEgTWFpbkZyYW1lIGNoYW5nZSB0aGVuIGEgTWFpblJlc291cmNlIGNoYW5nZS4KKyAgICAg
ICAgdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQgPSBmYWxzZTsKKworICAgICAgICBXSS5u
b3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVuZXIoV0kuTm90aWZpY2F0aW9uLlRyYW5zaXRpb25Q
YWdlVGFyZ2V0LCB0aGlzLl90cmFuc2l0aW9uUGFnZVRhcmdldCwgdGhpcyk7CisKKyAgICAgICAg
dGhpcy5fcmVzb3VyY2VzQ291bnQgPSAwOworICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0g
MDsKKyAgICAgICAgdGhpcy5fdGltZSA9IDA7CisgICAgICAgIHRoaXMuX2xvZ3MgPSAwOworICAg
ICAgICB0aGlzLl9lcnJvcnMgPSAwOworICAgICAgICB0aGlzLl9pc3N1ZXMgPSAwOworICAgIH0K
KworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHJlc291cmNlc0NvdW50KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXNDb3VudDsKKyAgICB9CisKKyAgICBzZXQgcmVzb3Vy
Y2VzQ291bnQodmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IHZh
bHVlOworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgZ2V0IHJl
c291cmNlc1NpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc1NpemU7
CisgICAgfQorCisgICAgc2V0IHJlc291cmNlc1NpemUodmFsdWUpCisgICAgeworICAgICAgICB0
aGlzLl9yZXNvdXJjZXNTaXplID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2Uo
KTsKKyAgICB9CisKKyAgICBnZXQgdGltZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
dGltZTsKKyAgICB9CisKKyAgICBzZXQgdGltZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMu
X3RpbWUgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0KKwor
ICAgIGdldCBsb2dzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9sb2dzOworICAgIH0K
KworICAgIHNldCBsb2dzKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fbG9ncyA9IHZhbHVl
OworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgZ2V0IGVycm9y
cygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JzOworICAgIH0KKworICAgIHNl
dCBlcnJvcnModmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9lcnJvcnMgPSB2YWx1ZTsKKyAg
ICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0KKworICAgIGdldCBpc3N1ZXMoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lzc3VlczsKKyAgICB9CisKKyAgICBzZXQgaXNz
dWVzKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5faXNzdWVzID0gdmFsdWU7CisgICAgICAg
IHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBf
ZGF0YURpZENoYW5nZSgpCisgICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5EZWZhdWx0RGFzaGJvYXJkLkV2ZW50LkRhdGFEaWRDaGFuZ2UpOworICAgIH0KKwor
ICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAgICAgICBjb25zb2xl
LmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7CisKKyAgICAgICAgaWYg
KCFldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAoIXRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0KSB7CisgICAgICAgICAgICB0
aGlzLl90aW1lID0gMDsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvdW50ID0gMTsKKyAg
ICAgICAgICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJh
bWUubWFpblJlc291cmNlLnNpemUgfHwgMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IHRyYWNrIHJlc291cmNlIHNpemVzIG9uIGZyZXNoIGxvYWRzLgorICAgICAgICBp
ZiAodGhpcy5fd2FpdGluZ0ZvckZpcnN0TWFpblJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZSkg
eworICAgICAgICAgICAgdGhpcy5fd2FpdGluZ0ZvckZpcnN0TWFpblJlc291cmNlVG9TdGFydFRy
YWNraW5nU2l6ZSA9IGZhbHNlOworICAgICAgICAgICAgV0kuUmVzb3VyY2UuYWRkRXZlbnRMaXN0
ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5TaXplRGlkQ2hhbmdlLCB0aGlzLl9yZXNvdXJjZVNpemVE
aWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5n
ZSgpOworCisgICAgICAgIGlmICghdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQpCisgICAg
ICAgICAgICB0aGlzLl9zdGFydFVwZGF0aW5nVGltZSgpOworCisgICAgICAgIGlmICh0aGlzLl90
cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkKKyAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQ
YWdlVGFyZ2V0ID0gZmFsc2U7CisgICAgfQorCisgICAgX2hhbmRsZVRpbWVsaW5lQ2FwdHVyaW5n
U3RhdGVDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKFdJLnRpbWVsaW5lTWFuYWdl
ci5pc0NhcHR1cmluZygpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIElmIHJl
Y29yZGluZyBzdG9wcywgd2Ugc2hvdWxkIHN0b3AgdGhlIHRpbWVyIGlmIGl0IGhhc24ndCBzdG9w
cGVkIGFscmVhZHkuCisgICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ1RpbWUoKTsKKyAgICB9CisK
KyAgICBfcmVzb3VyY2VXYXNBZGRlZChldmVudCkKKyAgICB7CisgICAgICAgICsrdGhpcy5yZXNv
dXJjZXNDb3VudDsKKyAgICB9CisKKyAgICBfZnJhbWVXYXNBZGRlZChldmVudCkKKyAgICB7Cisg
ICAgICAgICsrdGhpcy5yZXNvdXJjZXNDb3VudDsKKyAgICB9CisKKyAgICBfcmVzb3VyY2VTaXpl
RGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC51cmxDb21w
b25lbnRzLnNjaGVtZSA9PT0gImRhdGEiKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGxldCBkZWx0YSA9IGV2ZW50LnRhcmdldC5zaXplIC0gZXZlbnQuZGF0YS5wcmV2aW91c1NpemU7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFpc05hTihkZWx0YSksICJSZXNvdXJjZSBzaXplIGNo
YW5nZSBzaG91bGQgbmV2ZXIgYmUgTmFOLiIpOworICAgICAgICB0aGlzLnJlc291cmNlc1NpemUg
Kz0gZGVsdGE7CisgICAgfQorCisgICAgX3N0YXJ0VXBkYXRpbmdUaW1lKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3N0b3BVcGRhdGluZ1RpbWUoKTsKKworICAgICAgICB0aGlzLnRpbWUgPSAwOwor
CisgICAgICAgIHRoaXMuX3RpbWVsaW5lQmFzZVRpbWUgPSBEYXRlLm5vdygpOworICAgICAgICB0
aGlzLl90aW1lSW50ZXJ2YWxEZWxheSA9IDUwOworICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxJ
ZGVudGlmaWVyID0gc2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlVGltZS5iaW5kKHRoaXMpLCB0aGlz
Ll90aW1lSW50ZXJ2YWxEZWxheSk7CisgICAgfQorCisgICAgX3N0b3BVcGRhdGluZ1RpbWUoKQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fdGltZUludGVydmFs
SWRlbnRpZmllcik7CisgICAgICAgIHRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZpZXIgPSB1bmRl
ZmluZWQ7CisgICAgfQorCisgICAgX3VwZGF0ZVRpbWUoKQorICAgIHsKKyAgICAgICAgdmFyIGR1
cmF0aW9uID0gRGF0ZS5ub3coKSAtIHRoaXMuX3RpbWVsaW5lQmFzZVRpbWU7CisKKyAgICAgICAg
dmFyIHRpbWVJbnRlcnZhbERlbGF5ID0gdGhpcy5fdGltZUludGVydmFsRGVsYXk7CisgICAgICAg
IGlmIChkdXJhdGlvbiA+PSAxMDAwKSAvLyAxIHNlY29uZAorICAgICAgICAgICAgdGltZUludGVy
dmFsRGVsYXkgPSAxMDA7CisgICAgICAgIGVsc2UgaWYgKGR1cmF0aW9uID49IDYwMDAwKSAvLyA2
MCBzZWNvbmRzCisgICAgICAgICAgICB0aW1lSW50ZXJ2YWxEZWxheSA9IDEwMDA7CisgICAgICAg
IGVsc2UgaWYgKGR1cmF0aW9uID49IDM2MDAwMDApIC8vIDEgbWludXRlCisgICAgICAgICAgICB0
aW1lSW50ZXJ2YWxEZWxheSA9IDEwMDAwOworCisgICAgICAgIGlmICh0aW1lSW50ZXJ2YWxEZWxh
eSAhPT0gdGhpcy5fdGltZUludGVydmFsRGVsYXkpIHsKKyAgICAgICAgICAgIHRoaXMuX3RpbWVJ
bnRlcnZhbERlbGF5ID0gdGltZUludGVydmFsRGVsYXk7CisKKyAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwodGhpcy5fdGltZUludGVydmFsSWRlbnRpZmllcik7CisgICAgICAgICAgICB0aGlzLl90
aW1lSW50ZXJ2YWxJZGVudGlmaWVyID0gc2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlVGltZS5iaW5k
KHRoaXMpLCB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheSk7CisgICAgICAgIH0KKworICAgICAgICB2
YXIgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOworICAgICAgICB2YXIg
bWFpbkZyYW1lU3RhcnRUaW1lID0gbWFpbkZyYW1lLm1haW5SZXNvdXJjZS5maXJzdFRpbWVzdGFt
cDsKKyAgICAgICAgdmFyIG1haW5GcmFtZUxvYWRFdmVudFRpbWUgPSBtYWluRnJhbWUubG9hZEV2
ZW50VGltZXN0YW1wOworCisgICAgICAgIGlmIChpc05hTihtYWluRnJhbWVTdGFydFRpbWUpIHx8
IGlzTmFOKG1haW5GcmFtZUxvYWRFdmVudFRpbWUpKSB7CisgICAgICAgICAgICB0aGlzLnRpbWUg
PSBkdXJhdGlvbiAvIDEwMDA7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLnRpbWUgPSBtYWluRnJhbWVMb2FkRXZlbnRUaW1lIC0gbWFpbkZyYW1lU3RhcnRU
aW1lOworCisgICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ1RpbWUoKTsKKyAgICB9CisKKyAgICBf
Y29uc29sZU1lc3NhZ2VBZGRlZChldmVudCkKKyAgICB7CisgICAgICAgIHZhciBtZXNzYWdlID0g
ZXZlbnQuZGF0YS5tZXNzYWdlOworICAgICAgICB0aGlzLl9sYXN0Q29uc29sZU1lc3NhZ2VUeXBl
ID0gbWVzc2FnZS5sZXZlbDsKKyAgICAgICAgdGhpcy5faW5jcmVtZW50Q29uc29sZU1lc3NhZ2VU
eXBlKG1lc3NhZ2UubGV2ZWwsIG1lc3NhZ2UucmVwZWF0Q291bnQpOworICAgIH0KKworICAgIF9j
b25zb2xlTWVzc2FnZVdhc1JlcGVhdGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5faW5j
cmVtZW50Q29uc29sZU1lc3NhZ2VUeXBlKHRoaXMuX2xhc3RDb25zb2xlTWVzc2FnZVR5cGUsIDEp
OworICAgIH0KKworICAgIF9pbmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGUodHlwZSwgaW5jcmVt
ZW50KQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgV0kuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZzoKKyAgICAgICAgY2FzZSBXSS5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlTGV2ZWwuSW5mbzoKKyAgICAgICAgY2FzZSBXSS5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlTGV2ZWwuRGVidWc6CisgICAgICAgICAgICB0aGlzLmxvZ3MgKz0gaW5jcmVtZW50Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZUxldmVsLldhcm5pbmc6CisgICAgICAgICAgICB0aGlzLmlzc3VlcyArPSBpbmNyZW1lbnQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdl
TGV2ZWwuRXJyb3I6CisgICAgICAgICAgICB0aGlzLmVycm9ycyArPSBpbmNyZW1lbnQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9jb25zb2xlV2FzQ2xlYXJl
ZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xvZ3MgPSAwOworICAgICAgICB0aGlzLl9p
c3N1ZXMgPSAwOworICAgICAgICB0aGlzLl9lcnJvcnMgPSAwOworICAgICAgICB0aGlzLl9kYXRh
RGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX3RyYW5zaXRpb25QYWdlVGFyZ2V0KCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gdHJ1ZTsKKworICAgICAg
ICB0aGlzLl90aW1lID0gMDsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ291bnQgPSAwOworICAg
ICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gMDsKKworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hh
bmdlKCk7CisgICAgfQorfTsKKworV0kuRGVmYXVsdERhc2hib2FyZC5FdmVudCA9IHsKKyAgICBE
YXRhRGlkQ2hhbmdlOiAiZGVmYXVsdC1kYXNoYm9hcmQtZGF0YS1kaWQtY2hhbmdlIgorfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FjdGl2
YXRlQnV0dG9uVG9vbGJhckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NzU0
MmNmNGU1MjdhZmU0MGY1NDUzM2FhY2E5OTc0YWMwNDU2MDYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvblRv
b2xiYXJJdGVtLmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5BY3Rp
dmF0ZUJ1dHRvblRvb2xiYXJJdGVtID0gY2xhc3MgQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbSBl
eHRlbmRzIFdJLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0KK3sKKyAgICBjb25zdHJ1Y3Rv
cihpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIHJv
bGUpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWN0
aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIDE2LCAxNiwgcm9sZSk7CisgICAgfQorfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0F1ZGl0VGFiQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9B
dWRpdFRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDUzMmQwYzNhZWZlNzlhNzM1MjhmYmZiY2JjMjEy
MTZkNjYyODgwZjIuLjIxNWRiYTUyNzY4NmFmN2I2NWUzNzVhZDMxZmIxZWE0ODEyOTYyZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0F1ZGl0
VGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQXVkaXRUYWJDb250ZW50Vmlldy5qcwpAQCAtMjcsOSArMjcsNyBAQCBXSS5BdWRp
dFRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgQXVkaXRUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNv
bnRlbnRCcm93c2VyVGFiQwogewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7Ci0gICAgICAgIHN1
cGVyKEF1ZGl0VGFiQ29udGVudFZpZXcudGFiSW5mbygpLCB7Ci0gICAgICAgICAgICBuYXZpZ2F0
aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3I6IFdJLkF1ZGl0TmF2aWdhdGlvblNpZGViYXJQYW5l
bCwKLSAgICAgICAgfSk7CisgICAgICAgIHN1cGVyKCJhdWRpdCIsIFsiYXVkaXQiXSwgV0kuR2Vu
ZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuQXVkaXRUYWJDb250ZW50Vmlldy50YWJJbmZv
KCkpLCBXSS5BdWRpdE5hdmlnYXRpb25TaWRlYmFyUGFuZWwpOwogCiAgICAgICAgIHRoaXMuX3N0
YXJ0U3RvcFNob3J0Y3V0ID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV0kuS2V5Ym9h
cmRTaG9ydGN1dC5LZXkuU3BhY2UsIHRoaXMuX2hhbmRsZVNwYWNlLmJpbmQodGhpcykpOwogICAg
ICAgICB0aGlzLl9zdGFydFN0b3BTaG9ydGN1dC5pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0ID0g
ZmFsc2U7CkBAIC00MSw3ICszOSw2IEBAIFdJLkF1ZGl0VGFiQ29udGVudFZpZXcgPSBjbGFzcyBB
dWRpdFRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXJUYWJDCiAgICAgc3Rh
dGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50
aWZpZXI6IEF1ZGl0VGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgICAgIGltYWdlOiAiSW1h
Z2VzL0F1ZGl0LnN2ZyIsCiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIkF1ZGl0Iiks
CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5jc3MKaW5kZXggODE2
Y2NkNmI0MWM3YzZlZWM4MzQ2NTdhYjk4ZDllNjY0ODMwMTAyOC4uMTQ3MGJiMjA2MWQwMGU5NzM3
YTc1ZWNiNGMyOGRlNDM0NWVkY2JkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY3NzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVt
LmNzcwpAQCAtNDEsMTAgKzQxLDYgQEAKICAgICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDRweDsK
IH0KIAotLnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uLmltYWdlLWFuZC10
ZXh0ID4gc3BhbiB7Ci0gICAgcGFkZGluZy1ib3R0b206IDA7Ci19Ci0KIC5uYXZpZ2F0aW9uLWJh
ciAuaXRlbS5idXR0b24udGV4dC1vbmx5IHsKICAgICBwYWRkaW5nOiAxcHggOHB4IDNweDsKICAg
ICBtYXJnaW46IDAgMnB4OyAvKiBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuZ2V0
IHRvdGFsTWFyZ2luICovCkBAIC03OCwyOSArNzQsOCBAQAogICAgIGNvbG9yOiB2YXIoLS1nbHlw
aC1jb2xvci1kaXNhYmxlZCk7CiB9CiAKLS5uYXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24gPiBp
bWcgewotICAgIHdpZHRoOiAxMDAlOwotICAgIGhlaWdodDogMTAwJTsKLX0KLQotLm5hdmlnYXRp
b24tYmFyIC5pdGVtLmJ1dHRvbi5kaXNhYmxlZCA+IGltZyB7Ci0gICAgb3BhY2l0eTogMC4zOwot
fQotCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3Rp
dmUpIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24gPiBpbWcgewotICAgIG9wYWNpdHk6IDAu
NjsKLX0KLQotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWlu
YWN0aXZlKSAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uLmRpc2FibGVkID4gaW1nIHsKLSAg
ICBvcGFjaXR5OiAwLjE4OwotfQotCiBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJr
KSB7CiAgICAgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbiB7CiAgICAgICAgIGNvbG9yOiB2
YXIoLS10ZXh0LWNvbG9yLXNlY29uZGFyeSk7CiAgICAgfQotCi0gICAgLm5hdmlnYXRpb24tYmFy
IC5pdGVtLmJ1dHRvbi5kaXNhYmxlZCA+IGltZyB7Ci0gICAgICAgIGZpbHRlcjogaW52ZXJ0KCk7
Ci0gICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwppbmRleCAxYjcwZDQ2
ZjkzMzUyNjYzOGZjNTZjYWM0NTFhZGU2OTg2ZTJlYjI2Li4wYTczNzJjZTc4ZDNlMWQzNTExNjE5
Mzk0MmNhYTQyY2Y1NDVmYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwpA
QCAtNDgsOCArNDgsNiBAQCBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIEJ1dHRvbk5h
dmlnYXRpb25JdGVtIGV4dGVuZHMgV0kuTmF2aWdhdGlvbkl0ZW0KIAogICAgICAgICB0aGlzLmJ1
dHRvblN0eWxlID0gdGhpcy5faW1hZ2UgPyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZS5J
bWFnZSA6IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlLlRleHQ7CiAKLSAgICAgICAgdGhp
cy5pbWFnZVR5cGUgPSB0aGlzLl9pbWFnZSA/IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkltYWdl
VHlwZS5TVkcgOiBudWxsOwotCiAgICAgICAgIGlmICh0aGlzLmJ1dHRvblN0eWxlID09PSBXSS5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZS5JbWFnZSkKICAgICAgICAgICAgIHRoaXMudG9vbHRp
cCA9IHRvb2xUaXBPckxhYmVsOwogICAgIH0KQEAgLTEyNSwyNyArMTIzLDYgQEAgV0kuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBCdXR0b25OYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdJLk5h
dmlnYXRpb25JdGVtCiAgICAgICAgICAgICB0aGlzLnBhcmVudE5hdmlnYXRpb25CYXIubmVlZHNM
YXlvdXQoKTsKICAgICB9CiAKLSAgICBnZXQgaW1hZ2VUeXBlKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9pbWFnZVR5cGU7Ci0gICAgfQotCi0gICAgc2V0IGltYWdlVHlwZShpbWFnZVR5
cGUpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghaW1hZ2VUeXBlIHx8IE9iamVjdC52
YWx1ZXMoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uSW1hZ2VUeXBlKS5pbmNsdWRlcyhpbWFnZVR5
cGUpLCBpbWFnZVR5cGUpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghaW1hZ2VUeXBlIHx8ICh0
aGlzLl9idXR0b25TdHlsZSA9PT0gV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGUuSW1hZ2Ug
fHwgdGhpcy5fYnV0dG9uU3R5bGUgPT09IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlLklt
YWdlQW5kVGV4dCkpOwotCi0gICAgICAgIGlmICh0aGlzLl9pbWFnZVR5cGUgPT09IGltYWdlVHlw
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9pbWFnZVR5cGUgPSBpbWFn
ZVR5cGU7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlKCk7Ci0KLSAgICAgICAgaWYgKHRoaXMucGFy
ZW50TmF2aWdhdGlvbkJhcikKLSAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci5u
ZWVkc0xheW91dCgpOwotICAgIH0KLQogICAgIC8vIFByb3RlY3RlZAogCiAgICAgZ2V0IHRvdGFs
TWFyZ2luKCkKQEAgLTE3NywyMiArMTU0LDEwIEBAIFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtID0g
Y2xhc3MgQnV0dG9uTmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uSXRlbQogICAg
ICAgICBpZiAodGhpcy5fYnV0dG9uU3R5bGUgPT09IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0
eWxlLlRleHQpCiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9s
YWJlbDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuX2ltYWdlVHlw
ZSkgewotICAgICAgICAgICAgY2FzZSBudWxsOgotICAgICAgICAgICAgY2FzZSBXSS5CdXR0b25O
YXZpZ2F0aW9uSXRlbS5JbWFnZVR5cGUuU1ZHOiB7Ci0gICAgICAgICAgICAgICAgbGV0IGdseXBo
RWxlbWVudCA9IFdJLkltYWdlVXRpbGl0aWVzLnVzZVNWR1N5bWJvbCh0aGlzLl9pbWFnZSwgImds
eXBoIik7Ci0gICAgICAgICAgICAgICAgZ2x5cGhFbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5f
aW1hZ2VXaWR0aCArICJweCI7Ci0gICAgICAgICAgICAgICAgZ2x5cGhFbGVtZW50LnN0eWxlLmhl
aWdodCA9IHRoaXMuX2ltYWdlSGVpZ2h0ICsgInB4IjsKLSAgICAgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQoZ2x5cGhFbGVtZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2FzZSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5JbWFnZVR5cGUuSU1HOiB7Ci0gICAgICAgICAgICAgICAgbGV0IGltZyA9IHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7Ci0gICAgICAgICAg
ICAgICAgaW1nLnNyYyA9IHRoaXMuX2ltYWdlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAgICAgbGV0IGdseXBoRWxlbWVudCA9
IFdJLkltYWdlVXRpbGl0aWVzLnVzZVNWR1N5bWJvbCh0aGlzLl9pbWFnZSwgImdseXBoIik7Cisg
ICAgICAgICAgICBnbHlwaEVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9pbWFnZVdpZHRoICsg
InB4IjsKKyAgICAgICAgICAgIGdseXBoRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9pbWFn
ZUhlaWdodCArICJweCI7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZ2x5
cGhFbGVtZW50KTsKIAogICAgICAgICAgICAgaWYgKHRoaXMuX2J1dHRvblN0eWxlID09PSBXSS5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZS5JbWFnZUFuZFRleHQpIHsKICAgICAgICAgICAgICAg
ICBsZXQgbGFiZWxFbGVtZW50ID0gdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKSk7CkBAIC0yMTEsOCArMTc2LDMgQEAgV0kuQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uU3R5bGUgPSB7CiAgICAgVGV4dDogInRleHQtb25seSIsCiAgICAgSW1hZ2VBbmRU
ZXh0OiAiaW1hZ2UtYW5kLXRleHQiLAogfTsKLQotV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uSW1h
Z2VUeXBlID0gewotICAgIFNWRzogImltYWdlLXR5cGUtc3ZnIiwKLSAgICBJTUc6ICJpbWFnZS10
eXBlLWltZyIsCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uY3NzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNk
MWM2ZDY4YzQ2YjczYTgzZmFjZDcyOTRiN2ZmNGE5NDY3OGZhZjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25Ub29sYmFy
SXRlbS5jc3MKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnRvb2xiYXIgLml0
ZW0uYnV0dG9uIHsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAgIGp1c3RpZnktY29udGVu
dDogY2VudGVyOworCisgICAgbWFyZ2luOiA0cHg7CisgICAgcGFkZGluZzogMCAxMHB4OworCisg
ICAgY29sb3I6IGhzbCgwLCAwJSwgNDUlKTsKK30KKworLnRvb2xiYXIgLml0ZW0uYnV0dG9uOm5v
dCguZGlzYWJsZWQpOmFjdGl2ZSB7CisgICAgY29sb3I6IGhzbCgwLCAwJSwgMzAlKTsKK30KKwor
LnRvb2xiYXIgLml0ZW0uYnV0dG9uOm5vdCguZGlzYWJsZWQpOm1hdGNoZXMoOmZvY3VzLCAuYWN0
aXZhdGUuYWN0aXZhdGVkKSB7CisgICAgY29sb3I6IHZhcigtLWdseXBoLWNvbG9yLWFjdGl2ZSk7
Cit9CisKKy50b29sYmFyIC5pdGVtLmJ1dHRvbiA+IC5nbHlwaCB7CisgICAgd2lkdGg6IDE2cHg7
CisgICAgaGVpZ2h0OiAxNnB4OworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAu
aXRlbS5idXR0b24geworICAgIG9wYWNpdHk6IDAuNjU7Cit9CisKKy50b29sYmFyIC5pdGVtLmJ1
dHRvbi5kaXNhYmxlZCB7CisgICAgb3BhY2l0eTogMC41NSAhaW1wb3J0YW50OworfQorCitib2R5
LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuaXRlbS5idXR0b24uZGlzYWJsZWQgeworICAgIG9w
YWNpdHk6IDAuMzUgIWltcG9ydGFudDsKK30KKworQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVt
ZTogZGFyaykgeworICAgIC50b29sYmFyIC5pdGVtLmJ1dHRvbiB7CisgICAgICAgIGNvbG9yOiB2
YXIoLS1jb2xvci1idXR0b24pOworICAgIH0KKworICAgIC50b29sYmFyIC5pdGVtLmJ1dHRvbjpu
b3QoLmRpc2FibGVkKTphY3RpdmUgeworICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItYnV0dG9u
LWFjdGl2ZSk7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CisgICAgICAgIGJhY2tn
cm91bmQ6IHZhcigtLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLXByZXNzZWQpOworICAgIH0KKwor
ICAgIGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC50b29sYmFyIC5pdGVtLmJ1dHRvbjpub3Qo
LmRpc2FibGVkKTptYXRjaGVzKDpmb2N1cywgLmFjdGl2YXRlLmFjdGl2YXRlZCkgPiAuZ2x5cGgg
eworICAgICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4zNSk7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJh
ckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0
b25Ub29sYmFySXRlbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTRmNmQwYTFiYjZmZDZmNTUzYjY0YmI2ODZj
MzU1YjUwMjA4NzU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uanMKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dJLkJ1dHRvblRvb2xiYXJJdGVtID0gY2xhc3MgQnV0dG9uVG9v
bGJhckl0ZW0gZXh0ZW5kcyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbQoreworICAgIGNvbnN0cnVj
dG9yKGlkZW50aWZpZXIsIHRvb2xUaXAsIGltYWdlLCByb2xlKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIDE2LCAxNiwgcm9sZSk7CisgICAgfQorfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnNvbGVUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnNvbGVUYWJDb250ZW50Vmlldy5qcwppbmRleCBmNjhhOWZhYzI3YmI1NGYy
ZGVhYTIwNTU1M2MzMjRlOTVmZGY2YjVhLi4xMjU5ODZhNjZiZDIxZTJhMzdhZjY2ZGVjOGEwNTI3
Mjc2ZGFiYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVRhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNSwx
NSArMjUsMTYgQEAKIAogV0kuQ29uc29sZVRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29uc29sZVRh
YkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldwogewot
ICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgc3VwZXIoQ29uc29sZVRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSwge2Rpc2FibGVCYWNr
Rm9yd2FyZDogdHJ1ZX0pOworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJC
YXJJdGVtLmZyb21UYWJJbmZvKFdJLkNvbnNvbGVUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOwor
CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgImNvbnNvbGUiLCAiY29uc29sZSIsIHRhYkJh
ckl0ZW0sIG51bGwsIG51bGwsIHRydWUpOwogICAgIH0KIAogICAgIHN0YXRpYyB0YWJJbmZvKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyOiBDb25zb2xl
VGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL0NvbnNvbGUu
c3ZnIiwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiQ29uc29sZSIpLAogICAgICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcuanMKaW5k
ZXggYmMzZDUxOGFmZjllOTFiZjcxYWE1ZGE1M2FlYmM0YmYwNTQxYjQyZi4uMmQ3NWMwZGE2NjQw
YjM3NWI4NGJiNDJmMTM2ODE5MWE0OGQ5NjZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50
QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNSwxOSArMjUsMjUgQEAKIAogV0kuQ29udGVu
dEJyb3dzZXJUYWJDb250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRCcm93c2VyVGFiQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKHRhYkluZm8s
IHtuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IsIGRldGFpbHNTaWRlYmFyUGFuZWxD
b25zdHJ1Y3RvcnMsIGRpc2FibGVCYWNrRm9yd2FyZCwgZmxleGlibGVOYXZpZ2F0aW9uSXRlbX0g
PSB7fSkKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBzdHlsZUNsYXNzTmFtZXMsIHRhYkJh
ckl0ZW0sIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciwgZGV0YWlsc1NpZGViYXJQ
YW5lbENvbnN0cnVjdG9ycywgZGlzYWJsZUJhY2tGb3J3YXJkLCBmbGV4aWJsZU5hdmlnYXRpb25J
dGVtKQogICAgIHsKLSAgICAgICAgc3VwZXIodGFiSW5mbywge25hdmlnYXRpb25TaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvciwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9yc30pOworICAgICAg
ICBpZiAodHlwZW9mIHN0eWxlQ2xhc3NOYW1lcyA9PT0gInN0cmluZyIpCisgICAgICAgICAgICBz
dHlsZUNsYXNzTmFtZXMgPSBbc3R5bGVDbGFzc05hbWVzXTsKIAotICAgICAgICBjb25zdCBjb250
ZW50QnJvd3NlckVsZW1lbnQgPSBudWxsOwotICAgICAgICBjb25zdCBkaXNhYmxlRmluZEJhbm5l
ciA9IGZhbHNlOwotICAgICAgICB0aGlzLl9jb250ZW50QnJvd3NlciA9IG5ldyBXSS5Db250ZW50
QnJvd3Nlcihjb250ZW50QnJvd3NlckVsZW1lbnQsIHRoaXMsIGRpc2FibGVCYWNrRm9yd2FyZCwg
ZGlzYWJsZUZpbmRCYW5uZXIsIGZsZXhpYmxlTmF2aWdhdGlvbkl0ZW0pOworICAgICAgICBzdHls
ZUNsYXNzTmFtZXMucHVzaCgiY29udGVudC1icm93c2VyIik7CisKKyAgICAgICAgdmFyIGNvbnRl
bnRCcm93c2VyID0gbmV3IFdJLkNvbnRlbnRCcm93c2VyKG51bGwsIG51bGwsIGRpc2FibGVCYWNr
Rm9yd2FyZCwgZmFsc2UsIGZsZXhpYmxlTmF2aWdhdGlvbkl0ZW0pOworCisgICAgICAgIHN1cGVy
KGlkZW50aWZpZXIsIHN0eWxlQ2xhc3NOYW1lcywgdGFiQmFySXRlbSwgbmF2aWdhdGlvblNpZGVi
YXJQYW5lbENvbnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzKTsKKwor
ICAgICAgICB0aGlzLl9jb250ZW50QnJvd3NlciA9IGNvbnRlbnRCcm93c2VyOworICAgICAgICB0
aGlzLl9jb250ZW50QnJvd3Nlci5kZWxlZ2F0ZSA9IHRoaXM7CiAKICAgICAgICAgdGhpcy5faWdu
b3JlTmF2aWdhdGlvblNpZGViYXJQYW5lbENvbGxhcHNlZEV2ZW50ID0gZmFsc2U7CiAgICAgICAg
IHRoaXMuX2lnbm9yZURldGFpbHNTaWRlYmFyUGFuZWxDb2xsYXBzZWRFdmVudCA9IGZhbHNlOwog
ICAgICAgICB0aGlzLl9pZ25vcmVEZXRhaWxzU2lkZWJhclBhbmVsU2VsZWN0ZWRFdmVudCA9IGZh
bHNlOwogCi0gICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZERldGFpbHNTaWRlYmFyUGFuZWxTZXR0
aW5nID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRlbnRpZmllciArICItbGFzdC1zZWxlY3RlZC1k
ZXRhaWxzLXNpZGViYXItcGFuZWwiLCBudWxsKTsKKyAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVk
RGV0YWlsc1NpZGViYXJQYW5lbFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhpZGVudGlmaWVyICsg
Ii1sYXN0LXNlbGVjdGVkLWRldGFpbHMtc2lkZWJhci1wYW5lbCIsIG51bGwpOwogCiAgICAgICAg
IHRoaXMuX2NvbnRlbnRCcm93c2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29udGVudEJyb3dzZXIu
RXZlbnQuQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcy5fY29udGVudEJy
b3dzZXJDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAg
dGhpcy5fY29udGVudEJyb3dzZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db250ZW50QnJvd3Nlci5F
dmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRCcm93c2VyQ3Vy
cmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlzKTsKQEAgLTQ2LDcgKzUyLDcgQEAgV0kuQ29u
dGVudEJyb3dzZXJUYWJDb250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRCcm93c2VyVGFiQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS4KICAgICAgICAgLy8gRXhwbGljaXRseSB1cGRhdGUgdGhlIHBhdGgg
Zm9yIHRoZSBuYXZpZ2F0aW9uIGJhciB0byBwcmV2ZW50IGl0IGZyb20gc2hvd2luZyB1cCBhcyBi
bGFuay4KICAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIudXBkYXRlSGllcmFyY2hpY2FsUGF0
aEZvckN1cnJlbnRDb250ZW50VmlldygpOwogCi0gICAgICAgIGlmICh0aGlzLl9uYXZpZ2F0aW9u
U2lkZWJhclBhbmVsQ29uc3RydWN0b3IpIHsKKyAgICAgICAgaWYgKG5hdmlnYXRpb25TaWRlYmFy
UGFuZWxDb25zdHJ1Y3RvcikgewogICAgICAgICAgICAgbGV0IHNob3dUb29sVGlwID0gV0kuVUlT
dHJpbmcoIlNob3cgdGhlIG5hdmlnYXRpb24gc2lkZWJhciAoJXMpIikuZm9ybWF0KFdJLm5hdmln
YXRpb25TaWRlYmFyS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CiAgICAgICAgICAgICBs
ZXQgaGlkZVRvb2xUaXAgPSBXSS5VSVN0cmluZygiSGlkZSB0aGUgbmF2aWdhdGlvbiBzaWRlYmFy
ICglcykiKS5mb3JtYXQoV0kubmF2aWdhdGlvblNpZGViYXJLZXlib2FyZFNob3J0Y3V0LmRpc3Bs
YXlOYW1lKTsKICAgICAgICAgICAgIGxldCBpbWFnZSA9IFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0
aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwgPyAiSW1hZ2VzL1RvZ2dsZVJpZ2h0U2lk
ZWJhci5zdmciIDogIkltYWdlcy9Ub2dnbGVMZWZ0U2lkZWJhci5zdmciOwpAQCAtNjIsNyArNjgs
NyBAQCBXSS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudEJyb3dz
ZXJUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLgogICAgICAgICAgICAgV0kubmF2aWdhdGlvblNp
ZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5TaWRlYmFyLkV2ZW50LkNvbGxhcHNlZFN0YXRlRGlk
Q2hhbmdlLCB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhckNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlLCB0
aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLl9kZXRhaWxzU2lkZWJhclBhbmVs
Q29uc3RydWN0b3JzLmxlbmd0aCkgeworICAgICAgICBpZiAoZGV0YWlsc1NpZGViYXJQYW5lbENv
bnN0cnVjdG9ycyAmJiBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLmxlbmd0aCkgewog
ICAgICAgICAgICAgbGV0IHNob3dUb29sVGlwID0gV0kuVUlTdHJpbmcoIlNob3cgdGhlIGRldGFp
bHMgc2lkZWJhciAoJXMpIikuZm9ybWF0KFdJLmRldGFpbHNTaWRlYmFyS2V5Ym9hcmRTaG9ydGN1
dC5kaXNwbGF5TmFtZSk7CiAgICAgICAgICAgICBsZXQgaGlkZVRvb2xUaXAgPSBXSS5VSVN0cmlu
ZygiSGlkZSB0aGUgZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQoV0kuZGV0YWlsc1NpZGVi
YXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKICAgICAgICAgICAgIGxldCBpbWFnZSA9
IFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwg
PyAiSW1hZ2VzL1RvZ2dsZUxlZnRTaWRlYmFyLnN2ZyIgOiAiSW1hZ2VzL1RvZ2dsZVJpZ2h0U2lk
ZWJhci5zdmciOwpAQCAtODAsOCArODYsNiBAQCBXSS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRW
aWV3ID0gY2xhc3MgQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLgogICAg
ICAgICAgICAgV0kuZGV0YWlsc1NpZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5TaWRlYmFyLkV2
ZW50LlNpZGViYXJQYW5lbFNlbGVjdGVkLCB0aGlzLl9kZXRhaWxzU2lkZWJhclBhbmVsU2VsZWN0
ZWQsIHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImNvbnRlbnQtYnJvd3NlciIpOwotCiAgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9j
b250ZW50QnJvd3Nlcik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uY3NzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmNzcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YTIzOWExNjZiMmRjZTBmOTZhMGUyZTA1YzAzNmFmMTgxMWIyMjM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udHJvbFRvb2xiYXJJdGVtLmNzcwpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisudG9vbGJhciAuaXRlbS5jb250cm9sIHsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAg
IGp1c3RpZnktY29udGVudDogY2VudGVyOworCisgICAgcGFkZGluZzogMCAycHg7CisKKyAgICBv
cGFjaXR5OiAwLjU7Cit9CisKKy50b29sYmFyLnNtYWxsLXNpemUgLml0ZW0uY29udHJvbCB7Cisg
ICAgcGFkZGluZzogMnB4OworfQorCisudG9vbGJhciAuaXRlbS5jb250cm9sOmhvdmVyIHsKKyAg
ICBvcGFjaXR5OiAwLjc1OworfQorCisudG9vbGJhciAuaXRlbS5jb250cm9sOmFjdGl2ZSB7Cisg
ICAgb3BhY2l0eTogMTsKK30KKworLnRvb2xiYXIgLml0ZW0uY29udHJvbCA+IC5nbHlwaCB7Cisg
ICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAxNnB4OworCisgICAgYmFja2dyb3VuZC1yZXBl
YXQ6IG5vLXJlcGVhdDsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwor
fQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuaXRlbS5jb250cm9sIHsKKyAgICBv
cGFjaXR5OiAwLjM1OworfQorCisudG9vbGJhciAuaXRlbS5jb250cm9sLmRpc2FibGVkIHsKKyAg
ICBvcGFjaXR5OiAwLjM1ICFpbXBvcnRhbnQ7Cit9CisKK2JvZHkud2luZG93LWluYWN0aXZlIC50
b29sYmFyIC5pdGVtLmNvbnRyb2wuZGlzYWJsZWQgeworICAgIG9wYWNpdHk6IDAuMiAhaW1wb3J0
YW50OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjNDI4Yzhh
YjEzZDJhNWVkY2IxZDBkMTgxZTRiOWFlZGRiNzhiOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0u
anMKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkNvbnRyb2xUb29sYmFy
SXRlbSA9IGNsYXNzIENvbnRyb2xUb29sYmFySXRlbSBleHRlbmRzIFdJLkJ1dHRvbk5hdmlnYXRp
b25JdGVtCit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIGlt
YWdlV2lkdGgsIGltYWdlSGVpZ2h0KQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwg
dG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBmYWxzZSk7CisgICAgfQor
CisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBnZXQgYWRkaXRpb25hbENsYXNzTmFtZXMoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFsiY29udHJvbCJdOworICAgIH0KK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZp
ZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZUNvbnRlbnRWaWV3LmNzcwppbmRleCBjODllOWQwZjM5ZjFlYjFiZjljMmM2YjE5M2VmZjQ0ZTQz
Yzg4NmU3Li40MTNkMDZkMjNkMWIyMTViODZkM2M0YmU1ZTExYzk1MDQ4NTI3ZTQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29u
dGVudFZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVDb250ZW50Vmlldy5jc3MKQEAgLTU5LDcgKzU5LDcgQEAgYm9keVtkaXI9cnRs
XSAuY29udGVudC12aWV3LmRvbS10cmVlIC50cmVlLW91dGxpbmUuZG9tIGxpIC5zdGF0dXMtaW1h
Z2UgewogICAgIGZpbGw6IHZhcigtLWJyZWFrcG9pbnQtY29sb3IpOwogfQogCi1ib2R5Om5vdCgu
d2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLmNvbnRlbnQtdmlldy5k
b20tdHJlZSAudHJlZS1vdXRsaW5lLmRvbTpmb2N1cyBsaTptYXRjaGVzKC5zZWxlY3RlZCwgLmhv
dmVyZWQpIC5zdGF0dXMtaW1hZ2UuYnJlYWtwb2ludCB7Citib2R5Om5vdCgud2luZG93LWluYWN0
aXZlKSAuY29udGVudC12aWV3LmRvbS10cmVlIC50cmVlLW91dGxpbmUuZG9tOmZvY3VzIGxpOm1h
dGNoZXMoLnNlbGVjdGVkLCAuaG92ZXJlZCkgLnN0YXR1cy1pbWFnZS5icmVha3BvaW50IHsKICAg
ICBzdHJva2U6IHZhcigtLXNlbGVjdGVkLWZvcmVncm91bmQtY29sb3IpOwogfQogCkBAIC03Niw3
ICs3Niw3IEBAIGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0
aXZlKSAuY29udGVudC12aWV3LmRvbS10cmVlIC50cmVlCiAgICAgc3Ryb2tlOiB2YXIoLS1icmVh
a3BvaW50LWNvbG9yKTsKIH0KIAotYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1k
b2NrZWQtaW5hY3RpdmUpIC5jb250ZW50LXZpZXcuZG9tLXRyZWUgLnRyZWUtb3V0bGluZS5kb206
Zm9jdXMgbGk6bWF0Y2hlcyguc2VsZWN0ZWQsIC5ob3ZlcmVkKSAuc3RhdHVzLWltYWdlLmJyZWFr
cG9pbnQuc3VidHJlZSB7Citib2R5Om5vdCgud2luZG93LWluYWN0aXZlKSAuY29udGVudC12aWV3
LmRvbS10cmVlIC50cmVlLW91dGxpbmUuZG9tOmZvY3VzIGxpOm1hdGNoZXMoLnNlbGVjdGVkLCAu
aG92ZXJlZCkgLnN0YXR1cy1pbWFnZS5icmVha3BvaW50LnN1YnRyZWUgewogICAgIHN0cm9rZTog
dmFyKC0tc2VsZWN0ZWQtZm9yZWdyb3VuZC1jb2xvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZp
ZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJv
YXJkQ29udGFpbmVyVmlldy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNjYmE3ZmI4ZTg1ODcxZTgyZDhhYjc5
ZDQzODA5NzFmODhkY2RkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuY3NzCkBAIC0wLDAg
KzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5l
ciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIG1hcmdpbjogNHB4OworICAgIGhlaWdo
dDogMjJweDsKKworICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKyAgICBvdmVyZmxvdzogaGlkZGVu
OworfQorCitib2R5Om1hdGNoZXMoLnBhZ2UsIC53ZWItcGFnZSkgLnRvb2xiYXIgLmRhc2hib2Fy
ZC1jb250YWluZXIgeworICAgIHdpZHRoOiAzNnZ3OworICAgIG1pbi13aWR0aDogMzUwcHg7Cit9
CisKK2JvZHk6bm90KC5wYWdlLCAud2ViLXBhZ2UpIC50b29sYmFyIC5kYXNoYm9hcmQtY29udGFp
bmVyIHsKKyAgICB3aWR0aDogMjV2dzsKKyAgICBtaW4td2lkdGg6IDE3NXB4OworfQorCisudG9v
bGJhci5jb2xsYXBzZWQgLmRhc2hib2FyZC1jb250YWluZXIgeworICAgIG1pbi13aWR0aDogMTc1
cHggIWltcG9ydGFudDsKKyAgICB3aWR0aDogMTc1cHggIWltcG9ydGFudDsKK30KKworLyogRGVm
YXVsdCBzdHlsZXMgZm9yIGRhc2hib2FyZHMgKi8KKy50b29sYmFyIC5kYXNoYm9hcmQgeworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxl
ZnQ6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiAxMHB4Owor
ICAgIC13ZWJraXQtcGFkZGluZy1lbmQ6IDVweDsKKyAgICBhbmltYXRpb24tZHVyYXRpb246IDAu
NHM7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQudmlzaWJsZSB7CisgICAgei1pbmRleDogMTsg
LyogRXN0YWJsaXNoIGEgc3RhY2tpbmcgY29udGV4dC4gKi8KK30KKworLnRvb2xiYXIgLmRhc2hi
b2FyZDpub3QoLnZpc2libGUpIHsKKyAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cit9CisK
Ky50b29sYmFyIC5kYXNoYm9hcmQuc2xpZGUtb3V0LXVwIHsKKyAgICBhbmltYXRpb24tbmFtZTog
c2xpZGUtdG9wLWVkZ2U7CisgICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogcmV2ZXJzZTsKK30KKwor
LnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1vdXQtZG93biB7CisgICAgYW5pbWF0aW9uLW5hbWU6
IHNsaWRlLWJvdHRvbS1lZGdlOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLnNsaWRlLWluLXVw
IHsKKyAgICBhbmltYXRpb24tbmFtZTogc2xpZGUtYm90dG9tLWVkZ2U7CisgICAgYW5pbWF0aW9u
LWRpcmVjdGlvbjogcmV2ZXJzZTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1pbi1k
b3duIHsKKyAgICBhbmltYXRpb24tbmFtZTogc2xpZGUtdG9wLWVkZ2U7Cit9CisKK0BrZXlmcmFt
ZXMgc2xpZGUtdG9wLWVkZ2UgeworICAgIGZyb20geworICAgICAgICB0cmFuc2Zvcm06IHRyYW5z
bGF0ZVkoLTMwcHgpOworICAgIH0KKyAgICB0byB7CisgICAgICAgIHRyYW5zZm9ybTogdHJhbnNs
YXRlWSgwKTsKKyAgICB9Cit9CisKK0BrZXlmcmFtZXMgc2xpZGUtYm90dG9tLWVkZ2UgeworICAg
IGZyb20geworICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CisgICAgfQorICAgIHRv
IHsKKyAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwcHgpOworICAgIH0KK30KKworLmRh
c2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3cgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICB3aWR0aDogMTlweDsKKyAgICB0b3A6IDA7CisgICAgYm90dG9tOiAwOworICAgIHBh
ZGRpbmc6IDRweCAwOworICAgIG9wYWNpdHk6IDAuNjsKKworICAgIHotaW5kZXg6IDI7CisgICAg
YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICBiYWNrZ3JvdW5kLXNpemU6IDhweDsK
KyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vSW1hZ2VzL1VwRG93bkFycm93cy5zdmcpOwor
CisgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eTsKKyAgICB0cmFuc2l0aW9uLWR1cmF0
aW9uOiAwLjJzOworICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7CisKKyAgICAtLWRh
c2hib2FyZC1hZHZhbmNlLWFycm93LW9mZnNldC1lbmQ6IDBweDsKK30KKworYm9keVtkaXI9bHRy
XSAuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdyB7CisgICAgcmlnaHQ6IHZhcigt
LWRhc2hib2FyZC1hZHZhbmNlLWFycm93LW9mZnNldC1lbmQpOworfQorCitib2R5W2Rpcj1ydGxd
IC5kYXNoYm9hcmQtY29udGFpbmVyIC5hZHZhbmNlLWFycm93IHsKKyAgICBsZWZ0OiB2YXIoLS1k
YXNoYm9hcmQtYWR2YW5jZS1hcnJvdy1vZmZzZXQtZW5kKTsKK30KKworLmRhc2hib2FyZC1jb250
YWluZXIgLmFkdmFuY2UtYXJyb3c6aG92ZXIgeworICAgIG9wYWNpdHk6IDAuODsKK30KKworLmRh
c2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3c6YWN0aXZlIHsKKyAgICBvcGFjaXR5OiAx
OworfQorCisuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdy5pbmFjdGl2ZSB7Cisg
ICAgb3BhY2l0eTogMDsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30KKworLmRhc2hib2Fy
ZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3cuYWR2YW5jZS1mb3J3YXJkIHsKKyAgICB0b3A6IDA7
CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDRweDsKK30KKworLmRhc2hib2FyZC1jb250
YWluZXIgLmFkdmFuY2UtYXJyb3cuYWR2YW5jZS1iYWNrd2FyZCB7CisgICAgYm90dG9tOiAwOwor
ICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSAtNHB4OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2Fy
ZENvbnRhaW5lclZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk3MzA3MDFjNmNhNDkwY2Q1MzEwNGI1YjJm
YzM0ODFhODliMjA4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuanMKQEAgLTAsMCArMSwy
ODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkRhc2hib2FyZENvbnRhaW5lclZpZXcgPSBjbGFz
cyBEYXNoYm9hcmRDb250YWluZXJWaWV3IGV4dGVuZHMgV0kuT2JqZWN0Cit7CisgICAgY29uc3Ry
dWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl90b29sYmFy
SXRlbSA9IG5ldyBXSS5OYXZpZ2F0aW9uSXRlbSgiZGFzaGJvYXJkLWNvbnRhaW5lciIsICJncm91
cCIsIFdJLlVJU3RyaW5nKCJBY3Rpdml0eSBWaWV3ZXIiKSk7CisKKyAgICAgICAgdGhpcy5fYWR2
YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQgPSB0aGlzLl90b29sYmFySXRlbS5lbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICAgICAgdGhpcy5fYWR2
YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImFkdmFuY2UtYXJyb3cgYWR2YW5j
ZS1mb3J3YXJkIjsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50ID0g
dGhpcy5fdG9vbGJhckl0ZW0uZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSk7CisgICAgICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVudC5j
bGFzc05hbWUgPSAiYWR2YW5jZS1hcnJvdyBhZHZhbmNlLWJhY2t3YXJkIjsKKworICAgICAgICB0
aGlzLl9hZHZhbmNlRm9yd2FyZEFycm93RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX2FkdmFuY2VGb3J3YXJkQXJyb3dDbGlja2VkLmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0NsaWNrZWQuYmluZCh0aGlzKSk7CisKKyAgICAg
ICAgLy8gUmVwcmVzZW50cyBjdXJyZW50bHkgb3BlbiBkYXNoYm9hcmRzLCB3aXRoIHRoZSBtb3N0
IHJlY2VudCBlbnRyaWVzIGFwcGVuZGVkIHRvIHRoZSBlbmQuCisgICAgICAgIHRoaXMuX2Rhc2hi
b2FyZFN0YWNrID0gW107CisgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IC0xOworCisgICAg
ICAgIHRoaXMuX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsKKyAgICB9CisKKyAgICAv
LyBQdWJsaWMKKworICAgIGdldCB0b29sYmFySXRlbSgpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fdG9vbGJhckl0ZW07CisgICAgfQorCisgICAgZ2V0IGN1cnJlbnREYXNoYm9hcmRWaWV3
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPT09IC0xKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZFN0YWNr
W3RoaXMuX2N1cnJlbnRJbmRleF07CisgICAgfQorCisgICAgc2hvd0Rhc2hib2FyZFZpZXdGb3JS
ZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciBk
YXNoYm9hcmRWaWV3ID0gdGhpcy5fZGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJl
cHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAgaWYgKCFkYXNoYm9hcmRWaWV3KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgaWYgKHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcg
PT09IGRhc2hib2FyZFZpZXcpCisgICAgICAgICAgICByZXR1cm4gZGFzaGJvYXJkVmlldzsKKwor
ICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9kYXNoYm9hcmRTdGFjay5pbmRleE9mKGRhc2hib2Fy
ZFZpZXcpOworICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkQXRJbmRleChpbmRleCk7CisgICAg
ICAgIHJldHVybiBkYXNoYm9hcmRWaWV3OworICAgIH0KKworICAgIGhpZGVEYXNoYm9hcmRWaWV3
Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICB2
YXIgb25seVJldHVybkV4aXN0aW5nVmlld3MgPSB0cnVlOworICAgICAgICB2YXIgZGFzaGJvYXJk
VmlldyA9IHRoaXMuX2Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRl
ZE9iamVjdCwgb25seVJldHVybkV4aXN0aW5nVmlld3MpOworCisgICAgICAgIGlmICh0aGlzLmN1
cnJlbnREYXNoYm9hcmRWaWV3ICE9PSBkYXNoYm9hcmRWaWV3KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2N1cnJlbnRJbmRleCA+IDApOworICAg
ICAgICB0aGlzLl9zaG93RGFzaGJvYXJkQXRJbmRleCh0aGlzLl9jdXJyZW50SW5kZXggLSAxKTsK
KyAgICB9CisKKyAgICBjbG9zZURhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXBy
ZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3
cyA9IHRydWU7CisgICAgICAgIHZhciBkYXNoYm9hcmRWaWV3ID0gdGhpcy5fZGFzaGJvYXJkVmll
d0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3Rp
bmdWaWV3cyk7CisgICAgICAgIGlmICghZGFzaGJvYXJkVmlldykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLl9jbG9zZURhc2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldyk7Cisg
ICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2FkdmFuY2VGb3J3YXJkQXJyb3dDbGlja2Vk
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRBdEluZGV4KHRoaXMuX2N1cnJl
bnRJbmRleCArIDEpOworICAgIH0KKworICAgIF9hZHZhbmNlQmFja3dhcmRBcnJvd0NsaWNrZWQo
KQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZEF0SW5kZXgodGhpcy5fY3VycmVu
dEluZGV4IC0gMSk7CisgICAgfQorCisgICAgX2Rpc21pc3NBZHZhbmNlQXJyb3dzKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2FkdmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50LmNsYXNzTGlzdC5hZGQo
V0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAg
ICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuRGFz
aGJvYXJkQ29udGFpbmVyVmlldy5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lKTsKKyAgICB9CisKKyAg
ICBfdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpCisgICAgeworICAgICAgICB2YXIgY2Fu
QWR2YW5jZUZvcndhcmQgPSB0aGlzLl9jdXJyZW50SW5kZXggPCB0aGlzLl9kYXNoYm9hcmRTdGFj
ay5sZW5ndGggLSAxOworICAgICAgICB2YXIgY2FuQWR2YW5jZUJhY2t3YXJkID0gdGhpcy5fY3Vy
cmVudEluZGV4ID4gMDsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQu
Y2xhc3NMaXN0LnRvZ2dsZShXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkluYWN0aXZlU3R5bGVD
bGFzc05hbWUsICFjYW5BZHZhbmNlRm9yd2FyZCk7CisgICAgICAgIHRoaXMuX2FkdmFuY2VCYWNr
d2FyZEFycm93RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdJLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSwgIWNhbkFkdmFuY2VCYWNrd2FyZCk7CisgICAgfQor
CisgICAgX2Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVj
dCwgb25seVJldHVybkV4aXN0aW5nVmlld3MpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dChyZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGFsbCBrbm93
biBkYXNoYm9hcmQgdmlld3MgYW5kIHNlZSBpZiBhbnkgYXJlIGZvciB0aGlzIG9iamVjdC4KKyAg
ICAgICAgZm9yICh2YXIgZGFzaGJvYXJkVmlldyBvZiB0aGlzLl9kYXNoYm9hcmRTdGFjaykgewor
ICAgICAgICAgICAgaWYgKGRhc2hib2FyZFZpZXcucmVwcmVzZW50ZWRPYmplY3QgPT09IHJlcHJl
c2VudGVkT2JqZWN0KQorICAgICAgICAgICAgICAgIHJldHVybiBkYXNoYm9hcmRWaWV3OworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKG9ubHlSZXR1cm5FeGlzdGluZ1ZpZXdzKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgLy8gTm8gZXhpc3RpbmcgY29udGVudCB2aWV3IGZv
dW5kLCBtYWtlIGEgbmV3IG9uZS4KKyAgICAgICAgZGFzaGJvYXJkVmlldyA9IFdJLkRhc2hib2Fy
ZFZpZXcuY3JlYXRlKHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICBjb25zb2xlLmFzc2Vy
dChkYXNoYm9hcmRWaWV3LCAiVW5rbm93biByZXByZXNlbnRlZE9iamVjdCIsIHJlcHJlc2VudGVk
T2JqZWN0KTsKKyAgICAgICAgaWYgKCFkYXNoYm9hcmRWaWV3KQorICAgICAgICAgICAgcmV0dXJu
IG51bGw7CisKKyAgICAgICAgdGhpcy5fZGFzaGJvYXJkU3RhY2sucHVzaChkYXNoYm9hcmRWaWV3
KTsKKyAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uZWxlbWVudC5hcHBlbmRDaGlsZChkYXNoYm9h
cmRWaWV3LmVsZW1lbnQpOworCisgICAgICAgIHJldHVybiBkYXNoYm9hcmRWaWV3OworICAgIH0K
KworICAgIF9zaG93RGFzaGJvYXJkQXRJbmRleChpbmRleCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPD0gdGhpcy5fZGFzaGJvYXJkU3RhY2subGVu
Z3RoIC0gMSk7CisKKyAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRJbmRleCA9PT0gaW5kZXgpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGFkdmFuY2VEaXJlY3Rpb24gPSBudWxs
OworICAgICAgICBpZiAodGhpcy5fY3VycmVudEluZGV4IDwgaW5kZXgpCisgICAgICAgICAgICBh
ZHZhbmNlRGlyZWN0aW9uID0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0
aW9uLkZvcndhcmQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkdmFuY2VEaXJlY3Rpb24g
PSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24uQmFja3dhcmQ7Cisg
ICAgICAgIHZhciBpbml0aWFsRGlyZWN0aW9uID0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5B
ZHZhbmNlRGlyZWN0aW9uLk5vbmU7CisgICAgICAgIHZhciBpc0luaXRpYWxEYXNoYm9hcmQgPSB0
aGlzLl9jdXJyZW50SW5kZXggPT09IC0xOworICAgICAgICBpZiAoIWlzSW5pdGlhbERhc2hib2Fy
ZCkKKyAgICAgICAgICAgIHRoaXMuX2hpZGVEYXNoYm9hcmRWaWV3KHRoaXMuY3VycmVudERhc2hi
b2FyZFZpZXcsIGFkdmFuY2VEaXJlY3Rpb24pOworCisgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRl
eCA9IGluZGV4OworICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkVmlldyh0aGlzLmN1cnJlbnRE
YXNoYm9hcmRWaWV3LCBpc0luaXRpYWxEYXNoYm9hcmQgPyBpbml0aWFsRGlyZWN0aW9uIDogYWR2
YW5jZURpcmVjdGlvbik7CisgICAgfQorCisgICAgX3Nob3dEYXNoYm9hcmRWaWV3KGRhc2hib2Fy
ZFZpZXcsIGFkdmFuY2VEaXJlY3Rpb24pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChk
YXNoYm9hcmRWaWV3IGluc3RhbmNlb2YgV0kuRGFzaGJvYXJkVmlldyk7CisKKyAgICAgICAgZGFz
aGJvYXJkVmlldy5zaG93bigpOworICAgICAgICB0aGlzLl9kaXNtaXNzQWR2YW5jZUFycm93cygp
OworCisgICAgICAgIHZhciBhbmltYXRpb25DbGFzcyA9IG51bGw7CisgICAgICAgIGlmIChhZHZh
bmNlRGlyZWN0aW9uID09PSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rp
b24uRm9yd2FyZCkKKyAgICAgICAgICAgIGFuaW1hdGlvbkNsYXNzID0gV0kuRGFzaGJvYXJkQ29u
dGFpbmVyVmlldy5Gb3J3YXJkSW5jb21pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZTsKKyAgICAg
ICAgaWYgKGFkdmFuY2VEaXJlY3Rpb24gPT09IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2
YW5jZURpcmVjdGlvbi5CYWNrd2FyZCkKKyAgICAgICAgICAgIGFuaW1hdGlvbkNsYXNzID0gV0ku
RGFzaGJvYXJkQ29udGFpbmVyVmlldy5CYWNrd2FyZEluY29taW5nRGFzaGJvYXJkU3R5bGVDbGFz
c05hbWU7CisKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXM7CisgICAgICAgIGRhc2hib2Fy
ZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuVmlz
aWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lKTsKKworICAgICAgICBmdW5jdGlvbiBhbmltYXRp
b25FbmRlZChldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZGFzaGJv
YXJkVmlldy5lbGVtZW50KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
ZGFzaGJvYXJkVmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIs
IGFuaW1hdGlvbkVuZGVkKTsKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKGFuaW1hdGlvbkNsYXNzKTsKKyAgICAgICAgICAgIGNvbnRhaW5lci5fdXBk
YXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFu
aW1hdGlvbkNsYXNzKSB7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NM
aXN0LmFkZChhbmltYXRpb25DbGFzcyk7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIiwgYW5pbWF0aW9uRW5kZWQpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRhc2hib2FyZFZpZXc7CisgICAgfQorCisgICAgX2hp
ZGVEYXNoYm9hcmRWaWV3KGRhc2hib2FyZFZpZXcsIGFkdmFuY2VEaXJlY3Rpb24sIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGFzaGJvYXJkVmlldyBpbnN0YW5jZW9m
IFdJLkRhc2hib2FyZFZpZXcpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmN1cnJlbnRE
YXNoYm9hcmRWaWV3ID09PSBkYXNoYm9hcmRWaWV3KTsKKworICAgICAgICBkYXNoYm9hcmRWaWV3
LmhpZGRlbigpOworICAgICAgICB0aGlzLl9kaXNtaXNzQWR2YW5jZUFycm93cygpOworCisgICAg
ICAgIHZhciBhbmltYXRpb25DbGFzcyA9IG51bGw7CisgICAgICAgIGlmIChhZHZhbmNlRGlyZWN0
aW9uID09PSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24uRm9yd2Fy
ZCkKKyAgICAgICAgICAgIGFuaW1hdGlvbkNsYXNzID0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmll
dy5Gb3J3YXJkT3V0Z29pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgaWYgKGFk
dmFuY2VEaXJlY3Rpb24gPT09IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVj
dGlvbi5CYWNrd2FyZCkKKyAgICAgICAgICAgIGFuaW1hdGlvbkNsYXNzID0gV0kuRGFzaGJvYXJk
Q29udGFpbmVyVmlldy5CYWNrd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWU7CisK
KyAgICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXM7CisKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0
aW9uRW5kZWQoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGRhc2hi
b2FyZFZpZXcuZWxlbWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGRhc2hib2FyZFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQi
LCBhbmltYXRpb25FbmRlZCk7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZShhbmltYXRpb25DbGFzcyk7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3
LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZpc2li
bGVEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICBjb250YWluZXIuX3VwZGF0
ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsKKworICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxs
YmFjayA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGFuaW1hdGlvbkNsYXNzKSB7CisgICAgICAgICAgICBkYXNoYm9h
cmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChhbmltYXRpb25DbGFzcyk7CisgICAgICAgICAg
ICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIiwg
YW5pbWF0aW9uRW5kZWQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGRhc2hib2FyZFZp
ZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuVmlz
aWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICB9CisKKyAgICBfY2xvc2VEYXNoYm9h
cmRWaWV3KGRhc2hib2FyZFZpZXcpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChkYXNo
Ym9hcmRWaWV3IGluc3RhbmNlb2YgV0kuRGFzaGJvYXJkVmlldyk7CisKKyAgICAgICAgZnVuY3Rp
b24gZGlzc29jaWF0ZURhc2hib2FyZFZpZXcoKSB7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3
LmNsb3NlZCgpOworICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoZGFzaGJvYXJkVmlldy5lbGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciBpbmRleCA9IHRoaXMuX2Rhc2hib2FyZFN0YWNrLmluZGV4T2YoZGFzaGJvYXJkVmlldyk7
CisKKyAgICAgICAgaWYgKHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcgPT09IGRhc2hib2FyZFZp
ZXcpIHsKKyAgICAgICAgICAgIHZhciBkaXJlY3Rpb24gPSBXSS5EYXNoYm9hcmRDb250YWluZXJW
aWV3LkFkdmFuY2VEaXJlY3Rpb24uQmFja3dhcmQ7CisgICAgICAgICAgICB0aGlzLl9oaWRlRGFz
aGJvYXJkVmlldyh0aGlzLmN1cnJlbnREYXNoYm9hcmRWaWV3LCBkaXJlY3Rpb24sIGRpc3NvY2lh
dGVEYXNoYm9hcmRWaWV3KTsKKyAgICAgICAgICAgIHRoaXMuX2Rhc2hib2FyZFN0YWNrLnNwbGlj
ZShpbmRleCwgMSk7CisgICAgICAgICAgICAtLXRoaXMuX2N1cnJlbnRJbmRleDsKKyAgICAgICAg
ICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRWaWV3KHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcsIGRp
cmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlz
Ll9kYXNoYm9hcmRTdGFjay5zcGxpY2UoaW5kZXgsIDEpOworICAgICAgICBpZiAodGhpcy5fY3Vy
cmVudEluZGV4ID4gaW5kZXgpCisgICAgICAgICAgICAtLXRoaXMuX2N1cnJlbnRJbmRleDsKKyAg
ICAgICAgZGlzc29jaWF0ZURhc2hib2FyZFZpZXcuY2FsbCh0aGlzKTsKKworICAgICAgICB0aGlz
Ll91cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5KCk7CisgICAgfQorfTsKKworV0kuRGFzaGJv
YXJkQ29udGFpbmVyVmlldy5WaXNpYmxlRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAidmlzaWJs
ZSI7CitXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkluYWN0aXZlU3R5bGVDbGFzc05hbWUgPSAi
aW5hY3RpdmUiOworCitXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24g
PSB7CisgICAgRm9yd2FyZDogU3ltYm9sKCJkYXNoYm9hcmQtY29udGFpbmVyLXZpZXctYWR2YW5j
ZS1kaXJlY3Rpb24tZm9yd2FyZCIpLAorICAgIEJhY2t3YXJkOiBTeW1ib2woImRhc2hib2FyZC1j
b250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1iYWNrd2FyZCIpLAorICAgIE5vbmU6IFN5
bWJvbCgiZGFzaGJvYXJkLWNvbnRhaW5lci12aWV3LWFkdmFuY2UtZGlyZWN0aW9uLW5vbmUiKQor
fTsKKworV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5Gb3J3YXJkSW5jb21pbmdEYXNoYm9hcmRT
dHlsZUNsYXNzTmFtZSA9ICJzbGlkZS1pbi1kb3duIjsKK1dJLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuQmFja3dhcmRJbmNvbWluZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLWluLXVw
IjsKK1dJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuRm9yd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5
bGVDbGFzc05hbWUgPSAic2xpZGUtb3V0LWRvd24iOworV0kuRGFzaGJvYXJkQ29udGFpbmVyVmll
dy5CYWNrd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtb3V0LXVw
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0Rhc2hib2FyZFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EYXNoYm9hcmRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmNDVjYmEyY2MzYWZjMDc0YmZiZTY2
NGMyOTU0ZWU2NWQ1ZTJiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmpzCkBAIC0wLDAgKzEsODIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dJLkRhc2hib2FyZFZpZXcgPSBjbGFzcyBEYXNoYm9hcmRWaWV3
IGV4dGVuZHMgV0kuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3Qs
IGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsK
KworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0g
cmVwcmVzZW50ZWRPYmplY3Q7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImRhc2hib2FyZCIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoaWRlbnRp
Zmllcik7CisgICAgfQorCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgY3JlYXRlKHJlcHJl
c2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRP
YmplY3QpOworCisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkRl
ZmF1bHREYXNoYm9hcmQpCisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLkRlZmF1bHREYXNoYm9h
cmRWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXSS5EZWJ1Z2dlckRhc2hib2FyZCkKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgV0kuRGVidWdnZXJEYXNoYm9hcmRWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAg
ICB0aHJvdyAiQ2FuJ3QgbWFrZSBhIERhc2hib2FyZFZpZXcgZm9yIGFuIHVua25vd24gcmVwcmVz
ZW50ZWRPYmplY3QuIjsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBlbGVtZW50
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OworICAgIH0KKworICAgIGdl
dCByZXByZXNlbnRlZE9iamVjdCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVwcmVz
ZW50ZWRPYmplY3Q7CisgICAgfQorCisgICAgc2hvd24oKQorICAgIHsKKyAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBoaWRkZW4oKQorICAgIHsKKyAg
ICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBjbG9zZWQo
KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGVidWdnZXJEYXNoYm9hcmRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y3YTY4
YTA2NGVkMWNmZjY4NDlkZWNkNmJjMWIwMmYxNDEyNDg1NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJk
Vmlldy5jc3MKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy50b29sYmFyIC5k
YXNoYm9hcmQuZGVidWdnZXIgeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleC13cmFwOiBu
b3dyYXA7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgYWxpZ24taXRlbXM6IGNl
bnRlcjsKKyAgICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDVweDsKKyAgICAtd2Via2l0LXBhZGRp
bmctZW5kOiAxMnB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBjb2xvcjogaHNsKDAs
IDAlLCAyMyUpOworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLm1lc3NhZ2UgeworICAgIGZv
bnQtd2VpZ2h0OiBib2xkOworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyIC5uYXZpZ2F0aW9uLWJh
ciB7CisgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiA0cHg7CisgICAgYm9yZGVyOiAwOworfQorCisu
dG9vbGJhcjpub3QoLnNtYWxsLXNpemUpIC5kYXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24t
YmFyIHsKKyAgICBtYXJnaW4tdG9wOiAxcHg7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgLm5h
dmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbiB7CisgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKKyAg
ICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgY3Vyc29yOiBwb2ludGVyOwor
ICAgIHBhZGRpbmc6IDA7CisgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CisgICAgYmFja2dy
b3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50OworICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9y
dGFudDsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0
dG9uID4gLmdseXBoIHsKKyAgICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAg
YW5pbWF0aW9uLW5hbWU6IHB1bHNlLXBhdXNlLWJ1dHRvbjsKKyAgICBhbmltYXRpb24tZHVyYXRp
b246IDFzOworICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OworICAgIGFu
aW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlOworICAgIGFuaW1hdGlvbi1kaXJlY3Rp
b246IGFsdGVybmF0ZTsKKyAgICBjb2xvcjogaHNsKDIwNywgNDYlLCA1OSUpOworfQorCitib2R5
LndpbmRvdy1pbmFjdGl2ZSAuZGFzaGJvYXJkLmRlYnVnZ2VyIC5uYXZpZ2F0aW9uLWJhciAuaXRl
bS5idXR0b24gPiAuZ2x5cGggeworICAgIGFuaW1hdGlvbi1uYW1lOiBub25lOworfQorCisuZGFz
aGJvYXJkLmRlYnVnZ2VyIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5kZWJ1Z2dlci1kYXNoYm9hcmQt
cGF1c2UuYWN0aXZhdGVkIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTogdmFyKC0tZ2x5
cGgtY29sb3ItYWN0aXZlKTsKK30KKworQGtleWZyYW1lcyBwdWxzZS1wYXVzZS1idXR0b24gewor
ICAgIGZyb20geyBvcGFjaXR5OiAwLjc7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH0KKyAgICB0byB7
IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogc2NhbGUoMS4xKTsgfQorfQorCisuZGFzaGJvYXJkLmRl
YnVnZ2VyID4gLmRpdmlkZXIgeworICAgIHdpZHRoOiAxcHg7CisgICAgaGVpZ2h0OiAxMDAlOwor
CisgICAgbWFyZ2luOiAwIDEwcHg7CisKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3Jh
ZGllbnQoaHNsKDAsIDAlLCA3NCUpLCBoc2woMCwgMCUsIDc0JSkpOworICAgIGJhY2tncm91bmQt
c2l6ZTogMTAwJSA2NiU7CisgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICBi
YWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiBk
aXYgeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICBm
bGV4OiBub25lOworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIHsKKyAgICBv
dmVyZmxvdzogaGlkZGVuOworICAgIGZsZXg6IGluaXRpYWw7Cit9CisKKy5kYXNoYm9hcmQuZGVi
dWdnZXIgPiAubG9jYXRpb24gPiAqIHsKKyAgICBmbGV4OiBub25lOworfQorCisuZGFzaGJvYXJk
LmRlYnVnZ2VyID4gLmxvY2F0aW9uID4gOmZpcnN0LWNoaWxkIHsKKyAgICBhbGlnbi1zZWxmOiBj
ZW50ZXI7CisgICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAxNnB4OworfQorCisvKiBBZGQg
c3BhY2luZyBiZXR3ZWVuIHRoZSBlbGxpcHNpcydkIGxvY2F0aW9uIGFuZCB0aGUgdXAvZG93biBh
cnJvd3MuICovCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uID4gOmxhc3QtY2hpbGQg
eworICAgIC13ZWJraXQtbWFyZ2luLWVuZDogNXB4OworfQorCisudG9vbGJhcjpub3QoLnNtYWxs
LXNpemUpIC5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gOm5vdCg6Zmlyc3QtY2hpbGQp
IHsKKyAgICBtYXJnaW4tdG9wOiAxcHg7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9j
YXRpb24gaW1nLmljb24geworICAgIHdpZHRoOiAxNnB4OworICAgIGhlaWdodDogMTZweDsKK30K
KworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiA6bWF0Y2hlcyguZnVuY3Rpb24taWNv
biwgLmV2ZW50LWxpc3RlbmVyLWljb24pIHsKKyAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDVweDsK
K30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiAuZnVuY3Rpb24tbmFtZSB7Cisg
ICAgY29sb3I6IGhzbCgwLCAwJSwgMTElKTsKKyAgICBwYWRkaW5nLWJvdHRvbTogMXB4OworfQor
CisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIC5mdW5jdGlvbi1uYW1lOjphZnRlciB7
CisgICAgY29udGVudDogIlwwMEEwXDIwMTRcMDBBMCI7IC8qICZuYnNwOyZtZGFzaDsmbmJzcDsg
Ki87Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gLmdvLXRvLWxpbmsgewor
ICAgIHBhZGRpbmctYm90dG9tOiAxcHg7CisgICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29s
b3I6IGhzbCgwLCAwJSwgNjYlKTsKKworICAgIGZsZXg6IGluaXRpYWw7CisgICAgdGV4dC1vdmVy
ZmxvdzogZWxsaXBzaXM7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKK30KKworLnRvb2xiYXIuY29s
bGFwc2VkIC5kYXNoYm9hcmQuZGVidWdnZXIgPiA6bm90KC5tZXNzYWdlLCAubmF2aWdhdGlvbi1i
YXIpIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9vbGJhci5zbWFsbC1zaXplIC5kYXNo
Ym9hcmQuZGVidWdnZXIgPiAubWVzc2FnZSB7CisgICAgZm9udC1zaXplOiAxMHB4OworfQorCisu
dG9vbGJhci5zbWFsbC1zaXplIC5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gaW1nLmlj
b24sCisudG9vbGJhci5zbWFsbC1zaXplIC5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24g
PiA6Zmlyc3QtY2hpbGQgeworICAgIHdpZHRoOiAxNHB4OworICAgIGhlaWdodDogMTRweDsKK30K
KworQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgeworICAgIC50b29sYmFyIC5k
YXNoYm9hcmQuZGVidWdnZXIgeworICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7Cisg
ICAgfQorCisgICAgLmRhc2hib2FyZC5kZWJ1Z2dlciAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0
dG9uID4gLmdseXBoIHsKKyAgICAgICAgY29sb3I6IHZhcigtLWdseXBoLWNvbG9yLWFjdGl2ZSk7
CisgICAgfQorCisgICAgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiAuZnVuY3Rpb24t
bmFtZSB7CisgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLWFjdGl2ZSk7CisgICAgfQor
CisgICAgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiAuZ28tdG8tbGluayB7CisgICAg
ICAgIHBhZGRpbmctYm90dG9tOiAxcHg7CisgICAgICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9u
LWNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLXNlY29uZGFyeSk7CisgICAgfQorCisgICAgLmRhc2hi
b2FyZC5kZWJ1Z2dlciA+IC5kaXZpZGVyIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGlu
ZWFyLWdyYWRpZW50KHZhcigtLXRleHQtY29sb3ItdGVydGlhcnkpLCB2YXIoLS10ZXh0LWNvbG9y
LXRlcnRpYXJ5KSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIxMDMyNjc3OWRmMzQzZTE4NWJkY2NkY2M2Y2UzNjI3NGU3MmEwYTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanMKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1dJLkRlYnVnZ2VyRGFzaGJvYXJkVmlldyA9IGNsYXNzIERlYnVnZ2VyRGFzaGJvYXJk
VmlldyBleHRlbmRzIFdJLkRhc2hib2FyZFZpZXcKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNl
bnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0LCAiZGVi
dWdnZXIiKTsKKworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9y
ZWJ1aWxkTG9jYXRpb24sIHRoaXMpOworCisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBu
ZXcgV0kuTmF2aWdhdGlvbkJhcjsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRvb2x0aXAgPSBXSS5V
SVN0cmluZygiQ29udGludWUgc2NyaXB0IGV4ZWN1dGlvbiAoJXMgb3IgJXMpIikuZm9ybWF0KFdJ
LnBhdXNlT3JSZXN1bWVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lLCBXSS5wYXVzZU9yUmVz
dW1lQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgICAgIHRoaXMu
X2RlYnVnZ2VyUmVzdW1lQnV0dG9uSXRlbSA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRp
b25JdGVtKCJkZWJ1Z2dlci1kYXNoYm9hcmQtcGF1c2UiLCB0b29sdGlwLCB0b29sdGlwLCAiSW1h
Z2VzL1Jlc3VtZS5zdmciLCAxNSwgMTUpOworICAgICAgICB0aGlzLl9kZWJ1Z2dlclJlc3VtZUJ1
dHRvbkl0ZW0uYWN0aXZhdGVkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJSZXN1bWVC
dXR0b25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQu
Q2xpY2tlZCwgdGhpcy5fcmVzdW1lQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CisgICAgICAgIHRoaXMu
X25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fZGVidWdnZXJSZXN1bWVCdXR0
b25JdGVtKTsKKworICAgICAgICB2YXIgbWVzc2FnZSA9IHRoaXMuX21lc3NhZ2VFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIG1lc3NhZ2UuY2xhc3NMaXN0
LmFkZCgibWVzc2FnZSIpOworICAgICAgICBtZXNzYWdlLnRpdGxlID0gbWVzc2FnZS50ZXh0Q29u
dGVudCA9IFdJLlVJU3RyaW5nKCJEZWJ1Z2dlciBQYXVzZWQiKTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKG1lc3NhZ2UpOworCisgICAgICAgIHZhciBkaXZpZGVyRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBkaXZpZGVyRWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJkaXZpZGVyIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZChkaXZpZGVyRWxlbWVudCk7CisKKyAgICAgICAgdmFyIGxvY2F0aW9uRWxlbWVudCA9IHRoaXMu
X2xvY2F0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAg
ICBsb2NhdGlvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibG9jYXRpb24iKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKGxvY2F0aW9uRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5f
cmVidWlsZExvY2F0aW9uKCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBjbG9zZWQo
KQorICAgIHsKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
bnVsbCwgbnVsbCwgdGhpcyk7CisKKyAgICAgICAgc3VwZXIuY2xvc2VkKCk7CisgICAgfQorCisg
ICAgLy8gUHJpdmF0ZQorCisgICAgX3JlYnVpbGRMb2NhdGlvbigpCisgICAgeworICAgICAgICBp
ZiAoIVdJLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5fbG9jYXRpb25FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisK
KyAgICAgICAgdmFyIGNhbGxGcmFtZSA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJh
bWU7CisgICAgICAgIHZhciBmdW5jdGlvbk5hbWUgPSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lIHx8
IFdJLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1bmN0aW9uKSIpOworCisgICAgICAgIHZhciBpY29u
Q2xhc3NOYW1lID0gV0kuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkZ1bmN0aW9uSWNvblN0eWxlQ2xh
c3NOYW1lOworCisgICAgICAgIC8vIFRoaXMgaXMgbW9yZSB0aGFuIGxpa2VseSBhbiBldmVudCBs
aXN0ZW5lciBmdW5jdGlvbiB3aXRoIGFuICJvbiIgcHJlZml4IGFuZCBpdCBpcworICAgICAgICAv
LyBhcyBsb25nIG9yIGxvbmdlciB0aGFuIHRoZSBzaG9ydGVzdCBldmVudCBsaXN0ZW5lciBuYW1l
IC0tICJvbmN1dCIuCisgICAgICAgIGlmIChjYWxsRnJhbWUuZnVuY3Rpb25OYW1lICYmIGNhbGxG
cmFtZS5mdW5jdGlvbk5hbWUuc3RhcnRzV2l0aCgib24iKSAmJiBjYWxsRnJhbWUuZnVuY3Rpb25O
YW1lLmxlbmd0aCA+PSA1KQorICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdJLkRlYnVnZ2Vy
RGFzaGJvYXJkVmlldy5FdmVudExpc3RlbmVySWNvblN0eWxlQ2xhc3NOYW1lOworCisgICAgICAg
IHZhciBpY29uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAg
ICBpY29uRWxlbWVudC5jbGFzc0xpc3QuYWRkKGljb25DbGFzc05hbWUpOworICAgICAgICB0aGlz
Ll9sb2NhdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoaWNvbkVsZW1lbnQpOworCisgICAgICAgIHZh
ciBpY29uSW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAg
ICAgIGljb25JbWFnZUVsZW1lbnQuY2xhc3NOYW1lID0gImljb24iOworICAgICAgICBpY29uRWxl
bWVudC5hcHBlbmRDaGlsZChpY29uSW1hZ2VFbGVtZW50KTsKKworICAgICAgICB2YXIgbmFtZUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgbmFtZUVsZW1l
bnQuYXBwZW5kKGZ1bmN0aW9uTmFtZSk7CisgICAgICAgIG5hbWVFbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImZ1bmN0aW9uLW5hbWUiKTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25FbGVtZW50LmFwcGVu
ZENoaWxkKG5hbWVFbGVtZW50KTsKKworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAg
ICAgICAgZG9udEZsb2F0OiB0cnVlLAorICAgICAgICAgICAgaWdub3JlTmV0d29ya1RhYjogdHJ1
ZSwKKyAgICAgICAgICAgIGlnbm9yZVNlYXJjaFRhYjogdHJ1ZSwKKyAgICAgICAgfTsKKyAgICAg
ICAgbGV0IGxpbmtFbGVtZW50ID0gV0kuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uTGluayhXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlvbiwgb3B0aW9u
cyk7CisgICAgICAgIHRoaXMuX2xvY2F0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChsaW5rRWxlbWVu
dCk7CisgICAgfQorCisgICAgX3Jlc3VtZUJ1dHRvbkNsaWNrZWQoKQorICAgIHsKKyAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgIH0KK307CisKK1dJLkRlYnVnZ2VyRGFz
aGJvYXJkVmlldy5GdW5jdGlvbkljb25TdHlsZUNsYXNzTmFtZSA9IFdJLkNhbGxGcmFtZVZpZXcu
RnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWU7CitXSS5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuRXZl
bnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZSA9IFdJLkNhbGxGcmFtZVZpZXcuRXZlbnRMaXN0
ZW5lckljb25TdHlsZUNsYXNzTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmNzcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmNz
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZTk0M2ZlYzhiODg3NjBmOGYxODNhMjJjMTk1YjlhNzAwMjdlZjMzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGVmYXVsdERhc2hib2FyZFZpZXcuY3NzCkBAIC0wLDAgKzEsMjExIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitib2R5Om1hdGNoZXMoLnBhZ2UsIC53ZWItcGFnZSkgLnRvb2xiYXIuY29sbGFwc2Vk
IC5kYXNoYm9hcmQuZGVmYXVsdCA+IDptYXRjaGVzKC5yZXNvdXJjZXNTaXplLCAudGltZSwgLmxv
Z3MpIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCitib2R5Om5vdCgucGFnZSwgLndlYi1wYWdl
KSAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiA6bWF0Y2hlcygucmVzb3VyY2VzQ291bnQs
IC5yZXNvdXJjZXNTaXplLCAudGltZSkgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b29s
YmFyIC5kYXNoYm9hcmQuZGVmYXVsdCB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBmbGV4LWZs
b3c6IHJvdyBub3dyYXA7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cit9CisKKy50b29s
YmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtIHsKKyAgICBsaW5lLWhlaWdodDogMTNweDsK
KworICAgIG1hcmdpbjogMXB4IDA7CisgICAgcGFkZGluZzogMCA1cHg7CisKKyAgICBkaXNwbGF5
OiBmbGV4OworCisgICAgbWluLXdpZHRoOiA0NXB4OworCisgICAganVzdGlmeS1jb250ZW50OiBj
ZW50ZXI7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKworICAgIGJvcmRlci1yYWRpdXM6IDRw
eDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKKworICAgIGZvbnQtZmFtaWx5
OiAtd2Via2l0LXN5c3RlbS1mb250LCBzYW5zLXNlcmlmOworICAgIGZvbnQtdmFyaWFudC1udW1l
cmljOiB0YWJ1bGFyLW51bXM7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IDpt
YXRjaGVzKC50aW1lLCAucmVzb3VyY2VzU2l6ZSkgeworICAgIG1pbi13aWR0aDogNzBweDsKK30K
KworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDpob3ZlciB7Cisg
ICAgYm9yZGVyOiAxcHggc29saWQgaHNsYSgwLCAwJSwgMCUsIDAuMSk7Cit9CisKKy50b29sYmFy
IC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6YWN0aXZlIHsKKyAgICBib3JkZXI6
IDFweCBzb2xpZCBoc2xhKDAsIDAlLCAwJSwgMC4yKTsKK30KKworLnRvb2xiYXIgLmRhc2hib2Fy
ZC5kZWZhdWx0ID4gLml0ZW0gPiAqIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGFsaWduLWl0
ZW1zOiBjZW50ZXI7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtID4g
aW1nIHsKKyAgICBvcGFjaXR5OiAwLjI7CisgICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAx
NnB4OworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisudG9vbGJhciAuZGFzaGJvYXJk
LmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkID4gaW1nIHsKKyAgICBvcGFjaXR5OiAwLjU7Cit9CisK
Ky50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIgPiBpbWcg
eworICAgIG9wYWNpdHk6IDAuNjU7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+
IC5pdGVtID4gZGl2IHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGZsZXg6IDE7CisgICAgLXdl
YmtpdC1wYWRkaW5nLXN0YXJ0OiAycHg7CisgICAgY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjIp
OworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkID4gZGl2
IHsKKyAgICBjb2xvcjogaHNsYSgwLCAwJSwgMCUsIDAuNyk7Cit9CisKKy50b29sYmFyIC5kYXNo
Ym9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIgPiBkaXYgeworICAgIGNvbG9yOiBo
c2xhKDAsIDAlLCAwJSwgMC44NSk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+
IC5yZXNvdXJjZXNDb3VudCA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9SZXNv
dXJjZXMuc3ZnKTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnRpbWUgPiBp
bWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVGltZS5zdmcpOworfQorCisudG9vbGJh
ciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAubG9ncyA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4u
L0ltYWdlcy9Mb2dzLnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5y
ZXNvdXJjZXNTaXplID4gaW1nIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1dlaWdodC5z
dmcpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3JzID4gaW1nIHsK
KyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0Vycm9ycy5zdmcpOworfQorCisudG9vbGJhciAu
ZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3JzLmVuYWJsZWQgPiBpbWcgeworICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvRXJyb3JzRW5hYmxlZC5zdmcpOworICAgIG9wYWNpdHk6IDAuOTsKK30K
KworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmVycm9ycy5lbmFibGVkOmhvdmVyID4g
aW1nIHsKKyAgICBvcGFjaXR5OiAxOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQg
PiAuZXJyb3JzLmVuYWJsZWQgPiBkaXYgeworICAgIGNvbG9yOiBoc2xhKDM1OSwgNTclLCA1MCUs
IDAuOSk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMuZW5hYmxl
ZDpob3ZlciA+IGRpdiB7CisgICAgY29sb3I6IGhzbCgzNTksIDU3JSwgNTAlKTsKK30KKworLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmlzc3VlcyA+IGltZyB7CisgICAgY29udGVudDog
dXJsKC4uL0ltYWdlcy9Jc3N1ZXMuc3ZnKTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZh
dWx0ID4gLmlzc3Vlcy5lbmFibGVkID4gaW1nIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2Vz
L0lzc3Vlc0VuYWJsZWQuc3ZnKTsKKyAgICBvcGFjaXR5OiAwLjk7Cit9CisKKy50b29sYmFyIC5k
YXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1ZXMuZW5hYmxlZDpob3ZlciA+IGltZyB7CisgICAgb3Bh
Y2l0eTogMTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmlzc3Vlcy5lbmFi
bGVkID4gZGl2IHsKKyAgICBjb2xvcjogaHNsYSg0MywgOTYlLCA0NCUsIDAuOSk7Cit9CisKKy50
b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1ZXMuZW5hYmxlZDpob3ZlciA+IGRpdiB7
CisgICAgY29sb3I6IGhzbCg0MywgOTYlLCA0NCUpOworfQorCisvKiBTdHlsZXMgZm9yIHRoZSBw
dWxzaW5nIGFuaW1hdGVkIHN0YXRlIG9mIGNvbnNvbGUgaXRlbXMgKi8KKworLnRvb2xiYXIgLmRh
c2hib2FyZC5kZWZhdWx0ID4gLml0ZW0ucHVsc2luZyB7CisgICAgYW5pbWF0aW9uLW5hbWU6IGNv
bnNvbGUtaXRlbS1wdWxzZTsKKyAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNzVzOworfQorCitA
a2V5ZnJhbWVzIGNvbnNvbGUtaXRlbS1wdWxzZSB7CisgICAgNTAlIHsgb3BhY2l0eTogMC42OyB9
Cit9CisKK0BtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKKyAgICAudG9vbGJh
ciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbSA+IGRpdiB7CisgICAgICAgIC8qIEZJWE1FOiBp
bnRyb2R1Y2UgYSB2YXJpYWJsZSBmb3Igb3BhY2l0eSBhbmQgdXNlIGl0IGZvciBib3RoIHRleHQg
YW5kIGljb25zICovCisgICAgICAgIGNvbG9yOiBoc2xhKDAsIDEwMCUsIDEwMCUsIDAuMik7Cisg
ICAgfQorCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZCA+
IGRpdiB7CisgICAgICAgIGNvbG9yOiB2YXIoLS1nbHlwaC1jb2xvcik7CisgICAgfQorCisgICAg
LnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDpob3ZlciB7CisgICAg
ICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLCAwJSwgdmFyKC0tZm9yZWdyb3VuZC1saWdodG5lc3Mp
LCAwLjEpOworICAgIH0KKworICAgIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVt
LmVuYWJsZWQ6aG92ZXIgPiBkaXYgeworICAgICAgICBjb2xvcjogaHNsYSgwLCAxMDAlLCAxMDAl
LCAwLjg1KTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAucmVz
b3VyY2VzQ291bnQgPiBpbWcsCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJl
c291cmNlc1NpemUgPiBpbWcsCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnRp
bWUgPiBpbWcsCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmxvZ3MgPiBpbWcs
CisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmVycm9yczpub3QoLmVuYWJsZWQp
ID4gaW1nLAorICAgIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1ZXM6bm90KC5l
bmFibGVkKSA+IGltZyB7CisgICAgICAgIGZpbHRlcjogdmFyKC0tZmlsdGVyLWludmVydCk7Cisg
ICAgfQorCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZCAuaXRlbS5idXR0b24sCisgICAgLnRvb2xi
YXIgLmRhc2hib2FyZCAuaXRlbS5idXR0b246YWN0aXZlIHsKKyAgICAgICAgYmFja2dyb3VuZDog
bm9uZTsKKyAgICB9CisKKyAgICAuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdyB7
CisgICAgICAgIGZpbHRlcjogdmFyKC0tZmlsdGVyLWludmVydCk7CisgICAgfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERh
c2hib2FyZFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjI0OTMyODkzMzdkOWI0ZDJi
YjU3ODYyMjQ2M2RhODc0NzhiNDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuanMKQEAgLTAs
MCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5EZWZhdWx0RGFzaGJv
YXJkVmlldyA9IGNsYXNzIERlZmF1bHREYXNoYm9hcmRWaWV3IGV4dGVuZHMgV0kuRGFzaGJvYXJk
VmlldworeworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QsICJkZWZhdWx0Iik7CisKKyAgICAgICAgcmVwcmVz
ZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWZhdWx0RGFzaGJvYXJkLkV2ZW50LkRh
dGFEaWRDaGFuZ2UsICgpID0+IHsgdGhpcy5fdXBkYXRlRGlzcGxheVNvb24oKTsgfSk7CisgICAg
ICAgIHRoaXMuX3NjaGVkdWxlZFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisKKyAgICAg
ICAgdGhpcy5faXRlbXMgPSB7CisgICAgICAgICAgICByZXNvdXJjZXNDb3VudDogeworICAgICAg
ICAgICAgICAgIHRvb2x0aXA6IFdJLlVJU3RyaW5nKCJTaG93IHBhZ2UgcmVzb3VyY2VzIiksCisg
ICAgICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fcmVzb3VyY2VzSXRlbVdhc0NsaWNrZWQKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICByZXNvdXJjZXNTaXplOiB7CisgICAgICAgICAgICAg
ICAgdG9vbHRpcDogV0kuVUlTdHJpbmcoIlNob3cgbmV0d29yayBpbmZvcm1hdGlvbiIpLAorICAg
ICAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX25ldHdvcmtJdGVtV2FzQ2xpY2tlZAorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIHRpbWU6IHsKKyAgICAgICAgICAgICAgICB0b29sdGlwOiBX
SS5VSVN0cmluZygiU2hvdyBwYWdlIGxvYWQgdGltaW5nIiksCisgICAgICAgICAgICAgICAgaGFu
ZGxlcjogdGhpcy5fdGltZWxpbmVJdGVtV2FzQ2xpY2tlZAorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIGxvZ3M6IHsKKyAgICAgICAgICAgICAgICB0b29sdGlwOiBXSS5VSVN0cmluZygiU2hv
dyBtZXNzYWdlcyBsb2dnZWQgdG8gdGhlIENvbnNvbGUiKSwKKyAgICAgICAgICAgICAgICBoYW5k
bGVyOiB0aGlzLl9jb25zb2xlSXRlbVdhc0NsaWNrZWQuYmluZCh0aGlzLCBXSS5Mb2dDb250ZW50
Vmlldy5TY29wZXMuTG9ncykKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlcnJvcnM6IHsK
KyAgICAgICAgICAgICAgICB0b29sdGlwOiBXSS5VSVN0cmluZygiU2hvdyBlcnJvcnMgbG9nZ2Vk
IHRvIHRoZSBDb25zb2xlIiksCisgICAgICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29s
ZUl0ZW1XYXNDbGlja2VkLmJpbmQodGhpcywgV0kuTG9nQ29udGVudFZpZXcuU2NvcGVzLkVycm9y
cykKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBpc3N1ZXM6IHsKKyAgICAgICAgICAgICAg
ICB0b29sdGlwOiBXSS5VSVN0cmluZygiU2hvdyB3YXJuaW5ncyBsb2dnZWQgdG8gdGhlIENvbnNv
bGUiKSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9jb25zb2xlSXRlbVdhc0NsaWNr
ZWQuYmluZCh0aGlzLCBXSS5Mb2dDb250ZW50Vmlldy5TY29wZXMuV2FybmluZ3MpCisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLl9pdGVt
cykKKyAgICAgICAgICAgIHRoaXMuX2FwcGVuZEVsZW1lbnRGb3JOYW1lZEl0ZW0obmFtZSk7Cisg
ICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3VwZGF0ZURpc3BsYXlTb29uKCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRVcGRhdGVJZGVudGlmaWVyKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3NjaGVkdWxlZFVwZGF0ZUlkZW50aWZpZXIgPSBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fdXBkYXRlRGlzcGxheS5iaW5kKHRoaXMpKTsKKyAg
ICB9CisKKyAgICBfdXBkYXRlRGlzcGxheSgpCisgICAgeworICAgICAgICB0aGlzLl9zY2hlZHVs
ZWRVcGRhdGVJZGVudGlmaWVyID0gdW5kZWZpbmVkOworCisgICAgICAgIHZhciBkYXNoYm9hcmQg
PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OworCisgICAgICAgIGZvciAodmFyIGNhdGVnb3J5IG9m
IFsibG9ncyIsICJpc3N1ZXMiLCAiZXJyb3JzIl0pCisgICAgICAgICAgICB0aGlzLl9zZXRDb25z
b2xlSXRlbVZhbHVlKGNhdGVnb3J5LCBkYXNoYm9hcmRbY2F0ZWdvcnldKTsKKworICAgICAgICB2
YXIgdGltZUl0ZW0gPSB0aGlzLl9pdGVtcy50aW1lOworICAgICAgICB0aW1lSXRlbS50ZXh0ID0g
ZGFzaGJvYXJkLnRpbWUgPyBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKGRhc2hib2FyZC50aW1lKSA6
IGVtRGFzaDsKKyAgICAgICAgdGhpcy5fc2V0SXRlbUVuYWJsZWQodGltZUl0ZW0sIGRhc2hib2Fy
ZC50aW1lID4gMCk7CisKKyAgICAgICAgdmFyIGNvdW50SXRlbSA9IHRoaXMuX2l0ZW1zLnJlc291
cmNlc0NvdW50OworICAgICAgICBjb3VudEl0ZW0udGV4dCA9IE51bWJlci5hYmJyZXZpYXRlKGRh
c2hib2FyZC5yZXNvdXJjZXNDb3VudCk7CisgICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKGNv
dW50SXRlbSwgZGFzaGJvYXJkLnJlc291cmNlc0NvdW50ID4gMCk7CisKKyAgICAgICAgdmFyIHNp
emVJdGVtID0gdGhpcy5faXRlbXMucmVzb3VyY2VzU2l6ZTsKKyAgICAgICAgc2l6ZUl0ZW0udGV4
dCA9IGRhc2hib2FyZC5yZXNvdXJjZXNTaXplID8gTnVtYmVyLmJ5dGVzVG9TdHJpbmcoZGFzaGJv
YXJkLnJlc291cmNlc1NpemUsIGZhbHNlKSA6IGVtRGFzaDsKKyAgICAgICAgdGhpcy5fc2V0SXRl
bUVuYWJsZWQoc2l6ZUl0ZW0sIGRhc2hib2FyZC5yZXNvdXJjZXNTaXplID4gMCk7CisgICAgfQor
CisgICAgX2FwcGVuZEVsZW1lbnRGb3JOYW1lZEl0ZW0obmFtZSkKKyAgICB7CisgICAgICAgIHZh
ciBpdGVtID0gdGhpcy5faXRlbXNbbmFtZV07CisKKyAgICAgICAgaXRlbS5jb250YWluZXIgPSB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
KyAgICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NOYW1lID0gIml0ZW0gIiArIG5hbWU7CisKKyAg
ICAgICAgaXRlbS5jb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW1nIikpOworCisgICAgICAgIGl0ZW0ub3V0bGV0ID0gaXRlbS5jb250YWluZXIuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworCisgICAgICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShpdGVtLCAidGV4dCIsIHsKKyAgICAgICAgICAgIHNldDogZnVuY3Rpb24obmV3
VGV4dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBuZXdUZXh0ID0gbmV3VGV4dC50
b1N0cmluZygpOworICAgICAgICAgICAgICAgIGlmIChuZXdUZXh0ID09PSBpdGVtLm91dGxldC50
ZXh0Q29udGVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
IGl0ZW0ub3V0bGV0LnRleHRDb250ZW50ID0gbmV3VGV4dDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaXRlbS5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2l0ZW1XYXNDbGlja2VkKG5hbWUpOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBfaXRlbVdhc0NsaWNrZWQobmFtZSkKKyAgICB7Cisg
ICAgICAgIHZhciBpdGVtID0gdGhpcy5faXRlbXNbbmFtZV07CisgICAgICAgIGlmICghaXRlbS5j
b250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKFdJLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJs
ZWRJdGVtU3R5bGVDbGFzc05hbWUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChpdGVtLmhhbmRsZXIpCisgICAgICAgICAgICBpdGVtLmhhbmRsZXIuY2FsbCh0aGlzKTsKKyAg
ICB9CisKKyAgICBfcmVzb3VyY2VzSXRlbVdhc0NsaWNrZWQoKQorICAgIHsKKyAgICAgICAgV0ku
c2hvd1NvdXJjZXNUYWIoe2luaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlv
bkluaXRpYXRvci5EYXNoYm9hcmR9KTsKKyAgICB9CisKKyAgICBfbmV0d29ya0l0ZW1XYXNDbGlj
a2VkKCkKKyAgICB7CisgICAgICAgIFdJLnNob3dOZXR3b3JrVGFiKHtpbml0aWF0b3JIaW50OiBX
SS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRGFzaGJvYXJkfSk7CisgICAgfQor
CisgICAgX3RpbWVsaW5lSXRlbVdhc0NsaWNrZWQoKQorICAgIHsKKyAgICAgICAgV0kuc2hvd1Rp
bWVsaW5lVGFiKHtpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0
aWF0b3IuRGFzaGJvYXJkfSk7CisgICAgfQorCisgICAgX2NvbnNvbGVJdGVtV2FzQ2xpY2tlZChz
Y29wZSkKKyAgICB7CisgICAgICAgIFdJLnNob3dDb25zb2xlVGFiKHNjb3BlLCB7CisgICAgICAg
ICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3Iu
RGFzaGJvYXJkLAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBfc2V0Q29uc29sZUl0ZW1WYWx1
ZShpdGVtTmFtZSwgbmV3VmFsdWUpCisgICAgeworICAgICAgICB2YXIgaVZhck5hbWUgPSAiXyIg
KyBpdGVtTmFtZTsKKyAgICAgICAgdmFyIHByZXZpb3VzVmFsdWUgPSB0aGlzW2lWYXJOYW1lXTsK
KyAgICAgICAgdGhpc1tpVmFyTmFtZV0gPSBuZXdWYWx1ZTsKKworICAgICAgICB2YXIgaXRlbSA9
IHRoaXMuX2l0ZW1zW2l0ZW1OYW1lXTsKKyAgICAgICAgaXRlbS50ZXh0ID0gTnVtYmVyLmFiYnJl
dmlhdGUobmV3VmFsdWUpOworICAgICAgICB0aGlzLl9zZXRJdGVtRW5hYmxlZChpdGVtLCBuZXdW
YWx1ZSA+IDApOworCisgICAgICAgIGlmIChuZXdWYWx1ZSA8PSBwcmV2aW91c1ZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBjb250YWluZXIgPSBpdGVtLmNvbnRhaW5l
cjsKKworICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25FbmRlZChldmVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gY29udGFpbmVyKSB7CisgICAgICAgICAg
ICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoInB1bHNpbmciKTsKKyAgICAgICAgICAg
ICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIiwgYW5pbWF0
aW9uRW5kZWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgbmVl
ZCB0byBmb3JjZSBhIHN0eWxlIGludmFsaWRhdGlvbiBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBhbHJl
YWR5CisgICAgICAgIC8vIHdlcmUgYW5pbWF0aW5nIHRoaXMgaXRlbSBhZnRlciB3ZSd2ZSByZW1v
dmVkIHRoZSBwdWxzaW5nIENTUyBjbGFzcy4KKyAgICAgICAgaWYgKGNvbnRhaW5lci5jbGFzc0xp
c3QuY29udGFpbnMoInB1bHNpbmciKSkgeworICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlz
dC5yZW1vdmUoInB1bHNpbmciKTsKKyAgICAgICAgICAgIGNvbnRhaW5lci5yZWNhbGN1bGF0ZVN0
eWxlcygpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExp
c3RlbmVyKCJhbmltYXRpb25lbmQiLCBhbmltYXRpb25FbmRlZCk7CisKKyAgICAgICAgY29udGFp
bmVyLmNsYXNzTGlzdC5hZGQoInB1bHNpbmciKTsKKyAgICB9CisKKyAgICBfc2V0SXRlbUVuYWJs
ZWQoaXRlbSwgZW5hYmxlZCkKKyAgICB7CisgICAgICAgIGlmIChlbmFibGVkKSB7CisgICAgICAg
ICAgICBpdGVtLmNvbnRhaW5lci50aXRsZSA9IGl0ZW0udG9vbHRpcDsKKyAgICAgICAgICAgIGl0
ZW0uY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoV0kuRGVmYXVsdERhc2hib2FyZFZpZXcuRW5hYmxl
ZEl0ZW1TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpdGVt
LmNvbnRhaW5lci50aXRsZSA9ICIiOworICAgICAgICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NM
aXN0LnJlbW92ZShXSS5EZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xhc3NO
YW1lKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK1dJLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVu
YWJsZWRJdGVtU3R5bGVDbGFzc05hbWUgPSAiZW5hYmxlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EaXZpZGVyTmF2aWdhdGlvbkl0ZW0u
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGl2aWRlck5h
dmlnYXRpb25JdGVtLmNzcwppbmRleCAwYzc3NjY4MDZlYzEyZWI1ZDgwM2IxYjAwZjNiODYxMDBm
MDU5ODRmLi4yMzc5MmQyODkzYjgzYTVhMWQ4M2JhZGY4OTFmNDAyNjUyYjNkNjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EaXZpZGVyTmF2
aWdhdGlvbkl0ZW0uY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRlbS5jc3MKQEAgLTI1LDggKzI1LDExIEBACiAKIC5u
YXZpZ2F0aW9uLWJhciAuaXRlbS5kaXZpZGVyIHsKICAgICB3aWR0aDogMXB4OwotICAgIGhlaWdo
dDogMTZweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDc0JSk7CisgICAgaGVp
Z2h0OiAxMDAlOworICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChoc2woMCwg
MCUsIDc0JSksIGhzbCgwLCAwJSwgNzQlKSk7CisgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDE2
cHg7CisgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICBiYWNrZ3JvdW5kLXBv
c2l0aW9uOiBjZW50ZXI7CiB9CiAKIEBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJh
dGlvOiAyKSB7CkBAIC0zNyw2ICs0MCw3IEBACiAKIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hl
bWU6IGRhcmspIHsKICAgICAubmF2aWdhdGlvbi1iYXIgLml0ZW0uZGl2aWRlciB7Ci0gICAgICAg
IGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgNDAlKTsKKyAgICAgICAgLS1kaXZpZGVyLWJh
Y2tncm91bmQ6IGhzbCgwLCAwJSwgNDAlKTsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGlu
ZWFyLWdyYWRpZW50KHZhcigtLWRpdmlkZXItYmFja2dyb3VuZCksIHZhcigtLWRpdmlkZXItYmFj
a2dyb3VuZCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3Lmpz
CmluZGV4IGZmMjFjZjAyNWYyZTU0MTJmMDlkYmU3ZGY1ZDY1MjRhYTg3Zjg1YzQuLjYyNzI5N2Zj
NzdkYTcyZjhiYzZjYmZkNTNhZDVkMDMzNTFlOTA4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNU
YWJDb250ZW50Vmlldy5qcwpAQCAtMjUsMTggKzI1LDE1IEBACiAKIFdJLkVsZW1lbnRzVGFiQ29u
dGVudFZpZXcgPSBjbGFzcyBFbGVtZW50c1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dEJyb3dzZXJUYWJDb250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1
Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgbGV0IGRldGFpbHNTaWRlYmFyUGFuZWxD
b25zdHJ1Y3RvcnMgPSBbCi0gICAgICAgICAgICBXSS5SdWxlc1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbCwKLSAgICAgICAgICAgIFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLAot
ICAgICAgICAgICAgV0kuQ2hhbmdlc0RldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBX
SS5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgXTsKKyAgICAgICAgbGV0IHRh
YkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhXSS5FbGVtZW50c1Rh
YkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisKKyAgICAgICAgbGV0IGRldGFpbHNTaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvcnMgPSBbV0kuUnVsZXNTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLkNv
bXB1dGVkU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5DaGFuZ2VzRGV0YWlsc1NpZGViYXJQ
YW5lbCwgV0kuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWxdOwogICAgICAgICBpZiAoSW5zcGVj
dG9yQmFja2VuZC5oYXNEb21haW4oIkxheWVyVHJlZSIpKQogICAgICAgICAgICAgZGV0YWlsc1Np
ZGViYXJQYW5lbENvbnN0cnVjdG9ycy5wdXNoKFdJLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFu
ZWwpOwogCi0gICAgICAgIHN1cGVyKEVsZW1lbnRzVGFiQ29udGVudFZpZXcudGFiSW5mbygpLCB7
ZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycywgZGlzYWJsZUJhY2tGb3J3YXJkOiB0cnVl
fSk7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgImVsZW1lbnRzIiwgImVsZW1lbnRzIiwg
dGFiQmFySXRlbSwgbnVsbCwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycywgdHJ1ZSk7
CiAKICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3Jr
TWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX21haW5GcmFtZURpZENoYW5n
ZSwgdGhpcyk7CiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZl
bnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMpOwpAQCAtNDUsNyArNDIsNiBAQCBXSS5FbGVtZW50c1RhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
RWxlbWVudHNUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93cwogICAgIHN0YXRp
YyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVudGlm
aWVyOiBFbGVtZW50c1RhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTogIklt
YWdlcy9FbGVtZW50cy5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJFbGVt
ZW50cyIpLAogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLmNzcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0
aW9uSXRlbS5jc3MKaW5kZXggNWZhOTIyZTAxMDUyMThkZmM1OGU2ZTZlZjg1N2NiN2VjODJmNGIx
Ny4uMDM0NDA1ZTVmNDJjNzM0YzI3NjNiNGVmZGM3M2MyOTE3MmI3MjU1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmxleGlibGVTcGFjZU5h
dmlnYXRpb25JdGVtLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0uY3NzCkBAIC0yMywxNCArMjMsMTQg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0ubmF2aWdhdGlv
bi1iYXIgLml0ZW0uZmxleGlibGUtc3BhY2UgeworOm1hdGNoZXMoLm5hdmlnYXRpb24tYmFyLCAu
dG9vbGJhcikgLml0ZW0uZmxleGlibGUtc3BhY2UgewogICAgIGZsZXg6IDE7CiB9CiAKLS5uYXZp
Z2F0aW9uLWJhciAuaXRlbS5mbGV4aWJsZS1zcGFjZS5hbGlnbi1zdGFydCA+IC5pdGVtIHsKKzpt
YXRjaGVzKC5uYXZpZ2F0aW9uLWJhciwgLnRvb2xiYXIpIC5pdGVtLmZsZXhpYmxlLXNwYWNlLmFs
aWduLXN0YXJ0ID4gLml0ZW0gewogICAgIC13ZWJraXQtbWFyZ2luLWVuZDogYXV0bzsKIH0KIAot
Lm5hdmlnYXRpb24tYmFyIC5pdGVtLmZsZXhpYmxlLXNwYWNlLmFsaWduLWVuZCA+IC5pdGVtIHsK
KzptYXRjaGVzKC5uYXZpZ2F0aW9uLWJhciwgLnRvb2xiYXIpIC5pdGVtLmZsZXhpYmxlLXNwYWNl
LmFsaWduLWVuZCA+IC5pdGVtIHsKICAgICAtd2Via2l0LW1hcmdpbi1zdGFydDogYXV0bzsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dl
bmVyYWxUYWJCYXJJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanMKaW5kZXggNzdmNWM0ZjE4NTk1OWYzNmNjNjlhYmZi
YzQ2ODk5YjI3YzViM2MyZC4uNmQzYWMwNzg2MDQ2ODkxMjExZGQ5YzdiMTg2MjRmNzhmM2Y3ZDRj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
R2VuZXJhbFRhYkJhckl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanMKQEAgLTI2LDExICsyNiwxMiBAQAogCiBX
SS5HZW5lcmFsVGFiQmFySXRlbSA9IGNsYXNzIEdlbmVyYWxUYWJCYXJJdGVtIGV4dGVuZHMgV0ku
VGFiQmFySXRlbQogewotICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0LCBpbWFnZSwg
dGl0bGUsIHtpc0VwaGVtZXJhbH0gPSB7fSkKKyAgICBjb25zdHJ1Y3RvcihpbWFnZSwgdGl0bGUs
IGlzRXBoZW1lcmFsID0gZmFsc2UpCiAgICAgewotICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9i
amVjdCwgaW1hZ2UsIHRpdGxlKTsKKyAgICAgICAgc3VwZXIoaW1hZ2UsIHRpdGxlKTsKIAogICAg
ICAgICB0aGlzLl9pc0VwaGVtZXJhbCA9IGlzRXBoZW1lcmFsOworCiAgICAgICAgIGlmICh0aGlz
Ll9pc0VwaGVtZXJhbCkgewogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImVwaGVtZXJhbCIpOwogCkBAIC00MywxNiArNDQsOSBAQCBXSS5HZW5lcmFsVGFiQmFySXRlbSA9
IGNsYXNzIEdlbmVyYWxUYWJCYXJJdGVtIGV4dGVuZHMgV0kuVGFiQmFySXRlbQogICAgICAgICB9
CiAgICAgfQogCi0gICAgLy8gU3RhdGljCi0KLSAgICBzdGF0aWMgZnJvbVRhYkNvbnRlbnRWaWV3
KHRhYkNvbnRlbnRWaWV3KQorICAgIHN0YXRpYyBmcm9tVGFiSW5mbyh7aW1hZ2UsIHRpdGxlLCBp
c0VwaGVtZXJhbH0pCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJDb250ZW50Vmll
dyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRWaWV3KTsKLQotICAgICAgICBsZXQge2ltYWdlLCB0
aXRsZX0gPSB0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rvci50YWJJbmZvKCk7Ci0gICAgICAgIHJl
dHVybiBuZXcgV0kuR2VuZXJhbFRhYkJhckl0ZW0odGFiQ29udGVudFZpZXcsIGltYWdlLCB0aXRs
ZSwgewotICAgICAgICAgICAgaXNFcGhlbWVyYWw6ICF0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rv
ci5zaG91bGRTYXZlVGFiKCksCi0gICAgICAgIH0pOworICAgICAgICByZXR1cm4gbmV3IFdJLkdl
bmVyYWxUYWJCYXJJdGVtKGltYWdlLCB0aXRsZSwgaXNFcGhlbWVyYWwpOwogICAgIH0KIAogICAg
IC8vIFB1YmxpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvR3JhcGhpY3NUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYXBoaWNzVGFiQ29udGVudFZpZXcuanMKaW5kZXggY2Mw
MjllMzhlMDNmYWIwNjE5YzFmNjA1YzRiNTg1YjExNTVhZWU3OC4uMmU2ZDg1NzIyNjc5ODMwZTRh
NjU3NzE5N2Q5YTkyODUzODI3MDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhpY3NUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRW
aWV3LmpzCkBAIC0yNywxNiArMjcsMTcgQEAgV0kuR3JhcGhpY3NUYWJDb250ZW50VmlldyA9IGNs
YXNzIEdyYXBoaWNzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3MKIHsKICAg
ICBjb25zdHJ1Y3RvcigpCiAgICAgewotICAgICAgICBzdXBlcihHcmFwaGljc1RhYkNvbnRlbnRW
aWV3LnRhYkluZm8oKSwgewotICAgICAgICAgICAgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0
cnVjdG9yOiBXSS5DYW52YXNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBkZXRhaWxzU2lkZWJh
clBhbmVsQ29uc3RydWN0b3JzOiBbCi0gICAgICAgICAgICAgICAgV0kuUmVjb3JkaW5nU3RhdGVE
ZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgICAgIFdJLlJlY29yZGluZ1RyYWNlRGV0
YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgICAgICBXSS5DYW52YXNEZXRhaWxzU2lkZWJh
clBhbmVsLAotICAgICAgICAgICAgICAgIFdJLkFuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWws
Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgZGlzYWJsZUJhY2tGb3J3YXJkOiB0cnVlLAot
ICAgICAgICB9KTsKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRl
bS5mcm9tVGFiSW5mbyhXSS5HcmFwaGljc1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisKKyAg
ICAgICAgY29uc3QgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yID0gV0kuQ2FudmFz
U2lkZWJhclBhbmVsOworICAgICAgICBjb25zdCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0
b3JzID0gWworICAgICAgICAgICAgV0kuUmVjb3JkaW5nU3RhdGVEZXRhaWxzU2lkZWJhclBhbmVs
LAorICAgICAgICAgICAgV0kuUmVjb3JkaW5nVHJhY2VEZXRhaWxzU2lkZWJhclBhbmVsLAorICAg
ICAgICAgICAgV0kuQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCwKKyAgICAgICAgICAgIFdJLkFu
aW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWwsCisgICAgICAgIF07CisgICAgICAgIGNvbnN0IGRp
c2FibGVCYWNrRm9yd2FyZCA9IHRydWU7CisgICAgICAgIHN1cGVyKCJncmFwaGljcyIsIFsiZ3Jh
cGhpY3MiXSwgdGFiQmFySXRlbSwgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yLCBk
ZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLCBkaXNhYmxlQmFja0ZvcndhcmQpOwogCiAg
ICAgICAgIHRoaXMuX2NhbnZhc2VzVHJlZU91dGxpbmUgPSBuZXcgV0kuVHJlZU91dGxpbmU7CiAg
ICAgICAgIHRoaXMuX2NhbnZhc2VzVHJlZU91dGxpbmUuYWxsb3dzUmVwZWF0U2VsZWN0aW9uID0g
dHJ1ZTsKQEAgLTY0LDcgKzY1LDYgQEAgV0kuR3JhcGhpY3NUYWJDb250ZW50VmlldyA9IGNsYXNz
IEdyYXBoaWNzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3MKICAgICBzdGF0
aWMgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWRlbnRp
ZmllcjogR3JhcGhpY3NUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJ
bWFnZXMvR3JhcGhpY3Muc3ZnIiwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiR3Jh
cGhpY3MiKSwKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0dyb3VwTmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hcm91cE5hdmlnYXRpb25JdGVtLmpzCmluZGV4
IDVjNjA0ZDlmZjFkODNlOTIxMTIxYjlmOThhOWIwOTIzZjMxOTA5NGEuLmViYjg4ZDg2MWUyZTRj
NTVlN2RmYjUxZjEwMzU5YzFmNmE1NzFhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyb3VwTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JvdXBOYXZpZ2F0aW9uSXRl
bS5qcwpAQCAtNTEsMTYgKzUxLDYgQEAgV0kuR3JvdXBOYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIEdy
b3VwTmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uSXRlbQogICAgICAgICB0aGlz
Ll9uZWVkc1VwZGF0ZSA9IHRydWU7CiAgICAgfQogCi0gICAgZ2V0IGhpZGRlbigpCi0gICAgewot
ICAgICAgICByZXR1cm4gc3VwZXIuaGlkZGVuIHx8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5ldmVy
eSgoaXRlbSkgPT4gaXRlbS5oaWRkZW4pOwotICAgIH0KLQotICAgIHNldCBoaWRkZW4oZmxhZykK
LSAgICB7Ci0gICAgICAgIHN1cGVyLmhpZGRlbiA9IGZsYWc7Ci0gICAgfQotCiAgICAgZ2V0IHdp
ZHRoKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUl0ZW1zKCk7CkBAIC03NywxMSArNjcs
NiBAQCBXSS5Hcm91cE5hdmlnYXRpb25JdGVtID0gY2xhc3MgR3JvdXBOYXZpZ2F0aW9uSXRlbSBl
eHRlbmRzIFdJLk5hdmlnYXRpb25JdGVtCiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGdldCBh
ZGRpdGlvbmFsQ2xhc3NOYW1lcygpCi0gICAgewotICAgICAgICByZXR1cm4gWyJncm91cCJdOwot
ICAgIH0KLQogICAgIHVwZGF0ZShvcHRpb25zID0ge30pCiAgICAgewogICAgICAgICBzdXBlci51
cGRhdGUob3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9MYXllcnNUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDJi
YzBjOWI0MzUwY2M3MWIzNGM4NzAzMzBiOGRkNjIyNjQ5MzAzNzEuLjJlYWZmNWQ5NTA1N2E0ODhl
MGI5ZTA4ZDY0NDdmZjdlZTIxOGIxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3
LmpzCkBAIC0yNyw5ICsyNywxMiBAQCBXSS5MYXllcnNUYWJDb250ZW50VmlldyA9IGNsYXNzIExh
eWVyc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXJUYQogewogICAgIGNv
bnN0cnVjdG9yKCkKICAgICB7Ci0gICAgICAgIHN1cGVyKExheWVyc1RhYkNvbnRlbnRWaWV3LnRh
YkluZm8oKSwgewotICAgICAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9yczog
W1dJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5lbF0sCi0gICAgICAgIH0pOworICAgICAgICBsZXQg
dGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLkxheWVyc1Rh
YkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisKKyAgICAgICAgY29uc3QgbmF2aWdhdGlvblNpZGVi
YXJQYW5lbENvbnN0cnVjdG9yID0gbnVsbDsKKyAgICAgICAgY29uc3QgZGV0YWlsc1NpZGViYXJQ
YW5lbENvbnN0cnVjdG9ycyA9IFtXSS5MYXllckRldGFpbHNTaWRlYmFyUGFuZWxdOworICAgICAg
ICBjb25zdCBkaXNhYmxlQmFja0ZvcndhcmQgPSB0cnVlOworICAgICAgICBzdXBlcigibGF5ZXJz
IiwgImxheWVycyIsIHRhYkJhckl0ZW0sIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3Rv
ciwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycywgZGlzYWJsZUJhY2tGb3J3YXJkKTsK
IAogICAgICAgICB0aGlzLl9sYXllckRldGFpbHNTaWRlYmFyUGFuZWwgPSB0aGlzLmRldGFpbHNT
aWRlYmFyUGFuZWxzWzBdOwogICAgICAgICB0aGlzLl9sYXllckRldGFpbHNTaWRlYmFyUGFuZWwu
YWRkRXZlbnRMaXN0ZW5lcihXSS5MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuRXZlbnQuU2VsZWN0
ZWRMYXllckNoYW5nZWQsIHRoaXMuX2RldGFpbHNTaWRlYmFyU2VsZWN0ZWRMYXllckNoYW5nZWQs
IHRoaXMpOwpAQCAtNDMsNyArNDYsNiBAQCBXSS5MYXllcnNUYWJDb250ZW50VmlldyA9IGNsYXNz
IExheWVyc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXJUYQogICAgIHN0
YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVu
dGlmaWVyOiBMYXllcnNUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJ
bWFnZXMvTGF5ZXJzLnN2ZyIsCiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIkxheWVy
cyIpLAogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTGVnYWN5VGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5VGFiQmFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkMWJiZGQ5ZDIy
ZmQ4MDI0YjJmZjI4OWYwMzM1OWNmMGYyOGI4OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lUYWJCYXIuanMKQEAgLTAs
MCArMSw4NzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5MZWdhY3lUYWJCYXIgPSBjbGFzcyBMZWdhY3lU
YWJCYXIgZXh0ZW5kcyBXSS5WaWV3Cit7CisgICAgY29uc3RydWN0b3IoZWxlbWVudCwgdGFiQmFy
SXRlbXMpCisgICAgeworICAgICAgICBzdXBlcihlbGVtZW50KTsKKworICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJhciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuc2V0
QXR0cmlidXRlKCJyb2xlIiwgInRhYmxpc3QiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMp
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
aGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5faGFuZGxlTW91c2VMZWF2ZS5iaW5kKHRoaXMpKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhp
cy5faGFuZGxlQ29udGV4dE1lbnUuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNyZWF0ZUNoaWxkKCJkaXYiLCAidG9wLWJvcmRlciIpOworCisgICAgICAgIHRoaXMuX3RhYkJh
ckl0ZW1zID0gW107CisgICAgICAgIHRoaXMuX2hpZGRlblRhYkJhckl0ZW1zID0gW107CisKKyAg
ICAgICAgaWYgKHRhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICBmb3IgKGxldCB0YWJCYXJJdGVt
IGluIHRhYkJhckl0ZW1zKQorICAgICAgICAgICAgICAgIHRoaXMuYWRkVGFiQmFySXRlbSh0YWJC
YXJJdGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuYWRkVGFiQmFySXRlbShXSS5zZXR0
aW5nc1RhYkNvbnRlbnRWaWV3LnRhYkJhckl0ZW0sIHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9
KTsKKworICAgICAgICB0aGlzLl9uZXdUYWJUYWJCYXJJdGVtID0gbmV3IFdJLlBpbm5lZFRhYkJh
ckl0ZW0oIkltYWdlcy9OZXdUYWJQbHVzLnN2ZyIsIFdJLlVJU3RyaW5nKCJDcmVhdGUgYSBuZXcg
dGFiIikpOworICAgICAgICB0aGlzLl9uZXdUYWJUYWJCYXJJdGVtLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2VlbnRlciIsIHRoaXMuX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXIuYmluZCh0
aGlzKSk7CisgICAgICAgIHRoaXMuX25ld1RhYlRhYkJhckl0ZW0uZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZU5ld1RhYkNsaWNrLmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLmFkZFRhYkJhckl0ZW0odGhpcy5fbmV3VGFiVGFiQmFySXRlbSwge3N1cHByZXNz
QW5pbWF0aW9uczogdHJ1ZX0pOworCisgICAgICAgIHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0g
PSBuZXcgV0kuUGlubmVkVGFiQmFySXRlbSgiSW1hZ2VzL1RhYlBpY2tlci5zdmciLCBXSS5VSVN0
cmluZygiU2hvdyBoaWRkZW4gdGFicyIpKTsKKyAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFiQmFy
SXRlbS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1waWNrZXIiKTsKKyAgICAgICAgdGhpcy5h
ZGRUYWJCYXJJdGVtKHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0sIHtzdXBwcmVzc0FuaW1hdGlv
bnM6IHRydWV9KTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBuZXdUYWJUYWJC
YXJJdGVtKCkgeyByZXR1cm4gdGhpcy5fbmV3VGFiVGFiQmFySXRlbTsgfQorCisgICAgdXBkYXRl
TmV3VGFiVGFiQmFySXRlbVN0YXRlKCkKKyAgICB7CisgICAgICAgIGxldCBuZXdUYWJFeGlzdHMg
PSAhV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQoV0kuTmV3VGFiQ29udGVudFZpZXcuVHlwZSk7
CisgICAgICAgIHRoaXMuX25ld1RhYlRhYkJhckl0ZW0uZGlzYWJsZWQgPSBuZXdUYWJFeGlzdHM7
CisgICAgfQorCisgICAgYWRkVGFiQmFySXRlbSh0YWJCYXJJdGVtLCBvcHRpb25zID0ge30pCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5pbnNlcnRUYWJCYXJJdGVtKHRhYkJhckl0ZW0sIHRo
aXMuX3RhYkJhckl0ZW1zLmxlbmd0aCwgb3B0aW9ucyk7CisgICAgfQorCisgICAgaW5zZXJ0VGFi
QmFySXRlbSh0YWJCYXJJdGVtLCBpbmRleCwgb3B0aW9ucyA9IHt9KQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlRhYkJhckl0ZW0pOworICAg
ICAgICBpZiAoISh0YWJCYXJJdGVtIGluc3RhbmNlb2YgV0kuVGFiQmFySXRlbSkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBpZiAodGFiQmFySXRlbS5wYXJlbnRUYWJCYXIg
PT09IHRoaXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBpZiAodGhpcy5f
dGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIpIHsKKyAgICAgICAgICAgIC8vIERlbGF5
IGFkZGluZyB0aGUgbmV3IHRhYiB1bnRpbCB3ZSBjYW4gZXhwYW5kIHRoZSB0YWJzIGFmdGVyIGEg
Y2xvc2VkIHRhYi4KKyAgICAgICAgICAgIHRoaXMuX2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNs
b3NlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWJCYXJJdGVt
KHRhYkJhckl0ZW0sIGluZGV4LCBvcHRpb25zKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGFiQmFySXRlbS5wYXJl
bnRUYWJCYXIpCisgICAgICAgICAgICB0YWJCYXJJdGVtLnBhcmVudFRhYkJhci5yZW1vdmVUYWJC
YXJJdGVtKHRhYkJhckl0ZW0pOworCisgICAgICAgIHRhYkJhckl0ZW0ucGFyZW50VGFiQmFyID0g
dGhpczsKKworICAgICAgICBpbmRleCA9IE51bWJlci5jb25zdHJhaW4oaW5kZXgsIDAsIHRoaXMu
bm9ybWFsVGFiQ291bnQpOworCisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKCJhbmltYXRpbmciKSkgeworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIG9wdGlvbnMuc3VwcHJlc3NB
bmltYXRpb25zID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBiZWZvcmVUYWJTaXpl
c0FuZFBvc2l0aW9uczsKKyAgICAgICAgaWYgKCFvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucykK
KyAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFi
QmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMu
c3BsaWNlKGluZGV4LCAwLCB0YWJCYXJJdGVtKTsKKworICAgICAgICB2YXIgbmV4dFNpYmxpbmcg
PSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCArIDFdOworICAgICAgICBsZXQgbmV4dFNpYmxpbmdF
bGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogdGhpcy5fdGFiQmFy
SXRlbXMubGFzdFZhbHVlLmVsZW1lbnQ7CisKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jb250
YWlucyhuZXh0U2libGluZ0VsZW1lbnQpKQorICAgICAgICAgICAgdGhpcy5lbGVtZW50Lmluc2Vy
dEJlZm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0YWJCYXJJdGVtLmVs
ZW1lbnQpOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUt
dGFiIiwgIXRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCkpOworCisgICAgICAgIHRhYkJh
ckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbnVsbDsKKyAgICAgICAgdGFiQmFySXRlbS5lbGVt
ZW50LnN0eWxlLndpZHRoID0gbnVsbDsKKworICAgICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmlt
YXRpbmciKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbnNlcnRp
bmctdGFiIik7CisKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9z
aXRpb25zKGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOworCisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxl
c0xpc3RlbmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJlbW92ZVN0eWxlcygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJz
dGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZSgiaW5zZXJ0aW5nLXRhYiIpOworCisgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgiYmVpbmctaW5zZXJ0ZWQiKTsKKworICAgICAgICAgICAgdGhpcy5fY2xl
YXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHls
ZXNMaXN0ZW5lcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NB
bmltYXRpb25zKSB7CisgICAgICAgICAgICB2YXIgYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyA9
IHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworCisgICAgICAgICAg
ICB0aGlzLnVwZGF0ZUxheW91dCgpOworCisgICAgICAgICAgICBsZXQgdGFiQmFySXRlbXMgPSB0
aGlzLl90YWJCYXJJdGVtc0Zyb21MZWZ0VG9SaWdodCgpOworICAgICAgICAgICAgbGV0IHByZXZp
b3VzVGFiQmFySXRlbSA9IHRhYkJhckl0ZW1zW3RhYkJhckl0ZW1zLmluZGV4T2YodGFiQmFySXRl
bSkgLSAxXSB8fCBudWxsOworICAgICAgICAgICAgbGV0IHByZXZpb3VzVGFiQmFySXRlbVNpemVB
bmRQb3NpdGlvbiA9IHByZXZpb3VzVGFiQmFySXRlbSA/IGJlZm9yZVRhYlNpemVzQW5kUG9zaXRp
b25zLmdldChwcmV2aW91c1RhYkJhckl0ZW0pIDogbnVsbDsKKworICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzVGFiQmFySXRlbVNpemVBbmRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICBiZWZvcmVU
YWJTaXplc0FuZFBvc2l0aW9ucy5zZXQodGFiQmFySXRlbSwge2xlZnQ6IHByZXZpb3VzVGFiQmFy
SXRlbVNpemVBbmRQb3NpdGlvbi5sZWZ0ICsgcHJldmlvdXNUYWJCYXJJdGVtU2l6ZUFuZFBvc2l0
aW9uLndpZHRoLCB3aWR0aDogMH0pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJCYXJJdGVtLCB7bGVmdDogMCwgd2lk
dGg6IDB9KTsKKworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRp
Yy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJiZWluZy1pbnNlcnRlZCIpOworCisgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucyhiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyk7CisKKyAgICAgICAg
ICAgIHZhciByZW1vdmVTdHlsZXNMaXN0ZW5lciA9IHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpOwor
CisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlz
KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOworCisg
ICAgICAgIGlmICghKHRhYkJhckl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKSkK
KyAgICAgICAgICAgIHRoaXMudXBkYXRlTmV3VGFiVGFiQmFySXRlbVN0YXRlKCk7CisKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0
ZW1BZGRlZCwge3RhYkJhckl0ZW19KTsKKworICAgICAgICByZXR1cm4gdGFiQmFySXRlbTsKKyAg
ICB9CisKKyAgICByZW1vdmVUYWJCYXJJdGVtKHRhYkJhckl0ZW1PckluZGV4LCBvcHRpb25zID0g
e30pCisgICAgeworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IHRoaXMuX2ZpbmRUYWJCYXJJdGVt
KHRhYkJhckl0ZW1PckluZGV4KTsKKyAgICAgICAgaWYgKCF0YWJCYXJJdGVtIHx8IHRhYkJhckl0
ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisKKyAgICAgICAgdGFiQmFySXRlbS5wYXJlbnRUYWJCYXIgPSBudWxsOworCisgICAgICAg
IGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gPT09IHRhYkJhckl0ZW0pIHsKKyAgICAgICAg
ICAgIHZhciBpbmRleCA9IHRoaXMuX3RhYkJhckl0ZW1zLmluZGV4T2YodGFiQmFySXRlbSk7Cisg
ICAgICAgICAgICB2YXIgbmV4dFRhYkJhckl0ZW0gPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCAr
IDFdOworICAgICAgICAgICAgaWYgKCFuZXh0VGFiQmFySXRlbSB8fCBuZXh0VGFiQmFySXRlbSBp
bnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgbmV4dFRhYkJh
ckl0ZW0gPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCAtIDFdOworCisgICAgICAgICAgICBsZXQg
aW5pdGlhdG9ySGludCA9IG9wdGlvbnMuaW5pdGlhdG9ySGludCB8fCBXSS5UYWJCcm93c2VyLlRh
Yk5hdmlnYXRpb25Jbml0aWF0b3IuVW5rbm93bjsKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0VGFi
QmFySXRlbShuZXh0VGFiQmFySXRlbSwge2luaXRpYXRvckhpbnR9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkg
eworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbW92ZVN0eWxlcy5iaW5kKHRo
aXMpKTsKKyAgICAgICAgICAgIG9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zID0gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9uczsKKyAgICAg
ICAgaWYgKCFvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucykKKyAgICAgICAgICAgIGJlZm9yZVRh
YlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRp
b25zKCk7CisKKyAgICAgICAgLy8gU3VidHJhY3QgMSBmcm9tIG5vcm1hbFRhYkNvdW50IHNpbmNl
IGFycmF5cyBiZWdpbiBpbmRleGluZyBhdCAwLgorICAgICAgICBsZXQgd2FzTGFzdE5vcm1hbFRh
YiA9IHRoaXMuX3RhYkJhckl0ZW1zLmluZGV4T2YodGFiQmFySXRlbSkgPT09IHRoaXMubm9ybWFs
VGFiQ291bnQgLSAxOworCisgICAgICAgIHRoaXMuX3RhYkJhckl0ZW1zLnJlbW92ZSh0YWJCYXJJ
dGVtKTsKKyAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnJlbW92ZSgpOworCisgICAgICAgIHZh
ciBoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYiA9IHRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFi
KCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwg
IWhhc01vcmVUaGFuT25lTm9ybWFsVGFiKTsKKworICAgICAgICBjb25zdCBzaG91bGRPcGVuRGVm
YXVsdFRhYiA9ICF0YWJCYXJJdGVtLmlzRGVmYXVsdFRhYiAmJiAhdGhpcy5ub3JtYWxUYWJDb3Vu
dDsKKyAgICAgICAgaWYgKHNob3VsZE9wZW5EZWZhdWx0VGFiKQorICAgICAgICAgICAgb3B0aW9u
cy5zdXBwcmVzc0FuaW1hdGlvbnMgPSB0cnVlOworCisgICAgICAgIGlmICghaGFzTW9yZVRoYW5P
bmVOb3JtYWxUYWIgfHwgd2FzTGFzdE5vcm1hbFRhYiB8fCAhb3B0aW9ucy5zdXBwcmVzc0V4cGFu
c2lvbikgeworICAgICAgICAgICAgaWYgKCFvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucykgewor
ICAgICAgICAgICAgICAgIHRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9z
ZShiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CisKKyAgICAgICAgICAgIHRoaXMudXBkYXRl
TmV3VGFiVGFiQmFySXRlbVN0YXRlKCk7CisKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtUmVtb3ZlZCwge3RhYkJhckl0
ZW19KTsKKworICAgICAgICAgICAgaWYgKHNob3VsZE9wZW5EZWZhdWx0VGFiKQorICAgICAgICAg
ICAgICAgIHRoaXMuX29wZW5EZWZhdWx0VGFiKCk7CisKKyAgICAgICAgICAgIHJldHVybiB0YWJC
YXJJdGVtOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGxhc3ROb3JtYWxUYWJCYXJJdGVtOwor
CisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKKyAgICAgICAgeworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNsb3NpbmctdGFiIik7CisKKyAgICAgICAgICAgIC8v
IEZvciBSVEwsIHdlIG5lZWQgdG8gcGxhY2UgZXh0cmEgc3BhY2UgYmV0d2VlbiBwaW5uZWQgdGFi
IGFuZCBmaXJzdCBub3JtYWwgdGFiLgorICAgICAgICAgICAgLy8gRnJvbSBsZWZ0IHRvIHJpZ2h0
IHRoZXJlIGlzIHBpbm5lZCB0YWJzLCBleHRyYSBzcGFjZSwgdGhlbiBub3JtYWwgdGFicy4gQ29t
cHV0ZQorICAgICAgICAgICAgLy8gaG93IG11Y2ggZXh0cmEgc3BhY2Ugd2UgbmVlZCB0byBhZGRp
dGlvbmFsbHkgYWRkIGZvciBub3JtYWwgdGFiIGl0ZW1zLgorICAgICAgICAgICAgbGV0IGV4dHJh
U3BhY2VCZXR3ZWVuTm9ybWFsQW5kUGlubmVkVGFicyA9IDA7CisgICAgICAgICAgICBpZiAoV0ku
cmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCkgewor
ICAgICAgICAgICAgICAgIGV4dHJhU3BhY2VCZXR3ZWVuTm9ybWFsQW5kUGlubmVkVGFicyA9IHRo
aXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsKKyAgICAgICAgICAgICAg
ICBmb3IgKGxldCBjdXJyZW50VGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtc0Zyb21MZWZ0
VG9SaWdodCgpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVNwYWNlQmV0d2Vlbk5vcm1hbEFu
ZFBpbm5lZFRhYnMgLT0gY3VycmVudFRhYkJhckl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKS53aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IGxlZnQgPSAw
OworICAgICAgICAgICAgZm9yIChsZXQgY3VycmVudFRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFy
SXRlbXNGcm9tTGVmdFRvUmlnaHQoKSkgeworICAgICAgICAgICAgICAgIGxldCBzaXplQW5kUG9z
aXRpb24gPSBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucy5nZXQoY3VycmVudFRhYkJhckl0ZW0p
OworCisgICAgICAgICAgICAgICAgaWYgKCEoY3VycmVudFRhYkJhckl0ZW0gaW5zdGFuY2VvZiBX
SS5QaW5uZWRUYWJCYXJJdGVtKSkgeworICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGFiQmFy
SXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBleHRyYVNwYWNlQmV0d2Vlbk5vcm1hbEFuZFBpbm5l
ZFRhYnMgKyBsZWZ0ICsgInB4IjsKKyAgICAgICAgICAgICAgICAgICAgbGVmdCArPSBzaXplQW5k
UG9zaXRpb24ud2lkdGg7CisgICAgICAgICAgICAgICAgICAgIGxhc3ROb3JtYWxUYWJCYXJJdGVt
ID0gY3VycmVudFRhYkJhckl0ZW07CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGxlZnQgPSBzaXplQW5kUG9zaXRpb24ubGVmdCArIHNpemVBbmRQb3NpdGlvbi53
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIHNlbGVjdGVkIHRhYiBh
bmQgbGFzdCB0YWIgbmVlZCB0byBkcmF3IGEgcmlnaHQgYm9yZGVyIGFzIHdlbGwsIHNvIG1ha2Ug
dGhlbSAxcHggd2lkZXIuCisgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVt
KQorICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnN0eWxl
LndpZHRoID0gKHBhcnNlRmxvYXQodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5
bGUud2lkdGgpICsgMSkgKyAicHgiOworCisgICAgICAgICAgICBpZiAobGFzdE5vcm1hbFRhYkJh
ckl0ZW0gIT09IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAgICBsYXN0
Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQobGFzdE5v
cm1hbFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgKyAxKSArICJweCI7CisKKyAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5k
IiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
cmVtb3ZlU3R5bGVzKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhlIHNlbGVjdGVkIHRh
YiBuZWVkcyB0byBzdG9wIGRyYXdpbmcgdGhlIHJpZ2h0IGJvcmRlciwgc28gbWFrZSBpdCAxcHgg
c21hbGxlci4gT25seSBpZiBpdCBpc24ndCB0aGUgbGFzdC4KKyAgICAgICAgICAgIGlmICh0aGlz
Ll9zZWxlY3RlZFRhYkJhckl0ZW0gJiYgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtICE9PSBsYXN0
Tm9ybWFsVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0
ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IChwYXJzZUZsb2F0KHRoaXMuX3NlbGVjdGVkVGFiQmFy
SXRlbS5lbGVtZW50LnN0eWxlLndpZHRoKSAtIDEpICsgInB4IjsKKworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNsb3NpbmctdGFiIik7CisKKyAgICAgICAgICAg
IHRoaXMudXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVF
dmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucykg
eworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQi
KTsKKworICAgICAgICAgICAgdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIg
PSB0cnVlOworCisgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0
aW9ucyhiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyk7CisKKyAgICAgICAgICAgIHZhciByZW1v
dmVTdHlsZXNMaXN0ZW5lciA9IHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpOworCisgICAgICAgICAg
ICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOworCisgICAgICAgIHRoaXMu
dXBkYXRlTmV3VGFiVGFiQmFySXRlbVN0YXRlKCk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1SZW1vdmVkLCB7dGFiQmFy
SXRlbX0pOworCisgICAgICAgIGlmIChzaG91bGRPcGVuRGVmYXVsdFRhYikKKyAgICAgICAgICAg
IHRoaXMuX29wZW5EZWZhdWx0VGFiKCk7CisKKyAgICAgICAgcmV0dXJuIHRhYkJhckl0ZW07Cisg
ICAgfQorCisgICAgc2VsZWN0UHJldmlvdXNUYWIoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X3RhYkJhckl0ZW1zLmxlbmd0aCA8PSAxKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHZhciBzdGFydEluZGV4ID0gdGhpcy5fdGFiQmFySXRlbXMuaW5kZXhPZih0aGlzLl9zZWxlY3Rl
ZFRhYkJhckl0ZW0pOworICAgICAgICB2YXIgbmV3SW5kZXggPSBzdGFydEluZGV4OworICAgICAg
ICBkbyB7CisgICAgICAgICAgICBpZiAobmV3SW5kZXggPT09IDApCisgICAgICAgICAgICAgICAg
bmV3SW5kZXggPSB0aGlzLl90YWJCYXJJdGVtcy5sZW5ndGggLSAxOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIG5ld0luZGV4LS07CisKKyAgICAgICAgICAgIGlmICghKHRoaXMu
X3RhYkJhckl0ZW1zW25ld0luZGV4XSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IHdoaWxlIChuZXdJbmRleCAhPT0gc3Rh
cnRJbmRleCk7CisKKyAgICAgICAgaWYgKG5ld0luZGV4ID09PSBzdGFydEluZGV4KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJCYXJJdGVtID0gdGhpcy5f
dGFiQmFySXRlbXNbbmV3SW5kZXhdOworICAgIH0KKworICAgIHNlbGVjdE5leHRUYWIoKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aCA8PSAxKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHZhciBzdGFydEluZGV4ID0gdGhpcy5fdGFiQmFySXRlbXMu
aW5kZXhPZih0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pOworICAgICAgICB2YXIgbmV3SW5kZXgg
PSBzdGFydEluZGV4OworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAobmV3SW5kZXggPT09
IHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgICAgbmV3SW5kZXgg
PSAwOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0luZGV4Kys7CisKKyAg
ICAgICAgICAgIGlmICghKHRoaXMuX3RhYkJhckl0ZW1zW25ld0luZGV4XSBpbnN0YW5jZW9mIFdJ
LlBpbm5lZFRhYkJhckl0ZW0pKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IHdo
aWxlIChuZXdJbmRleCAhPT0gc3RhcnRJbmRleCk7CisKKyAgICAgICAgaWYgKG5ld0luZGV4ID09
PSBzdGFydEluZGV4KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuc2VsZWN0
ZWRUYWJCYXJJdGVtID0gdGhpcy5fdGFiQmFySXRlbXNbbmV3SW5kZXhdOworICAgIH0KKworICAg
IGdldCBzZWxlY3RlZFRhYkJhckl0ZW0oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Nl
bGVjdGVkVGFiQmFySXRlbTsKKyAgICB9CisKKyAgICBzZXQgc2VsZWN0ZWRUYWJCYXJJdGVtKHRh
YkJhckl0ZW1PckluZGV4KQorICAgIHsKKyAgICAgICAgdGhpcy5zZWxlY3RUYWJCYXJJdGVtKHRh
YkJhckl0ZW1PckluZGV4KTsKKyAgICB9CisKKyAgICBzZWxlY3RUYWJCYXJJdGVtKHRhYkJhckl0
ZW1PckluZGV4LCBvcHRpb25zID0ge30pCisgICAgeworICAgICAgICBsZXQgdGFiQmFySXRlbSA9
IHRoaXMuX2ZpbmRUYWJCYXJJdGVtKHRhYkJhckl0ZW1PckluZGV4KTsKKyAgICAgICAgaWYgKHRh
YkJhckl0ZW0gPT09IHRoaXMuX25ld1RhYlRhYkJhckl0ZW0gfHwgdGFiQmFySXRlbSA9PT0gdGhp
cy5fdGFiUGlja2VyVGFiQmFySXRlbSkgeworICAgICAgICAgICAgLy8gR2V0IHRoZSBsYXN0IG5v
cm1hbCB0YWIgaXRlbSBpZiB0aGUgaXRlbSBpcyBub3Qgc2VsZWN0YWJsZS4KKyAgICAgICAgICAg
IHRhYkJhckl0ZW0gPSB0aGlzLl90YWJCYXJJdGVtc1t0aGlzLm5vcm1hbFRhYkNvdW50IC0gMV07
CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtID09PSB0
YWJCYXJJdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBwcmV2aW91c1Rh
YkJhckl0ZW0gPSB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW07CisKKyAgICAgICAgaWYgKHRoaXMu
X3NlbGVjdGVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRl
bS5zZWxlY3RlZCA9IGZhbHNlOworCisgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSA9
IHRhYkJhckl0ZW0gfHwgbnVsbDsKKworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJ
dGVtKSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uc2VsZWN0ZWQgPSB0
cnVlOworICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LmNs
YXNzTGlzdC5jb250YWlucygiaGlkZGVuIikpCisgICAgICAgICAgICAgICAgdGhpcy5uZWVkc0xh
eW91dCgpOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGluaXRpYXRvckhpbnQgPSBvcHRpb25z
LmluaXRpYXRvckhpbnQgfHwgV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLlVu
a25vd247CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhYkJhci5F
dmVudC5UYWJCYXJJdGVtU2VsZWN0ZWQsIHtwcmV2aW91c1RhYkJhckl0ZW0sIGluaXRpYXRvckhp
bnR9KTsKKyAgICB9CisKKyAgICBnZXQgdGFiQmFySXRlbXMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3RhYkJhckl0ZW1zOworICAgIH0KKworICAgIGdldCBub3JtYWxUYWJDb3VudCgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMuZmlsdGVyKChpdGVtKSA9
PiAhKGl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKSkubGVuZ3RoOworICAgIH0K
KworICAgIGdldCBzYXZlYWJsZVRhYkNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll90YWJCYXJJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QgJiYg
aXRlbS5yZXByZXNlbnRlZE9iamVjdC5jb25zdHJ1Y3Rvci5zaG91bGRTYXZlVGFiKCkpLmxlbmd0
aDsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGxheW91dCgpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJjYWxjdWxhdGUtd2lkdGgiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoImNvbGxhcHNlZCIpOworCisgICAgICAgIGZ1bmN0aW9uIGZvcmNlSXRlbUhpZGRlbihp
dGVtLCBoaWRkZW4pIHsKKyAgICAgICAgICAgIGl0ZW0uZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xl
KCJoaWRkZW4iLCAhIWhpZGRlbik7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBpdGVt
IG9mIHRoaXMuX3RhYkJhckl0ZW1zKQorICAgICAgICAgICAgZm9yY2VJdGVtSGlkZGVuKGl0ZW0s
IGl0ZW0gPT09IHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0pOworCisgICAgICAgIGZ1bmN0aW9u
IG1lYXN1cmVJdGVtV2lkdGgoaXRlbSkgeworICAgICAgICAgICAgaWYgKCFpdGVtW1dJLlRhYkJh
ci5DYWNoZWRXaWR0aFN5bWJvbF0pCisgICAgICAgICAgICAgICAgaXRlbVtXSS5UYWJCYXIuQ2Fj
aGVkV2lkdGhTeW1ib2xdID0gaXRlbS5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKyAgICAgICAg
ICAgIHJldHVybiBpdGVtW1dJLlRhYkJhci5DYWNoZWRXaWR0aFN5bWJvbF07CisgICAgICAgIH0K
KworICAgICAgICBsZXQgcmVjYWxjdWxhdGVJdGVtV2lkdGhzID0gKCkgPT4geworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zLnJlZHVjZSgodG90YWwsIGl0ZW0pID0+IHsKKyAg
ICAgICAgICAgICAgICBpdGVtW1dJLlRhYkJhci5DYWNoZWRXaWR0aFN5bWJvbF0gPSB1bmRlZmlu
ZWQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsICsgbWVhc3VyZUl0ZW1XaWR0aChpdGVt
KTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9OworCisgICAgICAgIHRoaXMuX2hpZGRl
blRhYkJhckl0ZW1zID0gW107CisKKyAgICAgICAgbGV0IHRvdGFsSXRlbVdpZHRoID0gcmVjYWxj
dWxhdGVJdGVtV2lkdGhzKCk7CisgICAgICAgIGxldCBiYXJXaWR0aCA9IHRoaXMuZWxlbWVudC5y
ZWFsT2Zmc2V0V2lkdGg7CisKKyAgICAgICAgaWYgKHRvdGFsSXRlbVdpZHRoID4gYmFyV2lkdGgp
IHsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsK
KyAgICAgICAgICAgIHRvdGFsSXRlbVdpZHRoID0gcmVjYWxjdWxhdGVJdGVtV2lkdGhzKCk7Cisg
ICAgICAgICAgICBpZiAodG90YWxJdGVtV2lkdGggPiBiYXJXaWR0aCkgeworICAgICAgICAgICAg
ICAgIGZvcmNlSXRlbUhpZGRlbih0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLCBmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgdG90YWxJdGVtV2lkdGggKz0gbWVhc3VyZUl0ZW1XaWR0aCh0aGlzLl90
YWJQaWNrZXJUYWJCYXJJdGVtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IHRh
YkJhckl0ZW1zID0gdGhpcy5fdGFiQmFySXRlbXNGcm9tTGVmdFRvUmlnaHQoKTsKKyAgICAgICAg
ICAgIGxldCBpbmRleCA9IHRhYkJhckl0ZW1zLmxlbmd0aDsKKyAgICAgICAgICAgIHdoaWxlICh0
b3RhbEl0ZW1XaWR0aCA+IGJhcldpZHRoICYmIC0taW5kZXggPj0gMCkgeworICAgICAgICAgICAg
ICAgIGxldCBpdGVtID0gdGFiQmFySXRlbXNbaW5kZXhdOworICAgICAgICAgICAgICAgIGlmIChp
dGVtID09PSB0aGlzLnNlbGVjdGVkVGFiQmFySXRlbSB8fCBpdGVtIGluc3RhbmNlb2YgV0kuUGlu
bmVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgICAgICB0b3RhbEl0ZW1XaWR0aCAtPSBtZWFzdXJlSXRlbVdpZHRoKGl0ZW0pOworICAgICAg
ICAgICAgICAgIGZvcmNlSXRlbUhpZGRlbihpdGVtLCB0cnVlKTsKKworICAgICAgICAgICAgICAg
IHRoaXMuX2hpZGRlblRhYkJhckl0ZW1zLnB1c2goaXRlbSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY2FsY3VsYXRl
LXdpZHRoIik7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3RhYkJhckl0ZW1zRnJv
bUxlZnRUb1JpZ2h0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBXSS5yZXNvbHZlZExheW91dERp
cmVjdGlvbigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uTFRSID8gdGhpcy5fdGFiQmFySXRlbXMg
OiB0aGlzLl90YWJCYXJJdGVtcy5zbGljZSgpLnJldmVyc2UoKTsKKyAgICB9CisKKyAgICBfZmlu
ZFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5kZXgpCisgICAgeworICAgICAgICBpZiAodHlwZW9m
IHRhYkJhckl0ZW1PckluZGV4ID09PSAibnVtYmVyIikKKyAgICAgICAgICAgIHJldHVybiB0aGlz
Ll90YWJCYXJJdGVtc1t0YWJCYXJJdGVtT3JJbmRleF0gfHwgbnVsbDsKKworICAgICAgICBpZiAo
dGFiQmFySXRlbU9ySW5kZXggaW5zdGFuY2VvZiBXSS5UYWJCYXJJdGVtKSB7CisgICAgICAgICAg
ICBpZiAodGhpcy5fdGFiQmFySXRlbXMuaW5jbHVkZXModGFiQmFySXRlbU9ySW5kZXgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0YWJCYXJJdGVtT3JJbmRleDsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIF9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigp
CisgICAgeworICAgICAgICBsZXQgbm9ybWFsVGFiQ291bnQgPSAwOworICAgICAgICBmb3IgKGxl
dCB0YWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICBpZiAodGFi
QmFySXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICsrbm9ybWFsVGFiQ291bnQ7CisgICAgICAgICAgICBp
ZiAobm9ybWFsVGFiQ291bnQgPj0gMikKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBfb3BlbkRlZmF1
bHRUYWIoKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
VGFiQmFyLkV2ZW50Lk9wZW5EZWZhdWx0VGFiKTsKKyAgICB9CisKKyAgICBfcmVjb3JkVGFiQmFy
SXRlbVNpemVzQW5kUG9zaXRpb25zKCkKKyAgICB7CisgICAgICAgIHZhciB0YWJCYXJJdGVtU2l6
ZXNBbmRQb3NpdGlvbnMgPSBuZXcgTWFwOworCisgICAgICAgIGNvbnN0IGJhclJlY3QgPSB0aGlz
LmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisKKyAgICAgICAgZm9yICh2YXIgdGFi
QmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgeworICAgICAgICAgICAgdmFyIGJvdW5kaW5n
UmVjdCA9IHRhYkJhckl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAg
ICAgICAgIHRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucy5zZXQodGFiQmFySXRlbSwge2xlZnQ6
IGJvdW5kaW5nUmVjdC5sZWZ0IC0gYmFyUmVjdC5sZWZ0LCB3aWR0aDogYm91bmRpbmdSZWN0Lndp
ZHRofSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGFiQmFySXRlbVNpemVzQW5kUG9z
aXRpb25zOworICAgIH0KKworICAgIF9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyh0
YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMsIHNraXBUYWJCYXJJdGVtKQorICAgIHsKKyAgICAg
ICAgZm9yICh2YXIgW3RhYkJhckl0ZW0sIHNpemVBbmRQb3NpdGlvbl0gb2YgdGFiQmFySXRlbVNp
emVzQW5kUG9zaXRpb25zKSB7CisgICAgICAgICAgICBpZiAoc2tpcFRhYkJhckl0ZW0gJiYgdGFi
QmFySXRlbSA9PT0gc2tpcFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IHNpemVBbmRQb3NpdGlv
bi5sZWZ0ICsgInB4IjsKKyAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0
aCA9IHNpemVBbmRQb3NpdGlvbi53aWR0aCArICJweCI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBfY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoc2tpcFRhYkJhckl0ZW0pCisgICAg
eworICAgICAgICBmb3IgKHZhciB0YWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7Cisg
ICAgICAgICAgICBpZiAoc2tpcFRhYkJhckl0ZW0gJiYgdGFiQmFySXRlbSA9PT0gc2tpcFRhYkJh
ckl0ZW0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJCYXJJdGVt
LmVsZW1lbnQuc3R5bGUubGVmdCA9IG51bGw7CisgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1l
bnQuc3R5bGUud2lkdGggPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgX2ZpbmlzaEV4
cGFuZGluZ1RhYnNBZnRlckNsb3NlKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewor
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1v
dXNlRW50ZXIpOworICAgICAgICAgICAgdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNl
RW50ZXIgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKCFiZWZvcmVUYWJTaXplc0FuZFBvc2l0
aW9ucykKKyAgICAgICAgICAgICAgICBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyA9IHRoaXMu
X3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworCisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAg
dGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKworICAgICAgICAgICAg
dmFyIGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6
ZXNBbmRQb3NpdGlvbnMoKTsKKworICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6
ZXNBbmRQb3NpdGlvbnMoYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKworICAgICAgICAg
ICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJleHBhbmRpbmctdGFicyIpOworCisg
ICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYWZ0
ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyk7CisKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3Rl
bmVyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVz
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kaW5nLXRhYnMiKTsKKworICAgICAgICAgICAgICAg
IHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgICAg
ICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOworCisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50
LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNM
aXN0ZW5lcik7CisKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciByZW1vdmVTdHlsZXNMaXN0ZW5lciA9IHJlbW92ZVN0eWxlcy5iaW5k
KHRoaXMpOworCisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMu
YmluZCh0aGlzKSk7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgX2hhbmRs
ZU1vdXNlRG93bihldmVudCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkgY29uc2lkZXIgbGVmdCBt
b3VzZSBjbGlja3MgZm9yIHRhYiBtb3ZlbWVudC4KKyAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAh
PT0gMCB8fCBldmVudC5jdHJsS2V5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxl
dCBpdGVtRWxlbWVudCA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KCIuIiArIFdJLlRhYkJhckl0ZW0u
U3R5bGVDbGFzc05hbWUpOworICAgICAgICBpZiAoIWl0ZW1FbGVtZW50KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gaXRlbUVsZW1lbnRbV0kuVGFiQmFy
SXRlbS5FbGVtZW50UmVmZXJlbmNlU3ltYm9sXTsKKyAgICAgICAgaWYgKCF0YWJCYXJJdGVtKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0YWJCYXJJdGVtLmRpc2FibGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0YWJCYXJJdGVtID09PSB0aGlzLl9u
ZXdUYWJUYWJCYXJJdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0YWJC
YXJJdGVtID09PSB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtKSB7CisgICAgICAgICAgICBpZiAo
IXRoaXMuX2hpZGRlblRhYkJhckl0ZW1zLmxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVUYWJQaWNrZXJNb3VzZURvd24pCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLl9pZ25vcmVUYWJQaWNrZXJN
b3VzZURvd24gPSB0cnVlOworCisgICAgICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXSS5Db250
ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgY29udGV4dE1lbnUu
YWRkQmVmb3JlU2hvd0NhbGxiYWNrKCgpID0+IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9pZ25v
cmVUYWJQaWNrZXJNb3VzZURvd24gPSBmYWxzZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuX2hpZGRlblRhYkJhckl0ZW1zKSB7CisgICAgICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShpdGVtLnRpdGxlLCAoKSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0VGFiQmFySXRlbShpdGVtLCB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25J
bml0aWF0b3IuQ29udGV4dE1lbnUsCisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb250ZXh0TWVudS5zaG93
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgY2xvc2VC
dXR0b25FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoIi4iICsgV0kuVGFiQmFySXRlbS5D
bG9zZUJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKGNsb3NlQnV0dG9uRWxlbWVu
dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnNlbGVjdFRhYkJhckl0ZW0o
dGFiQmFySXRlbSwgeworICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5U
YWJOYXZpZ2F0aW9uSW5pdGlhdG9yLlRhYkNsaWNrLAorICAgICAgICB9KTsKKworICAgICAgICBp
ZiAodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0gfHwgIXRoaXMuX2hh
c01vcmVUaGFuT25lTm9ybWFsVGFiKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGhpcy5fZmlyc3ROb3JtYWxUYWJJdGVtSW5kZXggPSAwOworICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5fdGFiQmFySXRlbXNbaV0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB0aGlzLl9maXJzdE5vcm1hbFRh
Ykl0ZW1JbmRleCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IHRoaXMuX21vdXNlSXNEb3duID0gdHJ1ZTsKKworICAgICAgICB0aGlzLl9tb3VzZU1vdmVkRXZl
bnRMaXN0ZW5lciA9IHRoaXMuX2hhbmRsZU1vdXNlTW92ZWQuYmluZCh0aGlzKTsKKyAgICAgICAg
dGhpcy5fbW91c2VVcEV2ZW50TGlzdGVuZXIgPSB0aGlzLl9oYW5kbGVNb3VzZVVwLmJpbmQodGhp
cyk7CisKKyAgICAgICAgLy8gUmVnaXN0ZXIgdGhlc2UgbGlzdGVuZXJzIG9uIHRoZSBkb2N1bWVu
dCBzbyB3ZSBjYW4gdHJhY2sgdGhlIG1vdXNlIGlmIGl0IGxlYXZlcyB0aGUgdGFiIGJhci4KKyAg
ICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fbW91c2VN
b3ZlZEV2ZW50TGlzdGVuZXIsIHRydWUpOworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZXVwIiwgdGhpcy5fbW91c2VVcEV2ZW50TGlzdGVuZXIsIHRydWUpOworCisgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOworICAgIH0KKworICAgIF9oYW5kbGVDbGljayhldmVudCkKKyAgICB7CisgICAgICAgIHZh
ciBpdGVtRWxlbWVudCA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KCIuIiArIFdJLlRhYkJhckl0ZW0u
U3R5bGVDbGFzc05hbWUpOworICAgICAgICBpZiAoIWl0ZW1FbGVtZW50KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHZhciB0YWJCYXJJdGVtID0gaXRlbUVsZW1lbnRbV0kuVGFiQmFy
SXRlbS5FbGVtZW50UmVmZXJlbmNlU3ltYm9sXTsKKyAgICAgICAgaWYgKCF0YWJCYXJJdGVtKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0YWJCYXJJdGVtLmRpc2FibGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnN0IGNsaWNrZWRNaWRkbGVCdXR0b24g
PSBldmVudC5idXR0b24gPT09IDE7CisKKyAgICAgICAgdmFyIGNsb3NlQnV0dG9uRWxlbWVudCA9
IGV2ZW50LnRhcmdldC5jbG9zZXN0KCIuIiArIFdJLlRhYkJhckl0ZW0uQ2xvc2VCdXR0b25TdHls
ZUNsYXNzTmFtZSk7CisgICAgICAgIGlmIChjbG9zZUJ1dHRvbkVsZW1lbnQgfHwgY2xpY2tlZE1p
ZGRsZUJ1dHRvbikgeworICAgICAgICAgICAgLy8gRGlzYWxsb3cgY2xvc2luZyB0aGUgZGVmYXVs
dCB0YWIgaWYgaXQgaXMgdGhlIG9ubHkgdGFiLgorICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0u
aXNEZWZhdWx0VGFiICYmIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInNpbmdsZS10
YWIiKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmICghZXZlbnQu
YWx0S2V5KSB7CisgICAgICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICAg
ICAgICAgIHN1cHByZXNzRXhwYW5zaW9uOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBpbml0
aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuVGFiQ2xpY2ss
CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYkJhckl0
ZW0odGFiQmFySXRlbSwgb3B0aW9ucyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5fdGFiQmFySXRlbXMubGVu
Z3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgICAgICBsZXQgaXRlbSA9IHRoaXMu
X3RhYkJhckl0ZW1zW2ldOworICAgICAgICAgICAgICAgIGlmIChpdGVtID09PSB0YWJCYXJJdGVt
IHx8IGl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYkJhckl0ZW0oaXRl
bSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfaGFuZGxlTW91c2VN
b3ZlZChldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9
PT0gMCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX21vdXNlSXNEb3duKTsKKyAgICAg
ICAgaWYgKCF0aGlzLl9tb3VzZUlzRG93bikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pOworICAgICAgICBpZiAo
IXRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24o
KTsKKworICAgICAgICBpZiAoIXRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRp
Yy1sYXlvdXQiKSkgeworICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQ
b3NpdGlvbnModGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCkpOworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9tb3VzZU9mZnNldCA9PT0gdW5kZWZpbmVkKQor
ICAgICAgICAgICAgdGhpcy5fbW91c2VPZmZzZXQgPSBldmVudC5wYWdlWCAtIHRoaXMuX3NlbGVj
dGVkVGFiQmFySXRlbS5lbGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKKworICAgICAgICB2YXIgdGFi
QmFyTW91c2VPZmZzZXQgPSBldmVudC5wYWdlWCAtIHRoaXMuZWxlbWVudC50b3RhbE9mZnNldExl
ZnQ7CisgICAgICAgIHZhciBuZXdMZWZ0ID0gdGFiQmFyTW91c2VPZmZzZXQgLSB0aGlzLl9tb3Vz
ZU9mZnNldDsKKworICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHls
ZS5sZWZ0ID0gbmV3TGVmdCArICJweCI7CisKKyAgICAgICAgdmFyIHNlbGVjdGVkVGFiTWlkWCA9
IG5ld0xlZnQgKyAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQucmVhbE9mZnNldFdp
ZHRoIC8gMik7CisKKyAgICAgICAgdmFyIGN1cnJlbnRJbmRleCA9IHRoaXMuX3RhYkJhckl0ZW1z
LmluZGV4T2YodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKTsKKyAgICAgICAgdmFyIG5ld0luZGV4
ID0gY3VycmVudEluZGV4OworCisgICAgICAgIGZvciAobGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5f
dGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgIGlmICh0YWJCYXJJdGVtID09PSB0aGlzLl9zZWxl
Y3RlZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
IHZhciB0YWJCYXJJdGVtUmVjdCA9IHRhYkJhckl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKTsKKworICAgICAgICAgICAgaWYgKHNlbGVjdGVkVGFiTWlkWCA8IHRhYkJhckl0ZW1S
ZWN0LmxlZnQgfHwgc2VsZWN0ZWRUYWJNaWRYID4gdGFiQmFySXRlbVJlY3QucmlnaHQpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIG5ld0luZGV4ID0gdGhpcy5fdGFi
QmFySXRlbXMuaW5kZXhPZih0YWJCYXJJdGVtKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gU3VidHJhY3QgMSBmcm9tIG5vcm1hbFRhYkNvdW50IHNpbmNlIGFy
cmF5cyBiZWdpbiBpbmRleGluZyBhdCAwLgorICAgICAgICBuZXdJbmRleCA9IE51bWJlci5jb25z
dHJhaW4obmV3SW5kZXgsIHRoaXMuX2ZpcnN0Tm9ybWFsVGFiSXRlbUluZGV4LCB0aGlzLm5vcm1h
bFRhYkNvdW50IC0gMSk7CisKKyAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gbmV3SW5kZXgp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMuc3BsaWNl
KGN1cnJlbnRJbmRleCwgMSk7CisgICAgICAgIHRoaXMuX3RhYkJhckl0ZW1zLnNwbGljZShuZXdJ
bmRleCwgMCwgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKTsKKworICAgICAgICBsZXQgbmV4dFNp
YmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tuZXdJbmRleCArIDFdOworICAgICAgICBsZXQgbmV4
dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogdGhp
cy5fbmV3VGFiVGFiQmFySXRlbS5lbGVtZW50OworCisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNl
cnRCZWZvcmUodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxl
bWVudCk7CisKKyAgICAgICAgLy8gRklYTUU6IEFuaW1hdGUgdGhlIHRhYnMgdGhhdCBtb3ZlIHRv
IG1ha2Ugcm9vbSBmb3IgdGhlIHNlbGVjdGVkIHRhYi4gVGhpcyB3YXMgY2F1c2luZyBtZSB0cm91
YmxlIHdoZW4gSSB0cmllZC4KKworICAgICAgICBsZXQgbGVmdCA9IDA7CisgICAgICAgIGZvciAo
bGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXNGcm9tTGVmdFRvUmlnaHQoKSkgewor
ICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0gIT09IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSAm
JiB0YWJCYXJJdGVtICE9PSB0aGlzLl9uZXdUYWJUYWJCYXJJdGVtICYmIHBhcnNlRmxvYXQodGFi
QmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQpICE9PSBsZWZ0KQorICAgICAgICAgICAgICAgIHRh
YkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdCArICJweCI7CisgICAgICAgICAgICBs
ZWZ0ICs9IHBhcnNlRmxvYXQodGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIF9oYW5kbGVNb3VzZVVwKGV2ZW50KQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fbW91c2VJc0Rvd24pOworICAgICAgICBpZiAoIXRoaXMuX21vdXNlSXNEb3duKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKCJkcmFnZ2luZy10YWIiKTsKKworICAgICAgICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xv
c2VkU2luY2VNb3VzZUVudGVyKSB7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJ
dGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxl
dCBsZWZ0ID0gMDsKKyAgICAgICAgICAgIGZvciAobGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFi
QmFySXRlbXNGcm9tTGVmdFRvUmlnaHQoKSkgeworICAgICAgICAgICAgICAgIGlmICh0YWJCYXJJ
dGVtID09PSB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgICAgIHRh
YkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdCArICJweCI7CisgICAgICAgICAgICAg
ICAgbGVmdCArPSBwYXJzZUZsb2F0KHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9tb3VzZUlzRG93biA9IGZh
bHNlOworICAgICAgICB0aGlzLl9tb3VzZU9mZnNldCA9IHVuZGVmaW5lZDsKKworICAgICAgICBk
b2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9tb3VzZU1vdmVk
RXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoIm1vdXNldXAiLCB0aGlzLl9tb3VzZVVwRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisKKyAgICAg
ICAgdGhpcy5fbW91c2VNb3ZlZEV2ZW50TGlzdGVuZXIgPSBudWxsOworICAgICAgICB0aGlzLl9t
b3VzZVVwRXZlbnRMaXN0ZW5lciA9IG51bGw7CisKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1zUmVvcmRl
cmVkKTsKKyAgICB9CisKKyAgICBfaGFuZGxlTW91c2VMZWF2ZShldmVudCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9tb3VzZUlzRG93biB8fCAhdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5j
ZU1vdXNlRW50ZXIgfHwgIXRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1s
YXlvdXQiKSB8fCB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBUaGlzIGV2ZW50IGNhbiBzdGlsbCBm
aXJlIHdoZW4gdGhlIG1vdXNlIGlzIGluc2lkZSB0aGUgZWxlbWVudCBpZiBET00gbm9kZXMgYXJl
IGFkZGVkLCByZW1vdmVkIG9yIGdlbmVyYWxseSBjaGFuZ2UgaW5zaWRlLgorICAgICAgICAvLyBD
aGVjayBpZiB0aGUgbW91c2UgcmVhbGx5IGRpZCBsZWF2ZSB0aGUgZWxlbWVudCBieSBjaGVja2lu
ZyB0aGUgYm91bmRzLgorICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBhIFdlYktpdCBidWcgb3Ig
Y29ycmVjdCBiZWhhdmlvcj8KKyAgICAgICAgY29uc3QgYmFyUmVjdCA9IHRoaXMuZWxlbWVudC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgY29uc3QgbmV3VGFiSXRlbVJlY3QgPSB0
aGlzLl9uZXdUYWJUYWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Cisg
ICAgICAgIGlmIChldmVudC5wYWdlWSA+IGJhclJlY3QudG9wICYmIGV2ZW50LnBhZ2VZIDwgYmFy
UmVjdC5ib3R0b20gJiYgZXZlbnQucGFnZVggPiBiYXJSZWN0LmxlZnQgJiYgZXZlbnQucGFnZVgg
PCAobmV3VGFiSXRlbVJlY3QgPyBuZXdUYWJJdGVtUmVjdC5yaWdodCA6IGJhclJlY3QucmlnaHQp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2ZpbmlzaEV4cGFuZGluZ1Rh
YnNBZnRlckNsb3NlKCk7CisgICAgfQorCisgICAgX2hhbmRsZUNvbnRleHRNZW51KGV2ZW50KQor
ICAgIHsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJv
bUV2ZW50KGV2ZW50KTsKKworICAgICAgICBmb3IgKGxldCB0YWJDbGFzcyBvZiBXSS5rbm93blRh
YkNsYXNzZXMoKSkgeworICAgICAgICAgICAgaWYgKCF0YWJDbGFzcy5pc1RhYkFsbG93ZWQoKSB8
fCB0YWJDbGFzcy50YWJJbmZvKCkuaXNFcGhlbWVyYWwpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIGxldCBvcGVuVGFiQmFySXRlbSA9IG51bGw7CisgICAgICAgICAg
ICBmb3IgKGxldCB0YWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7CisgICAgICAgICAg
ICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGFiQmFySXRlbS5yZXByZXNlbnRlZE9iamVjdDsK
KyAgICAgICAgICAgICAgICBpZiAoISh0YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRhYkNv
bnRlbnRWaWV3KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
ICAgICBpZiAodGFiQ29udGVudFZpZXcudHlwZSA9PT0gdGFiQ2xhc3MuVHlwZSkgeworICAgICAg
ICAgICAgICAgICAgICBvcGVuVGFiQmFySXRlbSA9IHRhYkJhckl0ZW07CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVtKHRhYkNsYXNzLnRhYkluZm8oKS50
aXRsZSwgKCkgPT4geworICAgICAgICAgICAgICAgIGlmIChvcGVuVGFiQmFySXRlbSkKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVUYWJCYXJJdGVtKG9wZW5UYWJCYXJJdGVtKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIFdJLmNyZWF0ZU5ld1RhYldp
dGhUeXBlKHRhYkNsYXNzLlR5cGUsIHtzaG91bGRTaG93TmV3VGFiOiB0cnVlfSk7CisgICAgICAg
ICAgICB9LCAhIW9wZW5UYWJCYXJJdGVtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9oYW5k
bGVOZXdUYWJDbGljayhldmVudCkKKyAgICB7CisgICAgICAgIGxldCBvcHRpb25zID0ge2luaXRp
YXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5UYWJDbGlja307
CisgICAgICAgIFdJLnNob3dOZXdUYWJUYWIob3B0aW9ucyk7CisgICAgfQorCisgICAgX2hhbmRs
ZU5ld1RhYk1vdXNlRW50ZXIoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3RhYkFu
aW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKCJzdGF0aWMtbGF5b3V0IikgfHwgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlu
cygiYW5pbWF0aW5nIikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZmlu
aXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UoKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTWFpbi5jc3MgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NYWluLmNzcwppbmRleCBjOWU3Mzgz
NGU4NjRhODc4MzBmNDc0ZDYwM2FhYzA3N2UyMWQzNWJjLi4xMGNkNjRhNDU1OTA5OTVjZGE0OTAy
OTIxZTFiZjk4MTUwM2FmOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9NYWluLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9NYWluLmNzcwpAQCAtNjQsNiArNjQsMTAgQEAgYm9keSB7CiAgICAg
YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1jb2xvci1jb250ZW50KTsKIH0KIAor
Ym9keS5kb2NrZWQuYm90dG9tIHsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9y
ZGVyLWNvbG9yKTsKK30KKwogYm9keS5kb2NrZWQucmlnaHQgewogICAgIGJvcmRlci1sZWZ0OiAx
cHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKIH0KQEAgLTEwOSwyMyArMTEzLDEyIEBAIGJv
ZHkuZG9ja2VkLmxlZnQgI2RvY2tlZC1yZXNpemVyIHsKICAgICBjdXJzb3I6IGNvbC1yZXNpemU7
CiB9CiAKLSN1bmRvY2tlZC10aXRsZS1hcmVhIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0g
ICAgdG9wOiAwOwotICAgIHJpZ2h0OiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiB2YXIo
LS11bmRvY2tlZC10aXRsZS1hcmVhLWhlaWdodCk7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogbGlu
ZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA5MiUpLCBoc2woMCwgMCUsIDg3JSkp
OwotICAgIGJveC1zaGFkb3c6IGluc2V0IGhzbGEoMCwgMCUsIDEwMCUsIDAuNSkgMCAxcHggMXB4
OwotfQotCi1ib2R5LmRvY2tlZCAjdW5kb2NrZWQtdGl0bGUtYXJlYSB7Ci0gICAgZGlzcGxheTog
bm9uZTsKK2JvZHkuZG9ja2VkLmJvdHRvbSAjdG9vbGJhciB7CisgICAgY3Vyc29yOiByb3ctcmVz
aXplOwogfQogCi1ib2R5LndpbmRvdy1pbmFjdGl2ZSAjdW5kb2NrZWQtdGl0bGUtYXJlYSB7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCA5NiUpOwotICAgIGJhY2tncm91bmQtaW1h
Z2U6IG5vbmU7Citib2R5LmRvY2tlZC5ib3R0b20gI3Rvb2xiYXIgLml0ZW06bm90KC5mbGV4aWJs
ZS1zcGFjZSkgeworICAgIGN1cnNvcjogZGVmYXVsdDsKIH0KIAogaW5wdXRbdHlwZT1yYW5nZV0g
ewpAQCAtMTQ0LDcgKzEzNyw3IEBAIGlucHV0W3R5cGU9cmFuZ2VdOjotd2Via2l0LXNsaWRlci1y
dW5uYWJsZS10cmFjayB7CiAKICNtYWluIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAg
dG9wOiBjYWxjKHZhcigtLXVuZG9ja2VkLXRpdGxlLWFyZWEtaGVpZ2h0KSArIHZhcigtLXRhYi1i
YXItaGVpZ2h0KSk7CisgICAgdG9wOiBjYWxjKHZhcigtLXRvb2xiYXItaGVpZ2h0KSArIHZhcigt
LXRhYi1iYXItaGVpZ2h0KSk7CiAgICAgbGVmdDogMDsKICAgICByaWdodDogMDsKICAgICBib3R0
b206IDA7CkBAIC00ODIsMTUgKzQ3NSw2IEBAIGJvZHlbZGlyPXJ0bF0gW2Rpcj1sdHJdIC5nby10
by1hcnJvdyB7CiAgICAgfQogfQogCi1Aa2V5ZnJhbWVzIHRhYi1iYXItY29uc29sZS1pdGVtLXB1
bHNlIHsKLSAgICA1MCUgeyBvcGFjaXR5OiAwLjY7IH0KLX0KLQotLnRhYi1iYXIgPiAubmF2aWdh
dGlvbi1iYXIgOm1hdGNoZXMoLmNvbnNvbGUtd2FybmluZ3MsIC5jb25zb2xlLWVycm9ycyk6bm90
KC5kaXNhYmxlZCkucHVsc2luZyB7Ci0gICAgYW5pbWF0aW9uLW5hbWU6IHRhYi1iYXItY29uc29s
ZS1pdGVtLXB1bHNlOwotICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMC43NXM7Ci19Ci0KIC5kZXZp
Y2Utc2V0dGluZ3MtY29udGVudCB7CiAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIHBhZGRp
bmc6IDAgNHB4OwpAQCAtNTU1LDE1ICs1MzksNiBAQCBib2R5W2Rpcj1ydGxdIC5kZXZpY2Utc2V0
dGluZ3MtY29udGVudCA+IC5yZWZlcmVuY2UtcGFnZS1saW5rLWNvbnRhaW5lciB7CiB9CiAKIEBt
ZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgICAjdW5kb2NrZWQtdGl0bGUt
YXJlYSB7Ci0gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0
b20sIGhzbCgwLCAwJSwgMjYlKSwgaHNsKDAsIDAlLCAyMyUpKTsKLSAgICAgICAgYm94LXNoYWRv
dzogbm9uZTsKLSAgICB9Ci0KLSAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAjdW5kb2NrZWQtdGl0
bGUtYXJlYSB7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29s
b3IpOwotICAgIH0KLQogICAgIC5nby10by1hcnJvdyB7CiAgICAgICAgIGZpbHRlcjogaW52ZXJ0
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKaW5kZXggMzQzZWQxZGEzMWZiM2MwMjFhOWIx
OWExMDkyNTIyMWUyYTk0ZGVmNy4uYTI2OTY4NmQzOTdjYjIyMmFlMGYwODZkNTA1MTgxNTRmODZl
ODlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTmF2aWdhdGlvbkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCkBAIC0yNSw3ICsyNSw3IEBACiAKIFdJLk5hdmln
YXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV0kuVmlldwogewotICAgIGNv
bnN0cnVjdG9yKGVsZW1lbnQsIHtyb2xlLCBzaXplc1RvRml0fSA9IHt9KQorICAgIGNvbnN0cnVj
dG9yKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcywgcm9sZSwgbGFiZWwpCiAgICAgewogICAgICAg
ICBzdXBlcihlbGVtZW50KTsKIApAQCAtMzQsNiArMzQsOCBAQCBXSS5OYXZpZ2F0aW9uQmFyID0g
Y2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICBpZiAocm9sZSkK
ICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlKTsKKyAg
ICAgICAgaWYgKGxhYmVsKQorICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgi
YXJpYS1sYWJlbCIsIGxhYmVsKTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1cy5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5fYmx1ci5iaW5kKHRoaXMp
LCBmYWxzZSk7CkBAIC00MywxOSArNDUsMjEgQEAgV0kuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5h
dmlnYXRpb25CYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMuX21vdXNlTW92ZWRFdmVu
dExpc3RlbmVyID0gdGhpcy5fbW91c2VNb3ZlZC5iaW5kKHRoaXMpOwogICAgICAgICB0aGlzLl9t
b3VzZVVwRXZlbnRMaXN0ZW5lciA9IHRoaXMuX21vdXNlVXAuYmluZCh0aGlzKTsKIAotICAgICAg
ICB0aGlzLl9zaXplc1RvRml0ID0gc2l6ZXNUb0ZpdCB8fCBmYWxzZTsKICAgICAgICAgdGhpcy5f
bWluaW11bVdpZHRoID0gTmFOOwogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMgPSBbXTsK
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IG51bGw7CisKKyAgICAgICAg
aWYgKG5hdmlnYXRpb25JdGVtcykgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
YXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5hZGROYXZp
Z2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbXNbaV0pOworICAgICAgICB9CiAgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKLSAgICBnZXQgc2l6ZXNUb0ZpdCgpIHsgcmV0dXJuIHRoaXMuX3NpemVzVG9G
aXQ7IH0KLQogICAgIGFkZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtLCBwYXJlbnRFbGVt
ZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0TmF2aWdhdGlvbkl0ZW0obmF2
aWdhdGlvbkl0ZW0sIEluZmluaXR5LCBwYXJlbnRFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuaW5zZXJ0TmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0sIHRoaXMuX25hdmlnYXRpb25J
dGVtcy5sZW5ndGgsIHBhcmVudEVsZW1lbnQpOwogICAgIH0KIAogICAgIGluc2VydE5hdmlnYXRp
b25JdGVtKG5hdmlnYXRpb25JdGVtLCBpbmRleCwgcGFyZW50RWxlbWVudCkKQEAgLTY5LDcgKzcz
LDcgQEAgV0kuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXSS5W
aWV3CiAKICAgICAgICAgbmF2aWdhdGlvbkl0ZW0uZGlkQXR0YWNoKHRoaXMpOwogCi0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCFpc0Zpbml0ZShpbmRleCkgfHwgKGluZGV4ID49IDAgJiYgaW5kZXgg
PD0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCkpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dChpbmRleCA+PSAwICYmIGluZGV4IDw9IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGgpOwog
ICAgICAgICBpbmRleCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGluZGV4LCB0aGlzLl9uYXZpZ2F0
aW9uSXRlbXMubGVuZ3RoKSk7CiAKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLnNwbGlj
ZShpbmRleCwgMCwgbmF2aWdhdGlvbkl0ZW0pOwpAQCAtMTY0LDYgKzE2OCwxMiBAQCBXSS5OYXZp
Z2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAg
cmV0dXJuIHRoaXMuX21pbmltdW1XaWR0aDsKICAgICB9CiAKKyAgICBnZXQgc2l6ZXNUb0ZpdCgp
CisgICAgeworICAgICAgICAvLyBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgZmluZE5hdmlnYXRpb25JdGVtKGlkZW50
aWZpZXIpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBtYXRjaGluZ1NlbGZPckNoaWxkKGl0ZW0p
IHsKQEAgLTIxNCw3ICsyMjQsNyBAQCBXSS5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlv
bkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgIGl0ZW0udXBkYXRlKHtleHBhbmRPbmx5
OiB0cnVlfSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5fc2l6ZXNUb0ZpdCkKKyAg
ICAgICAgaWYgKHRoaXMuc2l6ZXNUb0ZpdCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBsZXQgdmlzaWJsZU5hdmlnYXRpb25JdGVtcyA9IHRoaXMuX3Zpc2libGVOYXZpZ2F0aW9uSXRl
bXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OZXR3b3JrRGV0YWlsVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OZXR3b3JrRGV0YWlsVmlldy5jc3MKaW5kZXggYzAyZWNiODY2ZTQ0MTM4NGZk
YTk4ZDYwMTJkM2M3NmQyNDk3MzYyYS4uYmVhNTY4ZjRmNDM0Yzk1YWU2YTg2OWJiOTU2NWRlMDkx
ZGJkMTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTmV0d29ya0RldGFpbFZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtEZXRhaWxWaWV3LmNzcwpAQCAtMjgsNyArMjgsNyBA
QAogICAgIHRvcDogMDsKICAgICBsZWZ0OiAwOwogICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTog
dmFyKC0tbmV0d29yay1zdGF0aXN0aWNzLWhlaWdodCk7CisgICAgYm90dG9tOiAwOwogICAgIC8q
IGxlZnQgb3IgcmlnaHQgc2V0IGJ5IE5ldHdvcmtUYWJsZVZpZXcgb24gZGlzcGxheSAvIHJlc2l6
ZSAqLwogICAgIHotaW5kZXg6IDEwOwogICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29y
a1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDY1MTEwYWNhMjMyNDg0ZmRlYmNm
M2ZlOTJjYzE0NzcxYzUwMWM1MTcuLmIwZTNhMzAxODlkZjg5NmE1ODc0ZjkwZWZjNjczM2Y5MGMw
YjA1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL05ldHdvcmtUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanMKQEAgLTI1LDkgKzI1
LDExIEBACiAKIFdJLk5ldHdvcmtUYWJDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJDb250
ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc3RydWN0b3IoKQor
ICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBzdXBlcihOZXR3b3Jr
VGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBXSS5H
ZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhXSS5OZXR3b3JrVGFiQ29udGVudFZpZXcudGFi
SW5mbygpKTsKKworICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJuZXR3b3JrIiwgIm5ldHdv
cmsiLCB0YWJCYXJJdGVtKTsKIAogICAgICAgICB0aGlzLl9uZXR3b3JrVGFibGVDb250ZW50Vmll
dyA9IG5ldyBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldzsKIApAQCAtNDgsNyArNTAsNiBAQCBX
SS5OZXR3b3JrVGFiQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFiQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5UYWJDb250ZW50VmlldwogICAgIHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyOiBOZXR3b3JrVGFiQ29udGVudFZp
ZXcuVHlwZSwKICAgICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL05ldHdvcmsuc3ZnIiwKICAgICAg
ICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiTmV0d29yayIpLAogICAgICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1Rh
YmxlQ29udGVudFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuY3NzCmluZGV4IGI0ZjBkZWI2YzcyZmRjODNi
OTMyNWE1ZmQ4NmNhMTZlNjYwNTEyMjYuLmI0ZmRiMTJkNjY1NTEzNDAyZTYwM2YwM2U4ZTkxNGUw
NmJkODc0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5jc3MKQEAg
LTM2LDEyICszNiw3IEBACiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9OZXR3b3JrSEFSLnN2
Zyk7CiB9CiAKLS5jb250ZW50LXZpZXcubmV0d29yayAubmV0d29yay10YWJsZSB7Ci0gICAgZGlz
cGxheTogZmxleDsKLSAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwotfQotCi0uY29udGVudC12
aWV3Lm5ldHdvcmsgLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmljb24geworLmNvbnRlbnQtdmll
dy5uZXR3b3JrIC5uZXR3b3JrLXRhYmxlIC5pY29uIHsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7
CiAgICAgd2lkdGg6IDE2cHg7CiAgICAgaGVpZ2h0OiAxNnB4OwpAQCAtNTAsMTkgKzQ1LDE1IEBA
CiAgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiA0cHg7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRh
YmxlIGxpOm5vdCguc2VsZWN0ZWQpIC5jZWxsOm5vdCguY3VycmVudC1zZXNzaW9uKSB7Ci0gICAg
b3BhY2l0eTogMC41OwotfQotCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSBsaTpub3QoLmZpbGxl
cikgLmNlbGwubmFtZSB7CisubmV0d29yay10YWJsZSBsaTpub3QoLmZpbGxlcikgLmNlbGwubmFt
ZSB7CiAgICAgY3Vyc29yOiBwb2ludGVyOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAu
Y2VsbC5kb20tbm9kZS5uYW1lIC5pY29uIHsKKy5uZXR3b3JrLXRhYmxlIC5jZWxsLmRvbS1ub2Rl
Lm5hbWUgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvRE9NRWxlbWVudC5zdmcp
OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNj
bG9zdXJlIHsKKy5uZXR3b3JrLXRhYmxlIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUg
ewogICAgIHdpZHRoOiAxM3B4OwogICAgIGhlaWdodDogMTNweDsKICAgICB2ZXJ0aWNhbC1hbGln
bjogLTJweDsKQEAgLTcxLDExMiArNjIsMTEyIEBACiAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5v
LXJlcGVhdDsKIH0KIAotYm9keVtkaXI9cnRsXSAubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2Vs
bC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlIHsKK2JvZHlbZGlyPXJ0bF0gLm5ldHdvcmstdGFi
bGUgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlzY2xvc3VyZSB7CiAgICAgdHJhbnNmb3JtOiBzY2Fs
ZVgoLTEpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZTpmb2N1cyBsaS5zZWxlY3RlZCAu
Y2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlIHsKKy5uZXR3b3JrLXRhYmxlOmZvY3VzIGxp
LnNlbGVjdGVkIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUgewogICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvRGlzY2xvc3VyZVRyaWFuZ2xlcy5zdmcjY2xvc2VkLXNlbGVjdGVkKTsK
IH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlzY2xv
c3VyZS5leHBhbmRlZCB7CisubmV0d29yay10YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNj
bG9zdXJlLmV4cGFuZGVkIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0Rpc2Nsb3N1cmVU
cmlhbmdsZXMuc3ZnI29wZW4tbm9ybWFsKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGU6
Zm9jdXMgbGkuc2VsZWN0ZWQgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlzY2xvc3VyZS5leHBhbmRl
ZCB7CisubmV0d29yay10YWJsZTpmb2N1cyBsaS5zZWxlY3RlZCAuY2VsbC5kb20tbm9kZS5uYW1l
IC5kaXNjbG9zdXJlLmV4cGFuZGVkIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0Rpc2Ns
b3N1cmVUcmlhbmdsZXMuc3ZnI29wZW4tc2VsZWN0ZWQpOwogfQogCi0ubmV0d29yay10YWJsZSA+
IC50YWJsZS5ncm91cGVkIC5kYXRhLWNvbnRhaW5lciAuY2VsbC5uYW1lIHsKKy5uZXR3b3JrLXRh
YmxlLmdyb3VwZWQgLmRhdGEtY29udGFpbmVyIC5jZWxsLm5hbWUgewogICAgIC0taXRlbS1wYWRk
aW5nLXN0YXJ0OiAxOXB4OwogICAgIC0taXRlbS1kaXNjbG9zdXJlLXdpZHRoOiAxMXB4OwogfQog
Ci0ubmV0d29yay10YWJsZSA+IC50YWJsZS5ncm91cGVkIC5kYXRhLWNvbnRhaW5lciAuY2VsbDpu
b3QoLnBhcmVudCkubmFtZSB7CisubmV0d29yay10YWJsZS5ncm91cGVkIC5kYXRhLWNvbnRhaW5l
ciAuY2VsbDpub3QoLnBhcmVudCkubmFtZSB7CiAgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiB2
YXIoLS1pdGVtLXBhZGRpbmctc3RhcnQpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZS5n
cm91cGVkIC5kYXRhLWNvbnRhaW5lciAuY2VsbC5jaGlsZC5uYW1lIHsKKy5uZXR3b3JrLXRhYmxl
Lmdyb3VwZWQgLmRhdGEtY29udGFpbmVyIC5jZWxsLmNoaWxkLm5hbWUgewogICAgIC13ZWJraXQt
cGFkZGluZy1zdGFydDogY2FsYyh2YXIoLS1pdGVtLXBhZGRpbmctc3RhcnQpICsgdmFyKC0taXRl
bS1kaXNjbG9zdXJlLXdpZHRoKSk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5kYXRh
LWNvbnRhaW5lciAuY2VsbC5uYW1lIC5yYW5nZSB7CisubmV0d29yay10YWJsZSAuZGF0YS1jb250
YWluZXIgLmNlbGwubmFtZSAucmFuZ2UgewogICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC43
KTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmRhdGEtY29udGFpbmVyIC5jZWxsLm5h
bWUgLnJhbmdlOjpiZWZvcmUgeworLm5ldHdvcmstdGFibGUgLmRhdGEtY29udGFpbmVyIC5jZWxs
Lm5hbWUgLnJhbmdlOjpiZWZvcmUgewogICAgIGNvbnRlbnQ6ICJcMDBBMFwyMDE0XDAwQTAiOyAv
KiAmbmJzcDsmbWRhc2g7Jm5ic3A7ICovOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZTpm
b2N1cyAuZGF0YS1jb250YWluZXIgbGkuc2VsZWN0ZWQgLmNlbGwubmFtZSAucmFuZ2UgeworLm5l
dHdvcmstdGFibGU6Zm9jdXMgLmRhdGEtY29udGFpbmVyIGxpLnNlbGVjdGVkIC5jZWxsLm5hbWUg
LnJhbmdlIHsKICAgICBjb2xvcjogaHNsYSgwLCAwJSwgMTAwJSwgMC45KTsKIH0KIAotLm5ldHdv
cmstdGFibGUgPiAudGFibGUgbGk6bm90KC5zZWxlY3RlZCkgLmNlbGw6bWF0Y2hlcyguY2FjaGUt
dHlwZSwgLm11bHRpcGxlKSB7CisubmV0d29yay10YWJsZSBsaTpub3QoLnNlbGVjdGVkKSAuY2Vs
bDptYXRjaGVzKC5jYWNoZS10eXBlLCAubXVsdGlwbGUpIHsKICAgICBjb2xvcjogdmFyKC0tdGV4
dC1jb2xvci1ncmF5LW1lZGl1bSk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5lcnJv
ciB7CisubmV0d29yay10YWJsZSAuZXJyb3IgewogICAgIGNvbG9yOiB2YXIoLS1lcnJvci10ZXh0
LWNvbG9yKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwuZG9tYWluID4gLmxv
Y2sgeworLm5ldHdvcmstdGFibGUgLmNlbGwuZG9tYWluID4gLmxvY2sgewogICAgIHdpZHRoOiA4
cHg7CiAgICAgaGVpZ2h0OiAxMHB4OwogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvTG9ja2Vk
LnN2Zyk7CiAgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiA1cHg7CiB9CiAKLS5uZXR3b3JrLXRhYmxl
ID4gLnRhYmxlIGxpLnNlbGVjdGVkIC5jZWxsLmRvbWFpbiA+IC5sb2NrIHsKKy5uZXR3b3JrLXRh
YmxlIGxpLnNlbGVjdGVkIC5jZWxsLmRvbWFpbiA+IC5sb2NrIHsKICAgICAvKiBGSVhNRTogPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzE4OTc3Mz4gV2ViIEluc3BlY3RvcjogY3JlYXRlIHNwZWNpYWwg
TmV0d29yayB3YXRlcmZhbGwgZm9yIG1lZGlhIGV2ZW50cyAqLwogICAgIGZpbHRlcjogaW52ZXJ0
KCk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIHsK
Ky5uZXR3b3JrLXRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIHsKICAgICAtd2Via2l0LW1hcmdp
bi1zdGFydDogNHB4OwogfQogCi1ib2R5W2Rpcj1sdHJdIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
IC5jZWxsLm5hbWUgPiAuc3RhdHVzIHsKK2JvZHlbZGlyPWx0cl0gLm5ldHdvcmstdGFibGUgLmNl
bGwubmFtZSA+IC5zdGF0dXMgewogICAgIGZsb2F0OiByaWdodDsKIH0KIAotYm9keVtkaXI9cnRs
XSAubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyB7Citib2R5W2Rp
cj1ydGxdIC5uZXR3b3JrLXRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIHsKICAgICBmbG9hdDog
bGVmdDsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMg
LmluZGV0ZXJtaW5hdGUtcHJvZ3Jlc3Mtc3Bpbm5lciB7CisubmV0d29yay10YWJsZSAuY2VsbC5u
YW1lID4gLnN0YXR1cyAuaW5kZXRlcm1pbmF0ZS1wcm9ncmVzcy1zcGlubmVyIHsKICAgICBtYXJn
aW4tdG9wOiAzcHg7CiAgICAgd2lkdGg6IDE0cHg7CiAgICAgaGVpZ2h0OiAxNHB4OwogfQogCi0u
bmV0d29yay10YWJsZS5zaG93aW5nLWRldGFpbCA+IC50YWJsZSAuY2VsbDpub3QoLm5hbWUpIHsK
Ky5zaG93aW5nLWRldGFpbCAubmV0d29yay10YWJsZSAuY2VsbDpub3QoLm5hbWUpIHsKICAgICBk
aXNwbGF5OiBub25lOwogfQogCi0ubmV0d29yay10YWJsZS5zaG93aW5nLWRldGFpbCA+IC50YWJs
ZSAucmVzaXplcjpub3QoOmZpcnN0LW9mLXR5cGUpIHsKKy5zaG93aW5nLWRldGFpbCAubmV0d29y
ay10YWJsZSAucmVzaXplcjpub3QoOmZpcnN0LW9mLXR5cGUpIHsKICAgICBkaXNwbGF5OiBub25l
OwogfQogCi0ubmV0d29yay10YWJsZS5zaG93aW5nLWRldGFpbCA+IC50YWJsZSAudGltZWxpbmUt
cnVsZXIgeworLnNob3dpbmctZGV0YWlsIC5uZXR3b3JrLXRhYmxlIC50aW1lbGluZS1ydWxlciB7
CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmhlYWRl
ciAuY2VsbC53YXRlcmZhbGwgeworLm5ldHdvcmstdGFibGUgLmhlYWRlciAuY2VsbC53YXRlcmZh
bGwgewogICAgIC8qIEhpZGUgdGhlIGxhYmVsIGZvciB0aGlzIGNvbHVtbi4gKi8KICAgICBjb2xv
cjogdHJhbnNwYXJlbnQ7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRl
cikgLmNlbGw6Zmlyc3Qtb2YtdHlwZSB7CisubmV0d29yay10YWJsZSA6bm90KC5oZWFkZXIpIC5j
ZWxsOmZpcnN0LW9mLXR5cGUgewogICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wNyk7
CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJm
YWxsIHsKKy5uZXR3b3JrLXRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIHsKICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgaGVpZ2h0OiAyMHB4OwogfQogCi0ubmV0d29yay10
YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNv
bnRhaW5lciB7CisubmV0d29yay10YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAu
d2F0ZXJmYWxsLWNvbnRhaW5lciB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDog
MDsKICAgICBsZWZ0OiAwOwpAQCAtMTg0LDcgKzE3NSw3IEBAIGJvZHlbZGlyPXJ0bF0gLm5ldHdv
cmstdGFibGUgPiAudGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgewogICAgIGJvdHRvbTogMDsK
IH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZh
bGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuZG9tLWV2ZW50IHsKKy5uZXR3b3JrLXRhYmxlIDpu
b3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmRvbS1l
dmVudCB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogY2FsYyg1MCUgLSAodmFy
KC0tbm9kZS13YXRlcmZhbGwtZG9tLWV2ZW50LXNpemUpIC8gMikpOwogICAgIG1pbi13aWR0aDog
dmFyKC0tbm9kZS13YXRlcmZhbGwtZG9tLWV2ZW50LXNpemUpOwpAQCAtMTkzLDE3ICsxODQsMTcg
QEAgYm9keVtkaXI9cnRsXSAubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5uYW1lID4gLnN0
YXR1cyB7CiAgICAgYm9yZGVyLXJhZGl1czogY2FsYyh2YXIoLS1ub2RlLXdhdGVyZmFsbC1kb20t
ZXZlbnQtc2l6ZSkgLyAyKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgOm5vdCguaGVh
ZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuZG9tLWFjdGl2aXR5
IHsKKy5uZXR3b3JrLXRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZh
bGwtY29udGFpbmVyID4gLmRvbS1hY3Rpdml0eSB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwog
ICAgIHRvcDogY2FsYyg1MCUgLSAwLjVweCk7CiAgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2
YXIoLS1zZWxlY3RlZC1iYWNrZ3JvdW5kLWNvbG9yLWFjdGl2ZSk7CiB9CiAKLS5uZXR3b3JrLXRh
YmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29u
dGFpbmVyID4gLmRvbS1hY3Rpdml0eS5wbGF5aW5nIHsKKy5uZXR3b3JrLXRhYmxlIDpub3QoLmhl
YWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmRvbS1hY3Rpdml0
eS5wbGF5aW5nIHsKICAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsKIH0KIAotLm5ldHdvcmst
dGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1j
b250YWluZXIgPiAuYXJlYSB7CisubmV0d29yay10YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndh
dGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5hcmVhIHsKICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CiAgICAgdG9wOiB2YXIoLS1hcmVhLXBhZGRpbmcpOwogICAgIGhlaWdodDogY2FsYygx
MDAlIC0gKHZhcigtLWFyZWEtcGFkZGluZykgKiAyKSk7CkBAIC0yMTIsMjIgKzIwMywyMiBAQCBi
b2R5W2Rpcj1ydGxdIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVz
IHsKICAgICAtLWFyZWEtcGFkZGluZzogY2FsYygoNTAlIC0gKHZhcigtLW5vZGUtd2F0ZXJmYWxs
LWRvbS1ldmVudC1zaXplKSAvIDIpKSAvIDIpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJs
ZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5h
cmVhLmRvbS1mdWxsc2NyZWVuIHsKKy5uZXR3b3JrLXRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwu
d2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmFyZWEuZG9tLWZ1bGxzY3JlZW4gewog
ICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgNDAlKTsKIH0KIAotLm5ldHdvcmstdGFi
bGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250
YWluZXIgPiAuYXJlYS5wb3dlci1lZmZpY2llbnQtcGxheWJhY2sgeworLm5ldHdvcmstdGFibGUg
Om5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuYXJl
YS5wb3dlci1lZmZpY2llbnQtcGxheWJhY2sgewogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigt
LW5ldHdvcmstcmVxdWVzdC1jb2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC50
aW1lbGluZS1ydWxlciB7CisubmV0d29yay10YWJsZSAudGltZWxpbmUtcnVsZXIgewogICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IDA7CiAgICAgYm90dG9tOiAwOwogICAgIG92ZXJm
bG93OiBoaWRkZW47CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC50aW1lbGluZS1ydWxl
ciA+IC5oZWFkZXIgeworLm5ldHdvcmstdGFibGUgLnRpbWVsaW5lLXJ1bGVyID4gLmhlYWRlciB7
CiAgICAgdG9wOiBjYWxjKHZhcigtLW5hdmlnYXRpb24tYmFyLWhlaWdodCkgLSB2YXIoLS10aW1l
bGluZS1ydWxlci1oZWlnaHQpKTsKIH0KIApAQCAtMjYwLDExMCArMjUxLDc2IEBAIGJvZHlbZGly
PXJ0bF0gLndhdGVyZmFsbCAuYmxvY2sgewogICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVz
OiB2YXIoLS1zdGFydC1yYWRpdXMpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0
ZXJmYWxsIC5ibG9jayArIC5ibG9jayB7CisubmV0d29yay10YWJsZSAud2F0ZXJmYWxsIC5ibG9j
ayArIC5ibG9jayB7CiAgICAgLS1zdGFydC1yYWRpdXM6IDA7CiAgICAgLS1lbmQtcmFkaXVzOiAw
OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jazptYXRjaGVz
KC5tb3VzZS10cmFja2luZywgLmZpbGxlcikgKyAuYmxvY2s6bm90KC5tb3VzZS10cmFja2luZywg
LmZpbGxlciksCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jazpub3Qo
LnJlcXVlc3QsIC5yZXNwb25zZSkgKyA6bWF0Y2hlcygucmVxdWVzdCwgLnJlc3BvbnNlKSB7Cisu
bmV0d29yay10YWJsZSAud2F0ZXJmYWxsIC5ibG9jazptYXRjaGVzKC5tb3VzZS10cmFja2luZywg
LmZpbGxlcikgKyAuYmxvY2s6bm90KC5tb3VzZS10cmFja2luZywgLmZpbGxlciksCisubmV0d29y
ay10YWJsZSAud2F0ZXJmYWxsIC5ibG9jazpub3QoLnJlcXVlc3QsIC5yZXNwb25zZSkgKyA6bWF0
Y2hlcygucmVxdWVzdCwgLnJlc3BvbnNlKSB7CiAgICAgLS1zdGFydC1yYWRpdXM6IDJweDsKIH0K
IAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2s6bGFzdC1jaGlsZCB7
CisubmV0d29yay10YWJsZSAud2F0ZXJmYWxsIC5ibG9jazpsYXN0LWNoaWxkIHsKICAgICAtLWVu
ZC1yYWRpdXM6IDJweDsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAu
YmxvY2sucmVxdWVzdCwKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2Nr
LnJlc3BvbnNlIHsKKy53YXRlcmZhbGwgLmJsb2NrLnJlcXVlc3QsCisud2F0ZXJmYWxsIC5ibG9j
ay5yZXNwb25zZSB7CiAgICAgdG9wOiAzcHg7CiAgICAgaGVpZ2h0OiAxNHB4OwogfQogCi0ubmV0
d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5tb3VzZS10cmFja2luZyB7Cisu
d2F0ZXJmYWxsIC5ibG9jay5tb3VzZS10cmFja2luZyB7CiAgICAgdG9wOiAxcHg7CiAgICAgei1p
bmRleDogMjsKICAgICBoZWlnaHQ6IDE4cHg7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
IC53YXRlcmZhbGwgLmJsb2NrLmZpbGxlciB7Cisud2F0ZXJmYWxsIC5ibG9jay5maWxsZXIgewog
ICAgIHRvcDogOXB4OwogICAgIGhlaWdodDogMnB4OwogICAgIGJhY2tncm91bmQtY29sb3I6IGxp
Z2h0Z3JleTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2su
cmVkaXJlY3QgeworLndhdGVyZmFsbCAuYmxvY2sucmVkaXJlY3QgewogICAgIGJhY2tncm91bmQt
Y29sb3I6IHZhcigtLW5ldHdvcmstcmVkaXJlY3QtY29sb3IpOwogfQogCi0ubmV0d29yay10YWJs
ZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5xdWV1ZSB7Cisud2F0ZXJmYWxsIC5ibG9jay5x
dWV1ZSB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV0d29yay1xdWV1ZS1jb2xvcik7
CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLmRucyB7Cisu
d2F0ZXJmYWxsIC5ibG9jay5kbnMgewogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldHdv
cmstZG5zLWNvbG9yKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAu
YmxvY2suY29ubmVjdCB7Cisud2F0ZXJmYWxsIC5ibG9jay5jb25uZWN0IHsKICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiB2YXIoLS1uZXR3b3JrLWNvbm5lY3QtY29sb3IpOwogfQogCi0ubmV0d29yay10
YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5zZWN1cmUgeworLndhdGVyZmFsbCAuYmxv
Y2suc2VjdXJlIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXR3b3JrLXNlY3VyZS1j
b2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLnJl
cXVlc3QgeworLndhdGVyZmFsbCAuYmxvY2sucmVxdWVzdCB7CiAgICAgYmFja2dyb3VuZC1jb2xv
cjogdmFyKC0tbmV0d29yay1yZXF1ZXN0LWNvbG9yKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAu
dGFibGUgLndhdGVyZmFsbCAuYmxvY2sucmVzcG9uc2UgeworLndhdGVyZmFsbCAuYmxvY2sucmVz
cG9uc2UgewogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldHdvcmstcmVzcG9uc2UtY29s
b3IpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC5zdGF0aXN0aWNzIHsKLSAgICBkaXNwbGF5OiBm
bGV4OwotICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwotICAgIGFsaWduLWl0ZW1zOiBjZW50
ZXI7Ci0gICAgbWluLWhlaWdodDogdmFyKC0tbmV0d29yay1zdGF0aXN0aWNzLWhlaWdodCk7Ci0g
ICAgcGFkZGluZzogNHB4IDA7Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRl
ci1jb2xvcik7Ci19Ci0KLS5uZXR3b3JrLXRhYmxlID4gLnN0YXRpc3RpY3MgPiAuc3RhdGlzdGlj
IHsKLSAgICBkaXNwbGF5OiBmbGV4OwotICAgIHBhZGRpbmc6IDAgOHB4OwotfQotCi0ubmV0d29y
ay10YWJsZSA+IC5zdGF0aXN0aWNzID4gLnN0YXRpc3RpY1toaWRkZW5dIHsKLSAgICBkaXNwbGF5
OiBub25lOwotfQotCi0ubmV0d29yay10YWJsZSA+IC5zdGF0aXN0aWNzID4gLnN0YXRpc3RpYyA+
IC5pY29uIHsKLSAgICB3aWR0aDogMTZweDsKLSAgICBoZWlnaHQ6IDE2cHg7Ci19Ci0KLS5uZXR3
b3JrLXRhYmxlID4gLnN0YXRpc3RpY3MgPiAuc3RhdGlzdGljID4gLnRleHQgewotICAgIHBhZGRp
bmctdG9wOiAxcHg7Ci0gICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiA0cHg7Ci0gICAgLXdlYmtp
dC11c2VyLXNlbGVjdDogYWxsOwotfQotCiBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBk
YXJrKSB7CiAgICAgLmNvbnRlbnQtdmlldy50YWIubmV0d29yayA+IC5jb250ZW50LWJyb3dzZXIg
PiAubmF2aWdhdGlvbi1iYXIgLmhpZXJhcmNoaWNhbC1wYXRoIC5pY29uIHsKICAgICAgICAgZmls
dGVyOiBpbnZlcnQoODglKTsKICAgICB9CiAKLSAgICAubmV0d29yay10YWJsZSA+IC50YWJsZSAu
Y2VsbC5kb21haW4gPiAubG9jayB7CisgICAgLm5ldHdvcmstdGFibGUgLmNlbGwuZG9tYWluID4g
LmxvY2sgewogICAgICAgICBmaWx0ZXI6IHZhcigtLWZpbHRlci1pbnZlcnQpOwogICAgIH0KIAot
ICAgIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5kYXRhLWNvbnRhaW5lciAuY2VsbC5uYW1lIC5y
YW5nZSB7CisgICAgLm5ldHdvcmstdGFibGUgLmRhdGEtY29udGFpbmVyIC5jZWxsLm5hbWUgLnJh
bmdlIHsKICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3Itc2Vjb25kYXJ5KTsKICAgICB9
Ci0KLSAgICAubmV0d29yay10YWJsZSA+IC5zdGF0aXN0aWNzID4gLnN0YXRpc3RpYy5kb21haW4t
Y291bnQgPiAuaWNvbiB7Ci0gICAgICAgIGZpbHRlcjogaW52ZXJ0KCk7Ci0gICAgICAgIG9wYWNp
dHk6IDAuNzsKLSAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3Lmpz
CmluZGV4IDRlODM3ZmEwYWM0ZDE5ZGY3ODM5Yzk2YTYwODhjNGU2NWIxN2Y5NzQuLmIyY2UyYTll
NGQyYjg5OTJkYTZiYjE3NzcxYjlhNjM4ZjE4NGNmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtU
YWJsZUNvbnRlbnRWaWV3LmpzCkBAIC01NiwxMCArNTYsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250
ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZQogICAgICAgICAvLyBGSVhNRTogTmV0d29yayBUaW1lbGluZS4KICAgICAgICAgLy8gRklY
TUU6IFRocm90dGxpbmcuCiAKLSAgICAgICAgdGhpcy5fc3RhdGlzdGljcyA9IHt9OwotCi0gICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuZXR3b3JrLXRhYmxlIik7Ci0KICAgICAg
ICAgdGhpcy5fdHlwZUZpbHRlclNjb3BlQmFySXRlbUFsbCA9IG5ldyBXSS5TY29wZUJhckl0ZW0o
Im5ldHdvcmstdHlwZS1maWx0ZXItYWxsIiwgV0kuVUlTdHJpbmcoIkFsbCIpLCB7ZXhjbHVzaXZl
OiB0cnVlfSk7CiAgICAgICAgIGxldCB0eXBlRmlsdGVyU2NvcGVCYXJJdGVtcyA9IFt0aGlzLl90
eXBlRmlsdGVyU2NvcGVCYXJJdGVtQWxsXTsKIApAQCAtMTY4LDcgKzE2NCw2IEBAIFdJLk5ldHdv
cmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VmllCiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJh
bWUuRXZlbnQuQ2hpbGRGcmFtZVdhc0FkZGVkLCB0aGlzLl9oYW5kbGVGcmFtZVdhc0FkZGVkLCB0
aGlzKTsKICAgICAgICAgV0kuUmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5F
dmVudC5Mb2FkaW5nRGlkRmluaXNoLCB0aGlzLl9yZXNvdXJjZUxvYWRpbmdEaWRGaW5pc2gsIHRo
aXMpOwogICAgICAgICBXSS5SZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2
ZW50LkxvYWRpbmdEaWRGYWlsLCB0aGlzLl9yZXNvdXJjZUxvYWRpbmdEaWRGYWlsLCB0aGlzKTsK
LSAgICAgICAgV0kuUmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5T
aXplRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVSZXNvdXJjZVNpemVEaWRDaGFuZ2UsIHRoaXMpOwog
ICAgICAgICBXSS5SZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LlRy
YW5zZmVyU2l6ZURpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VUcmFuc2ZlclNpemVEaWRDaGFuZ2Us
IHRoaXMpOwogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5l
dHdvcmtNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lRGlk
Q2hhbmdlLCB0aGlzKTsKIApAQCAtMzA5LDExICszMDQsOCBAQCBXSS5OZXR3b3JrVGFibGVDb250
ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZQogCiAgICAgcmVzZXQoKQogICAgIHsKLSAgICAgICAgdGhpcy5fcnVuRm9yTWFpbkNvbGxl
Y3Rpb24oKGNvbGxlY3Rpb24sIHdhc01haW4pID0+IHsKKyAgICAgICAgdGhpcy5fcnVuRm9yTWFp
bkNvbGxlY3Rpb24oKGNvbGxlY3Rpb24pID0+IHsKICAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29s
bGVjdGlvbihjb2xsZWN0aW9uKTsKLQotICAgICAgICAgICAgaWYgKHdhc01haW4pCi0gICAgICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwogICAgICAgICB9KTsKIAogICAgICAg
ICBmb3IgKGxldCBkZXRhaWxWaWV3IG9mIHRoaXMuX2RldGFpbFZpZXdNYXAudmFsdWVzKCkpCkBA
IC00NTAsOCArNDQyLDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3
b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICB7CiAgICAgICAg
IGxldCBlbnRyeSA9IHRoaXMuX2FjdGl2ZUNvbGxlY3Rpb24uZmlsdGVyZWRFbnRyaWVzW3Jvd0lu
ZGV4XTsKIAotICAgICAgICBjZWxsLmNsYXNzTGlzdC50b2dnbGUoImN1cnJlbnQtc2Vzc2lvbiIs
IGVudHJ5LmN1cnJlbnRTZXNzaW9uKTsKLQogICAgICAgICBpZiAoZW50cnkucmVzb3VyY2UpCiAg
ICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC50b2dnbGUoImVycm9yIiwgZW50cnkucmVzb3VyY2Uu
aGFkTG9hZGluZ0Vycm9yKCkpOwogCkBAIC02MTEsNyArNjAxLDYgQEAgV0kuTmV0d29ya1RhYmxl
Q29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNv
bnRlbnRWaWUKICAgICAgICAgdGhpcy5fdXBkYXRlRmlsdGVyZWRFbnRyaWVzKCk7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZVdhdGVyZmFsbFRpbWVsaW5lUnVsZXIoKTsKICAgICAgICAgdGhpcy5fcmVs
b2FkVGFibGUoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwogICAgICAgICB0
aGlzLl9oaWRlRGV0YWlsVmlldygpOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKQEAg
LTEyNDksMzEgKzEyMzgsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5l
dHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICB9CiAK
ICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX3RhYmxlKTsKLQotICAgICAgICBsZXQgc3Rh
dGlzdGljc0NvbnRhaW5lciA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgICAgIHN0YXRpc3RpY3NDb250YWluZXIuY2xhc3NOYW1l
ID0gInN0YXRpc3RpY3MiOwotCi0gICAgICAgIGxldCBjcmVhdGVTdGF0aXN0aWNFbGVtZW50ID0g
KG5hbWUsIGltYWdlKSA9PiB7Ci0gICAgICAgICAgICBsZXQgc3RhdGlzdGljID0gdGhpcy5fc3Rh
dGlzdGljc1tuYW1lXTsKLSAgICAgICAgICAgIGlmICghc3RhdGlzdGljKQotICAgICAgICAgICAg
ICAgIHN0YXRpc3RpYyA9IHRoaXMuX3N0YXRpc3RpY3NbbmFtZV0gPSB7fTsKLQotICAgICAgICAg
ICAgc3RhdGlzdGljLmNvbnRhaW5lciA9IHN0YXRpc3RpY3NDb250YWluZXIuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwotICAgICAgICAgICAgc3RhdGlzdGljLmNv
bnRhaW5lci5jbGFzc0xpc3QuYWRkKCJzdGF0aXN0aWMiLCBuYW1lKTsKLQotICAgICAgICAgICAg
c3RhdGlzdGljLmNvbnRhaW5lci5hcHBlbmRDaGlsZChXSS5JbWFnZVV0aWxpdGllcy51c2VTVkdT
eW1ib2woaW1hZ2UsICJpY29uIikpOwotCi0gICAgICAgICAgICBzdGF0aXN0aWMuZWxlbWVudCA9
IHN0YXRpc3RpYy5jb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpOwotICAgICAgICAgICAgc3RhdGlzdGljLmVsZW1lbnQuY2xhc3NOYW1lID0gInRleHQi
OwotICAgICAgICB9OwotICAgICAgICBjcmVhdGVTdGF0aXN0aWNFbGVtZW50KCJkb21haW4tY291
bnQiLCAiSW1hZ2VzL09yaWdpbi5zdmciKTsKLSAgICAgICAgY3JlYXRlU3RhdGlzdGljRWxlbWVu
dCgicmVzb3VyY2UtY291bnQiLCAiSW1hZ2VzL1Jlc291cmNlcy5zdmciKTsKLSAgICAgICAgY3Jl
YXRlU3RhdGlzdGljRWxlbWVudCgicmVzb3VyY2Utc2l6ZSIsICJJbWFnZXMvV2VpZ2h0LnN2ZyIp
OwotICAgICAgICBjcmVhdGVTdGF0aXN0aWNFbGVtZW50KCJ0cmFuc2Zlci1zaXplIiwgIkltYWdl
cy9OZXR3b3JrLnN2ZyIpOwotICAgICAgICBjcmVhdGVTdGF0aXN0aWNFbGVtZW50KCJyZWRpcmVj
dC1jb3VudCIsICJJbWFnZXMvU3RlcE92ZXIuc3ZnIik7Ci0gICAgICAgIGNyZWF0ZVN0YXRpc3Rp
Y0VsZW1lbnQoImxvYWQtdGltZSIsICJJbWFnZXMvVGltZS5zdmciKTsKLQotICAgICAgICB0aGlz
Ll91cGRhdGVTdGF0aXN0aWNzKCk7CiAgICAgfQogCiAgICAgbGF5b3V0KCkKQEAgLTEzMDgsOCAr
MTI3Miw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxl
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAKICAgICAgICAgZm9yIChsZXQgcmVz
b3VyY2Ugb2YgcmVzb3VyY2VzKQogICAgICAgICAgICAgdGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRS
ZWxvYWRUYWJsZShyZXNvdXJjZSk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygp
OwogICAgIH0KIAogICAgIGhhbmRsZUNsZWFyU2hvcnRjdXQoZXZlbnQpCkBAIC0xMzk3LDcgKzEz
NTksNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICAgICAgICAgIHRoaXMuX2lu
c2VydFJlc291cmNlQW5kUmVsb2FkVGFibGUocmVzb3VyY2UpOwogICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQoY29sbGVjdGlvbi5wZW5kaW5nSW5zZXJ0aW9ucy5sZW5ndGggPT09IG9yaWdpbmFs
TGVuZ3RoKTsKICAgICAgICAgICAgIGNvbGxlY3Rpb24ucGVuZGluZ0luc2VydGlvbnMgPSBbXTsK
LSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xNDE3LDcgKzEzNzgsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250
ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZQogICAgICAgICB0aGlzLl91cGRhdGVTb3J0KCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZp
bHRlcmVkRW50cmllcygpOwogICAgICAgICB0aGlzLl9yZWxvYWRUYWJsZSgpOwotICAgICAgICB0
aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7CiAgICAgfQogCiAgICAgX3BvcHVsYXRlV2l0aEluaXRp
YWxSZXNvdXJjZXNJZk5lZWRlZChjb2xsZWN0aW9uKQpAQCAtMTUwNSw4ICsxNDY1LDYgQEAgV0ku
TmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBl
eHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB1cGRh
dGVFeGlzdGluZ0VudHJ5KGNvbGxlY3Rpb24uZmlsdGVyZWRFbnRyaWVzW3Jvd0luZGV4XSwgZW50
cnkpOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKICAgICB9CiAKICAgICBf
aGlkZVBvcG92ZXIoKQpAQCAtMTYzNywzMyArMTU5NSwyMyBAQCBXSS5OZXR3b3JrVGFibGVDb250
ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZQogCiAgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7Ci0gICAgICAg
IGxldCBmcmFtZSA9IGV2ZW50LnRhcmdldDsKLQotICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJh
bWUoKSAmJiAhdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQpCi0gICAgICAgICAgICB0aGlz
Ll9zdGFydFVwZGF0aW5nTG9hZFRpbWVTdGF0aXN0aWMoKTsKLQogICAgICAgICB0aGlzLl9ydW5G
b3JNYWluQ29sbGVjdGlvbigoY29sbGVjdGlvbiwgd2FzTWFpbikgPT4gewotICAgICAgICAgICAg
aWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoV0kuc2V0dGlu
Z3MuY2xlYXJOZXR3b3JrT25OYXZpZ2F0ZS52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICB0
aGlzLl9yZXNldENvbGxlY3Rpb24oY29sbGVjdGlvbik7Ci0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKHdhc01haW4gJiYgIXRoaXMuX25lZWRzSW5pdGlhbFBvcHVsYXRlKQotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5faGlkZURldGFpbFZpZXcoKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBjb2xsZWN0aW9uLmVu
dHJpZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5jdXJyZW50U2Vzc2lvbiA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBmcmFtZSA9IGV2ZW50LnRh
cmdldDsKKyAgICAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpICYmIFdJLnNldHRpbmdz
LmNsZWFyTmV0d29ya09uTmF2aWdhdGUudmFsdWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9y
ZXNldENvbGxlY3Rpb24oY29sbGVjdGlvbik7CisKKyAgICAgICAgICAgICAgICBpZiAod2FzTWFp
biAmJiAhdGhpcy5fbmVlZHNJbml0aWFsUG9wdWxhdGUpCisgICAgICAgICAgICAgICAgICAgIHRo
aXMuX2hpZGVEZXRhaWxWaWV3KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICh0
aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3Ry
YW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgdGhpcy5fbmVl
ZHNJbml0aWFsUG9wdWxhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRl
V2l0aEluaXRpYWxSZXNvdXJjZXNJZk5lZWRlZChjb2xsZWN0aW9uKTsKLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydFJlc291cmNlQW5kUmVsb2FkVGFibGUo
ZnJhbWUubWFpblJlc291cmNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmICh3YXNNYWluKQotICAgICAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZVN0YXRpc3RpY3MoKTsKKyAgICAgICAgICAgIHRoaXMuX2luc2VydFJlc291cmNlQW5kUmVs
b2FkVGFibGUoZnJhbWUubWFpblJlc291cmNlKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0x
NzA2LDQxICsxNjU0LDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3
b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgfSk7CiAg
ICAgfQogCi0gICAgX2hhbmRsZVJlc291cmNlU2l6ZURpZENoYW5nZShldmVudCkKLSAgICB7Ci0g
ICAgICAgIGlmICghdGhpcy5fdGFibGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
dGhpcy5fcnVuRm9yTWFpbkNvbGxlY3Rpb24oKGNvbGxlY3Rpb24sIHdhc01haW4pID0+IHsKLSAg
ICAgICAgICAgIGxldCByZXNvdXJjZSA9IGV2ZW50LnRhcmdldDsKLQotICAgICAgICAgICAgLy8g
SW4gdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgdGhpcyBpcyB0aGUgc29ydCBjb2x1bW4sIHdlIG1h
eSBuZWVkIHRvIHJlc29ydC4KLSAgICAgICAgICAgIGlmICh0aGlzLl90YWJsZS5zb3J0Q29sdW1u
SWRlbnRpZmllciA9PT0gInJlc291cmNlU2l6ZSIpIHsKLSAgICAgICAgICAgICAgICBjb2xsZWN0
aW9uLnBlbmRpbmdVcGRhdGVzLnB1c2gocmVzb3VyY2UpOwotICAgICAgICAgICAgICAgIHRoaXMu
bmVlZHNMYXlvdXQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGxldCBpbmRleCA9IGNvbGxlY3Rpb24uZW50cmllcy5maW5kSW5kZXgoKHgp
ID0+IHgucmVzb3VyY2UgPT09IHJlc291cmNlKTsKLSAgICAgICAgICAgIGlmIChpbmRleCA9PT0g
LTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBsZXQgZW50cnkgPSBj
b2xsZWN0aW9uLmVudHJpZXNbaW5kZXhdOwotICAgICAgICAgICAgZW50cnkucmVzb3VyY2VTaXpl
ID0gcmVzb3VyY2Uuc2l6ZTsKLQotICAgICAgICAgICAgaWYgKCF3YXNNYWluKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbGV0IHJvd0luZGV4ID0gdGhpcy5fcm93SW5k
ZXhGb3JSZXByZXNlbnRlZE9iamVjdChyZXNvdXJjZSk7Ci0gICAgICAgICAgICBpZiAocm93SW5k
ZXggPT09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgdGhpcy5f
dGFibGUucmVsb2FkQ2VsbChyb3dJbmRleCwgInJlc291cmNlU2l6ZSIpOwotCi0gICAgICAgICAg
ICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogICAgIF9y
ZXNvdXJjZVRyYW5zZmVyU2l6ZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fdGFibGUpCkBAIC0xNzcxLDE4ICsxNjg0LDEzIEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRl
bnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50
VmllCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICB0aGlzLl90YWJsZS5y
ZWxvYWRDZWxsKHJvd0luZGV4LCAidHJhbnNmZXJTaXplIik7Ci0KLSAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZVN0YXRpc3RpY3MoKTsKICAgICAgICAgfSk7CiAgICAgfQogCiAgICAgX2hhbmRsZVJl
c291cmNlQWRkZWQoZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLl9ydW5Gb3JNYWluQ29sbGVj
dGlvbigoY29sbGVjdGlvbiwgd2FzTWFpbikgPT4geworICAgICAgICB0aGlzLl9ydW5Gb3JNYWlu
Q29sbGVjdGlvbigoY29sbGVjdGlvbikgPT4gewogICAgICAgICAgICAgdGhpcy5faW5zZXJ0UmVz
b3VyY2VBbmRSZWxvYWRUYWJsZShldmVudC5kYXRhLnJlc291cmNlKTsKLQotICAgICAgICAgICAg
aWYgKHdhc01haW4pCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwog
ICAgICAgICB9KTsKICAgICB9CiAKQEAgLTE3OTEsMTUgKzE2OTksMTIgQEAgV0kuTmV0d29ya1Rh
YmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJ
LkNvbnRlbnRWaWUKICAgICAgICAgaWYgKHRoaXMuX25lZWRzSW5pdGlhbFBvcHVsYXRlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3J1bkZvck1haW5Db2xsZWN0aW9uKChj
b2xsZWN0aW9uLCB3YXNNYWluKSA9PiB7CisgICAgICAgIHRoaXMuX3J1bkZvck1haW5Db2xsZWN0
aW9uKChjb2xsZWN0aW9uKSA9PiB7CiAgICAgICAgICAgICBsZXQgZnJhbWUgPSBldmVudC5kYXRh
LmNoaWxkRnJhbWU7CiAgICAgICAgICAgICBsZXQgbWFpblJlc291cmNlID0gZnJhbWUucHJvdmlz
aW9uYWxNYWluUmVzb3VyY2UgfHwgZnJhbWUubWFpblJlc291cmNlOwogICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQobWFpblJlc291cmNlLCAiRnJhbWUgc2hvdWxkIGhhdmUgYSBtYWluIHJlc291
cmNlLiIpOwogICAgICAgICAgICAgdGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJsZSht
YWluUmVzb3VyY2UpOwogCi0gICAgICAgICAgICBpZiAod2FzTWFpbikKLSAgICAgICAgICAgICAg
ICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7Ci0KICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCFmcmFtZS5yZXNvdXJjZUNvbGxlY3Rpb24uc2l6ZSwgIk5ldyBmcmFtZSBzaG91bGQgYmUgZW1w
dHkuIik7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghZnJhbWUuY2hpbGRGcmFtZUNvbGxl
Y3Rpb24uc2l6ZSwgIk5ldyBmcmFtZSBzaG91bGQgYmUgZW1wdHkuIik7CiAgICAgICAgIH0pOwpA
QCAtMTkwMyw3ICsxODA4LDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBO
ZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgICAg
IHJlbW90ZUFkZHJlc3M6IHJlc291cmNlLnJlbW90ZUFkZHJlc3MsCiAgICAgICAgICAgICBjb25u
ZWN0aW9uSWRlbnRpZmllcjogcmVzb3VyY2UuY29ubmVjdGlvbklkZW50aWZpZXIsCiAgICAgICAg
ICAgICBzdGFydFRpbWU6IHJlc291cmNlLmZpcnN0VGltZXN0YW1wLAotICAgICAgICAgICAgY3Vy
cmVudFNlc3Npb246IHRydWUsCiAgICAgICAgIH07CiAgICAgfQogCkBAIC0yMDcwLDEzMSArMTk3
NCw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIHRoaXMuX3VwZGF0ZUVtcHR5
RmlsdGVyUmVzdWx0c01lc3NhZ2UoKTsKICAgICB9CiAKLSAgICBfdXBkYXRlU3RhdGlzdGljcygp
Ci0gICAgewotICAgICAgICBpZiAoIXRoaXMuZGlkSW5pdGlhbExheW91dCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBsZXQgZW50cmllcyA9IHRoaXMuX2FjdGl2ZUNvbGxlY3Rpb24u
ZW50cmllcy5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5jdXJyZW50U2Vzc2lvbik7Ci0KLSAgICAg
ICAgbGV0IGRvbWFpbnMgPSBuZXcgU2V0OwotICAgICAgICBsZXQgcmVzb3VyY2VTaXplID0gMDsK
LSAgICAgICAgbGV0IHRyYW5zZmVyU2l6ZSA9IDA7Ci0gICAgICAgIGxldCByZWRpcmVjdENvdW50
ID0gMDsKLSAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgZW50cmllcykgewotICAgICAgICAgICAg
ZG9tYWlucy5hZGQoZW50cnkuZG9tYWluKTsKLSAgICAgICAgICAgIGlmICghaXNOYU4oZW50cnku
cmVzb3VyY2VTaXplKSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZVNpemUgKz0gZW50cnkucmVz
b3VyY2VTaXplOwotICAgICAgICAgICAgaWYgKCFpc05hTihlbnRyeS50cmFuc2ZlclNpemUpKQot
ICAgICAgICAgICAgICAgIHRyYW5zZmVyU2l6ZSArPSBlbnRyeS50cmFuc2ZlclNpemU7Ci0gICAg
ICAgICAgICBpZiAoZW50cnkucmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgcmVkaXJlY3RDb3Vu
dCArPSBlbnRyeS5yZXNvdXJjZS5yZWRpcmVjdHMubGVuZ3RoOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljKCJkb21haW4tY291bnQiLCBkb21haW5zLnNpemUgPT09
IDEgPyBXSS5VSVN0cmluZygiJWQgZG9tYWluIikgOiBXSS5VSVN0cmluZygiJWQgZG9tYWlucyIp
LCBkb21haW5zLnNpemUpOwotCi0gICAgICAgIGxldCByZXNvdXJjZUNvdW50ID0gZW50cmllcy5s
ZW5ndGg7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpYygicmVzb3VyY2UtY291bnQiLCBy
ZXNvdXJjZUNvdW50ID09PSAxID8gV0kuVUlTdHJpbmcoIiVkIHJlc291cmNlIikgOiBXSS5VSVN0
cmluZygiJWQgcmVzb3VyY2VzIiksIHJlc291cmNlQ291bnQpOwotCi0gICAgICAgIGNvbnN0IGhp
Z2hlclJlc29sdXRpb24gPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljKCJy
ZXNvdXJjZS1zaXplIiwgV0kuVUlTdHJpbmcoIiVzIHRvdGFsIiksIE51bWJlci5ieXRlc1RvU3Ry
aW5nKHJlc291cmNlU2l6ZSwgaGlnaGVyUmVzb2x1dGlvbikpOwotICAgICAgICB0aGlzLl91cGRh
dGVTdGF0aXN0aWMoInRyYW5zZmVyLXNpemUiLCBXSS5VSVN0cmluZygiJXMgdHJhbnNmZXJyZWQi
KSwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodHJhbnNmZXJTaXplLCBoaWdoZXJSZXNvbHV0aW9uKSk7
Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljKCJyZWRpcmVjdC1jb3VudCIsIHJlZGly
ZWN0Q291bnQgPT09IDEgPyBXSS5VSVN0cmluZygiJWQgcmVkaXJlY3QiKSA6IFdJLlVJU3RyaW5n
KCIlZCByZWRpcmVjdHMiKSwgcmVkaXJlY3RDb3VudCk7Ci0KLSAgICAgICAgbGV0IGxvYWRUaW1l
U3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGljc1sibG9hZC10aW1lIl07Ci0gICAgICAgIGlmIChs
b2FkVGltZVN0YXRpc3RpYy5mb3JtYXQgJiYgdGhpcy5faXNTaG93aW5nTWFpbkNvbGxlY3Rpb24o
KSkgewotICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljKCJsb2FkLXRpbWUiKTsKLSAg
ICAgICAgICAgIGxvYWRUaW1lU3RhdGlzdGljLmNvbnRhaW5lci5oaWRkZW4gPSBmYWxzZTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBsb2FkVGltZVN0YXRpc3RpYy5jb250YWluZXIuaGlk
ZGVuID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBfdXBkYXRlU3RhdGlzdGljKG5hbWUsIGZvcm1hdCwg
dmFsdWUpCi0gICAgewotICAgICAgICBsZXQgc3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGljc1tu
YW1lXTsKLQotICAgICAgICBpZiAoZm9ybWF0KQotICAgICAgICAgICAgc3RhdGlzdGljLmZvcm1h
dCA9IGZvcm1hdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9ybWF0ID0gc3RhdGlzdGlj
LmZvcm1hdDsKLQotICAgICAgICBpZiAodmFsdWUgfHwgdmFsdWUgPT09IDApCi0gICAgICAgICAg
ICBzdGF0aXN0aWMudmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFs
dWUgPSBzdGF0aXN0aWMudmFsdWU7Ci0KLSAgICAgICAgaWYgKHN0YXRpc3RpYy5jb250YWluZXIp
Ci0gICAgICAgICAgICBzdGF0aXN0aWMuY29udGFpbmVyLnRpdGxlID0gZm9ybWF0LmZvcm1hdCh2
YWx1ZSk7Ci0KLSAgICAgICAgaWYgKHN0YXRpc3RpYy5lbGVtZW50KQotICAgICAgICAgICAgc3Rh
dGlzdGljLmVsZW1lbnQudGV4dENvbnRlbnQgPSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBfc3RhcnRV
cGRhdGluZ0xvYWRUaW1lU3RhdGlzdGljKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3N0b3BVcGRh
dGluZ0xvYWRUaW1lU3RhdGlzdGljKCk7Ci0KLSAgICAgICAgbGV0IGxvYWRUaW1lU3RhdGlzdGlj
ID0gdGhpcy5fc3RhdGlzdGljc1sibG9hZC10aW1lIl07Ci0gICAgICAgIGlmICghbG9hZFRpbWVT
dGF0aXN0aWMpCi0gICAgICAgICAgICBsb2FkVGltZVN0YXRpc3RpYyA9IHRoaXMuX3N0YXRpc3Rp
Y3NbImxvYWQtdGltZSJdID0ge307Ci0KLSAgICAgICAgbG9hZFRpbWVTdGF0aXN0aWMuc3RhcnQg
PSBEYXRlLm5vdygpOwotICAgICAgICBsb2FkVGltZVN0YXRpc3RpYy5kZWxheSA9IDUwOwotICAg
ICAgICBsb2FkVGltZVN0YXRpc3RpYy50aW1lciA9IHNldEludGVydmFsKHRoaXMuX3VwZGF0ZUxv
YWRUaW1lU3RhdGlzdGljLmJpbmQodGhpcyksIGxvYWRUaW1lU3RhdGlzdGljLmRlbGF5KTsKLSAg
ICB9Ci0KLSAgICBfc3RvcFVwZGF0aW5nTG9hZFRpbWVTdGF0aXN0aWMoKQotICAgIHsKLSAgICAg
ICAgbGV0IGxvYWRUaW1lU3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGljc1sibG9hZC10aW1lIl07
Ci0gICAgICAgIGlmICghbG9hZFRpbWVTdGF0aXN0aWMpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKGxvYWRUaW1lU3RhdGlzdGljLnRpbWVyKSB7Ci0gICAgICAgICAgICBjbGVh
ckludGVydmFsKGxvYWRUaW1lU3RhdGlzdGljLnRpbWVyKTsKLSAgICAgICAgICAgIGxvYWRUaW1l
U3RhdGlzdGljLnRpbWVyID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgX3Vw
ZGF0ZUxvYWRUaW1lU3RhdGlzdGljKCkKLSAgICB7Ci0gICAgICAgIGxldCBsb2FkVGltZVN0YXRp
c3RpYyA9IHRoaXMuX3N0YXRpc3RpY3NbImxvYWQtdGltZSJdOwotICAgICAgICBjb25zb2xlLmFz
c2VydChsb2FkVGltZVN0YXRpc3RpYyk7Ci0KLSAgICAgICAgbGV0IGR1cmF0aW9uID0gRGF0ZS5u
b3coKSAtIGxvYWRUaW1lU3RhdGlzdGljLnN0YXJ0OwotCi0gICAgICAgIGxldCBkZWxheSA9IGxv
YWRUaW1lU3RhdGlzdGljLmRlbGF5OwotICAgICAgICBpZiAoZHVyYXRpb24gPj0gMTAwMCkgLy8g
MSBzZWNvbmQKLSAgICAgICAgICAgIGRlbGF5ID0gMTAwOwotICAgICAgICBlbHNlIGlmIChkdXJh
dGlvbiA+PSA2MDAwMCkgLy8gNjAgc2Vjb25kcwotICAgICAgICAgICAgZGVsYXkgPSAxMDAwOwot
ICAgICAgICBlbHNlIGlmIChkdXJhdGlvbiA+PSAzNjAwMDAwKSAvLyAxIG1pbnV0ZQotICAgICAg
ICAgICAgZGVsYXkgPSAxMDAwMDsKLQotICAgICAgICBpZiAoZGVsYXkgIT09IGxvYWRUaW1lU3Rh
dGlzdGljLmRlbGF5KSB7Ci0gICAgICAgICAgICBsb2FkVGltZVN0YXRpc3RpYy5kZWxheSA9IGRl
bGF5OwotCi0gICAgICAgICAgICBjbGVhckludGVydmFsKGxvYWRUaW1lU3RhdGlzdGljLnRpbWVy
KTsKLSAgICAgICAgICAgIGxvYWRUaW1lU3RhdGlzdGljLnRpbWVyID0gc2V0SW50ZXJ2YWwodGhp
cy5fdXBkYXRlTG9hZFRpbWVTdGF0aXN0aWMuYmluZCh0aGlzKSwgbG9hZFRpbWVTdGF0aXN0aWMu
ZGVsYXkpOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtN
YW5hZ2VyLm1haW5GcmFtZTsKLSAgICAgICAgbGV0IG1haW5GcmFtZVN0YXJ0VGltZSA9IG1haW5G
cmFtZS5tYWluUmVzb3VyY2UuZmlyc3RUaW1lc3RhbXA7Ci0gICAgICAgIGxldCBtYWluRnJhbWVM
b2FkRXZlbnRUaW1lID0gbWFpbkZyYW1lLmxvYWRFdmVudFRpbWVzdGFtcDsKLQotICAgICAgICBp
ZiAobG9hZFRpbWVTdGF0aXN0aWMuY29udGFpbmVyKQotICAgICAgICAgICAgbG9hZFRpbWVTdGF0
aXN0aWMuY29udGFpbmVyLmhpZGRlbiA9ICF0aGlzLl9pc1Nob3dpbmdNYWluQ29sbGVjdGlvbigp
OwotCi0gICAgICAgIGlmIChpc05hTihtYWluRnJhbWVTdGFydFRpbWUpIHx8IGlzTmFOKG1haW5G
cmFtZUxvYWRFdmVudFRpbWUpKSB7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWMo
ImxvYWQtdGltZSIsIFdJLlVJU3RyaW5nKCJMb2FkaW5nIGZvciAlcyIpLCBOdW1iZXIuc2Vjb25k
c1RvU3RyaW5nKGR1cmF0aW9uIC8gMTAwMCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljKCJsb2FkLXRpbWUiLCBXSS5VSVN0
cmluZygiTG9hZGVkIGluICVzIiksIE51bWJlci5zZWNvbmRzVG9TdHJpbmcobWFpbkZyYW1lTG9h
ZEV2ZW50VGltZSAtIG1haW5GcmFtZVN0YXJ0VGltZSkpOwotCi0gICAgICAgIHRoaXMuX3N0b3BV
cGRhdGluZ0xvYWRUaW1lU3RhdGlzdGljKCk7Ci0gICAgfQotCiAgICAgX3JlbG9hZFRhYmxlKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3RhYmxlLnJlbG9hZERhdGEoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNv
bnRlbnRWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjI5OWI1YWZmNWRiNjkzZDc0YTE1Yzc2Y2ZlMmE0
NGU1Y2NlMDRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuY3NzCkBAIC0wLDAgKzEsOTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisubmV3LXRhYi50YWIuY29udGVudC12aWV3IHsKKyAgICBkaXNwbGF5OiBmbGV4
OworICAgIGZsZXgtZmxvdzogcm93IHdyYXA7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7
CisgICAgYWxpZ24tY29udGVudDogY2VudGVyOworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CisK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDk2JSk7CisKKyAgICBwYWRkaW5nOiAx
MHB4OworCisgICAgb3ZlcmZsb3cteTogYXV0bzsKK30KKworLm5ldy10YWIudGFiLmNvbnRlbnQt
dmlldyA+IC50YWItaXRlbSB7CisgICAgZGlzcGxheTogZmxleDsKKworICAgIG1pbi13aWR0aDog
MTEwcHg7CisgICAgbWluLWhlaWdodDogMTEwcHg7CisKKyAgICBtYXJnaW46IDEwcHg7CisKKyAg
ICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cit9CisK
Ky5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcgPiAudGFiLWl0ZW0uZGlzYWJsZWQgeworICAgIG9w
YWNpdHk6IDAuNTsKKyAgICBmaWx0ZXI6IGJyaWdodG5lc3MoOTAlKTsKK30KKworLm5ldy10YWIu
dGFiLmNvbnRlbnQtdmlldyA+IC50YWItaXRlbSA+IC5ib3ggeworICAgIHdpZHRoOiA5NHB4Owor
ICAgIGhlaWdodDogOTRweDsKKworICAgIHBhZGRpbmc6IDE1cHg7CisgICAgYm9yZGVyLXJhZGl1
czogNXB4OworCisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCA4MiUpOworICAgIGJv
eC1zaGFkb3c6IGhzbGEoMCwgMCUsIDAlLCAwLjMzKSAwIDFweCA2cHg7CisKKyAgICBkaXNwbGF5
OiBibG9jazsKK30KKworLm5ldy10YWIudGFiLmNvbnRlbnQtdmlldyA+IC50YWItaXRlbTpub3Qo
LmRpc2FibGVkKTpob3ZlciA+IC5ib3ggeworICAgIGZpbHRlcjogYnJpZ2h0bmVzcyg5MCUpOwor
fQorCisubmV3LXRhYi50YWIuY29udGVudC12aWV3ID4gLnRhYi1pdGVtOm5vdCguZGlzYWJsZWQp
OmFjdGl2ZSA+IC5ib3ggeworICAgIGZpbHRlcjogYnJpZ2h0bmVzcyg3NSUpOworfQorCisubmV3
LXRhYi50YWIuY29udGVudC12aWV3ID4gLnRhYi1pdGVtID4gLmJveCA+IGltZyB7CisgICAgd2lk
dGg6IDY0cHg7CisgICAgaGVpZ2h0OiA2NHB4OworCisgICAgb3BhY2l0eTogMC41NTsgLyogQXNz
dW1lcyBibGFjayBnbHlwaHMuICovCisKKyAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTsKK30K
KworLm5ldy10YWIudGFiLmNvbnRlbnQtdmlldyA+IC50YWItaXRlbSA+IGxhYmVsIHsKKyAgICBk
aXNwbGF5OiBibG9jazsKKyAgICBtYXJnaW4tdG9wOiA4cHg7Cit9CisKK0BtZWRpYSAocHJlZmVy
cy1jb2xvci1zY2hlbWU6IGRhcmspIHsKKyAgICAubmV3LXRhYi50YWIuY29udGVudC12aWV3IHsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1jb2xvci1jb250ZW50
KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5YjIz
NWZlMGYzNGY3MDA2YTczNGI2NmRlODk5MWZkOWVlNGEyZjMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmll
dy5qcwpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLk5ld1RhYkNvbnRlbnRWaWV3
ID0gY2xhc3MgTmV3VGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50Vmlldworewor
ICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBsZXQgdGFiQmFySXRl
bSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLk5ld1RhYkNvbnRlbnRWaWV3
LnRhYkluZm8oKSk7CisgICAgICAgIHRhYkJhckl0ZW0uaXNEZWZhdWx0VGFiID0gdHJ1ZTsKKwor
ICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJuZXctdGFiIiwgIm5ldy10YWIiLCB0YWJCYXJJ
dGVtKTsKKworICAgICAgICB0aGlzLl90YWJFbGVtZW50c0J5VGFiQ2xhc3MgPSBuZXcgTWFwOwor
CisgICAgICAgIGxldCBhbGxUYWJDbGFzc2VzID0gQXJyYXkuZnJvbShXSS5rbm93blRhYkNsYXNz
ZXMoKSk7CisgICAgICAgIHRoaXMuX3Nob3duVGFiQ2xhc3NlcyA9IGFsbFRhYkNsYXNzZXMuZmls
dGVyKCh0YWJDbGFzcykgPT4gdGFiQ2xhc3MuaXNUYWJBbGxvd2VkKCkgJiYgIXRhYkNsYXNzLnRh
YkluZm8oKS5pc0VwaGVtZXJhbCk7CisgICAgICAgIHRoaXMuX3Nob3duVGFiQ2xhc3Nlcy5zb3J0
KChhLCBiKSA9PiBhLnRhYkluZm8oKS50aXRsZS5leHRlbmRlZExvY2FsZUNvbXBhcmUoYi50YWJJ
bmZvKCkudGl0bGUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdGFiSW5mbygpCisgICAgeworICAg
ICAgICByZXR1cm4geworICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvTmV3VGFiLnN2ZyIsCisg
ICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIk5ldyBUYWIiKSwKKyAgICAgICAgICAgIGlz
RXBoZW1lcmFsOiB0cnVlLAorICAgICAgICB9OworICAgIH0KKworICAgIHN0YXRpYyBzaG91bGRT
YXZlVGFiKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBQ
dWJsaWMKKworICAgIGdldCB0eXBlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXSS5OZXdUYWJD
b250ZW50Vmlldy5UeXBlOworICAgIH0KKworICAgIHNob3duKCkKKyAgICB7CisgICAgICAgIFdJ
LnRhYkJhci5hZGRFdmVudExpc3RlbmVyKFdJLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtQWRkZWQs
IHRoaXMuX3VwZGF0ZVRhYkl0ZW1zLCB0aGlzKTsKKyAgICAgICAgV0kudGFiQmFyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1SZW1vdmVkLCB0aGlzLl91cGRhdGVU
YWJJdGVtcywgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fdXBkYXRlVGFiSXRlbXMoKTsKKyAgICB9
CisKKyAgICBoaWRkZW4oKQorICAgIHsKKyAgICAgICAgV0kudGFiQmFyLnJlbW92ZUV2ZW50TGlz
dGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisgICAgfQorCisgICAgZ2V0IHN1cHBvcnRzU3BsaXRD
b250ZW50QnJvd3NlcigpCisgICAgeworICAgICAgICAvLyBTaG93aW5nIHRoZSBzcGxpdCBjb25z
b2xlIGlzIHByb2JsZW1hdGljIGJlY2F1c2Ugc29tZSBuZXcgdGFicyB3aWxsIGNhdXNlIGl0IHRv
CisgICAgICAgIC8vIGRpc2FwcGVhciBhbmQgbm90IHJlYXBwZWFyLCBidXQgb3RoZXJzIHdvbid0
LiBKdXN0IHByZXZlbnQgaXQgZnJvbSBldmVyIHNob3dpbmcuCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fdGFiRWxlbWVu
dHNCeVRhYkNsYXNzLmNsZWFyKCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJl
bigpOworCisgICAgICAgIGZvciAobGV0IHRhYkNsYXNzIG9mIHRoaXMuX3Nob3duVGFiQ2xhc3Nl
cykgeworICAgICAgICAgICAgbGV0IHRhYkl0ZW1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgICAgICB0YWJJdGVtRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0
YWItaXRlbSIpOworICAgICAgICAgICAgdGFiSXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9jcmVhdGVOZXdUYWJXaXRoVHlwZS5iaW5kKHRoaXMsIHRhYkNsYXNzLlR5
cGUpKTsKKyAgICAgICAgICAgIHRhYkl0ZW1FbGVtZW50W1dJLk5ld1RhYkNvbnRlbnRWaWV3LlR5
cGVTeW1ib2xdID0gdGFiQ2xhc3MuVHlwZTsKKworICAgICAgICAgICAgbGV0IGJveEVsZW1lbnQg
PSB0YWJJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KSk7CisgICAgICAgICAgICBib3hFbGVtZW50LmNsYXNzTGlzdC5hZGQoImJveCIpOworCisgICAg
ICAgICAgICBsZXQgaW5mbyA9IHRhYkNsYXNzLnRhYkluZm8oKTsKKyAgICAgICAgICAgIGxldCBp
bWFnZUVsZW1lbnQgPSBib3hFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImltZyIpKTsKKyAgICAgICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSBpbmZvLmltYWdlOwor
CisgICAgICAgICAgICBsZXQgbGFiZWxFbGVtZW50ID0gdGFiSXRlbUVsZW1lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSk7CisgICAgICAgICAgICBsYWJlbEVs
ZW1lbnQudGV4dENvbnRlbnQgPSBpbmZvLnRpdGxlOworCisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGFiSXRlbUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fdGFiRWxl
bWVudHNCeVRhYkNsYXNzLnNldCh0YWJDbGFzcywgdGFiSXRlbUVsZW1lbnQpOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5fdXBkYXRlVGFiSXRlbXMoKTsKKyAgICB9CisKKyAgICAvLyBQcml2
YXRlCisKKyAgICBfY3JlYXRlTmV3VGFiV2l0aFR5cGUodGFiVHlwZSwgZXZlbnQpCisgICAgewor
ICAgICAgICBpZiAoIVdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKHRhYlR5cGUpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnN0IGNhbkNyZWF0ZUFkZGl0aW9uYWxUYWJzID0g
dGhpcy5fYWxsb3dhYmxlVGFiVHlwZXMoKS5sZW5ndGggPiAxOworICAgICAgICBjb25zdCBvcHRp
b25zID0geworICAgICAgICAgICAgcmVmZXJlbmNlZFZpZXc6IHRoaXMsCisgICAgICAgICAgICBz
aG91bGRSZXBsYWNlVGFiOiAhY2FuQ3JlYXRlQWRkaXRpb25hbFRhYnMgfHwgIVdJLm1vZGlmaWVy
S2V5cy5tZXRhS2V5LAorICAgICAgICAgICAgc2hvdWxkU2hvd05ld1RhYjogIVdJLm1vZGlmaWVy
S2V5cy5tZXRhS2V5LAorICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5U
YWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkJ1dHRvbkNsaWNrLAorICAgICAgICB9OworICAgICAgICBX
SS5jcmVhdGVOZXdUYWJXaXRoVHlwZSh0YWJUeXBlLCBvcHRpb25zKTsKKyAgICB9CisKKyAgICBf
YWxsb3dhYmxlVGFiVHlwZXMoKQorICAgIHsKKyAgICAgICAgbGV0IHRhYlR5cGVzID0gdGhpcy5f
c2hvd25UYWJDbGFzc2VzLm1hcCgodGFiQ2xhc3MpID0+IHRhYkNsYXNzLlR5cGUpOworICAgICAg
ICByZXR1cm4gdGFiVHlwZXMuZmlsdGVyKCh0eXBlKSA9PiBXSS5pc05ld1RhYldpdGhUeXBlQWxs
b3dlZCh0eXBlKSk7CisgICAgfQorCisgICAgX3VwZGF0ZVRhYkl0ZW1zKCkKKyAgICB7CisgICAg
ICAgIGZvciAobGV0IFt0YWJDbGFzcywgdGFiSXRlbUVsZW1lbnRdIG9mIHRoaXMuX3RhYkVsZW1l
bnRzQnlUYWJDbGFzcy5lbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGxldCBhbGxvd2VkID0gV0ku
aXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQodGFiQ2xhc3MuVHlwZSk7CisgICAgICAgICAgICB0YWJJ
dGVtRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdJLk5ld1RhYkNvbnRlbnRWaWV3LkRpc2FibGVk
U3R5bGVDbGFzc05hbWUsICFhbGxvd2VkKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK1dJLk5l
d1RhYkNvbnRlbnRWaWV3LlR5cGUgPSAibmV3LXRhYiI7CitXSS5OZXdUYWJDb250ZW50Vmlldy5U
eXBlU3ltYm9sID0gU3ltYm9sKCJ0eXBlIik7CisKK1dJLk5ld1RhYkNvbnRlbnRWaWV3LlRhYkl0
ZW1TdHlsZUNsYXNzTmFtZSA9ICJ0YWItaXRlbSI7CitXSS5OZXdUYWJDb250ZW50Vmlldy5EaXNh
YmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2FibGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpz
CmluZGV4IGQ1ODIwM2I2MTI4YmMxZDQ3MDJjYTZlY2MxYThkZWE2Yjg4ODliYzQuLjliMGJjYzcx
NmQ0ZjMyZWQ5ZGU3YWMzY2Y2YTVmNjVmOTY1N2ZlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRl
bS5qcwpAQCAtMjUsMjcgKzI1LDM3IEBACiAKIFdJLlBpbm5lZFRhYkJhckl0ZW0gPSBjbGFzcyBQ
aW5uZWRUYWJCYXJJdGVtIGV4dGVuZHMgV0kuVGFiQmFySXRlbQogewotICAgIGNvbnN0cnVjdG9y
KHJlcHJlc2VudGVkT2JqZWN0LCBpbWFnZSwgdGl0bGUpCisgICAgY29uc3RydWN0b3IoaW1hZ2Us
IHRpdGxlKQogICAgIHsKLSAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QsIGltYWdlLCB0
aXRsZSk7CisgICAgICAgIHN1cGVyKGltYWdlLCB0aXRsZSk7CiAKICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInBpbm5lZCIpOwotICAgIH0KIAotICAgIC8vIFN0YXRpYworICAg
ICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9o
YW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcykpOworICAgIH0KIAotICAgIHN0YXRpYyBm
cm9tVGFiQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcpCisgICAgc3RhdGljIGZyb21UYWJJbmZv
KHtpbWFnZSwgdGl0bGV9KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGFiQ29udGVu
dFZpZXcgaW5zdGFuY2VvZiBXSS5UYWJDb250ZW50Vmlldyk7Ci0KLSAgICAgICAgbGV0IHtpbWFn
ZSwgdGl0bGV9ID0gdGFiQ29udGVudFZpZXcuY29uc3RydWN0b3IudGFiSW5mbygpOwotICAgICAg
ICByZXR1cm4gbmV3IFdJLlBpbm5lZFRhYkJhckl0ZW0odGFiQ29udGVudFZpZXcsIGltYWdlLCB0
aXRsZSk7CisgICAgICAgIHJldHVybiBuZXcgV0kuUGlubmVkVGFiQmFySXRlbShpbWFnZSwgdGl0
bGUpOwogICAgIH0KIAotICAgIC8vIFByb3RlY3RlZAotCiAgICAgdGl0bGVEaWRDaGFuZ2UoKQog
ICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnRpdGxlID0gdGhpcy50aXRsZTsKICAgICB9CisK
KyAgICAvLyBQcml2YXRlCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCkKKyAg
ICB7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisKKyAgICAgICAgbGV0IGNvbnRl
eHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKKworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5QaW5uZWRUYWJCYXJJdGVtLkV2ZW50
LkNvbnRleHRNZW51LCB7Y29udGV4dE1lbnV9KTsKKyAgICB9Cit9OworCitXSS5QaW5uZWRUYWJC
YXJJdGVtLkV2ZW50ID0geworICAgIENvbnRleHRNZW51OiAicGlubmVkLXRhYi1iYXItaXRlbS1j
b250ZXh0LW1lbnUiLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwppbmRleCAwNmJiYzk1MTk2MzU5MDc5
Yjg4NTZlY2JmNGQ2YjM5M2Q2NTMxYjE5Li45ZDIzNGIyMmQwYjJjMGFlNmY2MWYzYTg4OTZkYjBl
MWViZDQ0MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCkBAIC01MSw4ICs1MSw3IEBAIFdJLlF1aWNr
Q29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgLy8g
d291bGQgYmUgZm9yIENvZGVNaXJyb3IncyBldmVudCBoYW5kbGVyIHRvIHBhc3MgaWYgaXQgZG9l
c24ndCBkbyBhbnl0aGluZy4KICAgICAgICAgdGhpcy5wcm9tcHQuZXNjYXBlS2V5SGFuZGxlcldo
ZW5FbXB0eSA9IGZ1bmN0aW9uKCkgeyBXSS50b2dnbGVTcGxpdENvbnNvbGUoKTsgfTsKIAotICAg
ICAgICBjb25zdCBuYXZpZ2F0aW9uYmFyRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX25h
dmlnYXRpb25CYXIgPSBuZXcgV0kuTmF2aWdhdGlvbkJhcihuYXZpZ2F0aW9uYmFyRWxlbWVudCwg
e3NpemVzVG9GaXQ6IHRydWV9KTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBX
SS5TaXplc1RvRml0TmF2aWdhdGlvbkJhcjsKICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMu
X25hdmlnYXRpb25CYXIpOwogCiAgICAgICAgIHRoaXMuX2FjdGl2ZUV4ZWN1dGlvbkNvbnRleHRO
YXZpZ2F0aW9uSXRlbURpdmlkZXIgPSBuZXcgV0kuRGl2aWRlck5hdmlnYXRpb25JdGVtOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVy
aW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGguY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGgu
Y3NzCmluZGV4IGNjNWM3YmQyM2EwNzNiNGM1ODNjMzFhYjgyYzJlNmVjY2FjMDg5MWMuLmVlMWZh
Y2E0NmQ2ODRiZWM4NTBhYjgxOWFjZTNjZjQ3NDBmNWVkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVP
dmVydmlld0dyYXBoLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jc3MKQEAgLTU4LDYg
KzU4LDYgQEAKICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKIH0KIAotYm9keTptYXRjaGVzKC53
aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGltZWxpbmUtb3ZlcnZp
ZXctZ3JhcGgucmVuZGVyaW5nLWZyYW1lID4gLmZyYW1lLW1hcmtlciB7Citib2R5LndpbmRvdy1p
bmFjdGl2ZSAudGltZWxpbmUtb3ZlcnZpZXctZ3JhcGgucmVuZGVyaW5nLWZyYW1lID4gLmZyYW1l
LW1hcmtlciB7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0
LCBoc2woMCwgMCUsIDYwJSksIGhzbCgwLCAwJSwgNjAlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hUYWJDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRh
YkNvbnRlbnRWaWV3LmpzCmluZGV4IDAwNjE2NDA2MGUwZTVmZTJhNmI0NGFjMDg2MGU3ZDVlOGZh
MDE0MDIuLjM0YjMyYzc5YTNlZWQzY2EwNmVkNDIyZGYzZjVkZDZmYjU1OTgyOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNv
bnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNSw0NSArMjUsMzggQEAKIAogV0kuU2Vh
cmNoVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZWFyY2hUYWJDb250ZW50VmlldyBleHRlbmRzIFdJ
LkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAg
Y29uc3RydWN0b3IoaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIGxldCBkZXRhaWxzU2lkZWJh
clBhbmVsQ29uc3RydWN0b3JzID0gWwotICAgICAgICAgICAgV0kuUmVzb3VyY2VEZXRhaWxzU2lk
ZWJhclBhbmVsLAotICAgICAgICAgICAgV0kuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAg
ICAgICAgICAgV0kuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBXSS5D
b21wdXRlZFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgIFdJLlJ1bGVzU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICBdOworICAgICAgICBsZXQgdGFiQmFySXRl
bTsKKyAgICAgICAgaWYgKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhci52
YWx1ZSkKKyAgICAgICAgICAgIHRhYkJhckl0ZW0gPSBXSS5QaW5uZWRUYWJCYXJJdGVtLmZyb21U
YWJJbmZvKFdJLlNlYXJjaFRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHRhYkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5m
byhXSS5TZWFyY2hUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworCisgICAgICAgIGxldCBkZXRh
aWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzID0gW1dJLlJlc291cmNlRGV0YWlsc1NpZGViYXJQ
YW5lbCwgV0kuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLAorICAgICAgICAgICAgV0kuRE9NTm9k
ZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LCBXSS5SdWxlc1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbF07CisKICAgICAgICAgaWYgKEluc3Bl
Y3RvckJhY2tlbmQuaGFzRG9tYWluKCJMYXllclRyZWUiKSkKICAgICAgICAgICAgIGRldGFpbHNT
aWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMucHVzaChXSS5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBh
bmVsKTsKIAotICAgICAgICBzdXBlcihTZWFyY2hUYWJDb250ZW50Vmlldy50YWJJbmZvKCksIHsK
LSAgICAgICAgICAgIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcjogV0kuU2VhcmNo
U2lkZWJhclBhbmVsLAotICAgICAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9y
cywKLSAgICAgICAgfSk7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgInNlYXJjaCIsICJz
ZWFyY2giLCB0YWJCYXJJdGVtLCBXSS5TZWFyY2hTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFy
UGFuZWxDb25zdHJ1Y3RvcnMpOworCisgICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgU2VhcmNo
IHRhYiBpcyBkaXNwbGF5YWJsZSBmcm9tIGEgcGlubmVkIHRhYiBiYXIgaXRlbS4KKyAgICAgICAg
dGFiQmFySXRlbS5yZXByZXNlbnRlZE9iamVjdCA9IHRoaXM7CiAKICAgICAgICAgdGhpcy5fZm9y
Y2VQZXJmb3JtU2VhcmNoID0gZmFsc2U7CiAgICAgfQogCiAgICAgc3RhdGljIHRhYkluZm8oKQog
ICAgIHsKKyAgICAgICAgbGV0IGltYWdlID0gV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxl
TmV3VGFiQmFyLnZhbHVlID8gIkltYWdlcy9TZWFyY2guc3ZnIiA6ICJJbWFnZXMvU2VhcmNoUmVz
dWx0cy5zdmciOwogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWRlbnRpZmllcjogU2Vh
cmNoVGFiQ29udGVudFZpZXcuVHlwZSwKLSAgICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL1NlYXJj
aC5zdmciLAorICAgICAgICAgICAgaW1hZ2UsCiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJp
bmcoIlNlYXJjaCIpLAorICAgICAgICAgICAgaXNFcGhlbWVyYWw6IHRydWUsCiAgICAgICAgIH07
CiAgICAgfQogCi0gICAgc3RhdGljIHNob3VsZFBpblRhYigpCi0gICAgewotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2hvdWxkU2F2ZVRhYigpCi0gICAgewotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdHlw
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwppbmRleCA5NGI0N2M4ZjM4
ZTNmMzJiNTFlN2Q5NTBhNTY5OWRhNjc5NDZlMmYyLi5hN2QzOTQwYjE3NDkyODVjZTcwOWQ5YzVl
NGUxNzA3YzM4YTYzYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMK
QEAgLTI2LDkgKzI2LDE0IEBACiAKIFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBT
ZXR0aW5nc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpZXcKIHsKLSAgICBj
b25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAg
IHN1cGVyKFNldHRpbmdzVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKyAgICAgICAgbGV0IHRh
YkJhckl0ZW0gPSBXSS5QaW5uZWRUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLlNldHRpbmdzVGFi
Q29udGVudFZpZXcudGFiSW5mbygpKTsKKworICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJz
ZXR0aW5ncyIsICJzZXR0aW5ncyIsIHRhYkJhckl0ZW0pOworCisgICAgICAgIC8vIEVuc3VyZXMg
dGhhdCB0aGUgU2V0dGluZ3MgdGFiIGlzIGRpc3BsYXlhYmxlIGZyb20gYSBwaW5uZWQgdGFiIGJh
ciBpdGVtLgorICAgICAgICB0YWJCYXJJdGVtLnJlcHJlc2VudGVkT2JqZWN0ID0gdGhpczsKIAog
ICAgICAgICB0aGlzLl9zZWxlY3RlZFNldHRpbmdzVmlldyA9IG51bGw7CiAgICAgICAgIHRoaXMu
X3NldHRpbmdzVmlld3MgPSBbXTsKQEAgLTM3LDE3ICs0MiwxMiBAQCBXSS5TZXR0aW5nc1RhYkNv
bnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNv
bnRlbnRWaQogICAgIHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0g
ICAgICAgICAgICBpZGVudGlmaWVyOiBTZXR0aW5nc1RhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAg
ICAgICAgICBpbWFnZTogIkltYWdlcy9HZWFyLnN2ZyIsCiAgICAgICAgICAgICB0aXRsZTogV0ku
VUlTdHJpbmcoIlNldHRpbmdzIiksCisgICAgICAgICAgICBpc0VwaGVtZXJhbDogdHJ1ZSwKICAg
ICAgICAgfTsKICAgICB9CiAKLSAgICBzdGF0aWMgc2hvdWxkUGluVGFiKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQogICAgIHN0YXRpYyBzaG91bGRTYXZlVGFiKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM2MCw2ICszNjAsOSBAQCBXSS5TZXR0aW5n
c1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NUYWJDb250ZW50VmlldyBleHRlbmRzIFdJ
LlRhYkNvbnRlbnRWaQogICAgICAgICAgICAgZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZFNl
cGFyYXRvcigpOwogICAgICAgICB9CiAKKyAgICAgICAgZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3
LmFkZFNldHRpbmcoV0kuVUlTdHJpbmcoIlVzZXIgSW50ZXJmYWNlOiIpLCBXSS5zZXR0aW5ncy5l
eHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXIsIFdJLlVJU3RyaW5nKCJFbmFibGUgTmV3IFRhYiBC
YXIiKSk7CisgICAgICAgIGV4cGVyaW1lbnRhbFNldHRpbmdzVmlldy5hZGRTZXBhcmF0b3IoKTsK
KwogICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5oYXNEb21haW4oIkNTUyIpKSB7CiAgICAg
ICAgICAgICBsZXQgc3R5bGVzR3JvdXAgPSBleHBlcmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkR3Jv
dXAoV0kuVUlTdHJpbmcoIlN0eWxlczoiKSk7CiAgICAgICAgICAgICBzdHlsZXNHcm91cC5hZGRT
ZXR0aW5nKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZVN0eWxlc0p1bXBUb0VmZmVjdGl2
ZSwgV0kuVUlTdHJpbmcoIlNob3cgSnVtcCB0byBFZmZlY3RpdmUgUHJvcGVydHkgQnV0dG9uIikp
OwpAQCAtMzgzLDYgKzM4Niw3IEBAIFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBT
ZXR0aW5nc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpCiAgICAgICAgIH0K
IAogICAgICAgICBsaXN0ZW5Gb3JDaGFuZ2UoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxl
UHJldmlld0ZlYXR1cmVzKTsKKyAgICAgICAgbGlzdGVuRm9yQ2hhbmdlKFdJLnNldHRpbmdzLmV4
cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhcik7CiAKICAgICAgICAgaWYgKEluc3BlY3RvckJhY2tl
bmQuaGFzRG9tYWluKCJDU1MiKSkKICAgICAgICAgICAgIGxpc3RlbkZvckNoYW5nZShXSS5zZXR0
aW5ncy5leHBlcmltZW50YWxFbmFibGVTdHlsZXNKdW1wVG9FZmZlY3RpdmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMKaW5k
ZXggNjRkYzg5NTMwNThiZjUxMzg0YzVlNGFjZWY1YzBiZjUwYWEzNGU5Ni4uMTBhMTMxOWY1NDQw
NGNiYjY3NmZlMjBlZDgzMjlmM2UzNTY1OGU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpzCkBAIC00Miw4ICs0Miw3IEBA
IFdJLlNpZGViYXIgPSBjbGFzcyBTaWRlYmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBpZiAo
aGFzTmF2aWdhdGlvbkJhcikgewogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImhhcy1uYXZpZ2F0aW9uLWJhciIpOwogCi0gICAgICAgICAgICBjb25zdCBuYXZpZ2F0aW9u
QmFyRWxlbWVudCA9IG51bGw7Ci0gICAgICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3
IFdJLk5hdmlnYXRpb25CYXIobmF2aWdhdGlvbkJhckVsZW1lbnQsIHtyb2xlOiAidGFibGlzdCJ9
KTsKKyAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV0kuTmF2aWdhdGlvbkJh
cihudWxsLCBudWxsLCAidGFibGlzdCIpOwogICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJh
ci5hZGRFdmVudExpc3RlbmVyKFdJLk5hdmlnYXRpb25CYXIuRXZlbnQuTmF2aWdhdGlvbkl0ZW1T
ZWxlY3RlZCwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZCwgdGhpcyk7CiAgICAgICAgICAg
ICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fbmF2aWdhdGlvbkJhcik7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpemVzVG9G
aXROYXZpZ2F0aW9uQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU2l6ZXNUb0ZpdE5hdmlnYXRpb25CYXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRjOWQ5ZTQ0Yzk2
NDcxZGQyNDg0Mjg2ZDRlMzM4Y2MyZTdmN2ZhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpemVzVG9GaXROYXZpZ2F0aW9uQmFy
LmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5TaXplc1RvRml0TmF2aWdhdGlv
bkJhciA9IGNsYXNzIFNpemVzVG9GaXROYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV0kuTmF2aWdhdGlv
bkJhcgoreworICAgIGdldCBzaXplc1RvRml0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Tb3VyY2VzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzVGFiQ29udGVudFZpZXcuanMKaW5kZXggMTNi
MWQ1NWE4OTI4ZGQ4MmVlYjE2MWExMjM5OTRkZDkwYmM3YjUwZC4uYzVhZDc3YjRiMzZlZjQxNDZk
MGVjNmQ3ZWRlMzBjYjY1OWQyNGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmll
dy5qcwpAQCAtMjcsMjUgKzI3LDE2IEBAIFdJLlNvdXJjZXNUYWJDb250ZW50VmlldyA9IGNsYXNz
IFNvdXJjZXNUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyCiB7CiAgICAg
Y29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgc3VwZXIoU291cmNlc1RhYkNvbnRlbnRWaWV3
LnRhYkluZm8oKSwgewotICAgICAgICAgICAgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVj
dG9yOiBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCwKLSAgICAgICAgICAgIGRldGFp
bHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnM6IFsKLSAgICAgICAgICAgICAgICBXSS5SZXNvdXJj
ZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICAgICAgV0kuU2NvcGVDaGFpbkRldGFp
bHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICAgICAgV0kuUHJvYmVEZXRhaWxzU2lkZWJhclBh
bmVsLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSk7CisgICAgICAgIGxldCB0YWJCYXJJdGVt
ID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuU291cmNlc1RhYkNvbnRlbnRW
aWV3LnRhYkluZm8oKSk7CisgICAgICAgIGNvbnN0IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1
Y3RvcnMgPSBbV0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5TY29wZUNoYWluRGV0
YWlsc1NpZGViYXJQYW5lbCwgV0kuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsXTsKKyAgICAgICAg
c3VwZXIoInNvdXJjZXMiLCBbInNvdXJjZXMiXSwgdGFiQmFySXRlbSwgV0kuU291cmNlc05hdmln
YXRpb25TaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMpOwogCiAg
ICAgICAgIHRoaXMuX3Nob3dTY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbCA9IGZhbHNlOwot
Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5QYXVzZWQsIHRoaXMuX2hhbmRsZURlYnVnZ2VyUGF1c2VkLCB0aGlzKTsK
LSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlJlc3VtZWQsIHRoaXMuX2hhbmRsZURlYnVnZ2VyUmVzdW1lZCwgdGhpcyk7
CiAgICAgfQogCiAgICAgc3RhdGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsK
LSAgICAgICAgICAgIGlkZW50aWZpZXI6IFNvdXJjZXNUYWJDb250ZW50Vmlldy5UeXBlLAogICAg
ICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvU291cmNlcy5zdmciLAogICAgICAgICAgICAgdGl0bGU6
IFdJLlVJU3RyaW5nKCJTb3VyY2VzIiksCiAgICAgICAgIH07CkBAIC0xMDcsMTggKzk4LDYgQEAg
V0kuU291cmNlc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU291cmNlc1RhYkNvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuQ29udGVudEJyb3dzZXIKICAgICAgICAgaWYgKHRyZWVFbGVtZW50KQogICAgICAg
ICAgICAgdHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KCk7CiAgICAgfQotCi0gICAgLy8gUHJp
dmF0ZQotCi0gICAgX2hhbmRsZURlYnVnZ2VyUGF1c2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAg
dGhpcy50YWJCYXJJdGVtLmltYWdlID0gIkltYWdlcy9Tb3VyY2VzUGF1c2VkLnN2ZyI7Ci0gICAg
fQotCi0gICAgX2hhbmRsZURlYnVnZ2VyUmVzdW1lZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRo
aXMudGFiQmFySXRlbS5pbWFnZSA9ICJJbWFnZXMvU291cmNlcy5zdmciOwotICAgIH0KIH07CiAK
IFdJLlNvdXJjZXNUYWJDb250ZW50Vmlldy5UeXBlID0gInNvdXJjZXMiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRl
bnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3Rv
cmFnZVRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDk1NDBhYjhjYjE2ZDgwMDg3MWU1NzY1MmM5NGZl
OTA0YWNlMGE2MGIuLjNkMWYxNTVmNjQ1MDc1ZmYwZTYxYTE1NmM2ZDk1NTZhMTcwMjQ4NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3Jh
Z2VUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanMKQEAgLTI1LDE1ICsyNSwxMiBAQAog
CiBXSS5TdG9yYWdlVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTdG9yYWdlVGFiQ29udGVudFZpZXcg
ZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc3RydWN0
b3IoKQorICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBzdXBlcihT
dG9yYWdlVGFiQ29udGVudFZpZXcudGFiSW5mbygpLCB7Ci0gICAgICAgICAgICBuYXZpZ2F0aW9u
U2lkZWJhclBhbmVsQ29uc3RydWN0b3I6IFdJLlN0b3JhZ2VTaWRlYmFyUGFuZWwsCi0gICAgICAg
ICAgICBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzOiBbCi0gICAgICAgICAgICAgICAg
V0kuQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICAgICAg
V0kuSW5kZXhlZERhdGFiYXNlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgIF0sCi0g
ICAgICAgIH0pOworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVt
LmZyb21UYWJJbmZvKFdJLlN0b3JhZ2VUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworICAgICAg
ICBsZXQgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyA9IFtXSS5BcHBsaWNhdGlvbkNh
Y2hlRGV0YWlsc1NpZGViYXJQYW5lbCwgV0kuSW5kZXhlZERhdGFiYXNlRGV0YWlsc1NpZGViYXJQ
YW5lbF07CisKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAic3RvcmFnZSIsICJzdG9yYWdl
IiwgdGFiQmFySXRlbSwgV0kuU3RvcmFnZVNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5l
bENvbnN0cnVjdG9ycyk7CiAKICAgICAgICAgV0kuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIuZW5h
YmxlKCk7CiAgICAgICAgIFdJLmRhdGFiYXNlTWFuYWdlci5lbmFibGUoKTsKQEAgLTQ0LDcgKzQx
LDYgQEAgV0kuU3RvcmFnZVRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU3RvcmFnZVRhYkNvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXIKICAgICBzdGF0aWMgdGFiSW5mbygpCiAgICAg
ewogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWRlbnRpZmllcjogU3RvcmFnZVRhYkNv
bnRlbnRWaWV3LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9TdG9yYWdlLnN2ZyIs
CiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIlN0b3JhZ2UiKSwKICAgICAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJC
YXIuY3NzCmluZGV4IGVmNTFjYWFkY2RlOGEyYTExYTdmODY2MWU3MmIzZTE4Yjc1MTY3NTguLjNk
N2NkN2FiMmY5YzNhZTg4MTEyM2FlMGU2MDVlMmJjMmZiZTQxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3MKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmNzcwpAQCAtMjUs
MTYgKzI1LDI1IEBACiAKIC50YWItYmFyIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAg
dG9wOiB2YXIoLS11bmRvY2tlZC10aXRsZS1hcmVhLWhlaWdodCk7CisgICAgdG9wOiB2YXIoLS10
b29sYmFyLWhlaWdodCk7CiAgICAgbGVmdDogMDsKICAgICByaWdodDogMDsKICAgICBoZWlnaHQ6
IHZhcigtLXRhYi1iYXItaGVpZ2h0KTsKIAogICAgIGRpc3BsYXk6IGZsZXg7CisgICAganVzdGlm
eS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOworICAgIGZsZXgtd3JhcDogd3JhcDsKKworICAgIGJv
cmRlci1ib3R0b206IHZhcigtLXRhYi1pdGVtLW1lZGl1bS1ib3JkZXItc3R5bGUpOwogCiAgICAg
YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA3
OCUpLCBoc2woMCwgMCUsIDcyJSkpOwogICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAyMDAlOwog
CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworCisgICAg
b3V0bGluZTogbm9uZTsKKwogICAgIC0tdGFiLWl0ZW0tZGFyay1ib3JkZXItY29sb3I6IGhzbCgw
LCAwJSwgNTklKTsKICAgICAtLXRhYi1pdGVtLW1lZGl1bS1ib3JkZXItY29sb3I6IGhzbCgwLCAw
JSwgNjUlKTsKICAgICAtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCA4
NSUpOwpAQCAtNDQsODUgKzUzLDMwIEBACiAgICAgLS10YWItaXRlbS1saWdodC1ib3JkZXItc3R5
bGU6IDFweCBzb2xpZCB2YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3IpOwogfQogCi1i
b2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50
YWItYmFyIHsKK2JvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyIHsKKyAgICBib3JkZXItYm90
dG9tLWNvbG9yOiB2YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3IpOworCiAgICAgYmFj
a2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50OwogICAgIGJhY2tncm91bmQtY29sb3I6IHZh
cigtLXRhYi1pdGVtLWV4dHJhLWxpZ2h0LWJvcmRlci1jb2xvcikgIWltcG9ydGFudDsKIH0KIAot
LnRhYi1iYXIgPiAuYm9yZGVyIHsKKy50YWItYmFyID4gLnRvcC1ib3JkZXIgewogICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CiAgICAgbGVmdDogMDsKICAgICByaWdodDogMDsK
LSAgICB6LWluZGV4OiAxMDsKICAgICBoZWlnaHQ6IDFweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiB2YXIoLS10YWItaXRlbS1tZWRpdW0tYm9yZGVyLWNvbG9yKTsKLX0KLQotLnRhYi1iYXIgPiAu
Ym9yZGVyLnRvcCB7Ci0gICAgdG9wOiAwOwotfQotCi0udGFiLWJhciA+IC5ib3JkZXIuYm90dG9t
IHsKLSAgICBib3R0b206IDA7Ci19Ci0KLWJvZHkuZG9ja2VkLmJvdHRvbSAudGFiLWJhciA+IC5i
b3JkZXIudG9wIHsKLSAgICBmaWx0ZXI6IGJyaWdodG5lc3MoODAlKTsKLX0KLQotYm9keTptYXRj
aGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+
IC5ib3JkZXIgewotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJv
cmRlci1jb2xvcik7Ci19Ci0KLUBtZWRpYSAoLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlv
OiAxKSB7Ci0gICAgYm9keS5kb2NrZWQ6bWF0Y2hlcygucmlnaHQsIC5sZWZ0KTpub3QoLndpbmRv
dy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLmJvcmRlci50b3AgewotICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICB9Ci19Ci0KLUBtZWRpYSAoLXdlYmtpdC1t
aW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSB7Ci0gICAgYm9keS5kb2NrZWQ6bWF0Y2hlcygucmln
aHQsIC5sZWZ0KTpub3QoLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLmJvcmRl
ci50b3AgewotICAgICAgICBoZWlnaHQ6IDAuNXB4ICFpbXBvcnRhbnQ7Ci0gICAgfQotfQotCi0u
dGFiLWJhciA+IC5uYXZpZ2F0aW9uLWJhciB7Ci0gICAgaGVpZ2h0OiB2YXIoLS10YWItYmFyLWhl
aWdodCk7Ci19Ci0KLS50YWItYmFyID4gLm5hdmlnYXRpb24tYmFyID4gLml0ZW0uZ3JvdXAgPiAu
aXRlbSB7Ci0gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKLSAgICBtYXJnaW46IDAgNHB4ICFp
bXBvcnRhbnQ7Ci0gICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwotfQotCi0udGFiLWJhciA+IC5u
YXZpZ2F0aW9uLWJhciA+IC5pdGVtLmdyb3VwID4gLml0ZW06bnRoLWNoaWxkKDEgb2YgOm5vdCgu
aGlkZGVuKSkgewotICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiAxMnB4ICFpbXBvcnRhbnQ7Ci19
Ci0KLS50YWItYmFyID4gLm5hdmlnYXRpb24tYmFyID4gLml0ZW0uZ3JvdXAgPiAuaXRlbTpudGgt
bGFzdC1jaGlsZCgxIG9mIDpub3QoLmhpZGRlbikpIHsKLSAgICAtd2Via2l0LW1hcmdpbi1lbmQ6
IDEycHggIWltcG9ydGFudDsKLX0KIAotLnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iYXIgLml0ZW0u
ZGl2aWRlciB7Ci0gICAgbWFyZ2luLXRvcDogMXB4OwogICAgIGJhY2tncm91bmQtY29sb3I6IHZh
cigtLXRhYi1pdGVtLW1lZGl1bS1ib3JkZXItY29sb3IpOwotfQogCi1ib2R5Om1hdGNoZXMoLndp
bmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLm5hdmln
YXRpb24tYmFyID4gLml0ZW0uZGl2aWRlciB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0t
dGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKTsKKyAgICB6LWluZGV4OiAwOwogfQogCi0udGFi
LWJhciA+IC50YWJzIHsKLSAgICBkaXNwbGF5OiBmbGV4OwotICAgIGp1c3RpZnktY29udGVudDog
c3BhY2UtYmV0d2VlbjsKLSAgICBmbGV4LXdyYXA6IHdyYXA7Ci0gICAgcG9zaXRpb246IHJlbGF0
aXZlOwotICAgIHdpZHRoOiAxMDAlOwotICAgIGhlaWdodDogMTAwJTsKK2JvZHkud2luZG93LWlu
YWN0aXZlIC50YWItYmFyID4gLnRvcC1ib3JkZXIgeworICAgIGJhY2tncm91bmQtY29sb3I6IHZh
cigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcik7CiB9CiAKLS50YWItYmFyID4gLnRhYnMg
PiAuaXRlbSB7CisudGFiLWJhciA+IC5pdGVtIHsKICAgICBkaXNwbGF5OiBmbGV4OwogICAgIGZs
ZXgtZ3JvdzogMTsKIApAQCAtMTM0LDEyICs4OCwxNCBAQCBib2R5Om1hdGNoZXMoLndpbmRvdy1p
bmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLm5hdmlnYXRpb24t
YgogCiAgICAgcGFkZGluZzogMCA2cHg7CiAKLSAgICBtaW4td2lkdGg6IGNhbGModmFyKC0tdGFi
LWJhci1oZWlnaHQpIC0gMXB4KTsgLyogc3VidHJhY3QgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIg
Ki8KKyAgICBtaW4td2lkdGg6IDI0cHg7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKIAogICAgIGJh
Y2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwgNzgl
KSwgaHNsKDAsIDAlLCA3MiUpKTsKICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMjAwJTsKIAor
ICAgIGJvcmRlci10b3A6IHZhcigtLXRhYi1pdGVtLW1lZGl1bS1ib3JkZXItc3R5bGUpOworCiAg
ICAgaGVpZ2h0OiAxMDAlOwogICAgIGxpbmUtaGVpZ2h0OiAxNXB4OwogICAgIG91dGxpbmU6IG5v
bmU7CkBAIC0xNTAsNTMgKzEwNiw1NCBAQCBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwg
LndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLm5hdmlnYXRpb24tYgogICAgIC8q
IHRyYW5zaXRpb24tZGVsYXk6IDUwbXM7ICovCiB9CiAKLS50YWItYmFyID4gLnRhYnMuY2FsY3Vs
YXRlLXdpZHRoID4gLml0ZW0geworLnRhYi1iYXIuY2FsY3VsYXRlLXdpZHRoID4gLml0ZW0gewog
ICAgIGZsZXg6IGluaXRpYWw7CiB9CiAKLWJvZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiAudGFicyA+
IC5pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpLAotYm9keVtkaXI9bHRyXSAudGFiLWJhciA+IC50YWJz
Om5vdCguaGlkZS1ib3JkZXItc3RhcnQpID4gLml0ZW06Zmlyc3QtY2hpbGQsCi1ib2R5W2Rpcj1s
dHJdIC50YWItYmFyID4gLnRhYnMuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQsCi1ib2R5
W2Rpcj1ydGxdIC50YWItYmFyID4gLnRhYnM6bm90KC5oaWRlLWJvcmRlci1lbmQpID4gLml0ZW06
bGFzdC1jaGlsZCB7Citib2R5W2Rpcj1sdHJdIC50YWItYmFyID4gOm50aC1jaGlsZChuICsgMiBv
ZiAuaXRlbSksCitib2R5W2Rpcj1sdHJdIC50YWItYmFyLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNl
bGVjdGVkIHsKICAgICBib3JkZXItbGVmdDogdmFyKC0tdGFiLWl0ZW0tbWVkaXVtLWJvcmRlci1z
dHlsZSk7CiB9CiAKLWJvZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiAudGFiczpub3QoLmhpZGUtYm9y
ZGVyLWVuZCkgPiAuaXRlbTpsYXN0LWNoaWxkLAotYm9keVtkaXI9cnRsXSAudGFiLWJhciA+IC50
YWJzID4gLml0ZW06bm90KDpmaXJzdC1jaGlsZCksCi1ib2R5W2Rpcj1ydGxdIC50YWItYmFyID4g
LnRhYnM6bm90KC5oaWRlLWJvcmRlci1zdGFydCkgPiAuaXRlbTpmaXJzdC1jaGlsZCwKLWJvZHlb
ZGlyPXJ0bF0gLnRhYi1iYXIgPiAudGFicy5kcmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCB7
Citib2R5W2Rpcj1ydGxdIC50YWItYmFyID4gOm50aC1jaGlsZChuICsgMiBvZiAuaXRlbSksCiti
b2R5W2Rpcj1ydGxdIC50YWItYmFyLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkIHsKICAg
ICBib3JkZXItcmlnaHQ6IHZhcigtLXRhYi1pdGVtLW1lZGl1bS1ib3JkZXItc3R5bGUpOwogfQog
Ci0udGFiLWJhciA+IC50YWJzID4gLml0ZW0ucGlubmVkIHsKKy50YWItYmFyID4gLml0ZW0ucGlu
bmVkIHsKKyAgICB3aWR0aDogMjRweDsKICAgICBmbGV4OiBub25lOwogICAgIGp1c3RpZnktY29u
dGVudDogY2VudGVyOwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW06bm90KC5kaXNhYmxl
ZCkuc2VsZWN0ZWQgeworLnRhYi1iYXIgPiAuaXRlbS5waW5uZWQudGFiLXBpY2tlciB7CisgICAg
d2lkdGg6IDE4cHg7CisgICAgbWluLXdpZHRoOiBpbml0aWFsOworfQorCisudGFiLWJhciA+IC5p
dGVtOm5vdCguZGlzYWJsZWQpLnNlbGVjdGVkIHsKKyAgICBib3JkZXItdG9wLWNvbG9yOiBoc2wo
MCwgMCUsIDc0JSk7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJv
dHRvbSwgaHNsKDAsIDAlLCA4NyUpLCBoc2woMCwgMCUsIDgyJSkpOwogICAgIGJhY2tncm91bmQt
c2l6ZTogMTAwJSAxMDAlOwogfQogCi0udGFiLWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5nKSA+
IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIgeworLnRhYi1iYXI6bm90KC5h
bmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciB7CiAgICAg
YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA2
NyUpLCBoc2woMCwgMCUsIDY0JSkpOworICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLXRhYi1p
dGVtLWRhcmstYm9yZGVyLWNvbG9yKTsKIH0KIAotYm9keVtkaXI9bHRyXSAudGFiLWJhciA+IC50
YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92
ZXIsCi1ib2R5W2Rpcj1sdHJdIC50YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcpID4gLml0
ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciArIC5pdGVtLAotYm9keVtkaXI9cnRs
XSAudGFiLWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOmxhc3QtY2hpbGQ6bm90
KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciB7Citib2R5W2Rpcj1sdHJdIC50YWItYmFyOm5v
dCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIsCiti
b2R5W2Rpcj1sdHJdIC50YWItYmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0
ZWQsIC5kaXNhYmxlZCk6aG92ZXIgKyAuaXRlbSB7CiAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZh
cigtLXRhYi1pdGVtLWRhcmstYm9yZGVyLWNvbG9yKTsKIH0KIAotYm9keVtkaXI9bHRyXSAudGFi
LWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOmxhc3QtY2hpbGQ6bm90KC5zZWxl
Y3RlZCwgLmRpc2FibGVkKTpob3ZlciwKLWJvZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiAudGFiczpu
b3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyLAot
Ym9keVtkaXI9cnRsXSAudGFiLWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5v
dCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIgKyAuaXRlbSB7Citib2R5W2Rpcj1ydGxdIC50
YWItYmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6
aG92ZXIsCitib2R5W2Rpcj1ydGxdIC50YWItYmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5v
dCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIgKyAuaXRlbSB7CiAgICAgYm9yZGVyLXJpZ2h0
LWNvbG9yOiB2YXIoLS10YWItaXRlbS1kYXJrLWJvcmRlci1jb2xvcik7CiB9CiAKLWJvZHk6bWF0
Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIg
PiAudGFicyA+IC5pdGVtIHsKLSAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLXRhYi1pdGVt
LWxpZ2h0LWJvcmRlci1jb2xvcikgIWltcG9ydGFudDsKLSAgICBib3JkZXItbGVmdC1jb2xvcjog
dmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50OworYm9keS53aW5k
b3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRlbSB7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFy
KC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50OwogCiAgICAgYmFja2dy
b3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50OwogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigt
LXRhYi1pdGVtLWV4dHJhLWxpZ2h0LWJvcmRlci1jb2xvcikgIWltcG9ydGFudDsKQEAgLTIwNCwx
MiArMTYxLDIwIEBAIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tl
ZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtCiAgICAgdHJhbnNpdGlvbjogbm9u
ZTsKIH0KIAotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWlu
YWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4gLml0ZW0uc2VsZWN0ZWQgeworYm9keVtkaXI9bHRy
XS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRlbSB7CisgICAgYm9yZGVyLWxlZnQtY29s
b3I6IHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcikgIWltcG9ydGFudDsKK30KKwor
Ym9keVtkaXI9cnRsXS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRlbSB7CisgICAgYm9y
ZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3IpICFpbXBv
cnRhbnQ7Cit9CisKK2JvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyID4gLml0ZW0uc2VsZWN0
ZWQgewogICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBoc2woMCwgMCUsIDk2JSkgIWltcG9ydGFudDsKIH0KIAotLnRhYi1iYXIgPiAu
dGFicyA+IC5pdGVtID4gLmNsb3NlIHsKKy50YWItYmFyID4gLml0ZW0gPiAuY2xvc2UgewogICAg
IHdpZHRoOiAxNnB4OwogICAgIGhlaWdodDogMTZweDsKIApAQCAtMjMwLDI4ICsxOTUsMzYgQEAg
Ym9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAu
dGFiLWJhciA+IC50YWJzID4gLml0ZW0KICAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDRweDsKIH0K
IAotYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtOmhv
dmVyID4gLmNsb3NlIHsKK2JvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC50YWItYmFyID4gLml0
ZW06aG92ZXIgPiAuY2xvc2UgewogICAgIG9wYWNpdHk6IDAuNjsKIH0KIAotLnRhYi1iYXIgPiAu
dGFicyA+IC5pdGVtID4gLmNsb3NlOmhvdmVyIHsKK2JvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUp
IC50YWItYmFyLnNpbmdsZS10YWIgPiAuaXRlbS5kZWZhdWx0LXRhYjpob3ZlciA+IC5jbG9zZSB7
CisgICAgb3BhY2l0eTogMDsKK30KKworLnRhYi1iYXIuc2luZ2xlLXRhYiA+IC5pdGVtLmRlZmF1
bHQtdGFiID4gLmNsb3NlIHsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30KKworLnRhYi1i
YXIgPiAuaXRlbSA+IC5jbG9zZTpob3ZlciB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgw
LCAwJSwgMCUsIDAuMik7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC5jbG9zZTph
Y3RpdmUgeworLnRhYi1iYXIgPiAuaXRlbSA+IC5jbG9zZTphY3RpdmUgewogICAgIG9wYWNpdHk6
IDAuOCAhaW1wb3J0YW50OwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0gPiAuZmxleC1z
cGFjZSB7CisudGFiLWJhciA+IC5pdGVtID4gLmZsZXgtc3BhY2UgewogICAgIGRpc3BsYXk6IGZs
ZXg7CiAgICAgZmxleDogMTsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtLmVwaGVtZXJh
bCA+IC5mbGV4LXNwYWNlOmxhc3QtY2hpbGQgeworLnRhYi1iYXIgPiAuaXRlbS5lcGhlbWVyYWwg
PiAuZmxleC1zcGFjZTpsYXN0LWNoaWxkIHsKICAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDE2cHg7
CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC5pY29uIHsKKy50YWItYmFyID4gLml0
ZW0gPiAuaWNvbiB7CiAgICAgd2lkdGg6IDE2cHg7CiAgICAgaGVpZ2h0OiAxNnB4OwogCkBAIC0y
NjMsMjggKzIzNiwyOCBAQCBib2R5Om5vdCgud2luZG93LWluYWN0aXZlKSAudGFiLWJhciA+IC50
YWJzID4gLml0ZW06aG92ZXIgPiAuY2xvc2UgewogICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25l
OwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0ucGlubmVkID4gLmljb24geworLnRhYi1i
YXIgPiAuaXRlbS5waW5uZWQgPiAuaWNvbiB7CiAgICAgd2lkdGg6IDE1cHg7CiAgICAgaGVpZ2h0
OiAxNXB4OwogICAgIG1pbi13aWR0aDogMTVweDsKICAgICBtaW4taGVpZ2h0OiAxNXB4OwogfQog
Ci0udGFiLWJhciA+IC50YWJzID4gLml0ZW0uc2VsZWN0ZWQgPiAuaWNvbiB7CisudGFiLWJhciA+
IC5pdGVtLnNlbGVjdGVkID4gLmljb24gewogICAgIG9wYWNpdHk6IDAuNzsKIH0KIAotLnRhYi1i
YXIgPiAudGFicyA+IC5pdGVtLmRpc2FibGVkID4gLmljb24geworLnRhYi1iYXIgPiAuaXRlbS5k
aXNhYmxlZCA+IC5pY29uIHsKICAgICBvcGFjaXR5OiAwLjM1OwogfQogCiBAbWVkaWEgbm90IChw
cmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAgIC50YWItYmFyID4gLnRhYnM6bm90KC5h
bmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciA+IC5pY29u
IHsKKyAgICAudGFiLWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAu
ZGlzYWJsZWQpOmhvdmVyID4gLmljb24gewogICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgfQog
fQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0gPiAudGl0bGUgeworLnRhYi1iYXIgPiAuaXRl
bSA+IC50aXRsZSB7CiAgICAgY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjU1KTsKIAogICAgIGRp
c3BsYXk6IGZsZXg7CkBAIC0yOTMsMTEgKzI2NiwxMSBAQCBib2R5Om5vdCgud2luZG93LWluYWN0
aXZlKSAudGFiLWJhciA+IC50YWJzID4gLml0ZW06aG92ZXIgPiAuY2xvc2UgewogICAgIG1heC13
aWR0aDogNDAwcHg7CiB9CiAKLS50YWItYmFyID4gLnRhYnM6bm90KC5jb2xsYXBzZWQpID4gLml0
ZW0gPiAudGl0bGUgeworLnRhYi1iYXI6bm90KC5jb2xsYXBzZWQpID4gLml0ZW0gPiAudGl0bGUg
ewogICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiA2cHg7CiB9CiAKLS50YWItYmFyID4gLnRhYnMg
PiAuaXRlbSA+IC50aXRsZSA+IC5jb250ZW50IHsKKy50YWItYmFyID4gLml0ZW0gPiAudGl0bGUg
PiAuY29udGVudCB7CiAgICAgbWluLXdpZHRoOiAwOwogICAgIHdpZHRoOiAxMDAlOwogICAgIG92
ZXJmbG93OiBoaWRkZW47CkBAIC0zMDUsODQgKzI3OCw4NCBAQCBib2R5Om5vdCgud2luZG93LWlu
YWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4gLml0ZW06aG92ZXIgPiAuY2xvc2UgewogICAgIHdo
aXRlLXNwYWNlOiBub3dyYXA7CiB9CiAKLS50YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcp
ID4gLml0ZW06bm90KC5zZWxlY3RlZCk6aG92ZXIgPiAudGl0bGUgeworLnRhYi1iYXI6bm90KC5h
bmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCk6aG92ZXIgPiAudGl0bGUgewogICAgIGNv
bG9yOiBoc2xhKDAsIDAlLCAwJSwgMC42KTsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVt
LnNlbGVjdGVkID4gLnRpdGxlIHsKKy50YWItYmFyID4gLml0ZW0uc2VsZWN0ZWQgPiAudGl0bGUg
ewogICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC43KTsKIH0KIAotLnRhYi1iYXIgPiAudGFi
cy5jb2xsYXBzZWQgPiAuaXRlbSB7CisudGFiLWJhci5jb2xsYXBzZWQgPiAuaXRlbSB7CiAgICAg
anVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuY29sbGFwc2Vk
ID4gLml0ZW06bm90KC5waW5uZWQpID4gLmljb24geworLnRhYi1iYXIuY29sbGFwc2VkID4gLml0
ZW06bm90KC5waW5uZWQpID4gLmljb24gewogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLS50YWIt
YmFyID4gLnRhYnMuY29sbGFwc2VkID4gLml0ZW0gPiAuZmxleC1zcGFjZSB7CisudGFiLWJhci5j
b2xsYXBzZWQgPiAuaXRlbSA+IC5mbGV4LXNwYWNlIHsKICAgICBkaXNwbGF5OiBub25lOwogfQog
Ci0udGFiLWJhciA+IC50YWJzLmNvbGxhcHNlZCA+IC5pdGVtID4gLmNsb3NlIHsKKy50YWItYmFy
LmNvbGxhcHNlZCA+IC5pdGVtID4gLmNsb3NlIHsKICAgICBkaXNwbGF5OiBub25lOwogICAgIC13
ZWJraXQtbWFyZ2luLWVuZDogMDsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAu
aXRlbTpob3ZlciA+IC5jbG9zZSB7CisudGFiLWJhci5jb2xsYXBzZWQgPiAuaXRlbTpob3ZlciA+
IC5jbG9zZSB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAuaXRlbS5lcGhlbWVyYWw6
aG92ZXIgPiAuaWNvbiB7CisudGFiLWJhci5jb2xsYXBzZWQgPiAuaXRlbS5lcGhlbWVyYWw6aG92
ZXIgPiAuaWNvbiB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5j
b2xsYXBzZWQgPiAuaXRlbS5lcGhlbWVyYWw6aG92ZXIgPiAudGl0bGUgeworLnRhYi1iYXIuY29s
bGFwc2VkID4gLml0ZW0uZXBoZW1lcmFsOmhvdmVyID4gLnRpdGxlIHsKICAgICB2aXNpYmlsaXR5
OiBoaWRkZW47CiB9CiAKLS50YWItYmFyID4gLnRhYnMuc3RhdGljLWxheW91dCB7CisudGFiLWJh
ci5zdGF0aWMtbGF5b3V0IHsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiB9CiAKLS50YWItYmFy
ID4gLnRhYnMuc3RhdGljLWxheW91dCA+IC5pdGVtIHsKKy50YWItYmFyLnN0YXRpYy1sYXlvdXQg
PiAuaXRlbSB7CiAgICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7CiAgICAgdG9wOiAw
OwogfQogCi0udGFiLWJhciA+IC50YWJzLmFuaW1hdGluZy5jbG9zaW5nLXRhYiA+IC5pdGVtIHsK
Ky50YWItYmFyLmFuaW1hdGluZy5jbG9zaW5nLXRhYiA+IC5pdGVtIHsKICAgICB0cmFuc2l0aW9u
LXByb3BlcnR5OiBsZWZ0OwogICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDI1MG1zOwogICAgIHRy
YW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKIH0KIAotLnRhYi1iYXIgPiAu
dGFicy5hbmltYXRpbmc6bWF0Y2hlcyguZXhwYW5kaW5nLXRhYnMsIC5pbnNlcnRpbmctdGFiKSA+
IC5pdGVtIHsKKy50YWItYmFyLmFuaW1hdGluZzptYXRjaGVzKC5leHBhbmRpbmctdGFicywgLmlu
c2VydGluZy10YWIpID4gLml0ZW0gewogICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIHdp
ZHRoOwogICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDI1MG1zOwogICAgIHRyYW5zaXRpb24tdGlt
aW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5hbmltYXRp
bmcuaW5zZXJ0aW5nLXRhYiA+IC5pdGVtLmJlaW5nLWluc2VydGVkIHsKKy50YWItYmFyLmFuaW1h
dGluZy5pbnNlcnRpbmctdGFiID4gLml0ZW0uYmVpbmctaW5zZXJ0ZWQgewogICAgIHotaW5kZXg6
IDI7CiAgICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnQ7CiAgICAgcGFkZGluZzogMCAhaW1wb3J0
YW50OwogfQogCi0udGFiLWJhciA+IC50YWJzLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVk
LAotLnRhYi1iYXIgPiAudGFicy5zdGF0aWMtbGF5b3V0Om5vdCguYW5pbWF0aW5nLmluc2VydGlu
Zy10YWIpOm5vdCguZHJhZ2dpbmctdGFiKSA+IC5pdGVtOm50aC1sYXN0LWNoaWxkKDEgb2YgOm5v
dCgucGlubmVkKSksCi0udGFiLWJhciA+IC50YWJzLmFuaW1hdGluZy5jbG9zaW5nLXRhYiA+IC5p
dGVtLnNlbGVjdGVkIHsKKy50YWItYmFyLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkLAor
LnRhYi1iYXIuc3RhdGljLWxheW91dDpub3QoLmFuaW1hdGluZy5pbnNlcnRpbmctdGFiKTpub3Qo
LmRyYWdnaW5nLXRhYikgPiAuaXRlbTpudGgtbGFzdC1jaGlsZCgxIG9mIDpub3QoLnBpbm5lZCkp
LAorLnRhYi1iYXIuYW5pbWF0aW5nLmNsb3NpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQgewogICAg
IGJvcmRlci1yaWdodDogdmFyKC0tdGFiLWl0ZW0tbWVkaXVtLWJvcmRlci1zdHlsZSk7CiB9CiAK
LWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkg
LnRhYi1iYXIgPiAudGFicy5kcmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCwKLWJvZHk6bWF0
Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIg
PiAudGFicy5zdGF0aWMtbGF5b3V0Om5vdCguYW5pbWF0aW5nLmluc2VydGluZy10YWIpOm5vdCgu
ZHJhZ2dpbmctdGFiKSA+IC5pdGVtOm50aC1sYXN0LWNoaWxkKDEgb2YgOm5vdCgucGlubmVkKSks
Ci1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUp
IC50YWItYmFyID4gLnRhYnMuYW5pbWF0aW5nLmNsb3NpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQg
eworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2Vs
ZWN0ZWQsCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhci5zdGF0aWMtbGF5b3V0Om5vdCgu
YW5pbWF0aW5nLmluc2VydGluZy10YWIpOm5vdCguZHJhZ2dpbmctdGFiKSA+IC5pdGVtOm50aC1s
YXN0LWNoaWxkKDEgb2YgOm5vdCgucGlubmVkKSksCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFi
LWJhci5hbmltYXRpbmcuY2xvc2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCB7CiAgICAgYm9yZGVy
LXJpZ2h0LWNvbG9yOiB2YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3IpICFpbXBvcnRh
bnQ7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQg
eworLnRhYi1iYXIuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQgewogICAgIHotaW5kZXg6
IDI7CiAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiB9CkBAIC00MDAsNDggKzM3Myw0NiBAQCBi
b2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50
YWItYmFyID4gLnRhYnMuYW5pbWF0aQogICAgICAgICAtLXRhYi1pdGVtLWV4dHJhLWxpZ2h0LWJv
cmRlci1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tYm9yZGVyLWNvbG9yKTsKICAgICB9CiAKLSAgICBi
b2R5LmRvY2tlZC5ib3R0b20gLnRhYi1iYXIgPiAuYm9yZGVyLnRvcCB7Ci0gICAgICAgIGZpbHRl
cjogYnJpZ2h0bmVzcygxMjAlKTsKLSAgICB9Ci0KLSAgICAudGFiLWJhciA+IC50YWJzID4gLml0
ZW0geworICAgIC50YWItYmFyID4gLml0ZW0gewogICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBs
aW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDEyJSksIGhzbCgwLCAwJSwgMTAl
KSk7CiAgICAgfQogCi0gICAgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLnRpdGxlIHsKKyAg
ICAudGFiLWJhciA+IC5pdGVtID4gLnRpdGxlIHsKICAgICAgICAgY29sb3I6IHdoaXRlICFpbXBv
cnRhbnQ7CiAgICAgfQogCi0gICAgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtOm5vdCguZGlzYWJs
ZWQpLnNlbGVjdGVkIHsKKyAgICAudGFiLWJhciA+IC5pdGVtOm5vdCguZGlzYWJsZWQpLnNlbGVj
dGVkIHsKICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRv
bSwgaHNsKDAsIDAlLCAyMyUpLCBoc2woMCwgMCUsIDIxJSkpOworICAgICAgICBib3JkZXItdG9w
LWNvbG9yOiBoc2woMCwgMCUsIDM3JSk7CiAgICAgfQogCi0gICAgLnRhYi1iYXIgPiAudGFiczpu
b3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkKTpob3ZlciB7CisgICAgLnRhYi1i
YXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCk6aG92ZXIgewogICAgICAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUs
IDExJSksIGhzbCgwLCAwJSwgOSUpKTsKICAgICB9CiAKLSAgICAudGFiLWJhciA+IC50YWJzID4g
Lml0ZW0gPiAuY2xvc2UsCi0gICAgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLmljb24gewor
ICAgIC50YWItYmFyID4gLml0ZW0gPiAuY2xvc2UsCisgICAgLnRhYi1iYXIgPiAuaXRlbSA+IC5p
Y29uIHsKICAgICAgICAgZmlsdGVyOiB2YXIoLS1maWx0ZXItaW52ZXJ0KTsKICAgICB9CiAKLSAg
ICBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUp
IC50YWItYmFyIHsKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciB7CiAgICAgICAg
IC0tdGFiLWl0ZW0tYm9yZGVyLWNvbG9yOiBoc2woMCwgMCUsIDM0JSk7CisgICAgICAgIGJvcmRl
ci1ib3R0b20tY29sb3I6IHZhcigtLXRhYi1pdGVtLWJvcmRlci1jb2xvcik7CiAKICAgICAgICAg
YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBoc2woMCwgMCUsIDEzJSkgIWltcG9ydGFudDsKICAgICB9CiAKLSAgICBib2R5Om1hdGNo
ZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4g
LnRhYnMgPiAuaXRlbSB7CisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRl
bSB7CiAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCAxMyUpICFpbXBvcnRhbnQ7CiAgICAgfQogCi0g
ICAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZl
KSAudGFiLWJhciA+IC50YWJzID4gLml0ZW0uc2VsZWN0ZWQgeworICAgIGJvZHkud2luZG93LWlu
YWN0aXZlIC50YWItYmFyID4gLml0ZW0uc2VsZWN0ZWQgewogICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBoc2woMCwgMCUsIDE5JSkgIWltcG9ydGFudDsKICAgICB9CiAKLSAgICBib2R5Om1hdGNo
ZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4g
LnRhYnMgPiAuaXRlbSA+IC50aXRsZSB7CisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1i
YXIgPiAuaXRlbSA+IC50aXRsZSB7CiAgICAgICAgIGNvbG9yOiBoc2woMCwgMCUsIDU4JSkgIWlt
cG9ydGFudDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKaW5kZXggNzg0ZmM2OTVkNzVhZmJmM2IwNWNlODc4YmUz
MDJlYzVmYTgxNjgyOS4uODAxYjE3ZDdjMTUwOTIzMzBkOTJiYTFiNzcwZjhkNmYwYzBlOWI1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFi
QmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhci5qcwpAQCAtMjUsNTggKzI1LDM0IEBACiAKIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBl
eHRlbmRzIFdJLlZpZXcKIHsKLSAgICBjb25zdHJ1Y3RvcihlbGVtZW50KQorICAgIGNvbnN0cnVj
dG9yKGVsZW1lbnQsIHRhYkJhckl0ZW1zKQogICAgIHsKICAgICAgICAgc3VwZXIoZWxlbWVudCk7
CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1iYXIiKTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsICJ0YWJsaXN0Iik7CisgICAgICAg
IHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVN
b3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUNsaWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1vdXNl
TGVhdmUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51LmJpbmQodGhpcykpOwogCi0g
ICAgICAgIHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgImJvcmRlciB0b3AiKTsKLQot
ICAgICAgICBjb25zdCBuYXZpZ2F0aW9uQmFyQmVmb3JlRWxlbWVudCA9IG51bGw7Ci0gICAgICAg
IHRoaXMuX25hdmlnYXRpb25CYXJCZWZvcmUgPSBuZXcgV0kuTmF2aWdhdGlvbkJhcihuYXZpZ2F0
aW9uQmFyQmVmb3JlRWxlbWVudCwge3NpemVzVG9GaXQ6IHRydWV9KTsKLSAgICAgICAgdGhpcy5h
ZGRTdWJ2aWV3KHRoaXMuX25hdmlnYXRpb25CYXJCZWZvcmUpOwotCi0gICAgICAgIHRoaXMuX3Rh
YkNvbnRhaW5lciA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSk7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc05hbWUgPSAidGFi
cyI7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFi
bGlzdCIpOwotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykpOwotICAgICAgICB0aGlz
Ll90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVDbGlj
ay5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9oYW5kbGVNb3VzZUxlYXZlLmJpbmQodGhpcykpOwotICAg
ICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0
aGlzLl9oYW5kbGVDb250ZXh0TWVudS5iaW5kKHRoaXMpKTsKLQotICAgICAgICBjb25zdCBuYXZp
Z2F0aW9uQmFyQWZ0ZXJFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJh
ckFmdGVyID0gbmV3IFdJLk5hdmlnYXRpb25CYXIobmF2aWdhdGlvbkJhckFmdGVyRWxlbWVudCwg
e3NpemVzVG9GaXQ6IHRydWV9KTsKLSAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX25hdmln
YXRpb25CYXJBZnRlcik7Ci0KLSAgICAgICAgdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYi
LCAiYm9yZGVyIGJvdHRvbSIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY3JlYXRlQ2hpbGQoImRp
diIsICJ0b3AtYm9yZGVyIik7CiAKICAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMgPSBbXTsKICAg
ICAgICAgdGhpcy5faGlkZGVuVGFiQmFySXRlbXMgPSBbXTsKIAotICAgICAgICBjb25zdCB0YWJQ
aWNrZXJSZXByZXNlbnRlZE9iamVjdCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3RhYlBpY2tlclRh
YkJhckl0ZW0gPSBuZXcgV0kuUGlubmVkVGFiQmFySXRlbSh0YWJQaWNrZXJSZXByZXNlbnRlZE9i
amVjdCwgIkltYWdlcy9UYWJQaWNrZXIuc3ZnIiwgV0kuVUlTdHJpbmcoIlNob3cgaGlkZGVuIHRh
YnMiKSk7Ci0gICAgICAgIHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0uaGlkZGVuID0gdHJ1ZTsK
LSAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InRhYi1waWNrZXIiKTsKKyAgICAgICAgaWYgKHRhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICBm
b3IgKGxldCB0YWJCYXJJdGVtIGluIHRhYkJhckl0ZW1zKQorICAgICAgICAgICAgICAgIHRoaXMu
YWRkVGFiQmFySXRlbSh0YWJCYXJJdGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3Rh
YlBpY2tlclRhYkJhckl0ZW0gPSBuZXcgV0kuUGlubmVkVGFiQmFySXRlbSgiSW1hZ2VzL1RhYlBp
Y2tlci5zdmciLCBXSS5VSVN0cmluZygiU2hvdyBoaWRkZW4gdGFicyIpKTsKKyAgICAgICAgdGhp
cy5fdGFiUGlja2VyVGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1waWNrZXIi
LCAiaGlkZGVuIik7CiAgICAgICAgIHRoaXMuYWRkVGFiQmFySXRlbSh0aGlzLl90YWJQaWNrZXJU
YWJCYXJJdGVtLCB7c3VwcHJlc3NBbmltYXRpb25zOiB0cnVlfSk7CiAgICAgfQogCiAgICAgLy8g
UHVibGljCiAKLSAgICBhZGROYXZpZ2F0aW9uSXRlbUJlZm9yZShuYXZpZ2F0aW9uSXRlbSkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXJCZWZvcmUuYWRkTmF2aWdhdGlvbkl0ZW0o
bmF2aWdhdGlvbkl0ZW0pOwotCi0gICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9Ci0K
LSAgICBhZGROYXZpZ2F0aW9uSXRlbUFmdGVyKG5hdmlnYXRpb25JdGVtKQotICAgIHsKLSAgICAg
ICAgdGhpcy5fbmF2aWdhdGlvbkJhckFmdGVyLmFkZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25J
dGVtKTsKLQotICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAgfQotCiAgICAgYWRkVGFi
QmFySXRlbSh0YWJCYXJJdGVtLCBvcHRpb25zID0ge30pCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5pbnNlcnRUYWJCYXJJdGVtKHRhYkJhckl0ZW0sIHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0
aCwgb3B0aW9ucyk7CkBAIC0xMDksNyArODUsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIg
ZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGluZGV4ID0gTnVtYmVy
LmNvbnN0cmFpbihpbmRleCwgdGhpcy5ub3JtYWxUYWJDb3VudCwgdGhpcy5fdGFiQmFySXRlbXMu
bGVuZ3RoKTsKIAotICAgICAgICBpZiAodGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250
YWlucygiYW5pbWF0aW5nIikpIHsKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoImFuaW1hdGluZyIpKSB7CiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykpOwogICAgICAgICAgICAgb3B0aW9ucy5zdXBwcmVz
c0FuaW1hdGlvbnMgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMjMsMzcgKzk5LDM3IEBAIFdJLlRh
YkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgdmFyIG5leHRTaWJs
aW5nID0gdGhpcy5fdGFiQmFySXRlbXNbaW5kZXggKyAxXTsKICAgICAgICAgbGV0IG5leHRTaWJs
aW5nRWxlbWVudCA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6IHRoaXMuX3Rh
YkJhckl0ZW1zLmxhc3RWYWx1ZS5lbGVtZW50OwogCi0gICAgICAgIGlmICh0aGlzLl90YWJDb250
YWluZXIuY29udGFpbnMobmV4dFNpYmxpbmdFbGVtZW50KSkKLSAgICAgICAgICAgIHRoaXMuX3Rh
YkNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0Vs
ZW1lbnQpOworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNvbnRhaW5zKG5leHRTaWJsaW5nRWxl
bWVudCkpCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRhYkJhckl0ZW0u
ZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
dGhpcy5fdGFiQ29udGFpbmVyLmFwcGVuZENoaWxkKHRhYkJhckl0ZW0uZWxlbWVudCk7CisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGFiQmFySXRlbS5lbGVtZW50KTsKIAot
ICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIs
ICF0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3Jt
YWxUYWIoKSk7CiAKICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxs
OwogICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSBudWxsOwogCiAgICAg
ICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5f
dGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgdGhp
cy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImluc2VydGluZy10YWIiKTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbnNlcnRpbmctdGFiIik7CiAKICAgICAgICAg
ICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGFmdGVyVGFiU2l6ZXNB
bmRQb3NpdGlvbnMpOwogCi0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRM
aXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9u
RW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rp
b24gcmVtb3ZlU3R5bGVzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFp
bmVyLmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKLSAgICAgICAgICAgIHRoaXMu
X3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAg
IHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJpbnNlcnRpbmctdGFiIik7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIp
OworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIp
OworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImluc2VydGluZy10
YWIiKTsKIAogICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
ImJlaW5nLWluc2VydGVkIik7CiAKICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNp
emVzQW5kUG9zaXRpb25zKCk7CiAKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5yZW1v
dmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVu
ZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtp
dFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zKSB7CkBAIC0xNzAsNyArMTQ2LDcg
QEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJC
YXJJdGVtLCB7bGVmdDogMCwgd2lkdGg6IDB9KTsKIAotICAgICAgICAgICAgdGhpcy5fdGFiQ29u
dGFpbmVyLmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CiAgICAgICAgICAgICB0YWJC
YXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYmVpbmctaW5zZXJ0ZWQiKTsKIAogICAgICAg
ICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYmVmb3JlVGFiU2l6
ZXNBbmRQb3NpdGlvbnMpOwpAQCAtMjA2LDcgKzE4Miw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRh
YkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJCYXJJdGVt
ID0gbmV4dFRhYkJhckl0ZW07CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5fdGFiQ29u
dGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKKyAgICAgICAgaWYgKHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CiAgICAgICAgICAg
ICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykpOwogICAgICAg
ICAgICAgb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMgPSB0cnVlOwogICAgICAgICB9CkBAIC0y
MjIsNyArMTk4LDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwog
ICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQucmVtb3ZlKCk7CiAKICAgICAgICAgdmFyIGhhc01v
cmVUaGFuT25lTm9ybWFsVGFiID0gdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKTsKLSAg
ICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAh
aGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnRvZ2dsZSgic2luZ2xlLXRhYiIsICFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYik7CiAKICAgICAg
ICAgaWYgKCFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYiB8fCB3YXNMYXN0Tm9ybWFsVGFiIHx8ICFv
cHRpb25zLnN1cHByZXNzRXhwYW5zaW9uKSB7CiAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuc3Vw
cHJlc3NBbmltYXRpb25zKSB7CkBAIC0yMzksMTUgKzIxNSwxNSBAQCBXSS5UYWJCYXIgPSBjbGFz
cyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMo
KQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFk
ZCgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0
LmFkZCgiY2xvc2luZy10YWIiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJjbG9zaW5nLXRhYiIpOwogCiAgICAgICAgICAgICAvLyBGb3IgUlRMLCB3ZSBuZWVkIHRvIHBs
YWNlIGV4dHJhIHNwYWNlIGJldHdlZW4gcGlubmVkIHRhYiBhbmQgZmlyc3Qgbm9ybWFsIHRhYi4K
ICAgICAgICAgICAgIC8vIEZyb20gbGVmdCB0byByaWdodCB0aGVyZSBpcyBwaW5uZWQgdGFicywg
ZXh0cmEgc3BhY2UsIHRoZW4gbm9ybWFsIHRhYnMuIENvbXB1dGUKICAgICAgICAgICAgIC8vIGhv
dyBtdWNoIGV4dHJhIHNwYWNlIHdlIG5lZWQgdG8gYWRkaXRpb25hbGx5IGFkZCBmb3Igbm9ybWFs
IHRhYiBpdGVtcy4KICAgICAgICAgICAgIGxldCBleHRyYVNwYWNlQmV0d2Vlbk5vcm1hbEFuZFBp
bm5lZFRhYnMgPSAwOwogICAgICAgICAgICAgaWYgKFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9u
KCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwpIHsKLSAgICAgICAgICAgICAgICBleHRyYVNw
YWNlQmV0d2Vlbk5vcm1hbEFuZFBpbm5lZFRhYnMgPSB0aGlzLl90YWJDb250YWluZXIuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7CisgICAgICAgICAgICAgICAgZXh0cmFTcGFjZUJldHdl
ZW5Ob3JtYWxBbmRQaW5uZWRUYWJzID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpLndpZHRoOwogICAgICAgICAgICAgICAgIGZvciAobGV0IGN1cnJlbnRUYWJCYXJJdGVtIG9m
IHRoaXMuX3RhYkJhckl0ZW1zRnJvbUxlZnRUb1JpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAg
IGV4dHJhU3BhY2VCZXR3ZWVuTm9ybWFsQW5kUGlubmVkVGFicyAtPSBjdXJyZW50VGFiQmFySXRl
bS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOwogICAgICAgICAgICAgfQpA
QCAtMjcxLDcgKzI0Nyw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZp
ZXcKICAgICAgICAgICAgIGlmIChsYXN0Tm9ybWFsVGFiQmFySXRlbSAhPT0gdGhpcy5fc2VsZWN0
ZWRUYWJCYXJJdGVtKQogICAgICAgICAgICAgICAgIGxhc3ROb3JtYWxUYWJCYXJJdGVtLmVsZW1l
bnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9hdChsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50
LnN0eWxlLndpZHRoKSArIDEpICsgInB4IjsKIAotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFp
bmVyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNM
aXN0ZW5lcik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Vi
a2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGZ1bmN0aW9uIHJlbW92ZVN0eWxlcygpCkBAIC0yODAsMTYgKzI1NiwxNiBAQCBXSS5U
YWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICBpZiAodGhp
cy5fc2VsZWN0ZWRUYWJCYXJJdGVtICYmIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSAhPT0gbGFz
dE5vcm1hbFRhYkJhckl0ZW0pCiAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJ
dGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9hdCh0aGlzLl9zZWxlY3RlZFRhYkJh
ckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgLSAxKSArICJweCI7CiAKLSAgICAgICAgICAgIHRo
aXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKLSAgICAgICAg
ICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJjbG9zaW5nLXRhYiIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNsb3NpbmctdGFiIik7
CiAKICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKLSAgICAgICAgICAgIHRoaXMu
X3RhYkNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwg
cmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zKSB7
Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxh
eW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1s
YXlvdXQiKTsKIAogICAgICAgICAgICAgdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNl
RW50ZXIgPSB0cnVlOwogCkBAIC0zODIsNyArMzU4LDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFi
QmFyIGV4dGVuZHMgV0kuVmlldwogCiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0
ZW0pIHsKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5zZWxlY3RlZCA9IHRy
dWU7Ci0gICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmhpZGRlbikKKyAg
ICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoImhpZGRlbiIpKQogICAgICAgICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsK
ICAgICAgICAgfQogCkBAIC0zOTUsMjggKzM3MSwzMiBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJC
YXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtczsKICAg
ICB9CiAKLSAgICBnZXQgdGFiQ291bnQoKQorICAgIGdldCBub3JtYWxUYWJDb3VudCgpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVt
LnJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuVGFiQ29udGVudFZpZXcpLmxlbmd0aDsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gIShpdGVt
IGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkpLmxlbmd0aDsKICAgICB9CiAKLSAgICBn
ZXQgbm9ybWFsVGFiQ291bnQoKQorICAgIGdldCBzYXZlYWJsZVRhYkNvdW50KCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtcy5maWx0ZXIoKGl0ZW0pID0+ICEoaXRlbSBp
bnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pKS5sZW5ndGg7CisgICAgICAgIHJldHVybiB0
aGlzLl90YWJCYXJJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ucmVwcmVzZW50ZWRPYmplY3Qg
JiYgaXRlbS5yZXByZXNlbnRlZE9iamVjdC5jb25zdHJ1Y3Rvci5zaG91bGRTYXZlVGFiKCkpLmxl
bmd0aDsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIGxheW91dCgpCiAgICAgewot
ICAgICAgICBpZiAodGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygic3RhdGlj
LWxheW91dCIpKQorICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygi
c3RhdGljLWxheW91dCIpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3Rh
YkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJjYWxjdWxhdGUtd2lkdGgiKTsKLSAgICAgICAgdGhp
cy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoImNvbGxhcHNlZCIpOworICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2FsY3VsYXRlLXdpZHRoIik7CisgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjb2xsYXBzZWQiKTsKKworICAgICAgICBmdW5j
dGlvbiBmb3JjZUl0ZW1IaWRkZW4oaXRlbSwgaGlkZGVuKSB7CisgICAgICAgICAgICBpdGVtLmVs
ZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZGVuIiwgISFoaWRkZW4pOworICAgICAgICB9CiAK
ICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykKLSAgICAgICAgICAg
IGl0ZW0uaGlkZGVuID0gaXRlbSA9PT0gdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbTsKKyAgICAg
ICAgICAgIGZvcmNlSXRlbUhpZGRlbihpdGVtLCBpdGVtID09PSB0aGlzLl90YWJQaWNrZXJUYWJC
YXJJdGVtKTsKIAogICAgICAgICBmdW5jdGlvbiBtZWFzdXJlSXRlbVdpZHRoKGl0ZW0pIHsKICAg
ICAgICAgICAgIGlmICghaXRlbVtXSS5UYWJCYXIuQ2FjaGVkV2lkdGhTeW1ib2xdKQpAQCAtNDM0
LDEzICs0MTQsMTMgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwog
ICAgICAgICB0aGlzLl9oaWRkZW5UYWJCYXJJdGVtcyA9IFtdOwogCiAgICAgICAgIGxldCB0b3Rh
bEl0ZW1XaWR0aCA9IHJlY2FsY3VsYXRlSXRlbVdpZHRocygpOwotICAgICAgICBsZXQgYmFyV2lk
dGggPSB0aGlzLl90YWJDb250YWluZXIucmVhbE9mZnNldFdpZHRoOworICAgICAgICBsZXQgYmFy
V2lkdGggPSB0aGlzLmVsZW1lbnQucmVhbE9mZnNldFdpZHRoOwogCiAgICAgICAgIGlmICh0b3Rh
bEl0ZW1XaWR0aCA+IGJhcldpZHRoKSB7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIu
Y2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgiY29sbGFwc2VkIik7CiAgICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCA9IHJl
Y2FsY3VsYXRlSXRlbVdpZHRocygpOwogICAgICAgICAgICAgaWYgKHRvdGFsSXRlbVdpZHRoID4g
YmFyV2lkdGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLmhp
ZGRlbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvcmNlSXRlbUhpZGRlbih0aGlzLl90YWJQ
aWNrZXJUYWJCYXJJdGVtLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgdG90YWxJdGVtV2lkdGgg
Kz0gbWVhc3VyZUl0ZW1XaWR0aCh0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtKTsKICAgICAgICAg
ICAgIH0KIApAQCAtNDUyLDIxICs0MzIsMTMgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4
dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAg
ICAgICAgIHRvdGFsSXRlbVdpZHRoIC09IG1lYXN1cmVJdGVtV2lkdGgoaXRlbSk7Ci0gICAgICAg
ICAgICAgICAgaXRlbS5oaWRkZW4gPSB0cnVlOworICAgICAgICAgICAgICAgIGZvcmNlSXRlbUhp
ZGRlbihpdGVtLCB0cnVlKTsKIAogICAgICAgICAgICAgICAgIHRoaXMuX2hpZGRlblRhYkJhckl0
ZW1zLnB1c2goaXRlbSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB0aGlz
Ll90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiY2FsY3VsYXRlLXdpZHRoIik7Ci0gICAg
fQotCi0gICAgZGlkTGF5b3V0U3VidHJlZSgpCi0gICAgewotICAgICAgICBzdXBlci5kaWRMYXlv
dXRTdWJ0cmVlKCk7Ci0KLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC50b2dn
bGUoImhpZGUtYm9yZGVyLXN0YXJ0IiwgdGhpcy5fbmF2aWdhdGlvbkJhckJlZm9yZS5uYXZpZ2F0
aW9uSXRlbXMuZXZlcnkoKGl0ZW0pID0+IGl0ZW0uaGlkZGVuKSk7Ci0gICAgICAgIHRoaXMuX3Rh
YkNvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKCJoaWRlLWJvcmRlci1lbmQiLCB0aGlzLl9uYXZp
Z2F0aW9uQmFyQWZ0ZXIubmF2aWdhdGlvbkl0ZW1zLmV2ZXJ5KChpdGVtKSA9PiBpdGVtLmhpZGRl
bikpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY2FsY3VsYXRlLXdp
ZHRoIik7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQpAQCAtNTA4LDcgKzQ4MCw3IEBAIFdJLlRh
YkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICB7CiAgICAgICAgIHZhciB0
YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMgPSBuZXcgTWFwOwogCi0gICAgICAgIGxldCBiYXJS
ZWN0ID0gdGhpcy5fdGFiQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAg
ICBjb25zdCBiYXJSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwog
CiAgICAgICAgIGZvciAodmFyIHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKICAg
ICAgICAgICAgIHZhciBib3VuZGluZ1JlY3QgPSB0YWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7CkBAIC01NDcsMzYgKzUxOSwzNiBAQCBXSS5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICBpZiAoIWJlZm9yZVRhYlNpemVzQW5k
UG9zaXRpb25zKQogICAgICAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zID0g
dGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAKLSAgICAgICAgICAg
IHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIp
OwogICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsK
IAogICAgICAgICAgICAgdmFyIGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNv
cmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAogICAgICAgICAgICAgdGhpcy5fYXBw
bHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMp
OwotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInN0YXRpYy1s
YXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMt
bGF5b3V0Iik7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgi
c3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFz
c0xpc3QuYWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWlu
ZXIuY2xhc3NMaXN0LmFkZCgiZXhwYW5kaW5nLXRhYnMiKTsKKyAgICAgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXhwYW5kaW5nLXRhYnMiKTsKIAogICAgICAg
ICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGFmdGVyVGFi
U2l6ZXNBbmRQb3NpdGlvbnMpOwogCi0gICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVy
LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0
ZW5lcik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndl
YmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHJlbW92ZVN0eWxlcygpCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoInN0YXRp
Yy1sYXlvdXQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0
LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVy
LmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZGluZy10YWJzIik7CisgICAgICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZGluZy10YWJzIik7
CiAKICAgICAgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9u
cygpOwogCiAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKIAotICAgICAgICAg
ICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFu
c2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3Zl
U3R5bGVzTGlzdGVuZXIpOwogCiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAg
ICAgfQpAQCAtNjgxLDcgKzY1Myw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRz
IFdJLlZpZXcKICAgICAgICAgdmFyIGNsb3NlQnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldC5j
bG9zZXN0KCIuIiArIFdJLlRhYkJhckl0ZW0uQ2xvc2VCdXR0b25TdHlsZUNsYXNzTmFtZSk7CiAg
ICAgICAgIGlmIChjbG9zZUJ1dHRvbkVsZW1lbnQgfHwgY2xpY2tlZE1pZGRsZUJ1dHRvbikgewog
ICAgICAgICAgICAgLy8gRGlzYWxsb3cgY2xvc2luZyB0aGUgb25seSB0YWIuCi0gICAgICAgICAg
ICBpZiAodGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygic2luZ2xlLXRhYiIp
KQorICAgICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInNpbmds
ZS10YWIiKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGlmICghZXZl
bnQuYWx0S2V5KSB7CkBAIC03MTYsMjMgKzY4OCwyMSBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJC
YXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAg
ICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogCi0gICAgICAgIGlmICghdGhpcy5fdGFiQ29u
dGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKSB7CisgICAgICAgIGlm
ICghdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKSB7CiAg
ICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyh0aGlzLl9y
ZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKSk7Ci0gICAgICAgICAgICB0aGlzLl90
YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAg
dGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nLXRhYiIpOworICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGxldCBjb250YWluZXJPZmZzZXQgPSB0aGlzLl90YWJDb250YWluZXIu
dG90YWxPZmZzZXRMZWZ0OwotCiAgICAgICAgIGlmICh0aGlzLl9tb3VzZU9mZnNldCA9PT0gdW5k
ZWZpbmVkKQogICAgICAgICAgICAgdGhpcy5fbW91c2VPZmZzZXQgPSBldmVudC5wYWdlWCAtIHRo
aXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKIAotICAgICAg
ICBsZXQgdGFiQmFyTW91c2VPZmZzZXQgPSBldmVudC5wYWdlWCAtIGNvbnRhaW5lck9mZnNldDsK
KyAgICAgICAgdmFyIHRhYkJhck1vdXNlT2Zmc2V0ID0gZXZlbnQucGFnZVggLSB0aGlzLmVsZW1l
bnQudG90YWxPZmZzZXRMZWZ0OwogICAgICAgICB2YXIgbmV3TGVmdCA9IHRhYkJhck1vdXNlT2Zm
c2V0IC0gdGhpcy5fbW91c2VPZmZzZXQ7CiAKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJ
dGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IG5ld0xlZnQgKyAicHgiOwogCi0gICAgICAgIHZhciBz
ZWxlY3RlZFRhYk1pZFggPSBjb250YWluZXJPZmZzZXQgKyBuZXdMZWZ0ICsgKHRoaXMuX3NlbGVj
dGVkVGFiQmFySXRlbS5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aCAvIDIpOworICAgICAgICB2YXIg
c2VsZWN0ZWRUYWJNaWRYID0gbmV3TGVmdCArICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxl
bWVudC5yZWFsT2Zmc2V0V2lkdGggLyAyKTsKIAogICAgICAgICB2YXIgY3VycmVudEluZGV4ID0g
dGhpcy5fdGFiQmFySXRlbXMuaW5kZXhPZih0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pOwogICAg
ICAgICB2YXIgbmV3SW5kZXggPSBjdXJyZW50SW5kZXg7CkBAIC03NjIsNyArNzMyLDcgQEAgV0ku
VGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBsZXQgbmV4dFNp
YmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tuZXdJbmRleCArIDFdOwogICAgICAgICBsZXQgbmV4
dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogbnVs
bDsKIAotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuaW5zZXJ0QmVmb3JlKHRoaXMuX3NlbGVj
dGVkVGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOworICAgICAgICB0aGlz
LmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LCBu
ZXh0U2libGluZ0VsZW1lbnQpOwogCiAgICAgICAgIC8vIEZJWE1FOiBBbmltYXRlIHRoZSB0YWJz
IHRoYXQgbW92ZSB0byBtYWtlIHJvb20gZm9yIHRoZSBzZWxlY3RlZCB0YWIuIFRoaXMgd2FzIGNh
dXNpbmcgbWUgdHJvdWJsZSB3aGVuIEkgdHJpZWQuCiAKQEAgLTc4MSwxMCArNzUxLDEwIEBAIFdJ
LlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYgKCF0aGlz
Ll9tb3VzZUlzRG93bikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl90YWJD
b250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmctdGFiIik7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZy10YWIiKTsKIAogICAgICAgICBpZiAo
IXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyKSB7Ci0gICAgICAgICAgICB0
aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsK
ICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsZXQgbGVmdCA9IDA7CkBAIC04MTIsMTMgKzc4
MiwxMyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICBf
aGFuZGxlTW91c2VMZWF2ZShldmVudCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9tb3VzZUlz
RG93biB8fCAhdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMu
X3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlz
Ll90YWJDb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKKyAgICAgICAg
aWYgKHRoaXMuX21vdXNlSXNEb3duIHx8ICF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91
c2VFbnRlciB8fCAhdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91
dCIpIHx8IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFRoaXMgZXZlbnQgY2FuIHN0aWxsIGZpcmUg
d2hlbiB0aGUgbW91c2UgaXMgaW5zaWRlIHRoZSBlbGVtZW50IGlmIERPTSBub2RlcyBhcmUgYWRk
ZWQsIHJlbW92ZWQgb3IgZ2VuZXJhbGx5IGNoYW5nZSBpbnNpZGUuCiAgICAgICAgIC8vIENoZWNr
IGlmIHRoZSBtb3VzZSByZWFsbHkgZGlkIGxlYXZlIHRoZSBlbGVtZW50IGJ5IGNoZWNraW5nIHRo
ZSBib3VuZHMuCiAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIGEgV2ViS2l0IGJ1ZyBvciBjb3Jy
ZWN0IGJlaGF2aW9yPwotICAgICAgICBsZXQgYmFyUmVjdCA9IHRoaXMuX3RhYkNvbnRhaW5lci5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgY29uc3QgYmFyUmVjdCA9IHRoaXMuZWxl
bWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgaWYgKGV2ZW50LnBhZ2VZID4g
YmFyUmVjdC50b3AgJiYgZXZlbnQucGFnZVkgPCBiYXJSZWN0LmJvdHRvbSAmJiBldmVudC5wYWdl
WCA+IGJhclJlY3QubGVmdCAmJiBldmVudC5wYWdlWCA8IGJhclJlY3QucmlnaHQpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTgzMCw3ICs4MDAsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJC
YXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdJLkNvbnRleHRN
ZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CiAKICAgICAgICAgZm9yIChsZXQgdGFiQ2xhc3Mg
b2YgV0kua25vd25UYWJDbGFzc2VzKCkpIHsKLSAgICAgICAgICAgIGlmICghdGFiQ2xhc3MuaXNU
YWJBbGxvd2VkKCkgfHwgIXRhYkNsYXNzLnNob3VsZFNhdmVUYWIoKSkKKyAgICAgICAgICAgIGlm
ICghdGFiQ2xhc3MuaXNUYWJBbGxvd2VkKCkgfHwgdGFiQ2xhc3MudGFiSW5mbygpLmlzRXBoZW1l
cmFsKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBsZXQgb3BlblRh
YkJhckl0ZW0gPSBudWxsOwpAQCAtODY0LDQgKzgzNCw1IEBAIFdJLlRhYkJhci5FdmVudCA9IHsK
ICAgICBUYWJCYXJJdGVtQWRkZWQ6ICJ0YWItYmFyLXRhYi1iYXItaXRlbS1hZGRlZCIsCiAgICAg
VGFiQmFySXRlbVJlbW92ZWQ6ICJ0YWItYmFyLXRhYi1iYXItaXRlbS1yZW1vdmVkIiwKICAgICBU
YWJCYXJJdGVtc1Jlb3JkZXJlZDogInRhYi1iYXItdGFiLWJhci1pdGVtcy1yZW9yZGVyZWQiLAor
ICAgIE9wZW5EZWZhdWx0VGFiOiAidGFiLWJhci1vcGVuLWRlZmF1bHQtdGFiIgogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhckl0
ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJ
dGVtLmpzCmluZGV4IGNlZjlkNTY4NzBmZjU5MWQ1ZmRjMDdjMDI0YjE3M2YzZTM4YTRlYWIuLmM4
Njc2ZDA5ZjdmNWY0ODI4Zjg3NGUzOWIxNjkyNWFlNzY1OWM5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhckl0ZW0uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFySXRlbS5qcwpA
QCAtMjQsMTEgKzI0LDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV0kuVGFiQmFySXRlbSA9IGNsYXNzIFRhYkJhckl0ZW0KK1dJLlRhYkJhckl0ZW0gPSBj
bGFzcyBUYWJCYXJJdGVtIGV4dGVuZHMgV0kuT2JqZWN0CiB7Ci0gICAgY29uc3RydWN0b3IocmVw
cmVzZW50ZWRPYmplY3QsIGltYWdlLCB0aXRsZSkKKyAgICBjb25zdHJ1Y3RvcihpbWFnZSwgdGl0
bGUsIHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKLSAgICAgICAgdGhpcy5fcmVwcmVzZW50ZWRP
YmplY3QgPSByZXByZXNlbnRlZE9iamVjdCB8fCBudWxsOworICAgICAgICBzdXBlcigpOworCiAg
ICAgICAgIHRoaXMuX3BhcmVudFRhYkJhciA9IG51bGw7CiAKICAgICAgICAgdGhpcy5fZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtNDcsMTIgKzQ4LDE1IEBAIFdJ
LlRhYkJhckl0ZW0gPSBjbGFzcyBUYWJCYXJJdGVtCiAKICAgICAgICAgdGhpcy50aXRsZSA9IHRp
dGxlOwogICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7CisgICAgICAgIHRoaXMucmVwcmVzZW50
ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAog
ICAgIGdldCBlbGVtZW50KCkgeyByZXR1cm4gdGhpcy5fZWxlbWVudDsgfQorCiAgICAgZ2V0IHJl
cHJlc2VudGVkT2JqZWN0KCkgeyByZXR1cm4gdGhpcy5fcmVwcmVzZW50ZWRPYmplY3Q7IH0KKyAg
ICBzZXQgcmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpIHsgdGhpcy5fcmVwcmVz
ZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdCB8fCBudWxsOyB9CiAKICAgICBnZXQgcGFy
ZW50VGFiQmFyKCkgeyByZXR1cm4gdGhpcy5fcGFyZW50VGFiQmFyOyB9CiAgICAgc2V0IHBhcmVu
dFRhYkJhcih0YWJCYXIpeyB0aGlzLl9wYXJlbnRUYWJCYXIgPSB0YWJCYXIgfHwgbnVsbDsgfQpA
QCAtNzksMTcgKzgzLDE3IEBAIFdJLlRhYkJhckl0ZW0gPSBjbGFzcyBUYWJCYXJJdGVtCiAKICAg
ICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpCiAgICAgewotICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC50b2dnbGUoImRpc2FibGVkIiwgISFkaXNhYmxlZCk7CisgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZGlzYWJsZWQiLCBkaXNhYmxlZCk7CiAgICAgfQogCi0g
ICAgZ2V0IGhpZGRlbigpCisgICAgZ2V0IGlzRGVmYXVsdFRhYigpCiAgICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImhpZGRlbiIpOworICAgICAg
ICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImRlZmF1bHQtdGFiIik7
CiAgICAgfQogCi0gICAgc2V0IGhpZGRlbihoaWRkZW4pCisgICAgc2V0IGlzRGVmYXVsdFRhYihp
c0RlZmF1bHRUYWIpCiAgICAgewotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dn
bGUoImhpZGRlbiIsICEhaGlkZGVuKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
dG9nZ2xlKCJkZWZhdWx0LXRhYiIsIGlzRGVmYXVsdFRhYik7CiAgICAgfQogCiAgICAgZ2V0IGlt
YWdlKCkgeyByZXR1cm4gdGhpcy5faWNvbkVsZW1lbnQuc3JjOyB9CkBAIC0xMTAsOCArMTE0LDYg
QEAgV0kuVGFiQmFySXRlbSA9IGNsYXNzIFRhYkJhckl0ZW0KICAgICAgICAgdGhpcy50aXRsZURp
ZENoYW5nZSgpOwogICAgIH0KIAotICAgIC8vIFByb3RlY3RlZAotCiAgICAgdGl0bGVEaWRDaGFu
Z2UoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dz
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93
c2VyLmpzCmluZGV4IDVjZTc3MTNlZDcxZTdkZTI1YzYzOTU5ODAzMzIwZWU5ZWIwNDI1MzcuLjc2
ZTE3ZjM5YzMzOWYzMDI1MmRjZmM0ZDFlNDhmNzdjM2MzZjU5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcwpA
QCAtMTY4LDcgKzE2OCw3IEBAIFdJLlRhYkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVu
ZHMgV0kuVmlldwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl90YWJCYXIuYWRkVGFi
QmFySXRlbSh0YWJCYXJJdGVtLCBvcHRpb25zKTsKIAotICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3RoID09PSB0aGlzLl90YWJCYXIudGFiQ291
bnQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3Mu
bGVuZ3RoID09PSB0aGlzLl90YWJCYXIuc2F2ZWFibGVUYWJDb3VudCk7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgfHwgdGhpcy5zZWxlY3RlZFRh
YkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3NbMF0pOwogCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMjA2LDcgKzIwNiw3IEBAIFdJLlRhYkJyb3dzZXIgPSBjbGFz
cyBUYWJCcm93c2VyIGV4dGVuZHMgV0kuVmlldwogCiAgICAgICAgIHRoaXMuX3RhYkJhci5yZW1v
dmVUYWJCYXJJdGVtKHRhYkNvbnRlbnRWaWV3LnRhYkJhckl0ZW0sIG9wdGlvbnMpOwogCi0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy5sZW5ndGggPT09
IHRoaXMuX3RhYkJhci50YWJDb3VudCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Jl
Y2VudFRhYkNvbnRlbnRWaWV3cy5sZW5ndGggPT09IHRoaXMuX3RhYkJhci5zYXZlYWJsZVRhYkNv
dW50KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuc2VsZWN0ZWRUYWJDb250ZW50Vmll
dyB8fCB0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgPT09IHRoaXMuX3JlY2VudFRhYkNvbnRl
bnRWaWV3c1swXSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNDEsNyArMjQxLDcgQEAg
V0kuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAg
ICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXcodGFiQ29udGVu
dFZpZXcpOwogCiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnNlbGVjdGVkVGFiQ29u
dGVudFZpZXcpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVjZW50VGFiQ29u
dGVudFZpZXdzLmxlbmd0aCA9PT0gdGhpcy5fdGFiQmFyLnRhYkNvdW50KTsKKyAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy5sZW5ndGggPT09IHRo
aXMuX3RhYkJhci5zYXZlYWJsZVRhYkNvdW50KTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyA9PT0gdGhpcy5fcmVjZW50VGFiQ29udGVudFZp
ZXdzWzBdIHx8ICFzaG91bGRTYXZlVGFiKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzKCk7CkBAIC0y
ODcsMTIgKzI4NywxMiBAQCBXSS5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRz
IFdJLlZpZXcKIAogICAgICAgICB0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MucmVtb3ZlKHRh
YkNvbnRlbnRWaWV3KTsKIAotICAgICAgICBpZiAodGFiQ29udGVudFZpZXcuY29uc3RydWN0b3Iu
c2hvdWxkU2F2ZVRhYigpKQorICAgICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9y
LnRhYkluZm8oKS5pc0VwaGVtZXJhbCkKICAgICAgICAgICAgIHRoaXMuX2Nsb3NlZFRhYkNsYXNz
ZXMuYWRkKHRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yKTsKIAogICAgICAgICB0aGlzLl9jb250
ZW50Vmlld0NvbnRhaW5lci5jbG9zZUNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKIAotICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3RoID09
PSB0aGlzLl90YWJCYXIudGFiQ291bnQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9y
ZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3RoID09PSB0aGlzLl90YWJCYXIuc2F2ZWFibGVUYWJD
b3VudCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZp
ZXcgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNlbnRUYWJDb250
ZW50Vmlld3NbMF0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcwppbmRleCA5YTFiNjI2
YjQwMDI5YjQ4MTUwOTI2OTdkY2M0MDNmYTNjYmNlMmY2Li5hZTkwNjVmOTIxNmZhZGQ1ZmJjYTUx
OTZjZDY3MDlkNDAzOTM1MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcwpAQCAtMjUsMzAgKzI1
LDM4IEBACiAKIFdJLlRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgVGFiQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKHRhYkluZm8sIHtuYXZpZ2F0aW9u
U2lkZWJhclBhbmVsQ29uc3RydWN0b3IsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnN9
ID0ge30pCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgc3R5bGVDbGFzc05hbWVzLCB0YWJC
YXJJdGVtLCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IsIGRldGFpbHNTaWRlYmFy
UGFuZWxDb25zdHJ1Y3RvcnMpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghbmF2aWdh
dGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yIHx8IG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25z
dHJ1Y3Rvci5wcm90b3R5cGUgaW5zdGFuY2VvZiBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsKTsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoIWRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMg
fHwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycy5ldmVyeSgoZGV0YWlsc1NpZGViYXJQ
YW5lbENvbnN0cnVjdG9yKSA9PiBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3IucHJvdG90
eXBlIGluc3RhbmNlb2YgV0kuRGV0YWlsc1NpZGViYXJQYW5lbCkpOworICAgICAgICBjb25zb2xl
LmFzc2VydCh0eXBlb2YgaWRlbnRpZmllciA9PT0gInN0cmluZyIpOworICAgICAgICBjb25zb2xl
LmFzc2VydCh0eXBlb2Ygc3R5bGVDbGFzc05hbWVzID09PSAic3RyaW5nIiB8fCBzdHlsZUNsYXNz
TmFtZXMuZXZlcnkoKGNsYXNzTmFtZSkgPT4gdHlwZW9mIGNsYXNzTmFtZSA9PT0gInN0cmluZyIp
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlRhYkJh
ckl0ZW0pOworICAgICAgICBjb25zb2xlLmFzc2VydCghbmF2aWdhdGlvblNpZGViYXJQYW5lbENv
bnN0cnVjdG9yIHx8IHR5cGVvZiBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IgPT09
ICJmdW5jdGlvbiIpOworICAgICAgICBjb25zb2xlLmFzc2VydCghZGV0YWlsc1NpZGViYXJQYW5l
bENvbnN0cnVjdG9ycyB8fCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLmV2ZXJ5KChk
ZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3IpID0+IHR5cGVvZiBkZXRhaWxzU2lkZWJhclBh
bmVsQ29uc3RydWN0b3IgPT09ICJmdW5jdGlvbiIpKTsKIAogICAgICAgICBzdXBlcihudWxsKTsK
IAotICAgICAgICB0aGlzLl9pZGVudGlmaWVyID0gdGFiSW5mby5pZGVudGlmaWVyOwotICAgICAg
ICB0aGlzLl90YWJCYXJJdGVtID0gdGhpcy5jb25zdHJ1Y3Rvci5zaG91bGRQaW5UYWIoKSA/IFdJ
LlBpbm5lZFRhYkJhckl0ZW0uZnJvbVRhYkNvbnRlbnRWaWV3KHRoaXMpIDogV0kuR2VuZXJhbFRh
YkJhckl0ZW0uZnJvbVRhYkNvbnRlbnRWaWV3KHRoaXMpOworICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidGFiIik7CisKKyAgICAgICAgaWYgKHR5cGVvZiBzdHlsZUNsYXNzTmFt
ZXMgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgc3R5bGVDbGFzc05hbWVzID0gW3N0eWxlQ2xh
c3NOYW1lc107CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoLi4uc3R5bGVD
bGFzc05hbWVzKTsKKworICAgICAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAg
ICAgICAgdGhpcy5fdGFiQmFySXRlbSA9IHRhYkJhckl0ZW07CiAgICAgICAgIHRoaXMuX25hdmln
YXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciA9IG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25z
dHJ1Y3RvciB8fCBudWxsOwogICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhclBhbmVsQ29uc3Ry
dWN0b3JzID0gZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyB8fCBbXTsKIAogICAgICAg
ICBjb25zdCBkZWZhdWx0U2lkZWJhcldpZHRoID0gMzAwOwogCi0gICAgICAgIHRoaXMuX25hdmln
YXRpb25TaWRlYmFyQ29sbGFwc2VkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKHRoaXMuX2lkZW50
aWZpZXIgKyAiLW5hdmlnYXRpb24tc2lkZWJhci1jb2xsYXBzZWQiLCBmYWxzZSk7Ci0gICAgICAg
IHRoaXMuX25hdmlnYXRpb25TaWRlYmFyV2lkdGhTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhp
cy5faWRlbnRpZmllciArICItbmF2aWdhdGlvbi1zaWRlYmFyLXdpZHRoIiwgZGVmYXVsdFNpZGVi
YXJXaWR0aCk7Ci0KLSAgICAgICAgdGhpcy5fZGV0YWlsc1NpZGViYXJDb2xsYXBzZWRTZXR0aW5n
ID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRlbnRpZmllciArICItZGV0YWlscy1zaWRlYmFyLWNv
bGxhcHNlZCIsICF0aGlzLmRldGFpbHNTaWRlYmFyRXhwYW5kZWRCeURlZmF1bHQpOwotICAgICAg
ICB0aGlzLl9kZXRhaWxzU2lkZWJhclNlbGVjdGVkUGFuZWxTZXR0aW5nID0gbmV3IFdJLlNldHRp
bmcodGhpcy5faWRlbnRpZmllciArICItZGV0YWlscy1zaWRlYmFyLXNlbGVjdGVkLXBhbmVsIiwg
bnVsbCk7Ci0gICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyV2lkdGhTZXR0aW5nID0gbmV3IFdJ
LlNldHRpbmcodGhpcy5faWRlbnRpZmllciArICItZGV0YWlscy1zaWRlYmFyLXdpZHRoIiwgZGVm
YXVsdFNpZGViYXJXaWR0aCk7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyQ29sbGFw
c2VkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLW5hdmlnYXRpb24tc2lk
ZWJhci1jb2xsYXBzZWQiLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFy
V2lkdGhTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoaWRlbnRpZmllciArICItbmF2aWdhdGlvbi1z
aWRlYmFyLXdpZHRoIiwgZGVmYXVsdFNpZGViYXJXaWR0aCk7CiAKLSAgICAgICAgdGhpcy5fY29v
a2llU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKHRoaXMuX2lkZW50aWZpZXIgKyAiLXRhYi1jb29r
aWUiLCB7fSk7CisgICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyQ29sbGFwc2VkU2V0dGluZyA9
IG5ldyBXSS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci1jb2xsYXBzZWQi
LCAhdGhpcy5kZXRhaWxzU2lkZWJhckV4cGFuZGVkQnlEZWZhdWx0KTsKKyAgICAgICAgdGhpcy5f
ZGV0YWlsc1NpZGViYXJTZWxlY3RlZFBhbmVsU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50
aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci1zZWxlY3RlZC1wYW5lbCIsIG51bGwpOworICAgICAg
ICB0aGlzLl9kZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50
aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci13aWR0aCIsIGRlZmF1bHRTaWRlYmFyV2lkdGgpOwog
Ci0gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWIiLCB0aGlzLl9pZGVudGlm
aWVyKTsKKyAgICAgICAgdGhpcy5fY29va2llU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50
aWZpZXIgKyAiLXRhYi1jb29raWUiLCB7fSk7CiAgICAgfQogCiAgICAgc3RhdGljIGlzVGFiQWxs
b3dlZCgpCkBAIC01NywxMiArNjUsNiBAQCBXSS5UYWJDb250ZW50VmlldyA9IGNsYXNzIFRhYkNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgc3RhdGljIHNob3VsZFBpblRhYigpCi0gICAgewotICAgICAgICAvLyBSZXR1
cm5zIHRydWUgaWYgdGhlIHRhYiBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG8gYmUgY2xvc2VkLgot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgc3RhdGljIHNob3VsZFNhdmVUYWIo
KQogICAgIHsKICAgICAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgdGFiIHNob3VsZCBub3Qg
YmUgcmVzdG9yZWQgd2hlbiByZS1vcGVuaW5nIHRoZSBJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
T3ZlcnZpZXcuY3NzCmluZGV4IDY2ZTkxN2U2NTFjZDUzZDliZTc0MzVhOTc0NjkyZTFjNThiMTZm
ODQuLjk3ZmQ4NzE4NzIyMTNlNWYxMjdmYWQ2MWE0ODE1MzZlN2VhNDc2OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZp
ZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lT3ZlcnZpZXcuY3NzCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9keVtkaXI9cnRsXSAudGlt
ZWxpbmUtb3ZlcnZpZXc6bm90KC5mcmFtZXMpID4gOm1hdGNoZXMoLnNjcm9sbC1jb250YWluZXIs
IC50aW0KIH0KIAogLnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRyZWUtb3V0bGluZS50aW1lbGluZXMg
Lml0ZW0uc2VsZWN0ZWQgKyAuaXRlbSwKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAu
d2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRyZWUtb3V0bGlu
ZS50aW1lbGluZXMgLml0ZW0uc2VsZWN0ZWQgKyAuaXRlbSB7Citib2R5LndpbmRvdy1pbmFjdGl2
ZSAudGltZWxpbmUtb3ZlcnZpZXcgPiAudHJlZS1vdXRsaW5lLnRpbWVsaW5lcyAuaXRlbS5zZWxl
Y3RlZCArIC5pdGVtIHsKICAgICBib3JkZXItdG9wLWNvbG9yOiBoc2woMCwgMCUsIDgzJSk7CiB9
CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCBib2R5W2Rpcj1ydGxdIC50aW1lbGluZS1vdmVydmlldyA+
IC5zY3JvbGwtY29udGFpbmVyID4gLnNjcm9sbC13aWR0aC1zaXplciB7CiAgICAgfQogCiAgICAg
LnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRyZWUtb3V0bGluZS50aW1lbGluZXMgLml0ZW0uc2VsZWN0
ZWQgKyAuaXRlbSwKLSAgICBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1k
b2NrZWQtaW5hY3RpdmUpIC50aW1lbGluZS1vdmVydmlldyA+IC50cmVlLW91dGxpbmUudGltZWxp
bmVzIC5pdGVtLnNlbGVjdGVkICsgLml0ZW0geworICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50
aW1lbGluZS1vdmVydmlldyA+IC50cmVlLW91dGxpbmUudGltZWxpbmVzIC5pdGVtLnNlbGVjdGVk
ICsgLml0ZW0gewogICAgICAgICBib3JkZXItdG9wLWNvbG9yOiBoc2xhKDAsIDAlLCB2YXIoLS1m
b3JlZ3JvdW5kLWxpZ2h0bmVzcyksIDAuMDkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkRnJhbWUu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVS
ZWNvcmRGcmFtZS5jc3MKaW5kZXggZDgzZWNkMzc1NGIwZDUyYzU2MGFkMzU4YWE5YjVlYTk4MGJm
NTQyMi4uZjczZTc4OGFiMDM4NDJjNjdhNWNmY2JlOTBlMTg0YjBjNjQxYzgyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNv
cmRGcmFtZS5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVSZWNvcmRGcmFtZS5jc3MKQEAgLTUzLDcgKzUzLDcgQEAKICAgICBiYWNrZ3Jv
dW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLXNlbGVjdGVkLXRleHQtYmFja2dy
b3VuZC1jb2xvciksIHZhcigtLXNlbGVjdGVkLXRleHQtYmFja2dyb3VuZC1jb2xvcikpIG5vLXJl
cGVhdCAxcHggLTFweDsKIH0KIAotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5k
b3ctZG9ja2VkLWluYWN0aXZlKSAudGltZWxpbmUtcmVjb3JkLWZyYW1lLnNlbGVjdGVkIHsKK2Jv
ZHkud2luZG93LWluYWN0aXZlIC50aW1lbGluZS1yZWNvcmQtZnJhbWUuc2VsZWN0ZWQgewogICAg
IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgaHNsKDAsIDAlLCA5NiUpLCBo
c2woMCwgMCUsIDk2JSkpIG5vLXJlcGVhdCAxcHggLTFweDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5jc3Mg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVy
LmNzcwppbmRleCAzMDAyZmI0MjhlNTlhNmUxZDE2YzQyY2ZlNjYxNTQ1YmE5ODVhODU0Li5jOGIw
MjRhMTM2NWE4MWQ5NmFjMmRkZjU1MTZkNDM0NDBhOThhYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmNzcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVy
LmNzcwpAQCAtNzQsNyArNzQsNyBAQCBib2R5W2Rpcj1ydGxdIC50aW1lbGluZS1ydWxlciA+IC5t
YXJrZXJzID4gOm1hdGNoZXMoLmRpdmlkZXIsIC5tYXJrZXIpIHsKICAgICBiYWNrZ3JvdW5kLWlt
YWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2xhKDAsIDAlLCA3MCUsIDApLCBoc2xh
KDAsIDAlLCA3MCUsIDIpIDg1JSk7CiB9CiAKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZl
LCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRpbWVsaW5lLXJ1bGVyID4gLmhlYWRlciA+IC5k
aXZpZGVyIHsKK2JvZHkud2luZG93LWluYWN0aXZlIC50aW1lbGluZS1ydWxlciA+IC5oZWFkZXIg
PiAuZGl2aWRlciB7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJv
dHRvbSwgaHNsYSgwLCAwJSwgODUlLCAwKSwgaHNsYSgwLCAwJSwgODUlLCAxKSA4NSUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qcwppbmRleCAyNjJkNGVkMzE4OGIw
YTk1MjFmMTExZmU2YTgwOTI5ZmY5ZGRmODc3Li5jNzM5NjI1NzNiNjExOGYzZDdlMDRlNzY2Mjdl
ZjcwODNhMjk3MzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMKQEAg
LTI1LDkgKzI1LDEwIEBACiAKIFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcgPSBjbGFzcyBUaW1l
bGluZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmll
dwogewotICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAg
IHsKLSAgICAgICAgc3VwZXIoVGltZWxpbmVUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworICAg
ICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJ
LlRpbWVsaW5lVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKyAgICAgICAgc3VwZXIoaWRlbnRp
ZmllciB8fCAidGltZWxpbmUiLCAidGltZWxpbmUiLCB0YWJCYXJJdGVtKTsKIAogICAgICAgICAv
LyBNYWludGFpbiBhbiBpbnZpc2libGUgdHJlZSBvdXRsaW5lIGNvbnRhaW5pbmcgdHJlZSBlbGVt
ZW50cyBmb3IgYWxsIHJlY29yZGluZ3MuCiAgICAgICAgIC8vIFRoZSB2aXNpYmxlIHJlY29yZGlu
ZydzIHRyZWUgZWxlbWVudCBpcyBzZWxlY3RlZCB3aGVuIHRoZSBjb250ZW50IHZpZXcgY2hhbmdl
cy4KQEAgLTEwMSw3ICsxMDIsNiBAQCBXSS5UaW1lbGluZVRhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
VGltZWxpbmVUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93cwogICAgIHN0YXRp
YyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVudGlm
aWVyOiBUaW1lbGluZVRhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTogIklt
YWdlcy9UaW1lbGluZS5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJUaW1l
bGluZXMiKSwKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgxMmJhMzllY2JhMGY0
YWQxNDU0NTBlNGEyMmE0NTQ0YTA2NTlhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuY3NzCkBAIC0wLDAgKzEsMjQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisudG9vbGJhciB7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAwOworICAgIGhlaWdodDog
dmFyKC0tdG9vbGJhci1oZWlnaHQpOworCisgICAgZGlzcGxheTogZmxleDsKKyAgICBwYWRkaW5n
LXRvcDogM3B4OworICAgIHBhZGRpbmctYm90dG9tOiAzcHg7CisKKyAgICB3aGl0ZS1zcGFjZTog
bm93cmFwOworICAgIG92ZXJmbG93OiBoaWRkZW47CisKKyAgICBvdXRsaW5lOiBub25lOworCisg
ICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAl
LCA5MiUpLCBoc2woMCwgMCUsIDg3JSkpOworICAgIGJveC1zaGFkb3c6IGluc2V0IGhzbGEoMCwg
MCUsIDEwMCUsIDAuNSkgMCAxcHggMXB4OworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9v
bGJhciB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBoc2woMCwgMCUsIDk2JSk7Cit9CisKK2JvZHkubWFjLXBsYXRmb3JtOm5vdCguZG9ja2VkKSAu
dG9vbGJhciB7CisgICAgcGFkZGluZy10b3A6IDIxcHg7Cit9CisKK2JvZHkubWFjLXBsYXRmb3Jt
Om5vdCguZG9ja2VkKSB7CisgICAgLS10b29sYmFyLWhlaWdodDogNTRweDsKK30KKworLnRvb2xi
YXIgLmNvbnRyb2wtc2VjdGlvbiB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBmbGV4LWRpcmVj
dGlvbjogcm93OworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAganVzdGlmeS1jb250ZW50
OiBjZW50ZXI7CisgICAgbWluLXdpZHRoOiBtaW4tY29udGVudDsKKyAgICAtd2Via2l0LXBhZGRp
bmctc3RhcnQ6IDZweDsKKyAgICAtd2Via2l0LXBhZGRpbmctZW5kOiAycHg7Cit9CisKKy50b29s
YmFyIC5pdGVtLXNlY3Rpb24geworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleDogMTsKKyAg
ICBtaW4td2lkdGg6IG1pbi1jb250ZW50OworfQorCisudG9vbGJhciAuaXRlbS1zZWN0aW9uLmxl
ZnQgeworICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKK30KKworLnRvb2xiYXIgLml0
ZW0tc2VjdGlvbi5jZW50ZXItbGVmdCB7CisgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0
OworfQorCisudG9vbGJhciAuaXRlbS1zZWN0aW9uLmNlbnRlci1yaWdodCB7CisgICAganVzdGlm
eS1jb250ZW50OiBjZW50ZXI7Cit9CisKKy50b29sYmFyIC5pdGVtLXNlY3Rpb24uY2VudGVyIHsK
KyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKK30KKworLnRvb2xiYXIgLml0ZW0tc2VjdGlv
bi5yaWdodCB7CisgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKKyAgICBwYWRkaW5nLXJp
Z2h0OiA0cHg7Cit9CisKKy50b29sYmFyIC5pdGVtIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAg
IG91dGxpbmU6IG5vbmU7Cit9CisKKy50b29sYmFyIC5zZWFyY2gtYmFyIHsKKyAgICB3aWR0aDog
MTAwJTsKKyAgICBtaW4td2lkdGg6IDEyNXB4OworfQorCisudG9vbGJhciAuc2VhcmNoLWJhciA+
IGlucHV0W3R5cGU9InNlYXJjaCJdIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBmb250LXNpemU6
IDEycHg7CisgICAgYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOworICAgIG1hcmdpbjogNHB4Owor
fQorCisudG9vbGJhciAuaXRlbS5idXR0b24sCisudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0
W3R5cGU9InNlYXJjaCJdLAorLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIgeworICAgIGJh
Y2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChoc2woMCwgMCUsIDk5JSksIHZhcigtLXBh
bmVsLWJhY2tncm91bmQtY29sb3IpKTsKKyAgICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAwJSwg
MC4zKSAwIDFweCAxcHggLTFweDsKKworICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKyAgICBib3Jk
ZXI6IDFweCBzb2xpZCBoc2woMCwgMSUsIDgyJSk7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogaHNs
KDAsIDAlLCA4MyUpOworICAgIGJvcmRlci1ib3R0b20tY29sb3I6IGhzbCgwLCAwJSwgNzYlKTsK
K30KKworLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSB7CisgICAg
Ym94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUsIDAuMykgMCAxcHggMXB4IC0xcHgsIDAgMCAwIDdw
eCBoc2xhKDIxMSwgOTYlLCA0OCUsIDApOworICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgLjI1
cyBjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQwLCAwLjQ0MCwgMSkgLyogZWFzZU91dFF1YXJ0ICov
OworfQorCisudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdOmZvY3Vz
IHsKKyAgICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAwJSwgMC4xNSkgMCAxcHggMCwgMCAwIDAg
M3B4IGhzbGEoMjExLCA5NiUsIDQ4JSwgMC40KTsKK30KKworQG1lZGlhICgtd2Via2l0LW1pbi1k
ZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHsKKyAgICAudG9vbGJhciAuaXRlbS5idXR0b24sCisgICAg
LnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSwKKyAgICAudG9vbGJh
ciAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgICAgIGJvcmRlcjogMC41cHggc29saWQgaHNs
KDAsIDAlLCA3OCUpOworICAgICAgICBib3JkZXItdG9wLWNvbG9yOiBoc2woMCwgMCUsIDgwJSk7
CisgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IGhzbCgwLCAwJSwgNjUlKTsKKyAgICB9Cit9
CisKKy50b29sYmFyIC5pdGVtLmJ1dHRvbjphY3RpdmUgeworICAgIGJhY2tncm91bmQtaW1hZ2U6
IGxpbmVhci1ncmFkaWVudChoc2woMCwgMCUsIDg5JSksIGhzbCgwLCAwJSwgODYlKSk7CisgICAg
Ym94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUsIDAuMykgMCAxcHggMXB4IC0xcHgsIGluc2V0IDAg
MXB4IDFweCAtMXB4IHdoaXRlOworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAu
aXRlbS5idXR0b24sCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuc2VhcmNoLWJhciA+
IGlucHV0W3R5cGU9InNlYXJjaCJdLAorYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLmRh
c2hib2FyZC1jb250YWluZXIgeworICAgIG9wYWNpdHk6IDAuNjU7CisgICAgYm9yZGVyLWNvbG9y
OiBoc2xhKDAsIDAlLCAwJSwgMC4xNSk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJl
bnQ7CisgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKK30KKworQG1lZGlhICgtd2Via2l0LW1p
bi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHsKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9v
bGJhciAuaXRlbS5idXR0b24sCisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLnNl
YXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSwKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2
ZSAudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgICAgIGJveC1zaGFkb3c6IGlu
c2V0IDAgMCAxcHggMCBoc2xhKDAsIDAlLCAwJSwgMC4xKTsKKyAgICB9Cit9CisKK0BtZWRpYSAo
bWF4LXdpZHRoOiA1MzlweCkgeworICAgIC50b29sYmFyIC5pdGVtLmRvd25sb2FkIHsKKyAgICAg
ICAgZGlzcGxheTogbm9uZTsKKyAgICB9Cit9CisKK0BtZWRpYSAocHJlZmVycy1jb2xvci1zY2hl
bWU6IGRhcmspIHsKKyAgICAudG9vbGJhciB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxp
bmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwgMjYlKSwgaHNsKDAsIDAlLCAyMyUp
KTsKKyAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKKyAgICB9CisKKyAgICBib2R5LndpbmRvdy1p
bmFjdGl2ZSAudG9vbGJhciB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tn
cm91bmQtY29sb3IpOworICAgIH0KKworICAgIC50b29sYmFyIC5pdGVtLmJ1dHRvbiwKKyAgICAu
dG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdIHsKKyAgICAgICAgYmFj
a2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0
dG9uLWJhY2tncm91bmQtY29sb3IpOworICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWJ1dHRv
bi1iYWNrZ3JvdW5kLWNvbG9yKTsKKyAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogaHNsYSgwLCAx
MDAlLCAxMDAlLCAwLjIpOworICAgICAgICBib3gtc2hhZG93OiBub25lOworICAgIH0KKworICAg
IC50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl0geworICAgICAgICBj
b2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CisgICAgfQorCisgICAgLnRvb2xiYXIgLnNlYXJjaC1i
YXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXTpmb2N1cyB7CisgICAgICAgIGNvbG9yOiB2YXIoLS10
ZXh0LWNvbG9yLWFjdGl2ZSk7CisKKyAgICAgICAgLyogRklYTUU6IFVzZSBuYXRpdmUgb3V0bGlu
ZSBmb3IgdGhlIGRlZmF1bHQgdGhlbWUgYXMgd2VsbC4gKi8KKyAgICAgICAgYm94LXNoYWRvdzog
dW5zZXQ7CisgICAgICAgIHRyYW5zaXRpb246IHVuc2V0OworICAgICAgICBvdXRsaW5lOiAtd2Vi
a2l0LWZvY3VzLXJpbmctY29sb3IgYXV0byA1cHg7CisgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAt
M3B4OworICAgIH0KKworICAgIC50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2Vh
cmNoIl06OnBsYWNlaG9sZGVyIHsKKyAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3Itc2Vj
b25kYXJ5KTsKKyAgICB9CisKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuc2Vh
cmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdOjpwbGFjZWhvbGRlciB7CisgICAgICAgIGNv
bG9yOiB2YXIoLS10ZXh0LWNvbG9yLXRlcnRpYXJ5KTsKKyAgICB9CisKKyAgICBib2R5LndpbmRv
dy1pbmFjdGl2ZSAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdOjot
d2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiB7CisgICAgICAgIC8qIFNldHRpbmcgYGNvbG9y
YCBoYXMgbm8gZWZmZWN0IG9uIHRoZSBtYWduaWZ5aW5nIGdsYXNzIGljb24uICovCisgICAgICAg
IG9wYWNpdHk6IDAuNTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5l
ciB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IHZhcigtLWRhc2hib2FyZC1iYWNrZ3JvdW5kLWNvbG9yKTsKKyAgICAgICAgYm9yZGVy
LWNvbG9yOiB2YXIoLS1kYXNoYm9hcmQtYmFja2dyb3VuZC1jb2xvcik7CisgICAgICAgIGJvcmRl
ci10b3AtY29sb3I6IGhzbGEoMCwgMTAwJSwgMTAwJSwgMC4xKTsKKyAgICAgICAgYm94LXNoYWRv
dzogbm9uZTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuaXRlbS5idXR0b246YWN0aXZlIHsKKyAg
ICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjog
aHNsYSgwLCAxMDAlLCAxMDAlLCAwLjIpOworICAgICAgICBib3gtc2hhZG93OiBub25lOworICAg
IH0KKworICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5pdGVtLmJ1dHRvbiwKKyAg
ICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9
InNlYXJjaCJdLAorICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5kYXNoYm9hcmQt
Y29udGFpbmVyIHsKKyAgICAgICAgb3BhY2l0eTogMTsKKyAgICAgICAgY29sb3I6IHZhcigtLWds
eXBoLWNvbG9yKTsKKyAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICAgICAg
Ym9yZGVyLXRvcC1jb2xvcjogaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjEpOworICAgICAgICBiYWNr
Z3JvdW5kLWltYWdlOiBub25lOworICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tYmFj
a2dyb3VuZC1jb2xvci1pbmFjdGl2ZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q3
ZTdlMTIyMDFkZmI3Y2M2MmVkOTI3ZGU2OTUzMzdkZWQ1NzRhNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKQEAg
LTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLlRvb2xiYXIgPSBjbGFzcyBUb29s
YmFyIGV4dGVuZHMgV0kuTmF2aWdhdGlvbkJhcgoreworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQp
CisgICAgeworICAgICAgICBzdXBlcihlbGVtZW50LCBudWxsLCAidG9vbGJhciIpOworCisgICAg
ICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICAgICB0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0g
V0kuVG9vbGJhci5Db250cm9sU2VjdGlvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50KTsKKworICAgICAg
ICB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdJLlRvb2xi
YXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdJLlRvb2xiYXIuTGVmdEl0ZW1T
ZWN0aW9uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2NlbnRlckxlZnRTZWN0
aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlz
Ll9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV0kuVG9vbGJhci5JdGVtU2Vj
dGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV0kuVG9vbGJhci5DZW50ZXJMZWZ0SXRlbVNlY3Rp
b25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fY2VudGVyU2VjdGlv
bkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5f
Y2VudGVyU2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV0kuVG9vbGJhci5JdGVtU2VjdGlvblN0
eWxlQ2xhc3NOYW1lICsgIiAiICsgV0kuVG9vbGJhci5DZW50ZXJJdGVtU2VjdGlvblN0eWxlQ2xh
c3NOYW1lOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVyU2Vj
dGlvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fY2VudGVyUmln
aHRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXSS5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVD
bGFzc05hbWUgKyAiICIgKyBXSS5Ub29sYmFyLkNlbnRlclJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNs
YXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlclJp
Z2h0U2VjdGlvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fcmlnaHRTZWN0
aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXSS5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05h
bWUgKyAiICIgKyBXSS5Ub29sYmFyLlJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQp
OworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgYWRkVG9vbGJhckl0ZW0odG9vbGJhckl0
ZW0sIHNlY3Rpb25JZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgdmFyIHNlY3Rpb25FbGVtZW50
OworCisgICAgICAgIHN3aXRjaCAoc2VjdGlvbklkZW50aWZpZXIpIHsKKyAgICAgICAgY2FzZSBX
SS5Ub29sYmFyLlNlY3Rpb24uQ29udHJvbDoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0g
dGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rpb24uTGVmdDoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVt
ZW50ID0gdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyTGVmdDoKKyAgICAgICAgICAgIHNl
Y3Rpb25FbGVtZW50ID0gdGhpcy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50OworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgY2FzZSBXSS5Ub29sYmFyLlNl
Y3Rpb24uQ2VudGVyOgorICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9jZW50ZXJT
ZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuVG9v
bGJhci5TZWN0aW9uLkNlbnRlclJpZ2h0OgorICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQgPSB0
aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25FbGVtZW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rpb24uUmlnaHQ6CisgICAgICAgICAgICBzZWN0aW9u
RWxlbWVudCA9IHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlY3Rpb25FbGVtZW50KTsKKwor
ICAgICAgICB0aGlzLmFkZE5hdmlnYXRpb25JdGVtKHRvb2xiYXJJdGVtLCBzZWN0aW9uRWxlbWVu
dCk7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBsYXlvdXQoKQorICAgIHsKKyAg
ICAgICAgLy8gQmFpbCBlYXJseSBpZiBvdXIgc2VjdGlvbnMgYXJlIG5vdCBjcmVhdGVkIHlldC4g
VGhpcyBtZWFucyB3ZSBhcmUgYmVpbmcgY2FsbGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAg
ICAgIGlmICghdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50IHx8ICF0aGlzLl9jZW50ZXJTZWN0aW9u
RWxlbWVudCB8fCAhdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAvLyBGb3JjZSBjb2xsYXBzZWQgc3R5bGUgZm9yIG5vbi1XZWIgZGVidWdn
YWJsZXMuCisgICAgICAgIGlmICghV0kuc2hhcmVkQXBwLmlzV2ViRGVidWdnYWJsZSgpKSB7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5OYXZpZ2F0aW9uQmFyLkNv
bGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFJlbW92ZSB0aGUgY29sbGFwc2VkIHN0eWxlIGNsYXNzIHRvIHRlc3QgaWYg
dGhlIGl0ZW1zIGNhbiBmaXQgYXQgZnVsbCB3aWR0aC4KKyAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoV0kuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7
CisKKyAgICAgICAgZnVuY3Rpb24gaXNPdmVyZmxvd2luZ1Rvb2xiYXIoKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgY29udHJvbFNlY3Rpb25XaWR0aCA9IHRoaXMuX2NvbnRyb2xTZWN0aW9u
RWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgICAgICB2YXIgbGVmdFNlY3Rpb25XaWR0
aCA9IHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgICAg
ICB2YXIgY2VudGVyTGVmdFNlY3Rpb25XaWR0aCA9IHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxl
bWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgICAgICB2YXIgY2VudGVyU2VjdGlvbldpZHRo
ID0gdGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQucmVhbE9mZnNldFdpZHRoOworICAgICAgICAg
ICAgdmFyIGNlbnRlclJpZ2h0U2VjdGlvbldpZHRoID0gdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9u
RWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgICAgICB2YXIgcmlnaHRTZWN0aW9uV2lk
dGggPSB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKworICAgICAg
ICAgICAgdmFyIHRvb2xiYXJXaWR0aCA9IE1hdGgucm91bmQodGhpcy5lbGVtZW50LnJlYWxPZmZz
ZXRXaWR0aCk7CisgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChjb250cm9sU2VjdGlvbldp
ZHRoICsgbGVmdFNlY3Rpb25XaWR0aCArIGNlbnRlckxlZnRTZWN0aW9uV2lkdGggKyBjZW50ZXJT
ZWN0aW9uV2lkdGggKyBjZW50ZXJSaWdodFNlY3Rpb25XaWR0aCArIHJpZ2h0U2VjdGlvbldpZHRo
KSA+IHRvb2xiYXJXaWR0aDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXNPdmVyZmxvd2lu
Z1Rvb2xiYXIuY2FsbCh0aGlzKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xh
c3NOYW1lKTsKKyAgICB9Cit9OworCitXSS5Ub29sYmFyLlN0eWxlQ2xhc3NOYW1lID0gInRvb2xi
YXIiOworV0kuVG9vbGJhci5Db250cm9sU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImNvbnRyb2wt
c2VjdGlvbiI7CitXSS5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiaXRlbS1z
ZWN0aW9uIjsKK1dJLlRvb2xiYXIuTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAibGVm
dCI7CitXSS5Ub29sYmFyLkNlbnRlckxlZnRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImNl
bnRlci1sZWZ0IjsKK1dJLlRvb2xiYXIuQ2VudGVySXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9
ICJjZW50ZXIiOworV0kuVG9vbGJhci5DZW50ZXJSaWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05h
bWUgPSAiY2VudGVyLXJpZ2h0IjsKK1dJLlRvb2xiYXIuUmlnaHRJdGVtU2VjdGlvblN0eWxlQ2xh
c3NOYW1lID0gInJpZ2h0IjsKKworV0kuVG9vbGJhci5TZWN0aW9uID0geworICAgIENvbnRyb2w6
ICJjb250cm9sIiwKKyAgICBMZWZ0OiAibGVmdCIsCisgICAgQ2VudGVyTGVmdDogImNlbnRlci1s
ZWZ0IiwKKyAgICBDZW50ZXI6ICJjZW50ZXIiLAorICAgIENlbnRlclJpZ2h0OiAiY2VudGVyLXJp
Z2h0IiwKKyAgICBSaWdodDogInJpZ2h0IgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZhcmlhYmxlcy5jc3MgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WYXJpYWJsZXMuY3NzCmluZGV4IDRhMzA4ZWVl
NzJjMDEzOTNjN2QyMDYxNGE3N2ZkNmZmYTI5MDU0YWUuLjI1OTcyM2RmOTdkNWU0ZmQ2NWZlNzYz
MjRiYWUwNWUzOGQwNjFiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1ZhcmlhYmxlcy5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVmFyaWFibGVzLmNzcwpAQCAtMTYyLDggKzE2Miw2IEBACiAg
ICAgLS1jcHUtbWVkaXVtLWNvbG9yOiBoc2woNDYsIDkxJSwgNjIlKTsKICAgICAtLWNwdS1oaWdo
LWNvbG9yOiBoc2woNiwgNzklLCA1NyUpOwogCi0gICAgLS1uZXR3b3JrLXN0YXRpc3RpY3MtaGVp
Z2h0OiB2YXIoLS1uYXZpZ2F0aW9uLWJhci1oZWlnaHQpOwotCiAgICAgLS1uZXR3b3JrLWhlYWRl
ci1jb2xvcjogaHNsKDIwNCwgNTIlLCA1NSUpOwogICAgIC0tbmV0d29yay1zeXN0ZW0tY29sb3I6
IGhzbCg3OSwgMzIlLCA1MCUpOwogICAgIC0tbmV0d29yay1wc2V1ZG8taGVhZGVyLWNvbG9yOiBo
c2woMzEyLCAzNSUsIDUxJSk7CkBAIC0xODEsOSArMTc5LDggQEAKICAgICAtLW9kZC16ZWJyYS1z
dHJpcGUtcm93LWJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgIC0tdHJhbnNwYXJlbnQtc3Ry
aXBlLWJhY2tncm91bmQtZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5z
cGFyZW50LCB0cmFuc3BhcmVudCA1MCUsIGhzbGEoMCwgMCUsIDAlLCAwLjAzKSA1MCUsIGhzbGEo
MCwgMCUsIDAlLCAwLjAzKSkgdG9wIGxlZnQgLyAxMDAlIDQwcHg7CiAKLSAgICAtLXVuZG9ja2Vk
LXRpdGxlLWFyZWEtaGVpZ2h0OiAwcHg7Ci0gICAgLS10YWItYmFyLWhlaWdodDogdmFyKC0tbmF2
aWdhdGlvbi1iYXItaGVpZ2h0KTsKLQorICAgIC0tdG9vbGJhci1oZWlnaHQ6IDM2cHg7CisgICAg
LS10YWItYmFyLWhlaWdodDogMjRweDsKICAgICAtLW5hdmlnYXRpb24tYmFyLWhlaWdodDogMjlw
eDsKIAogICAgIC0tc2xpZGVyLXdpZHRoOiAxMXB4OwpAQCAtMTk4LDcgKzE5NSw3IEBACiAgICAg
LS1kaWZmLWFkZGl0aW9uLWJvcmRlci1jb2xvcjogaHNsKDkwLCAxMDAlLCA0MCUpOwogfQogCi1i
b2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIHsK
K2JvZHkud2luZG93LWluYWN0aXZlIHsKICAgICAvKiBGSVhNRTogVXNlIENTUzQgY29sb3IgYmxl
bmQgZnVuY3Rpb25zIG9uY2UgdGhleSdyZSBhdmFpbGFibGUuICovCiAgICAgLS1zZWxlY3RlZC1i
YWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIxMiwgOTIlLCA1NCUsIDAuNSk7CiAKQEAgLTIwNywxNSAr
MjA0LDExIEBAIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1p
bmFjdGl2ZSkgewogICAgIC0tZ2x5cGgtb3BhY2l0eTogMC42OwogfQogCi1ib2R5Om1hdGNoZXMo
LndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpICogeworYm9keS53aW5k
b3ctaW5hY3RpdmUgKiB7CiAgICAgLS1ib3JkZXItY29sb3I6IGhzbCgwLCAwJSwgODUlKTsKICAg
ICAtLWJvcmRlci1jb2xvci1kYXJrOiBoc2woMCwgMCUsIDcyJSk7CiB9CiAKLWJvZHkubWFjLXBs
YXRmb3JtOm5vdCguZG9ja2VkKSB7Ci0gICAgLS11bmRvY2tlZC10aXRsZS1hcmVhLWhlaWdodDog
Y2FsYygyMnB4IC8gdmFyKC0tem9vbS1mYWN0b3IpKTsKLX0KLQogQG1lZGlhIChwcmVmZXJzLWNv
bG9yLXNjaGVtZTogZGFyaykgewogICAgIDpyb290IHsKICAgICAgICAgY29sb3I6IHZhcigtLXRl
eHQtY29sb3IpOwpAQCAtMjc3LDYgKzI3MCw4IEBAIGJvZHkubWFjLXBsYXRmb3JtOm5vdCguZG9j
a2VkKSB7CiAgICAgICAgIC0tYnV0dG9uLWJhY2tncm91bmQtY29sb3ItcHJlc3NlZDogaHNsKDAs
IDAlLCA1NSUpOwogICAgICAgICAtLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWluYWN0aXZlOiBo
c2woMCwgMCUsIDI4JSk7CiAKKyAgICAgICAgLS1kYXNoYm9hcmQtYmFja2dyb3VuZC1jb2xvcjog
aHNsKDAsIDAlLCAzNiUpOworCiAgICAgICAgIC0tcGFuZWwtYmFja2dyb3VuZC1jb2xvcjogaHNs
KDAsIDAlLCAyNCUpOwogICAgICAgICAtLXBhbmVsLWJhY2tncm91bmQtY29sb3ItbGlnaHQ6IGhz
bCgwLCAwJSwgMjklKTsKIApAQCAtMzQ5LDE2ICszNDQsMTYgQEAgYm9keS5tYWMtcGxhdGZvcm06
bm90KC5kb2NrZWQpIHsKICAgICAgICAgLS1kaWZmLWRlbGV0aW9uLWJhY2tncm91bmQtY29sb3I6
IGhzbCg1LCA0MCUsIDI4JSk7CiAgICAgfQogCi0gICAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5h
Y3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSB7CisgICAgYm9keS53aW5kb3ctaW5hY3Rp
dmUgewogICAgICAgICAtLXNlbGVjdGVkLWJhY2tncm91bmQtY29sb3I6IGhzbGEoMjEyLCA5MiUs
IDY0JSwgMC41KTsKIAogICAgICAgICAtLWdseXBoLWNvbG9yOiBoc2woMCwgMCUsIDUyJSk7CiAg
ICAgICAgIC0tZ2x5cGgtY29sb3ItZGlzYWJsZWQ6IGhzbGEoMCwgMCUsIDUyJSwgMC40KTsKICAg
ICB9CiAKLSAgICBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQt
aW5hY3RpdmUpICogeworICAgIGJvZHkud2luZG93LWluYWN0aXZlICogewogICAgICAgICAvKiBU
aGVzZSBwcm9wZXJ0aWVzIGFyZSBkdXBsaWNhdGVkIHNvIHRoYXQgdGhleSBoYXZlIGhpZ2hlciBz
cGVjaWZpY2l0eSB0aGFuIFdlYktpdCdzIHN0eWxlc2hlZXQuCi0gICAgICAgIE90aGVyd2lzZSwg
dGhlIHZhcmlhYmxlIGRlZmluaXRpb24gaW5zaWRlICdib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFj
dGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIConIGluIE9wZW5Tb3VyY2Ugb3ZlcnJpZGVz
IHdpdGggYSBsaWdodGVyIGNvbG9yLgorICAgICAgICBPdGhlcndpc2UsIHRoZSB2YXJpYWJsZSBk
ZWZpbml0aW9uIGluc2lkZSAnYm9keS53aW5kb3ctaW5hY3RpdmUgKicgaW4gT3BlblNvdXJjZSBv
dmVycmlkZXMgd2l0aCBhIGxpZ2h0ZXIgY29sb3IuCiAgICAgICAgIFdoZW4gbWVyZ2luZyB0byBv
cGVuIHNvdXJjZSwgd2Ugc2hvdWxkIGd1YXJkIHRoZSBleGlzdGluZyAud2luZG93LWluYWN0aXZl
IHN0eWxlIHdpdGgKICAgICAgICAgJ0BtZWRpYSBub3QgYWxsJyB0byBhdm9pZCBhcHBseWluZyB0
aGUgZGVmaW5pdGlvbiB0b28gYnJvYWRseS4gKi8KICAgICAgICAgLS1ib3JkZXItY29sb3I6IGhz
bCgwLCAwJSwgMzMlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IGMyZGY0MTZmNTE4
ZTdmOTMwZjE4M2Q2YTA3ODBiZjE5MmJmYTU3YzUuLjIxOTJjMjlmNDE4MWUwMGExNTEwNmVhMWIy
OTA5NDA1ODcyZWM0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMTM4LDYgKzEz
OCwxMSBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZXRTaGVldFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogICAgIHBsYXRmb3JtU2V0U2hlZXRSZWN0KHJlY3QpOwogfQogCit2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzdGFydFdpbmRvd0RyYWcoKQoreworICAgIHBs
YXRmb3JtU3RhcnRXaW5kb3dEcmFnKCk7Cit9CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBwbGF0Zm9ybU9wZW5J
bk5ld1RhYih1cmwpOwpAQCAtMTkzLDYgKzE5OCw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQnJpbmdUb0Zyb250KCkgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCwg
Ym9vbCkgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIHsgfQordm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKSB7IH0KIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3BlbkluTmV3VGFiKGNvbnN0IFN0
cmluZyYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TaG93Q2Vy
dGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJikgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybUNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eS5oCmluZGV4IDRkODdiOThiNjk5NDg0YmEwNzA0NzkxYTUzNDIxMmRhODgy
NmJlNWEuLmZhYjU4ZjhjZTA2ZWEyMWZiZWU5MTM4OTQzMjQ2Y2FlOGY1NGYzYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eS5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNh
dmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJh
c2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAgICAgdm9pZCBzZXRTaGVl
dFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CisgICAgdm9pZCBzdGFydFdpbmRvd0Ry
YWcoKTsKICAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9p
ZCBzaG93Q2VydGlmaWNhdGUoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJik7CiAgICAg
dm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwpAQCAtMTMz
LDYgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJv
b2wgZm9yY2VTYXZlQXMpOwogICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKICAgICB2b2lkIHBsYXRmb3JtU2V0U2hl
ZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZvaWQgcGxhdGZvcm1TdGFy
dFdpbmRvd0RyYWcoKTsKICAgICB2b2lkIHBsYXRmb3JtT3BlbkluTmV3VGFiKGNvbnN0IFN0cmlu
ZyYgdXJsKTsKICAgICB2b2lkIHBsYXRmb3JtU2hvd0NlcnRpZmljYXRlKGNvbnN0IFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggMjg1OWM2MGNmNDZkZDE3ODU3YzM2NjFkODBhNjQwNDBkYTVhZDExOS4uYmUw
OTFiNzhmYjZhOGQ1ZGY3YjIzZTA1MGZmZmYxZDkyYTRiZDRiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzEsNiArMzEsOCBAQCBtZXNzYWdlcyAtPiBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eSB7CiAKICAgICBTZXRTaGVldFJlY3QoV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlY3QpCiAKKyAgICBTdGFydFdpbmRvd0RyYWcoKQorCiAgICAgT3BlbkluTmV3VGFi
KFN0cmluZyB1cmwpCiAgICAgU2hvd0NlcnRpZmljYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byBjZXJ0aWZpY2F0ZUluZm8pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IGZjNzY4NjZmN2EyOTRkZjFh
MWQ2OWFmNDRlODBiZTIzODgzZWJlMDIuLjQ3NWJiYzQwMWY0NDM2ZDFkMjRjNjIzZDFhM2E4ODEy
OGVhZDViOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMzQ3LDYgKzM0NywxMSBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpzZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHBs
YXRmb3JtU2V0U2hlZXRSZWN0KHJlY3QpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpz
dGFydFdpbmRvd0RyYWcoKQoreworICAgIHBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCk7Cit9CisK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZVBhZ2VQcm9maWxpbmcoKQogewogICAgIGlm
ICghbV9pbnNwZWN0ZWRQYWdlKQpAQCAtNzU5LDYgKzc2NCwxMSBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRX
aW5kb3dEcmFnKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBTdHJpbmcgV2ViSW5z
cGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JQcm94eS5oCmluZGV4IDQ5NmMxN2I5NDc4ODMzZGE3OTNhM2RhNzZhOWUzNmVkOWZjYzYzNzku
LjJiMWZkZmNhMWRmYjhlNWM1NWZjY2Q4MDE2ZjQyMWY3MTQxNjNjY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oCkBA
IC0xNTAsNiArMTUwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTaGVldFJlY3QoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAKKyAgICB2b2lkIHN0YXJ0V2luZG93RHJhZygpOworCiAg
ICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nUGFn
ZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCkBAIC0yMDcsNiArMjA5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5z
aWduZWQpOwogICAgIHZvaWQgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVk
KTsKICAgICB2b2lkIHBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpOworICAgIHZvaWQgcGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKTsKICAgICB2b2lkIHBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJv
b2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcyk7CiAgICAgdm9pZCBwbGF0Zm9ybUFw
cGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNWFlZjdhN2RmZmJkNzExNTU1YmZlMjY1
MzNmZTQ2YjBiZTcxNTNlOS4uZWJiNzc1NTNjNmIxMTA5NzI2MmQ0N2Q0MWYyNmIyNGMyMTYyMGYw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTMsNCArNTMsNiBAQCBtZXNz
YWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1
bnNpZ25lZCB3aWR0aCkKIAogICAgIFNldFNoZWV0UmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVj
dCkKKworICAgIFN0YXJ0V2luZG93RHJhZygpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlHdGsuY3BwCmluZGV4IGFjMjBiODQ5NzMyZmEwOWQ0MGQ4ZmJiNDkzMjExMThkZGExNTY0
ZjkuLjExMDg4ZGQwOGIwNjAyZDJlOTRlODU3OTQ2MDRhMjI2MjhjYjQyMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC0xNTcsNiArMTU3LDEwIEBAIHZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpCiB7CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3Rh
cnRXaW5kb3dEcmFnKCkKK3sKK30KKwogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1PcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JQcm94
eUd0ay5jcHAKaW5kZXggYzdmZmYzOTQxOWM3MjQyMDhiZThmZmVmNmIyNGZjNGE1MWExYTI5ZC4u
ODE3YzM5ODZkM2NhYjQ1MmZlZWEzNjkxNWNhZDE1OGQ1ZWU4ZDU1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0
b3JQcm94eUd0ay5jcHAKQEAgLTQ2NCw2ICs0NjQsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0
YXJ0V2luZG93RHJhZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogc3RhdGljIHZv
aWQgZmlsZVJlcGxhY2VDb250ZW50c0NhbGxiYWNrKEdPYmplY3QqIHNvdXJjZU9iamVjdCwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogewogICAgIEdGaWxlKiBmaWxl
ID0gR19GSUxFKHNvdXJjZU9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQppbmRleCA4NTRkYTg4NjVmY2VmNjBjOWViMjIyYWYxYTUyYjIzMzQ0ZDk2OTI0Li40YWJk
ZWI1ZjZkMDY0Y2U5NGZhN2EyYTUzMTMxOGM0ZjhhZjdmNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTIyNSw2ICsyMjUsMTEgQEAgdm9pZCBSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogICAgIG1fc2hlZXRSZWN0ID0gcmVjdDsKIH0KIAordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQoreworICAgIHdlYlZpZXcoKS0+X3BhZ2Ut
PnN0YXJ0V2luZG93RHJhZygpOworfQorCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBbW05TV29ya3Nw
YWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlblVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5z
cGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDE3YmE2NzY3ODNhOWU3MzlhODYzNjlhNWRi
MmQ1ODkwMTgyZjNlNTQuLmJiZTcyOGQ0MzVjYWY3MDU5NjUyYWQyYjNkOWUyMTcxNDY3ZWIwZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5z
cGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNzM0LDYgKzczNCwxMSBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAgICAgbV9zaGVldFJlY3QgPSByZWN0OwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpCit7CisgICAgW21faW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIgd2ViVmlld10tPl9wYWdlLT5zdGFydFdpbmRvd0RyYWcoKTsKK30KKwogU3RyaW5nIFdl
Ykluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkKIHsKICAgICBOU0J1bmRsZSAqYnVu
ZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3Bl
Y3RvclVJIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
d2luL1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCmluZGV4IGFk
ODQyNDRhMzIyN2U2YWYxMWUxMzAzOTg5ZWYyYzM2ZDBhYTQ4NTYuLjM5MGMyYjk0ZjJmZjU0YTRm
MGRhOWVhZWU0MDEwOGM5OWVhYTBiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHlXaW4uY3BwCkBAIC0xMzQsNiArMTM0LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQoKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29s
KSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgeyB9Cit2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpIHsg
fQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1PcGVuSW5OZXdUYWIoY29u
c3QgU3RyaW5nJikgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNo
b3dDZXJ0aWZpY2F0ZShjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0
b3JQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dl
Ykluc3BlY3RvclByb3h5V2luLmNwcAppbmRleCA5MjljYjhiZGEzYzNkMzJmMzhjY2FiZmQ4MzRj
OGI1Y2VhMjRkNDEwLi4yZGVhYzk3MzE3OTZmMjU1YTEwYmNlODQ3ZDZiMGJmNmE3OTc5MDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3Bl
Y3RvclByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
d2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApAQCAtNDUwLDQgKzQ1MCw5IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWco
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAK
aW5kZXggNjU1OGEyNWExZWE5ZDE1ZGNiZjgyYWYxYjEzMGNmYWNlMGJmYWM0Yy4uNTU4ZDhmMGMy
NDYyMjg2OTg5MWQxOTJhZTljZDcxYTg5MmVhZWJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAK
QEAgLTExMCw2ICsxMTAsMTggQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6Y2hhbmdlU2hl
ZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6U2V0U2hlZXRSZWN0KHJlY3QpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0K
IAordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5kb3dEcmFnKCksIG1fcGFn
ZS5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjptb3ZlV2lu
ZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9hdFJlY3QgZnJhbWVSZWN0ID0gbV9w
YWdlLmNvcmVQYWdlKCktPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAgICBmcmFtZVJlY3QubW92
ZSh4LCB5KTsKKyAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+Y2hyb21lKCkuc2V0V2luZG93UmVjdChm
cmFtZVJlY3QpOworfQorCiBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIFJl
bW90ZVdlYkluc3BlY3RvclVJOjp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9wYWdlLmNvcmVQYWdlKCktPnVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAppbmRleCA2M2Y0MzJkZjhiMzQwYzE3NjkzNjQwNmNj
ZmZlNWE3NzVkMGI3OWE5Li5iNGFlMWMxZGFhMTY0N2EyMTFiYWYwZDQwMDU5OWI3MzExMjg3YTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdl
Ykluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9S
ZW1vdGVXZWJJbnNwZWN0b3JVSS5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbmRvd09iamVjdENsZWFyZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGZyb250ZW5kTG9hZGVk
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGFuZ2VTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKSBvdmVycmlkZTsK
KyAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBvdmVycmlkZTsKIAogICAg
IGJvb2wgaXNSZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgU3RyaW5n
IGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggOTEw
Y2IzNTlkYzQzNDYwODM2MzcwYjFjNjVmYmE1NTJiMjAwZDYwMS4uMWZhYTZmNmVkZTVkZGRhMGEx
NGFiZGUyZWMwYzJiYmFhZmM1NWVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTEzNyw2ICsxMzcsMTggQEAg
dm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQogICAgIGJyaW5nVG9Gcm9udCgp
OwogfQogCit2b2lkIFdlYkluc3BlY3RvclVJOjpzdGFydFdpbmRvd0RyYWcoKQoreworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTdGFydFdpbmRvd0RyYWcoKSwgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeShm
bG9hdCB4LCBmbG9hdCB5KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX3BhZ2UuY29y
ZVBhZ2UoKS0+Y2hyb21lKCkud2luZG93UmVjdCgpOworICAgIGZyYW1lUmVjdC5tb3ZlKHgsIHkp
OworICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVj
dCk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCiB7CiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUkuaAppbmRleCA4YmJhN2E0ODkzYzViMTQ3ZTMwMDkxNjA3YTU5MzIxZDY1
ZTYyYjc0Li42MzlmMjFjOWI2MjBjM2VmNmYyNTA3ZGQxNjIwNjBkYTQ5YjU1Mzk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5o
CkBAIC05Miw2ICs5Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbmRvd09iamVjdENsZWFyZWQo
KSBvdmVycmlkZTsKICAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CiAKKyAgICB2
b2lkIHN0YXJ0V2luZG93RHJhZygpIG92ZXJyaWRlOworICAgIHZvaWQgbW92ZVdpbmRvd0J5KGZs
b2F0IHgsIGZsb2F0IHkpIG92ZXJyaWRlOworCiAgICAgYm9vbCBpc1JlbW90ZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBj
b25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgYmFja2VuZENvbW1hbmRzVVJMKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQppbmRl
eCBlMzVmN2EwNDdlZDY3OWRiMGRkMjBkNzhhODk3MDQyODQyYTFjNTMwLi4zNmZmMTAyNjlkMTM5
ZTA0M2U2OTlmMzdkNTliNzE0ZGQ2NmEyZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9T
Lm1tCkBAIC0xMzMsNiArMTMzLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
ZGV0YWNoV2luZG93KCkgeyB9CiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRB
dHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgeyB9CiB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSB7IH0KIHZvaWQgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmKSB7
IH0KK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN0YXJ0V2luZG93RHJhZygpIHsg
fQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChj
b25zdCBTdHJpbmcmKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNob3dD
ZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkgY29uc3QgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCmluZGV4IDdjNGM3ZjJlYWUwMmNhOTRhOTdlMTAxMWExZGZiZGI5MmY0ZmZkNTYu
LjY1M2U5MTBhZDE0MTk1OTU3YmUwY2Q1ODhkNjg3OWNlOTIxZjNiNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCkBAIC0xMTYsNiArMTE2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBmcm9udGVu
ZExvYWRlZCgpIG92ZXJyaWRlOwogCisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKSBvdmVycmlk
ZTsKKwogICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgSW5zcGVjdG9yOjpEZWJ1Z2dhYmxlVHlwZSBkZWJ1Z2dhYmxlVHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIEluc3BlY3Rvcjo6RGVidWdnYWJsZVR5cGU6OlBhZ2U7IH07CiAgICAgU3RyaW5n
IHRhcmdldFBsYXRmb3JtTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJtYWNPUyJfczsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA0NGY2Nzc4ZWY5ZTc2ZWVhM2RhMDQyN2E1NmM2
ZDAxOTU4M2U2NDg4Li4wZGJiODJmYjdiNjk5NDY0ZjhlN2VjMmVmMzA2NTExYTA3NGVjNTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0yMTYsNiArMjE2LDExIEBAIHZvaWQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmZyb250ZW5kTG9hZGVkKCkKICAgICBzZXRBdHRhY2hlZFdp
bmRvdyhhdHRhY2hlZCA/IERvY2tTaWRlOjpCb3R0b20gOiBEb2NrU2lkZTo6VW5kb2NrZWQpOwog
fQogCit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzdGFydFdpbmRvd0RyYWcoKQor
eworICAgIFtbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgd2luZG93XSBwZXJmb3JtV2luZG93
RHJhZ1dpdGhFdmVudDpbTlNBcHAgY3VycmVudEV2ZW50XV07Cit9CisKIFN0cmluZyBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CiB7CiAgICAg
TlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5h
cHBsZS5XZWJJbnNwZWN0b3JVSSJdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390162</attachid>
            <date>2020-02-07 19:55:26 -0800</date>
            <delta_ts>2020-02-07 20:08:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207422-20200207195524.patch</filename>
            <type>text/plain</type>
            <size>350118</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IwYTRhNzQwNjk4YjZh
NWFhOTdkNzNhM2FiNWIzYTQ4MTM2NGNlNi4uM2IxOWY5Nzg3OGEzZWNlZjIwZTNlYjBjMTFjNWFk
OWViNTk4YWMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAyLTA3ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQg
c2xpbSB0b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgc2xpbSB0b29sYmFyIG5lZWRzIGEgbGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFu
ZGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJldmVydHMgcjI1NTU0NywgcjI1NTU1NywgcjI1
NTg5MCwgcjI1NTg5MiwgcjI1NTg5MywgYW5kIHIyNTU5MDEuCisKKyAgICAgICAgKiBlbi5scHJv
ai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKwogMjAyMC0wMi0wNyAgSmFjayBM
ZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNyYXNoIGlu
IFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDlhZTRjYjZlNWVhODIzOTQ2N2QyNDJkZjA0OWQ5OWNk
YjVjYzdiNTYuLjI4ZTY1YTZkM2NkODdhZmE1OTMxNWVmMDAzYTQ2OTg1NjY0NzE5ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIwLTAyLTA3ICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQgc2xp
bSB0b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDc0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgc2xpbSB0b29sYmFyIG5lZWRzIGEgbGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFuZGlu
Zy4KKworICAgICAgICBUaGlzIHBhdGNoIHJldmVydHMgcjI1NTU0NywgcjI1NTU1NywgcjI1NTg5
MCwgcjI1NTg5MiwgcjI1NTg5MywgYW5kIHIyNTU5MDEuCisKKyAgICAgICAgKiBMb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9CYXNlL01haW4uanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xlTWFuYWdlci5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0ltYWdlcy9OZXdUYWIuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0ltYWdlcy9OZXdUYWJQbHVzLnN2ZzogQWRkZWQuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9JbWFnZXMvT3JpZ2luLnN2ZzoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9T
ZWFyY2hSZXN1bHRzLnN2ZzogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMv
U291cmNlc1BhdXNlZC5zdmc6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWlu
Lmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvRGVidWdnZXJEYXNoYm9hcmQu
anM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5jc3MuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qczogQWRkZWQuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtLmpzOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdh
dGlvbkl0ZW0uY3NzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQXVkaXRUYWJDb250
ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRp
b25JdGVtLmNzczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRp
b25JdGVtLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJhckl0
ZW0uY3NzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EaXZpZGVyTmF2aWdhdGlvbkl0ZW0uY3NzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uanM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5jc3Mu
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRW
aWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVt
LmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnRyb2xUb29sYmFySXRlbS5qczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzcy4KKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5jc3M6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmNzczogQWRkZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanM6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bp
bm5lZFRhYkJhckl0ZW0uanMuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dl
ckRhc2hib2FyZFZpZXcuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5qczogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5jc3M6IEFkZGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuanM6IEFkZGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcuanM6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0uY3NzOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRWaWV3LmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvR3JvdXBOYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5VGFiQmFyLmpzOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9NYWluLmNzczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL05hdmlnYXRpb25CYXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9O
ZXR3b3JrRGV0YWlsVmlldy5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3
b3JrVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3
b3JrVGFibGVDb250ZW50Vmlldy5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9O
ZXR3b3JrVGFibGVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L05ld1RhYkNvbnRlbnRWaWV3LmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGgu
Y3NzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanM6
IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRlbS5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dy
YXBoLmNzczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRW
aWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TaXplc1RvRml0TmF2aWdhdGlvbkJhci5qczogQ29w
aWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmxleGli
bGVTcGFjZU5hdmlnYXRpb25JdGVtLmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1NvdXJjZXNUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1RhYkJhci5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVPdmVydmlldy5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZVJlY29yZEZyYW1lLmNzczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lUnVsZXIuY3NzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJD
b250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuY3Nz
OiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanM6IEFkZGVk
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmFyaWFibGVzLmNzczoKKwogMjAyMC0w
Mi0wNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogQWRkIGFub3RoZXIgUHJvdG9jb2wgVmVyc2lvbiAoaU9TIDEzLjQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGJlNzQ1MjgwNDkzOGE3ZWM3ZjRkOWNmMTRiMWQ3NTFmY2E1ZDE3ZWQuLjAyMDQ2ZjA3OTg1
NGQ5NjFkYTQ3ZWU0YmI2MjYzZmU0ZTY5NGMyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMjAtMDItMDcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJldmVydCBzbGltIHRvb2xiYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzbGltIHRvb2xiYXIgbmVlZHMgYSBsaXR0bGUgbW9y
ZSB3b3JrIGJlZm9yZSBsYW5kaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0cyByMjU1
NTQ3LCByMjU1NTU3LCByMjU1ODkwLCByMjU1ODkyLCByMjU1ODkzLCBhbmQgcjI1NTkwMS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9X
ZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL0lu
c3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKwogMjAyMC0wMi0wNyAgS2F0
ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OOiBBU1NFUlRJT04gRkFJTEVEOiByZXNldFJlc3VsdCA9PSAwIG9uIHJlZ3Jlc3Npb24gdGVz
dHMgaW4gSVRQIGNvZGUsIHJlc2V0dGluZyBTUUxpdGUgc3RhdGVtZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9DaGFuZ2VMb2cKaW5kZXggMGUwZGViN2MzYWI0ZmFmNTliYWVhOTgyOGZmNWQyMjNlODQ4Nzhl
OS4uYjZjOTI0YzM1ZTM5ODFhYTYxMWFiOWI5ZThjNDEzZTJhNDMwNDhjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAyLTA3ICBKb24gTGVlICA8
am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQgc2xpbSB0
b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGUgc2xpbSB0b29sYmFyIG5lZWRzIGEgbGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFuZGluZy4K
KworICAgICAgICBUaGlzIHBhdGNoIHJldmVydHMgcjI1NTU0NywgcjI1NTU1NywgcjI1NTg5MCwg
cjI1NTg5MiwgcjI1NTg5MywgYW5kIHIyNTU5MDEuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW06CisKIDIwMjAtMDItMDEgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgdGhlIGl0
ZW1zIGluIHRoZSB0b29sYmFyIGludG8gdGhlIHRhYiBiYXIgdG8gc2F2ZSB2ZXJ0aWNhbCBzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDNlZGVlYTE2ODRhMTczNDRkYjc0ZDVl
ZDBkZjRkNGM1ZDhmNmIzOWEuLmI5YzQzNzI2YzM0OWY5NTM4ZjgzODcyMTQxYjM3MDYyNTE0ZGQx
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0w
Mi0wNyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUmV2ZXJ0IHNsaW0gdG9vbGJhcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA3NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIHNsaW0gdG9vbGJhciBuZWVkcyBhIGxpdHRsZSBtb3JlIHdvcmsg
YmVmb3JlIGxhbmRpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXZlcnRzIHIyNTU1NDcsIHIy
NTU1NTcsIHIyNTU4OTAsIHIyNTU4OTIsIHIyNTU4OTMsIGFuZCByMjU1OTAxLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorCiAyMDIwLTAyLTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW0hhcmRlbmluZ10gVmFsaWRhdGUgR2Vv
bG9jYXRpb24gYWNjZXNzIHBlcm1pc3Npb24gb24gVUlQcm9jZXNzIHNpZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2Vi
Q29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IGIzOWI4OGE0ZTkwMmYwY2I2
MTg5MDc2MzNmZmY3Zjg3MDFmMjViNTQuLjZkNzljNWMwMmExOWM2NjljMzc3ZTZjMDYwYzMyYTU0
NWJjZWVkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
cwpAQCAtMzQsMTIgKzM0LDEyIEBACiAvKiBUZXh0IHRyYWNrIGNvbnRhaW5zIGZvcmNlZCBzdWJ0
aXRsZXMgKi8KICIlQCBGb3JjZWQiID0gIiVAIEZvcmNlZCI7CiAKLS8qIHZpc2libGUgbmFtZSBv
ZiB0aGUgbmV0d29yayBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5h
bWUuICovCi0iJUAgTmV0d29ya2luZyIgPSAiJUAgTmV0d29ya2luZyI7Ci0KIC8qIHZpc2libGUg
bmFtZSBvZiB0aGUgR1BVIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24g
bmFtZS4gKi8KICIlQCBHcmFwaGljcyBhbmQgTWVkaWEiID0gIiVAIEdyYXBoaWNzIGFuZCBNZWRp
YSI7CiAKKy8qIHZpc2libGUgbmFtZSBvZiB0aGUgbmV0d29yayBwcm9jZXNzLiBUaGUgYXJndW1l
bnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuICovCisiJUAgTmV0d29ya2luZyIgPSAiJUAgTmV0
d29ya2luZyI7CisKIC8qIFRleHQgdHJhY2sgY29udGFpbnMgc3VidGl0bGVzIGZvciB0aGUgZGVh
ZiBhbmQgaGFyZCBvZiBoZWFyaW5nICovCiAiJUAgU0RIIiA9ICIlQCBTREgiOwogCkBAIC05MSw2
ICs5MSw5IEBACiAvKiBNZW51IGl0ZW0gdGl0bGUgZm9yIEtFWUdFTiBwb3AtdXAgbWVudSAqLwog
IjIwNDggKEhpZ2ggR3JhZGUpIiA9ICIyMDQ4IChIaWdoIEdyYWRlKSI7CiAKKy8qIE5hbWUgb2Yg
YXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4gKi8K
KyI8YXBwbGljYXRpb24+IFdlYkNyeXB0byBNYXN0ZXIgS2V5IiA9ICI8YXBwbGljYXRpb24+IFdl
YkNyeXB0byBNYXN0ZXIgS2V5IjsKKwogLyogd2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUg
aW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkgKi8KICI8ZmlsZW5hbWU+
ICVkw5clZCBwaXhlbHMiID0gIjxmaWxlbmFtZT4gJWTDlyVkIHBpeGVscyI7CiAKQEAgLTM3Niw5
ICszNzksNiBAQAogLyogSGlkZSBNZWRpYSBDb250cm9scyBjb250ZXh0IG1lbnUgaXRlbSAqLwog
IkhpZGUgQ29udHJvbHMiID0gIkhpZGUgQ29udHJvbHMiOwogCi0vKiBUaXRsZSBmb3IgSGlkZSBM
aW5rIFByZXZpZXdzIGFjdGlvbiBidXR0b24gKi8KLSJIaWRlIExpbmsgUHJldmlld3MiID0gIkhp
ZGUgTGluayBQcmV2aWV3cyI7Ci0KIC8qIG1lbnUgaXRlbSB0aXRsZSAqLwogIkhpZGUgU3BlbGxp
bmcgYW5kIEdyYW1tYXIiID0gIkhpZGUgU3BlbGxpbmcgYW5kIEdyYW1tYXIiOwogCkBAIC03MDMs
OSArNzAzLDYgQEAKIC8qIFNob3cgZm9udHMgY29udGV4dCBtZW51IGl0ZW0gKi8KICJTaG93IEZv
bnRzIiA9ICJTaG93IEZvbnRzIjsKIAotLyogVGl0bGUgZm9yIFNob3cgTGluayBQcmV2aWV3cyBh
Y3Rpb24gYnV0dG9uICovCi0iU2hvdyBMaW5rIFByZXZpZXdzIiA9ICJTaG93IExpbmsgUHJldmll
d3MiOwotCiAvKiBtZW51IGl0ZW0gdGl0bGUgKi8KICJTaG93IFNwZWxsaW5nIGFuZCBHcmFtbWFy
IiA9ICJTaG93IFNwZWxsaW5nIGFuZCBHcmFtbWFyIjsKIApAQCAtNzYwLDYgKzc1Nyw5IEBACiAv
KiBTdG9wIHNwZWFraW5nIGNvbnRleHQgbWVudSBpdGVtICovCiAiU3RvcCBTcGVha2luZyIgPSAi
U3RvcCBTcGVha2luZyI7CiAKKy8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KKyJTdHJpa2VUaHJvdWdo
IChVbmRvIGFjdGlvbiBuYW1lKSIgPSAiU3RyaWtlVGhyb3VnaCI7CisKIC8qIExhYmVsIGZvciBz
dHJvbmcgcGFzc3dvcmQuICovCiAiU3Ryb25nIFBhc3N3b3JkIiA9ICJTdHJvbmcgUGFzc3dvcmQi
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudC5oCmluZGV4IDZlNDc3ZTllNTBmOTcxODI2NzUwMDJhNWI0ZDNmNGZiYjA1ZDY4OWMuLjEz
N2QwZTZjMWRhYjRiYmZlZDcwNjk2M2Q0ZTUwNmZlN2JjYzczZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC01NSw2ICs1
NSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2luZG93T2Jq
ZWN0Q2xlYXJlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSA9IDA7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgPSAwOworCiAgICAgLy8gSW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGRlYnVnZ2FibGUuCiAgICAgdmlydHVhbCBib29sIGlzUmVtb3RlKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25z
dCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMjA0ZjUwNTY5ZmU5YzRhODFhYTA0Y2Y4Y2Jh
NWMxNWI5NzgzNGMyNS4uMGQ4MzE5MjUyNzgyZGE5NWE3MmVkMzZjYTVmMDQ4YzdjZDhjODQ2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmNwcApAQCAtMjcwLDYgKzI3MCwxMyBAQCB2b2lkIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKICAgICBm
cmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0Mikp
OwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om1vdmVXaW5kb3dCeShm
bG9hdCB4LCBmbG9hdCB5KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX2Zyb250ZW5k
UGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgpOworICAgIGZyYW1lUmVjdC5tb3ZlKHgsIHkpOwor
ICAgIG1fZnJvbnRlbmRQYWdlLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVjdCk7Cit9
CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0QXR0YWNoZWRXaW5kb3co
RG9ja1NpZGUgZG9ja1NpZGUpCiB7CiAgICAgY29uc3QgY2hhciogc2lkZSA9ICJ1bmRvY2tlZCI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuaAppbmRleCAwNTVkZjQyMDg5MjBmNjc4NzIxYmQ2ZTNmZjUxNzIyM2I0YTJm
ZmUxLi4wZWMzMjBkODkzNzg0NTE5YWNhYTUwYTgyY2UxNmJlNjE4YWIyODhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmgKQEAgLTY3LDYgKzY3LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d2luZG93T2JqZWN0Q2xlYXJlZCgpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZnJv
bnRlbmRMb2FkZWQoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgb3Zl
cnJpZGUgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwg
ZmxvYXQgeSkgZmluYWw7CisKICAgICBXRUJDT1JFX0VYUE9SVCBVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSBjb25zdCBmaW5hbDsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKaW5kZXggMmY2ZTE5NmQxZWI5NzZlM2M2MzI2NTE4NzUwNjExZGRkNTkzMTQwNS4uNDE2
ODM4OWU0NTQ5MGMyMTNlY2Q5YjZhOTM2NTRiMjRhMzQ2OThlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTI1OCw2ICsy
NTgsMTggQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNldFNoZWV0UmVjdChmbG9hdCB4
LCBmbG9hdCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWcKICAgICAgICAgbV9jbGllbnQtPmNoYW5n
ZVNoZWV0UmVjdChGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogfQogCit2b2lkIElu
c3BlY3RvckZyb250ZW5kSG9zdDo6c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBpZiAobV9jbGll
bnQpCisgICAgICAgIG1fY2xpZW50LT5zdGFydFdpbmRvd0RyYWcoKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdAor
eworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1vdmVXaW5kb3dCeSh4LCB5
KTsKK30KKwogYm9vbCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmlzUmVtb3RlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPmlzUmVtb3RlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKaW5kZXggNWUyN2Nj
NjU5NDA5YWE5MjNlN2FmNDA5N2RlODg4ZDZiNzgzYWViNS4uOTgwNjk4NDU4NDUwMzNkZGQ0ZDFm
OTdjZjNjM2U5NDA0MmEyODg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFNoZWV0UmVjdChmbG9hdCB4LCBmbG9hdCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0KTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCk7CisgICAgdm9pZCBtb3Zl
V2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3Q7CisKICAgICBib29sIGlzUmVtb3RlKCkg
Y29uc3Q7CiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdDsKICAgICBTdHJp
bmcgYmFja2VuZENvbW1hbmRzVVJMKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCmluZGV4IDMxZDk4MTUwNDA1ZGE0NTBi
ZWQ4YjdiYzkyMzAxYTRjZDZlY2Y4ZGQuLmQ2YzA4ZWUwZjM0MmUyYTVmYjRlMmJhMmQ3ODBjN2Uy
ZTU2Y2Q5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuaWRsCkBAIC01Nyw2ICs1Nyw5IEBACiAKICAgICB2b2lkIHNldFNoZWV0UmVj
dCh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dE
cmFnKCk7CisgICAgdm9pZCBtb3ZlV2luZG93QnkodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVz
dHJpY3RlZCBmbG9hdCB5KTsKKwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzUmVt
b3RlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VS
TDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJhY2tlbmRDb21tYW5kc1VSTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGIyOTc4ZTI5ZGFlMzlhODY3ZWJi
NDQyNDYxMGM5ZTQ1Yjg2MzhjOTkuLjU4MzU0NjliNmMwZjc1YWFlYjRjOTE3YTI2YjUzNDRjMGJk
ZDg1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2Vu
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtNDAsMTQgKzQwLDgg
QEAgbG9jYWxpemVkU3RyaW5nc1siJWQgV2FybmluZyJdID0gIiVkIFdhcm5pbmciOwogbG9jYWxp
emVkU3RyaW5nc1siJWQgV2FybmluZ3MiXSA9ICIlZCBXYXJuaW5ncyI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyIlZCBceGQ3ICVkIHBpeGVscyJdID0gIiVkIFx4ZDcgJWQgcGl4ZWxzIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIiVkIFx4ZDcgJWQgcGl4ZWxzIChOYXR1cmFsOiAlZCBceGQ3ICVkIHBpeGVscyki
XSA9ICIlZCBceGQ3ICVkIHBpeGVscyAoTmF0dXJhbDogJWQgXHhkNyAlZCBwaXhlbHMpIjsKLWxv
Y2FsaXplZFN0cmluZ3NbIiVkIGRvbWFpbiJdID0gIiVkIGRvbWFpbiI7Ci1sb2NhbGl6ZWRTdHJp
bmdzWyIlZCBkb21haW5zIl0gPSAiJWQgZG9tYWlucyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlZCBt
YXRjaGVzIl0gPSAiJWQgbWF0Y2hlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlZCBvZiAlZCJdID0g
IiVkIG9mICVkIjsKLWxvY2FsaXplZFN0cmluZ3NbIiVkIHJlZGlyZWN0Il0gPSAiJWQgcmVkaXJl
Y3QiOwotbG9jYWxpemVkU3RyaW5nc1siJWQgcmVkaXJlY3RzIl0gPSAiJWQgcmVkaXJlY3RzIjsK
LWxvY2FsaXplZFN0cmluZ3NbIiVkIHJlc291cmNlIl0gPSAiJWQgcmVzb3VyY2UiOwotbG9jYWxp
emVkU3RyaW5nc1siJWQgcmVzb3VyY2VzIl0gPSAiJWQgcmVzb3VyY2VzIjsKIGxvY2FsaXplZFN0
cmluZ3NbIiVkcHgiXSA9ICIlZHB4IjsKIGxvY2FsaXplZFN0cmluZ3NbIiVkcHhcdTAwQjIiXSA9
ICIlZHB4XHUwMEIyIjsKIGxvY2FsaXplZFN0cmluZ3NbIiVzICglcykiXSA9ICIlcyAoJXMpIjsK
QEAgLTY3LDggKzYxLDYgQEAgbG9jYWxpemVkU3RyaW5nc1siJXMgY2Fubm90IGJlIG1vZGlmaWVk
Il0gPSAiJXMgY2Fubm90IGJlIG1vZGlmaWVkIjsKIGxvY2FsaXplZFN0cmluZ3NbIiVzIGRlbGF5
Il0gPSAiJXMgZGVsYXkiOwogbG9jYWxpemVkU3RyaW5nc1siJXMgZXZhbFxuJXMgYXN5bmMiXSA9
ICIlcyBldmFsXG4lcyBhc3luYyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlcyBpbnRlcnZhbCJdID0g
IiVzIGludGVydmFsIjsKLWxvY2FsaXplZFN0cmluZ3NbIiVzIHRvdGFsIl0gPSAiJXMgdG90YWwi
OwotbG9jYWxpemVkU3RyaW5nc1siJXMgdHJhbnNmZXJyZWQiXSA9ICIlcyB0cmFuc2ZlcnJlZCI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyIlczoiXSA9ICIlczoiOwogbG9jYWxpemVkU3RyaW5nc1siKEFj
dGlvbiAlcykiXSA9ICIoQWN0aW9uICVzKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIoRGlzaykiXSA9
ICIoRGlzaykiOwpAQCAtODYsMTQgKzc4LDEzIEBAIGxvY2FsaXplZFN0cmluZ3NbIihwcm9ncmFt
KSJdID0gIihwcm9ncmFtKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIoc2VydmljZSB3b3JrZXIpIl0g
PSAiKHNlcnZpY2Ugd29ya2VyKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIodW5pbml0aWFsaXplZCki
XSA9ICIodW5pbml0aWFsaXplZCkiOwogbG9jYWxpemVkU3RyaW5nc1siLCAiXSA9ICIsICI7Ci1s
b2NhbGl6ZWRTdHJpbmdzWyIwIENvbnNvbGUgZXJyb3JzIl0gPSAiMCBDb25zb2xlIGVycm9ycyI7
Ci1sb2NhbGl6ZWRTdHJpbmdzWyIwIENvbnNvbGUgd2FybmluZ3MiXSA9ICIwIENvbnNvbGUgd2Fy
bmluZ3MiOwogbG9jYWxpemVkU3RyaW5nc1siMSBtYXRjaCJdID0gIjEgbWF0Y2giOwogbG9jYWxp
emVkU3RyaW5nc1siMkQiXSA9ICIyRCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJBY2Nlc3NpYmlsaXR5
Il0gPSAiQWNjZXNzaWJpbGl0eSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJBY3Rpb24iXSA9ICJBY3Rp
b24iOwogLyogVG9vbHRpcCBmb3IgYSB0aW1lIHJhbmdlIGJhciB0aGF0IHJlcHJlc2VudHMgd2hl
biBhIENTUyBhbmltYXRpb24vdHJhbnNpdGlvbiBpcyBydW5uaW5nICovCiBsb2NhbGl6ZWRTdHJp
bmdzWyJBY3RpdmUiXSA9ICJBY3RpdmUiOworbG9jYWxpemVkU3RyaW5nc1siQWN0aXZpdHkgVmll
d2VyIl0gPSAiQWN0aXZpdHkgVmlld2VyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkFkZCJdID0gIkFk
ZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJBZGQgJXMgUnVsZSJdID0gIkFkZCAlcyBSdWxlIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkFkZCBBY3Rpb24iXSA9ICJBZGQgQWN0aW9uIjsKQEAgLTI3NCwxMCAr
MjY1LDYgQEAgbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gY3JlYXRlIGEgTG9jYWwgT3ZlcnJp
ZGUgZnJvbSB0aGlzIGNvbnRlbnQiXSA9ICJDbGljawogbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sg
dG8gaW1wb3J0IGEgZmlsZSBhbmQgY3JlYXRlIGEgTG9jYWwgT3ZlcnJpZGVcblNoaWZ0LWNsaWNr
IHRvIGNyZWF0ZSBhIExvY2FsIE92ZXJyaWRlIGZyb20gdGhpcyBjb250ZW50Il0gPSAiQ2xpY2sg
dG8gaW1wb3J0IGEgZmlsZSBhbmQgY3JlYXRlIGEgTG9jYWwgT3ZlcnJpZGVcblNoaWZ0LWNsaWNr
IHRvIGNyZWF0ZSBhIExvY2FsIE92ZXJyaWRlIGZyb20gdGhpcyBjb250ZW50IjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIkNsaWNrIHRvIHNlbGVjdCBhIGNvbG9yIl0gPSAiQ2xpY2sgdG8gc2VsZWN0IGEg
Y29sb3IiOwogbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gc2VsZWN0IGEgY29sb3JcblNoaWZ0
LWNsaWNrIHRvIHN3aXRjaCBjb2xvciBmb3JtYXRzIl0gPSAiQ2xpY2sgdG8gc2VsZWN0IGEgY29s
b3JcblNoaWZ0LWNsaWNrIHRvIHN3aXRjaCBjb2xvciBmb3JtYXRzIjsKLWxvY2FsaXplZFN0cmlu
Z3NbIkNsaWNrIHRvIHNob3cgJWQgZXJyb3IgaW4gdGhlIENvbnNvbGUiXSA9ICJDbGljayB0byBz
aG93ICVkIGVycm9yIGluIHRoZSBDb25zb2xlIjsKLWxvY2FsaXplZFN0cmluZ3NbIkNsaWNrIHRv
IHNob3cgJWQgZXJyb3JzIGluIHRoZSBDb25zb2xlIl0gPSAiQ2xpY2sgdG8gc2hvdyAlZCBlcnJv
cnMgaW4gdGhlIENvbnNvbGUiOwotbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gc2hvdyAlZCB3
YXJuaW5nIGluIHRoZSBDb25zb2xlIl0gPSAiQ2xpY2sgdG8gc2hvdyAlZCB3YXJuaW5nIGluIHRo
ZSBDb25zb2xlIjsKLWxvY2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIHNob3cgJWQgd2FybmluZ3Mg
aW4gdGhlIENvbnNvbGUiXSA9ICJDbGljayB0byBzaG93ICVkIHdhcm5pbmdzIGluIHRoZSBDb25z
b2xlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIHZpZXcgdmFyaWFibGUgdmFsdWVcblNo
aWZ0LWNsaWNrIHRvIHJlcGxhY2UgdmFyaWFibGUgd2l0aCB2YWx1ZSJdID0gIkNsaWNrIHRvIHZp
ZXcgdmFyaWFibGUgdmFsdWVcblNoaWZ0LWNsaWNrIHRvIHJlcGxhY2UgdmFyaWFibGUgd2l0aCB2
YWx1ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDbGlja2FibGUiXSA9ICJDbGlja2FibGUiOwogbG9j
YWxpemVkU3RyaW5nc1siQ2xpZW50cyJdID0gIkNsaWVudHMiOwpAQCAtMzQ4LDYgKzMzNSw3IEBA
IGxvY2FsaXplZFN0cmluZ3NbIkNyZWF0ZSAlcyBSdWxlIl0gPSAiQ3JlYXRlICVzIFJ1bGUiOwog
bG9jYWxpemVkU3RyaW5nc1siQ3JlYXRlIEJyZWFrcG9pbnQiXSA9ICJDcmVhdGUgQnJlYWtwb2lu
dCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDcmVhdGUgTG9jYWwgT3ZlcnJpZGUiXSA9ICJDcmVhdGUg
TG9jYWwgT3ZlcnJpZGUiOwogbG9jYWxpemVkU3RyaW5nc1siQ3JlYXRlIFJlc291cmNlIl0gPSAi
Q3JlYXRlIFJlc291cmNlIjsKK2xvY2FsaXplZFN0cmluZ3NbIkNyZWF0ZSBhIG5ldyB0YWIiXSA9
ICJDcmVhdGUgYSBuZXcgdGFiIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNyb3NzLU9yaWdpbiBSZXN0
cmljdGlvbnMiXSA9ICJDcm9zcy1PcmlnaW4gUmVzdHJpY3Rpb25zIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIkN1cnJlbnQiXSA9ICJDdXJyZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIkN1cnJlbnQgU3Rh
dGUiXSA9ICJDdXJyZW50IFN0YXRlIjsKQEAgLTM2Nyw2ICszNTUsNyBAQCBsb2NhbGl6ZWRTdHJp
bmdzWyJEYXRhYmFzZSBubyBsb25nZXIgaGFzIGV4cGVjdGVkIHZlcnNpb24uIl0gPSAiRGF0YWJh
c2Ugbm8gbG9uZwogbG9jYWxpemVkU3RyaW5nc1siRGF0YWJhc2VzIl0gPSAiRGF0YWJhc2VzIjsK
IGxvY2FsaXplZFN0cmluZ3NbIkRhdGUiXSA9ICJEYXRlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkRl
YnVnOiAiXSA9ICJEZWJ1ZzogIjsKK2xvY2FsaXplZFN0cmluZ3NbIkRlYnVnZ2VyIFBhdXNlZCJd
ID0gIkRlYnVnZ2VyIFBhdXNlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEZWJ1Z2dlciBTdGF0ZW1l
bnQiXSA9ICJEZWJ1Z2dlciBTdGF0ZW1lbnQiOwogbG9jYWxpemVkU3RyaW5nc1siRGVidWdnZXIg
U3RhdGVtZW50cyJdID0gIkRlYnVnZ2VyIFN0YXRlbWVudHMiOwogbG9jYWxpemVkU3RyaW5nc1si
RGVidWdnZXIgZGlzYWJsZWQgZHVyaW5nIEF1ZGl0Il0gPSAiRGVidWdnZXIgZGlzYWJsZWQgZHVy
aW5nIEF1ZGl0IjsKQEAgLTQ4Nyw2ICs0NzYsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUg
RXZlbnQgTGlzdGVuZXIiXSA9ICJFbmFibGUgRXZlbnQgTGlzdGVuZXIiOwogbG9jYWxpemVkU3Ry
aW5nc1siRW5hYmxlIEV2ZW50IExpc3RlbmVycyJdID0gIkVuYWJsZSBFdmVudCBMaXN0ZW5lcnMi
OwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIEluc3BlY3RvciBCb290c3RyYXAgU2NyaXB0Il0g
PSAiRW5hYmxlIEluc3BlY3RvciBCb290c3RyYXAgU2NyaXB0IjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkVuYWJsZSBMb2NhbCBPdmVycmlkZSJdID0gIkVuYWJsZSBMb2NhbCBPdmVycmlkZSI7Citsb2Nh
bGl6ZWRTdHJpbmdzWyJFbmFibGUgTmV3IFRhYiBCYXIiXSA9ICJFbmFibGUgTmV3IFRhYiBCYXIi
OwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIFByZXZpZXcgRmVhdHVyZXMiXSA9ICJFbmFibGUg
UHJldmlldyBGZWF0dXJlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUgUHJvZ3JhbSJdID0g
IkVuYWJsZSBQcm9ncmFtIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBSdWxlIl0gPSAiRW5h
YmxlIFJ1bGUiOwpAQCAtNzA5LDggKzY5OSw2IEBAIGxvY2FsaXplZFN0cmluZ3NbIkxpdmUgQWN0
aXZpdHkiXSA9ICJMaXZlIEFjdGl2aXR5IjsKIGxvY2FsaXplZFN0cmluZ3NbIkxpdmUgU2l6ZSJd
ID0gIkxpdmUgU2l6ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJMb2FkIFx1MjAxNCAlcyJdID0gIkxv
YWQgXHUyMDE0ICVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkxvYWQgY2FuY2VsbGVkIl0gPSAiTG9h
ZCBjYW5jZWxsZWQiOwotbG9jYWxpemVkU3RyaW5nc1siTG9hZGVkIGluICVzIl0gPSAiTG9hZGVk
IGluICVzIjsKLWxvY2FsaXplZFN0cmluZ3NbIkxvYWRpbmcgZm9yICVzIl0gPSAiTG9hZGluZyBm
b3IgJXMiOwogbG9jYWxpemVkU3RyaW5nc1siTG9jYWwgRmlsZSJdID0gIkxvY2FsIEZpbGUiOwog
bG9jYWxpemVkU3RyaW5nc1siTG9jYWwgT3ZlcnJpZGUiXSA9ICJMb2NhbCBPdmVycmlkZSI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJMb2NhbCBPdmVycmlkZVx1MjAyNiJdID0gIkxvY2FsIE92ZXJyaWRl
XHUyMDI2IjsKQEAgLTc3NCw2ICs3NjIsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJOZXR3b3JrIl0g
PSAiTmV0d29yayI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJOZXR3b3JrIElzc3VlIl0gPSAiTmV0d29y
ayBJc3N1ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJOZXR3b3JrIFJlcXVlc3RzIl0gPSAiTmV0d29y
ayBSZXF1ZXN0cyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJOZXR3b3JrIFJlcXVlc3RzOiJdID0gIk5l
dHdvcmsgUmVxdWVzdHM6IjsKK2xvY2FsaXplZFN0cmluZ3NbIk5ldyBUYWIiXSA9ICJOZXcgVGFi
IjsKIC8qIEEgc3VibWVudSBpdGVtIG9mICdBZGQnIHRvIGFkZCBET00gbm9kZXMgYWZ0ZXIgdGhl
IHNlbGVjdGVkIERPTSBub2RlICovCiBsb2NhbGl6ZWRTdHJpbmdzWyJOZXh0IFNpYmxpbmciXSA9
ICJOZXh0IFNpYmxpbmciOwogbG9jYWxpemVkU3RyaW5nc1siTm8iXSA9ICJObyI7CkBAIC0xMDky
LDE1ICsxMDgxLDIxIEBAIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgU2NvcGUgQ2hhaW4gb24gcGF1
c2UiXSA9ICJTaG93IFNjb3BlIENoYWluIG9uIHBhdXNlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNo
b3cgYWxsIGFjdGlvbnMiXSA9ICJTaG93IGFsbCBhY3Rpb25zIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IlNob3cgYWxsIHJlc291cmNlcyJdID0gIlNob3cgYWxsIHJlc291cmNlcyI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJTaG93IGNvbXBvc2l0aW5nIGJvcmRlcnMiXSA9ICJTaG93IGNvbXBvc2l0aW5nIGJv
cmRlcnMiOworbG9jYWxpemVkU3RyaW5nc1siU2hvdyBlcnJvcnMgbG9nZ2VkIHRvIHRoZSBDb25z
b2xlIl0gPSAiU2hvdyBlcnJvcnMgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIjsKIGxvY2FsaXplZFN0
cmluZ3NbIlNob3cgZnVsbCBjZXJ0aWZpY2F0ZSJdID0gIlNob3cgZnVsbCBjZXJ0aWZpY2F0ZSI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGhpZGRlbiB0YWJzIl0gPSAiU2hvdyBoaWRkZW4gdGFi
cyI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IG1lc3NhZ2VzIGxvZ2dlZCB0byB0aGUgQ29uc29s
ZSJdID0gIlNob3cgbWVzc2FnZXMgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIjsKK2xvY2FsaXplZFN0
cmluZ3NbIlNob3cgbmV0d29yayBpbmZvcm1hdGlvbiJdID0gIlNob3cgbmV0d29yayBpbmZvcm1h
dGlvbiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IG9ubHkgZm9yIHNlbGVjdGVkIG5vZGUiXSA9
ICJTaG93IG9ubHkgZm9yIHNlbGVjdGVkIG5vZGUiOworbG9jYWxpemVkU3RyaW5nc1siU2hvdyBw
YWdlIGxvYWQgdGltaW5nIl0gPSAiU2hvdyBwYWdlIGxvYWQgdGltaW5nIjsKK2xvY2FsaXplZFN0
cmluZ3NbIlNob3cgcGFnZSByZXNvdXJjZXMiXSA9ICJTaG93IHBhZ2UgcmVzb3VyY2VzIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIlNob3cgcGFnZSBydWxlcnMgYW5kIG5vZGUgYm9yZGVyIGxpbmVzIl0g
PSAiU2hvdyBwYWdlIHJ1bGVycyBhbmQgbm9kZSBib3JkZXIgbGluZXMiOwogbG9jYWxpemVkU3Ry
aW5nc1siU2hvdyBydWxlcnMiXSA9ICJTaG93IHJ1bGVycyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJT
aG93IHRoZSBkZXRhaWxzIHNpZGViYXIgKCVzKSJdID0gIlNob3cgdGhlIGRldGFpbHMgc2lkZWJh
ciAoJXMpIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgdGhlIG5hdmlnYXRpb24gc2lkZWJhciAo
JXMpIl0gPSAiU2hvdyB0aGUgbmF2aWdhdGlvbiBzaWRlYmFyICglcykiOwogbG9jYWxpemVkU3Ry
aW5nc1siU2hvdyB0cmFuc3BhcmVuY3kgZ3JpZCJdID0gIlNob3cgdHJhbnNwYXJlbmN5IGdyaWQi
OwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyB0eXBlIGluZm9ybWF0aW9uIl0gPSAiU2hvdyB0eXBl
IGluZm9ybWF0aW9uIjsKK2xvY2FsaXplZFN0cmluZ3NbIlNob3cgd2FybmluZ3MgbG9nZ2VkIHRv
IHRoZSBDb25zb2xlIl0gPSAiU2hvdyB3YXJuaW5ncyBsb2dnZWQgdG8gdGhlIENvbnNvbGUiOwog
bG9jYWxpemVkU3RyaW5nc1siU2hvdzoiXSA9ICJTaG93OiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJT
aXRlLXNwZWNpZmljIEhhY2tzIl0gPSAiU2l0ZS1zcGVjaWZpYyBIYWNrcyI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJTaXplIl0gPSAiU2l6ZSI7CkBAIC0xMjk1LDYgKzEyOTAsNyBAQCBsb2NhbGl6ZWRT
dHJpbmdzWyJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGluZyByZXNvdXJjZXMiXSA9
ICJVc2UgdGhlIHJlcwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCJdID0gIlVzZXIgQWdl
bnQiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCBTdHlsZSBTaGVldCJdID0gIlVzZXIg
QWdlbnQgU3R5bGUgU2hlZXQiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudDoiXSA9ICJV
c2VyIEFnZW50OiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJVc2VyIEludGVyZmFjZToiXSA9ICJVc2Vy
IEludGVyZmFjZToiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBTdHlsZSBTaGVldCJdID0gIlVz
ZXIgU3R5bGUgU2hlZXQiOwogbG9jYWxpemVkU3RyaW5nc1siVmFsaWQgRnJvbSJdID0gIlZhbGlk
IEZyb20iOwogbG9jYWxpemVkU3RyaW5nc1siVmFsaWQgVW50aWwiXSA9ICJWYWxpZCBVbnRpbCI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01h
aW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMK
aW5kZXggOTkzNWUwZTZmMTY5OWZiNTEzNmY4Y2QxNDg1MTJiNDg3OTQ1YWFiNS4uZWFjZTEyNjdj
YTA2MTAwZjZjNzBhZjM1NGQyMDQ3ZThkMDRmZGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMTI4LDYgKzEyOCw3IEBAIFdJ
LmxvYWRlZCA9IGZ1bmN0aW9uKCkKIAogICAgIC8vIFJlZ2lzdGVyIGZvciBldmVudHMuCiAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgV0kuX2RlYnVnZ2VyRGlkUGF1c2UpOworICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCBXSS5f
ZGVidWdnZXJEaWRSZXN1bWUpOwogICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5ET01NYW5hZ2VyLkV2ZW50Lkluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkLCBXSS5faW5zcGVjdE1v
ZGVTdGF0ZUNoYW5nZWQpOwogICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
T01NYW5hZ2VyLkV2ZW50LkRPTU5vZGVXYXNJbnNwZWN0ZWQsIFdJLl9kb21Ob2RlV2FzSW5zcGVj
dGVkKTsKICAgICBXSS5kb21TdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTVN0
b3JhZ2VNYW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQsIFdJLl9kb21T
dG9yYWdlV2FzSW5zcGVjdGVkKTsKQEAgLTE0OCw3ICsxNDksNiBAQCBXSS5sb2FkZWQgPSBmdW5j
dGlvbigpCiAgICAgICAgIFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAg
V0kuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgIFdJLkdyYXBoaWNzVGFiQ29u
dGVudFZpZXcuVHlwZSwKLSAgICAgICAgV0kuTGF5ZXJzVGFiQ29udGVudFZpZXcuVHlwZSwKICAg
ICAgICAgV0kuQXVkaXRUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICBXSS5Db25zb2xlVGFi
Q29udGVudFZpZXcuVHlwZSwKICAgICBdKTsKQEAgLTIzNyw2ICsyMzcsNyBAQCBXSS5jb250ZW50
TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUi
LCBXSS5fd2luZG93UmVzaXplZCk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRv
d24iLCBXSS5fd2luZG93S2V5RG93bik7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtl
eXVwIiwgV0kuX3dpbmRvd0tleVVwKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgV0kuX21vdXNlRG93biwgdHJ1ZSk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlbW92ZSIsIFdJLl9tb3VzZU1vdmVkLCB0cnVlKTsKICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigicGFnZWhpZGUiLCBXSS5fcGFnZUhpZGRlbik7CiAgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgV0kuX2NvbnRleHRNZW51UmVxdWVzdGVkKTsKQEAg
LTI3Nyw4ICsyNzgsMTkgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBXSS5z
ZXR0aW5ncy5zaG93V2hpdGVzcGFjZUNoYXJhY3RlcnMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0
aW5nLkV2ZW50LkNoYW5nZWQsIHNldFdoaXRlc3BhY2VDaGFyYWN0ZXJDbGFzc05hbWUpOwogICAg
IHNldFdoaXRlc3BhY2VDaGFyYWN0ZXJDbGFzc05hbWUoKTsKIAorICAgIFdJLnNldHRpbmdzVGFi
Q29udGVudFZpZXcgPSBuZXcgV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldzsKKworICAgIFdJLl9z
ZXR0aW5nc0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXli
b2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdJLktleWJvYXJkU2hvcnRj
dXQuS2V5LkNvbW1hLCBXSS5faGFuZGxlU2V0dGluZ3NLZXlib2FyZFNob3J0Y3V0KTsKKwogICAg
IC8vIENyZWF0ZSB0aGUgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMuCi0gICAgV0kudGFiQmFyID0g
bmV3IFdJLlRhYkJhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFiLWJhciIpKTsKKyAgICBX
SS50b29sYmFyID0gbmV3IFdJLlRvb2xiYXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xi
YXIiKSk7CisKKyAgICBpZiAoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFy
LnZhbHVlKQorICAgICAgICBXSS50YWJCYXIgPSBuZXcgV0kuVGFiQmFyKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0YWItYmFyIikpOworICAgIGVsc2UgeworICAgICAgICBXSS50YWJCYXIgPSBu
ZXcgV0kuTGVnYWN5VGFiQmFyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWItYmFyIikpOwor
ICAgICAgICBXSS50YWJCYXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYWJCYXIuRXZlbnQuT3BlbkRl
ZmF1bHRUYWIsIFdJLl9vcGVuRGVmYXVsdFRhYik7CisgICAgfQogCiAgICAgV0kuX2NvbnRlbnRF
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKICAgICBXSS5fY29u
dGVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgIm1haW4iKTsKQEAgLTMzMCw2ICszNDIs
NyBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIFdJLl9yZXNldFpvb21LZXli
b2FyZFNob3J0Y3V0ID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1
dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAiMCIsIFdJLl9yZXNldFpvb20pOwogCiAgICAg
V0kuX3Nob3dUYWJBdEluZGV4S2V5Ym9hcmRTaG9ydGN1dHMgPSBbMSwgMiwgMywgNCwgNSwgNiwg
NywgOCwgOV0ubWFwKChpKSA9PiBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXSS5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyLk9wdGlvbiwgYCR7aX1gLCAoZXZlbnQpID0+IHsgV0kuX3Nob3dUYWJBdEluZGV4RnJv
bVNob3J0Y3V0KGkpOyB9KSk7CisgICAgV0kuX29wZW5OZXdUYWJLZXlib2FyZFNob3J0Y3V0ID0g
bmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21t
YW5kT3JDb250cm9sIHwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5PcHRpb24sICJUIiwg
V0kuX3Nob3dOZXdUYWJGcm9tU2hvcnRjdXQpOwogCiAgICAgV0kudGFiQnJvd3NlciA9IG5ldyBX
SS5UYWJCcm93c2VyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWItYnJvd3NlciIpLCBXSS50
YWJCYXIsIFdJLm5hdmlnYXRpb25TaWRlYmFyLCBXSS5kZXRhaWxzU2lkZWJhcik7CiAgICAgV0ku
dGFiQnJvd3Nlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhYkJyb3dzZXIuRXZlbnQuU2VsZWN0ZWRU
YWJDb250ZW50Vmlld0RpZENoYW5nZSwgV0kuX3RhYkJyb3dzZXJTZWxlY3RlZFRhYkNvbnRlbnRW
aWV3RGlkQ2hhbmdlKTsKQEAgLTM1OCwxMDggKzM3MSw5NCBAQCBXSS5jb250ZW50TG9hZGVkID0g
ZnVuY3Rpb24oKQogICAgIFdJLnN0ZXBJbnRvQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dCA9IG5l
dyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFu
ZE9yQ29udHJvbCwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuU2VtaWNvbG9uLCBXSS5kZWJ1Z2dl
clN0ZXBJbnRvKTsKICAgICBXSS5zdGVwT3V0QWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dCA9IG5l
dyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQg
fCBXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdJLktleWJv
YXJkU2hvcnRjdXQuS2V5LlNlbWljb2xvbiwgV0kuZGVidWdnZXJTdGVwT3V0KTsKIAotICAgIFdJ
Ll9zZXR0aW5nc0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5L
ZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdJLktleWJvYXJkU2hv
cnRjdXQuS2V5LkNvbW1hLCBXSS5faGFuZGxlU2V0dGluZ3NLZXlib2FyZFNob3J0Y3V0KTsKKyAg
ICBXSS5fY2xvc2VUb29sYmFyQnV0dG9uID0gbmV3IFdJLkNvbnRyb2xUb29sYmFySXRlbSgiZG9j
ay1jbG9zZSIsIFdJLlVJU3RyaW5nKCJDbG9zZSIpLCAiSW1hZ2VzL0Nsb3NlLnN2ZyIsIDE2LCAx
NCk7CisgICAgV0kuX2Nsb3NlVG9vbGJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLmNsb3NlKTsKIAotICAgIFdJLl90b2dn
bGVQcmV2aW91c0RvY2tDb25maWd1cmF0aW9uS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXli
b2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJv
bCB8IFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQsICJEIiwgV0kuX3RvZ2dsZVBy
ZXZpb3VzRG9ja0NvbmZpZ3VyYXRpb24pOworICAgIFdJLl91bmRvY2tUb29sYmFyQnV0dG9uID0g
bmV3IFdJLkJ1dHRvblRvb2xiYXJJdGVtKCJ1bmRvY2siLCBXSS5VSVN0cmluZygiRGV0YWNoIGlu
dG8gc2VwYXJhdGUgd2luZG93IiksICJJbWFnZXMvVW5kb2NrLnN2ZyIpOworICAgIFdJLl91bmRv
Y2tUb29sYmFyQnV0dG9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1
dG9EaXNtaXNzQ2xhc3NOYW1lKTsKKyAgICBXSS5fdW5kb2NrVG9vbGJhckJ1dHRvbi5hZGRFdmVu
dExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl91bmRv
Y2spOwogCi0gICAgV0kuX2Nsb3NlVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRp
b25JdGVtKCJkb2NrLWNsb3NlIiwgV0kuVUlTdHJpbmcoIkNsb3NlIiksICJJbWFnZXMvQ2xvc2VM
YXJnZS5zdmciKTsKLSAgICBXSS5fY2xvc2VUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihX
SS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5jbG9zZSk7CisgICAgbGV0
IGRvY2tJbWFnZSA9IFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERp
cmVjdGlvbi5SVEwgPyAiSW1hZ2VzL0RvY2tMZWZ0LnN2ZyIgOiAiSW1hZ2VzL0RvY2tSaWdodC5z
dmciOworICAgIFdJLl9kb2NrVG9TaWRlVG9vbGJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25Ub29s
YmFySXRlbSgiZG9jay1yaWdodCIsIFdJLlVJU3RyaW5nKCJEb2NrIHRvIHNpZGUgb2Ygd2luZG93
IiksIGRvY2tJbWFnZSk7CisgICAgV0kuX2RvY2tUb1NpZGVUb29sYmFyQnV0dG9uLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NOYW1lKTsKIAot
ICAgIFdJLl9kb2NrVG9TaWRlVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25J
dGVtKCJkb2NrLXJpZ2h0IiwgV0kuVUlTdHJpbmcoIkRvY2sgdG8gc2lkZSBvZiB3aW5kb3ciKSwg
V0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/
ICJJbWFnZXMvRG9ja0xlZnQuc3ZnIiA6ICJJbWFnZXMvRG9ja1JpZ2h0LnN2ZyIsIDE4LCAxNik7
Ci0gICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24uZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJ
LlBvcG92ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFzc05hbWUpOwotICAgIFdJLl9kb2NrVG9TaWRl
VGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZl
bnQuQ2xpY2tlZCwgV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGly
ZWN0aW9uLlJUTCA/IFdJLl9kb2NrTGVmdCA6IFdJLl9kb2NrUmlnaHQpOworICAgIGxldCBkb2Nr
VG9TaWRlQ2FsbGJhY2sgPSBXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlv
dXREaXJlY3Rpb24uUlRMID8gV0kuX2RvY2tMZWZ0IDogV0kuX2RvY2tSaWdodDsKKyAgICBXSS5f
ZG9ja1RvU2lkZVRvb2xiYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5FdmVudC5DbGlja2VkLCBkb2NrVG9TaWRlQ2FsbGJhY2spOwogCi0gICAgV0kuX2Rv
Y2tCb3R0b21UYWJCYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRvY2st
Ym90dG9tIiwgV0kuVUlTdHJpbmcoIkRvY2sgdG8gYm90dG9tIG9mIHdpbmRvdyIpLCAiSW1hZ2Vz
L0RvY2tCb3R0b20uc3ZnIiwgMTgsIDE2KTsKLSAgICBXSS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRv
bi5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNz
TmFtZSk7Ci0gICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihX
SS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fZG9ja0JvdHRvbSk7Cisg
ICAgV0kuX2RvY2tCb3R0b21Ub29sYmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvblRvb2xiYXJJdGVt
KCJkb2NrLWJvdHRvbSIsIFdJLlVJU3RyaW5nKCJEb2NrIHRvIGJvdHRvbSBvZiB3aW5kb3ciKSwg
IkltYWdlcy9Eb2NrQm90dG9tLnN2ZyIpOworICAgIFdJLl9kb2NrQm90dG9tVG9vbGJhckJ1dHRv
bi5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNz
TmFtZSk7CisgICAgV0kuX2RvY2tCb3R0b21Ub29sYmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX2RvY2tCb3R0b20pOwog
Ci0gICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRl
bSgidW5kb2NrIiwgV0kuVUlTdHJpbmcoIkRldGFjaCBpbnRvIHNlcGFyYXRlIHdpbmRvdyIpLCAi
SW1hZ2VzL1VuZG9jay5zdmciLCAxOCwgMTYpOwotICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24u
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBvcG92ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFzc05h
bWUpOwotICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fdW5kb2NrKTsKLQotICAgIFdJLnRh
YkJhci5hZGROYXZpZ2F0aW9uSXRlbUJlZm9yZShuZXcgV0kuR3JvdXBOYXZpZ2F0aW9uSXRlbShb
Ci0gICAgICAgIFdJLl9jbG9zZVRhYkJhckJ1dHRvbiwKLSAgICAgICAgV0kuX2RvY2tUb1NpZGVU
YWJCYXJCdXR0b24sCi0gICAgICAgIFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0dG9uLAotICAgICAg
ICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uLAotICAgIF0pKTsKKyAgICBXSS5fdG9nZ2xlUHJldmlv
dXNEb2NrQ29uZmlndXJhdGlvbktleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9y
dGN1dChXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXSS5L
ZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0LCAiRCIsIFdJLl90b2dnbGVQcmV2aW91c0Rv
Y2tDb25maWd1cmF0aW9uKTsKIAotICAgIFdJLl9kb2NrRGl2aWRlclRhYkJhck5hdmlnYXRpb25J
dGVtID0gbmV3IFdJLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbTsKLSAgICBXSS50YWJCYXIuYWRkTmF2
aWdhdGlvbkl0ZW1CZWZvcmUoV0kuX2RvY2tEaXZpZGVyVGFiQmFyTmF2aWdhdGlvbkl0ZW0pOwor
ICAgIGxldCByZWxvYWRUb29sVGlwOworICAgIGlmIChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5
cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCisgICAgICAgIHJlbG9hZFRvb2xU
aXAgPSBXSS5VSVN0cmluZygiUmVzdGFydCAoJXMpIikuZm9ybWF0KFdJLl9yZWxvYWRQYWdlS2V5
Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgZWxzZQorICAgICAgICByZWxvYWRUb29s
VGlwID0gV0kuVUlTdHJpbmcoIlJlbG9hZCBwYWdlICglcylcblJlbG9hZCBwYWdlIGlnbm9yaW5n
IGNhY2hlICglcykiKS5mb3JtYXQoV0kuX3JlbG9hZFBhZ2VLZXlib2FyZFNob3J0Y3V0LmRpc3Bs
YXlOYW1lLCBXSS5fcmVsb2FkUGFnZUZyb21PcmlnaW5LZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlO
YW1lKTsKKyAgICBXSS5fcmVsb2FkVG9vbGJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25Ub29sYmFy
SXRlbSgicmVsb2FkIiwgcmVsb2FkVG9vbFRpcCwgIkltYWdlcy9SZWxvYWRUb29sYmFyLnN2ZyIp
OworICAgIFdJLl9yZWxvYWRUb29sYmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX3JlbG9hZFRvb2xiYXJCdXR0b25DbGlj
a2VkKTsKIAotICAgIGxldCBpbnNwZWN0ZWRQYWdlQ29udHJvbE5hdmlnYXRpb25JdGVtcyA9IFtd
OworICAgIFdJLl9kb3dubG9hZFRvb2xiYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uVG9vbGJhckl0
ZW0oImRvd25sb2FkIiwgV0kuVUlTdHJpbmcoIkRvd25sb2FkIFdlYiBBcmNoaXZlIiksICJJbWFn
ZXMvRG93bmxvYWRBcnJvdy5zdmciKTsKKyAgICBXSS5fZG93bmxvYWRUb29sYmFyQnV0dG9uLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0ku
X2Rvd25sb2FkV2ViQXJjaGl2ZSk7CiAKICAgICBsZXQgZWxlbWVudFNlbGVjdGlvblRvb2xUaXAg
PSBXSS5VSVN0cmluZygiU3RhcnQgZWxlbWVudCBzZWxlY3Rpb24gKCVzKSIpLmZvcm1hdChXSS5f
aW5zcGVjdE1vZGVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKICAgICBsZXQgYWN0aXZh
dGVkRWxlbWVudFNlbGVjdGlvblRvb2xUaXAgPSBXSS5VSVN0cmluZygiU3RvcCBlbGVtZW50IHNl
bGVjdGlvbiAoJXMpIikuZm9ybWF0KFdJLl9pbnNwZWN0TW9kZUtleWJvYXJkU2hvcnRjdXQuZGlz
cGxheU5hbWUpOwotICAgIFdJLl9pbnNwZWN0TW9kZVRhYkJhckJ1dHRvbiA9IG5ldyBXSS5BY3Rp
dmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJpbnNwZWN0IiwgZWxlbWVudFNlbGVjdGlvblRvb2xU
aXAsIGFjdGl2YXRlZEVsZW1lbnRTZWxlY3Rpb25Ub29sVGlwLCAiSW1hZ2VzL0Nyb3NzaGFpci5z
dmciKTsKLSAgICBXSS5faW5zcGVjdE1vZGVUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihX
SS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fdG9nZ2xlSW5zcGVjdE1v
ZGUpOwotICAgIGluc3BlY3RlZFBhZ2VDb250cm9sTmF2aWdhdGlvbkl0ZW1zLnB1c2goV0kuX2lu
c3BlY3RNb2RlVGFiQmFyQnV0dG9uKTsKKyAgICBXSS5faW5zcGVjdE1vZGVUb29sYmFyQnV0dG9u
ID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0oImluc3BlY3QiLCBlbGVtZW50U2Vs
ZWN0aW9uVG9vbFRpcCwgYWN0aXZhdGVkRWxlbWVudFNlbGVjdGlvblRvb2xUaXAsICJJbWFnZXMv
Q3Jvc3NoYWlyLnN2ZyIpOworICAgIFdJLl9pbnNwZWN0TW9kZVRvb2xiYXJCdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fdG9n
Z2xlSW5zcGVjdE1vZGUpOwogCi0gICAgaWYgKEluc3BlY3RvckZyb250ZW5kSG9zdC5pc1JlbW90
ZSB8fCBXSS5pc0RlYnVnVUlFbmFibGVkKCkpIHsKLSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAo
aU9TIDEyLjIpOiBQYWdlLm92ZXJyaWRlU2V0dGluZyBkaWQgbm90IGV4aXN0LgotICAgICAgICBp
ZiAoSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJQYWdlLm92ZXJyaWRlVXNlckFnZW50Iikg
JiYgSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJQYWdlLm92ZXJyaWRlU2V0dGluZyIpKSB7
Ci0gICAgICAgICAgICBjb25zdCBkZXZpY2VTZXR0aW5nc1Rvb2x0aXAgPSBXSS5VSVN0cmluZygi
RGV2aWNlIFNldHRpbmdzIik7Ci0gICAgICAgICAgICBXSS5fZGV2aWNlU2V0dGluZ3NUYWJCYXJC
dXR0b24gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiZGV2aWNlLXNldHRp
bmdzIiwgZGV2aWNlU2V0dGluZ3NUb29sdGlwLCBkZXZpY2VTZXR0aW5nc1Rvb2x0aXAsICJJbWFn
ZXMvRGV2aWNlLnN2ZyIpOwotICAgICAgICAgICAgV0kuX2RldmljZVNldHRpbmdzVGFiQmFyQnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tl
ZCwgV0kuX2hhbmRsZURldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uQ2xpY2tlZCk7Ci0gICAgICAg
ICAgICBpbnNwZWN0ZWRQYWdlQ29udHJvbE5hdmlnYXRpb25JdGVtcy5wdXNoKFdJLl9kZXZpY2VT
ZXR0aW5nc1RhYkJhckJ1dHRvbik7CisgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEyLjIpOiBQ
YWdlLm92ZXJyaWRlU2V0dGluZyBkaWQgbm90IGV4aXN0LgorICAgIGlmICgoSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmlzUmVtb3RlIHx8IFdJLmlzRGVidWdVSUVuYWJsZWQoKSkgJiYgSW5zcGVjdG9y
QmFja2VuZC5oYXNDb21tYW5kKCJQYWdlLm92ZXJyaWRlVXNlckFnZW50IikgJiYgSW5zcGVjdG9y
QmFja2VuZC5oYXNDb21tYW5kKCJQYWdlLm92ZXJyaWRlU2V0dGluZyIpKSB7CisgICAgICAgIGNv
bnN0IGRldmljZVNldHRpbmdzVG9vbHRpcCA9IFdJLlVJU3RyaW5nKCJEZXZpY2UgU2V0dGluZ3Mi
KTsKKyAgICAgICAgV0kuX2RldmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbiA9IG5ldyBXSS5BY3Rp
dmF0ZUJ1dHRvblRvb2xiYXJJdGVtKCJkZXZpY2Utc2V0dGluZ3MiLCBkZXZpY2VTZXR0aW5nc1Rv
b2x0aXAsIGRldmljZVNldHRpbmdzVG9vbHRpcCwgIkltYWdlcy9EZXZpY2Uuc3ZnIik7CisgICAg
ICAgIFdJLl9kZXZpY2VTZXR0aW5nc1Rvb2xiYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5faGFuZGxlRGV2aWNlU2V0dGlu
Z3NUb29sYmFyQnV0dG9uQ2xpY2tlZCk7CiAKLSAgICAgICAgICAgIFdJLl9kZXZpY2VTZXR0aW5n
c1BvcG92ZXIgPSBudWxsOwotICAgICAgICB9CisgICAgICAgIFdJLl9kZXZpY2VTZXR0aW5nc1Bv
cG92ZXIgPSBudWxsOworICAgIH0KIAotICAgICAgICBsZXQgcmVsb2FkVG9vbFRpcDsKLSAgICAg
ICAgaWYgKFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUu
SmF2YVNjcmlwdCkKLSAgICAgICAgICAgIHJlbG9hZFRvb2xUaXAgPSBXSS5VSVN0cmluZygiUmVz
dGFydCAoJXMpIikuZm9ybWF0KFdJLl9yZWxvYWRQYWdlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5
TmFtZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbG9hZFRvb2xUaXAgPSBXSS5VSVN0
cmluZygiUmVsb2FkIHBhZ2UgKCVzKVxuUmVsb2FkIHBhZ2UgaWdub3JpbmcgY2FjaGUgKCVzKSIp
LmZvcm1hdChXSS5fcmVsb2FkUGFnZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUsIFdJLl9y
ZWxvYWRQYWdlRnJvbU9yaWdpbktleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwotICAgICAg
ICBXSS5fcmVsb2FkVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJy
ZWxvYWQiLCByZWxvYWRUb29sVGlwLCAiSW1hZ2VzL1JlbG9hZFRvb2xiYXIuc3ZnIik7Ci0gICAg
ICAgIFdJLl9yZWxvYWRUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fcmVsb2FkVGFiQmFyQnV0dG9uQ2xpY2tlZCk7
Ci0gICAgICAgIGluc3BlY3RlZFBhZ2VDb250cm9sTmF2aWdhdGlvbkl0ZW1zLnB1c2goV0kuX3Jl
bG9hZFRhYkJhckJ1dHRvbik7CisgICAgV0kuX3VwZGF0ZVJlbG9hZFRvb2xiYXJCdXR0b24oKTsK
KyAgICBXSS5fdXBkYXRlRG93bmxvYWRUb29sYmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZUlu
c3BlY3RNb2RlVG9vbGJhckJ1dHRvbigpOwogCi0gICAgICAgIFdJLl9kb3dubG9hZFRhYkJhckJ1
dHRvbiA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiZG93bmxvYWQiLCBXSS5VSVN0cmlu
ZygiRG93bmxvYWQgV2ViIEFyY2hpdmUiKSwgIkltYWdlcy9Eb3dubG9hZEFycm93LnN2ZyIpOwot
ICAgICAgICBXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBXSS5fZG93bmxvYWRXZWJBcmNoaXZlKTsK
LSAgICAgICAgaW5zcGVjdGVkUGFnZUNvbnRyb2xOYXZpZ2F0aW9uSXRlbXMucHVzaChXSS5fZG93
bmxvYWRUYWJCYXJCdXR0b24pOwotICAgIH0KKyAgICBXSS5fZGFzaGJvYXJkcyA9IHsKKyAgICAg
ICAgZGVmYXVsdDogbmV3IFdJLkRlZmF1bHREYXNoYm9hcmQsCisgICAgICAgIGRlYnVnZ2VyOiBu
ZXcgV0kuRGVidWdnZXJEYXNoYm9hcmQsCisgICAgfTsKIAotICAgIFdJLnRhYkJhci5hZGROYXZp
Z2F0aW9uSXRlbUJlZm9yZShuZXcgV0kuR3JvdXBOYXZpZ2F0aW9uSXRlbShpbnNwZWN0ZWRQYWdl
Q29udHJvbE5hdmlnYXRpb25JdGVtcykpOworICAgIFdJLl9kYXNoYm9hcmRDb250YWluZXIgPSBu
ZXcgV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldzsKKyAgICBXSS5fZGFzaGJvYXJkQ29udGFpbmVy
LnNob3dEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV0kuX2Rhc2hib2FyZHMuZGVm
YXVsdCk7CiAKLSAgICBXSS5fY29uc29sZURpdmlkZXJOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5E
aXZpZGVyTmF2aWdhdGlvbkl0ZW07Ci0gICAgV0kudGFiQmFyLmFkZE5hdmlnYXRpb25JdGVtQmVm
b3JlKFdJLl9jb25zb2xlRGl2aWRlck5hdmlnYXRpb25JdGVtKTsKKyAgICBXSS50b29sYmFyLmFk
ZFRvb2xiYXJJdGVtKFdJLl9jbG9zZVRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5D
b250cm9sKTsKIAotICAgIFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24gPSBuZXcgV0ku
QnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNvbnNvbGUtd2FybmluZ3MiLCBXSS5VSVN0cmluZygiMCBD
b25zb2xlIHdhcm5pbmdzIiksICJJbWFnZXMvSXNzdWVzRW5hYmxlZC5zdmciKTsKLSAgICBXSS5f
Y29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9uLmltYWdlVHlwZSA9IFdJLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLkltYWdlVHlwZS5JTUc7Ci0gICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRv
bi5oaWRkZW4gPSBmYWxzZTsKLSAgICBXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9uLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgKCkg
PT4gewotICAgICAgICBXSS5zaG93Q29uc29sZVRhYihXSS5Mb2dDb250ZW50Vmlldy5TY29wZXMu
V2FybmluZ3MsIHsKLSAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFi
TmF2aWdhdGlvbkluaXRpYXRvci5EYXNoYm9hcmQsCi0gICAgICAgIH0pOwotICAgIH0sIFdJKTsK
LQotICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmln
YXRpb25JdGVtKCJjb25zb2xlLWVycm9ycyIsIFdJLlVJU3RyaW5nKCIwIENvbnNvbGUgZXJyb3Jz
IiksICJJbWFnZXMvRXJyb3JzRW5hYmxlZC5zdmciKTsKLSAgICBXSS5fY29uc29sZUVycm9yc1Rh
YkJhckJ1dHRvbi5pbWFnZVR5cGUgPSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5JbWFnZVR5cGUu
SU1HOwotICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLmhpZGRlbiA9IGZhbHNlOwot
ICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgKCkgPT4gewotICAgICAgICBXSS5zaG93
Q29uc29sZVRhYihXSS5Mb2dDb250ZW50Vmlldy5TY29wZXMuRXJyb3JzLCB7Ci0gICAgICAgICAg
ICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRGFz
aGJvYXJkLAotICAgICAgICB9KTsKLSAgICB9LCBXSSk7CisgICAgV0kudG9vbGJhci5hZGRUb29s
YmFySXRlbShXSS5fdW5kb2NrVG9vbGJhckJ1dHRvbiwgV0kuVG9vbGJhci5TZWN0aW9uLkxlZnQp
OworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX2RvY2tUb1NpZGVUb29sYmFyQnV0
dG9uLCBXSS5Ub29sYmFyLlNlY3Rpb24uTGVmdCk7CisgICAgV0kudG9vbGJhci5hZGRUb29sYmFy
SXRlbShXSS5fZG9ja0JvdHRvbVRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5MZWZ0
KTsKKworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX3JlbG9hZFRvb2xiYXJCdXR0
b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXJMZWZ0KTsKKyAgICBXSS50b29sYmFyLmFkZFRv
b2xiYXJJdGVtKFdJLl9kb3dubG9hZFRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5D
ZW50ZXJMZWZ0KTsKIAotICAgIFdJLnRhYkJhci5hZGROYXZpZ2F0aW9uSXRlbUJlZm9yZShuZXcg
V0kuR3JvdXBOYXZpZ2F0aW9uSXRlbShbCi0gICAgICAgIFdJLl9jb25zb2xlV2FybmluZ3NUYWJC
YXJCdXR0b24sCi0gICAgICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLAotICAgIF0p
KTsKKyAgICBXSS50b29sYmFyLmFkZFRvb2xiYXJJdGVtKFdJLl9kYXNoYm9hcmRDb250YWluZXIu
dG9vbGJhckl0ZW0sIFdJLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXIpOwogCi0gICAgV0kuX3VwZGF0
ZUluc3BlY3RNb2RlVGFiQmFyQnV0dG9uKCk7Ci0gICAgV0kuX3VwZGF0ZURvd25sb2FkVGFiQmFy
QnV0dG9uKCk7Ci0gICAgV0kuX3VwZGF0ZVJlbG9hZFRhYkJhckJ1dHRvbigpOworICAgIFdJLnRv
b2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX2luc3BlY3RNb2RlVG9vbGJhckJ1dHRvbiwgV0kuVG9v
bGJhci5TZWN0aW9uLkNlbnRlclJpZ2h0KTsKIAotICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBXSS5fdXBk
YXRlQ29uc29sZVRhYkJhckJ1dHRvbnMsIFdJKTsKLSAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVh
dENvdW50VXBkYXRlZCwgV0kuX3VwZGF0ZUNvbnNvbGVUYWJCYXJCdXR0b25zLCBXSSk7Ci0gICAg
V0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVu
dC5DbGVhcmVkLCBXSS5fdXBkYXRlQ29uc29sZVRhYkJhckJ1dHRvbnMsIFdJKTsKLSAgICBXSS5f
dXBkYXRlQ29uc29sZVRhYkJhckJ1dHRvbnMoKTsKKyAgICBpZiAoV0kuX2RldmljZVNldHRpbmdz
VG9vbGJhckJ1dHRvbikKKyAgICAgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShXSS5fZGV2
aWNlU2V0dGluZ3NUb29sYmFyQnV0dG9uLCBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyUmlnaHQp
OwogCi0gICAgV0kuX2RvY2tlZFJlc2l6ZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRvY2tlZC1yZXNpemVyIik7Ci0gICAgV0kuX2RvY2tlZFJlc2l6ZXJFbGVtZW50LmNsYXNz
TGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7Ci0gICAgV0ku
X2RvY2tlZFJlc2l6ZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIFdJLl9k
b2NrZWRSZXNpemVyTW91c2VEb3duKTsKKyAgICBXSS5fc2VhcmNoVGFiQ29udGVudFZpZXcgPSBu
ZXcgV0kuU2VhcmNoVGFiQ29udGVudFZpZXc7CisKKyAgICBpZiAoV0kuc2V0dGluZ3MuZXhwZXJp
bWVudGFsRW5hYmxlTmV3VGFiQmFyLnZhbHVlKSB7CisgICAgICAgIFdJLnRhYkJyb3dzZXIuYWRk
VGFiRm9yQ29udGVudFZpZXcoV0kuX3NlYXJjaFRhYkNvbnRlbnRWaWV3LCB7c3VwcHJlc3NBbmlt
YXRpb25zOiB0cnVlfSk7CisgICAgICAgIFdJLnRhYkJhci5hZGRUYWJCYXJJdGVtKFdJLnNldHRp
bmdzVGFiQ29udGVudFZpZXcudGFiQmFySXRlbSwge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0p
OworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IGluY3JlbWVudGFsID0gZmFsc2U7CisgICAg
ICAgIFdJLl9zZWFyY2hUb29sYmFySXRlbSA9IG5ldyBXSS5TZWFyY2hCYXIoImluc3BlY3Rvci1z
ZWFyY2giLCBXSS5VSVN0cmluZygiU2VhcmNoIiksIGluY3JlbWVudGFsKTsKKyAgICAgICAgV0ku
X3NlYXJjaFRvb2xiYXJJdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2VhcmNoQmFyLkV2ZW50LlRl
eHRDaGFuZ2VkLCBXSS5fc2VhcmNoVGV4dERpZENoYW5nZSk7CisgICAgICAgIFdJLnRvb2xiYXIu
YWRkVG9vbGJhckl0ZW0oV0kuX3NlYXJjaFRvb2xiYXJJdGVtLCBXSS5Ub29sYmFyLlNlY3Rpb24u
UmlnaHQpOworICAgIH0KKworICAgIGxldCBkb2NrZWRSZXNpemVyRWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkb2NrZWQtcmVzaXplciIpOworICAgIGRvY2tlZFJlc2l6ZXJFbGVt
ZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7
CisgICAgZG9ja2VkUmVzaXplckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwg
V0kuX2RvY2tlZFJlc2l6ZXJNb3VzZURvd24pOwogCiAgICAgV0kuX2RvY2tpbmdBdmFpbGFibGUg
PSBmYWxzZTsKIApAQCAtNDc5LDYgKzQ3OCw3IEBAIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlv
bigpCiAgICAgICAgIFdJLkF1ZGl0VGFiQ29udGVudFZpZXcsCiAgICAgICAgIFdJLkNvbnNvbGVU
YWJDb250ZW50VmlldywKICAgICAgICAgV0kuU2VhcmNoVGFiQ29udGVudFZpZXcsCisgICAgICAg
IFdJLk5ld1RhYkNvbnRlbnRWaWV3LAogICAgICAgICBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3
LAogICAgIF07CiAKQEAgLTQ5MCwxMiArNDkwLDYgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0
aW9uKCkKIAogICAgIFdJLl9wZW5kaW5nT3BlblRhYnMgPSBbXTsKIAotICAgIFdJLl9zZWFyY2hU
YWJDb250ZW50VmlldyA9IG5ldyBXSS5TZWFyY2hUYWJDb250ZW50VmlldzsKLSAgICBXSS50YWJC
cm93c2VyLmFkZFRhYkZvckNvbnRlbnRWaWV3KFdJLl9zZWFyY2hUYWJDb250ZW50Vmlldywge3N1
cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOwotCi0gICAgV0kuX3NldHRpbmdzVGFiQ29udGVudFZp
ZXcgPSBuZXcgV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldzsKLSAgICBXSS50YWJCcm93c2VyLmFk
ZFRhYkZvckNvbnRlbnRWaWV3KFdJLl9zZXR0aW5nc1RhYkNvbnRlbnRWaWV3LCB7c3VwcHJlc3NB
bmltYXRpb25zOiB0cnVlfSk7Ci0KICAgICAvLyBQcmV2aW91c2x5IHdlIG1heSBoYXZlIHN0b3Jl
ZCBkdXBsaWNhdGVzIGluIFdJIHNldHRpbmcuIEF2b2lkIGNyZWF0aW5nIGR1cGxpY2F0ZSB0YWJz
LgogICAgIGxldCBvcGVuVGFiVHlwZXMgPSBXSS5fb3BlblRhYnNTZXR0aW5nLnZhbHVlOwogICAg
IGxldCBzZWVuVGFiVHlwZXMgPSBuZXcgU2V0OwpAQCAtNTIzLDE2ICs1MTcsMTMgQEAgV0kuY29u
dGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKIAogICAgIFdJLl9yZXN0b3JlQ29va2llRm9yT3BlblRh
YnMoV0kuU3RhdGVSZXN0b3JhdGlvblR5cGUuTG9hZCk7CiAKLSAgICBpZiAoV0kudGFiQmFyLm5v
cm1hbFRhYkNvdW50KQotICAgICAgICBXSS50YWJCYXIuc2VsZWN0ZWRUYWJCYXJJdGVtID0gV0ku
X3NlbGVjdGVkVGFiSW5kZXhTZXR0aW5nLnZhbHVlOwotICAgIGVsc2UgewotICAgICAgICAvLyBJ
ZiBubyB0YWJzIHdlcmUgYWJsZSB0byBiZSByZXN0b3JlZCwgc2hvdyBhbGwgdGFicyB0aGF0IGFy
ZSBhbGxvd2VkLgotICAgICAgICBmb3IgKGxldCB0YWJUeXBlIG9mIFdJLl9vcGVuVGFic1NldHRp
bmcuZGVmYXVsdFZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoV0kuaXNOZXdUYWJXaXRoVHlwZUFs
bG93ZWQodGFiVHlwZSkpCi0gICAgICAgICAgICAgICAgV0kuY3JlYXRlTmV3VGFiV2l0aFR5cGUo
dGFiVHlwZSkKLSAgICAgICAgfQorICAgIFdJLnRhYkJhci5zZWxlY3RlZFRhYkJhckl0ZW0gPSBX
SS5fc2VsZWN0ZWRUYWJJbmRleFNldHRpbmcudmFsdWU7CisKKyAgICBpZiAoIVdJLnRhYkJhci5z
ZWxlY3RlZFRhYkJhckl0ZW0pCiAgICAgICAgIFdJLnRhYkJhci5zZWxlY3RlZFRhYkJhckl0ZW0g
PSAwOwotICAgIH0KKworICAgIGlmICghV0kudGFiQmFyLm5vcm1hbFRhYkNvdW50KQorICAgICAg
ICBXSS5zaG93TmV3VGFiVGFiKHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKIAogICAgIC8v
IExpc3RlbiB0byB0aGUgZXZlbnRzIGFmdGVyIHJlc3RvcmluZyB0aGUgc2F2ZWQgdGFicyB0byBh
dm9pZCByZWN1cnNpb24uCiAgICAgV0kudGFiQmFyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFiQmFy
LkV2ZW50LlRhYkJhckl0ZW1BZGRlZCwgV0kuX3JlbWVtYmVyT3BlblRhYnMpOwpAQCAtNTQyLDE3
ICs1MzMsOSBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIGZ1bmN0aW9uIHVw
ZGF0ZUNvbnNvbGVTYXZlZFJlc3VsdFByZWZpeENTU1ZhcmlhYmxlKCkgewogICAgICAgICBkb2N1
bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCItLWNvbnNvbGUtc2F2ZWQtcmVzdWx0LXByZWZp
eCIsICJcIiIgKyBXSS5SdW50aW1lTWFuYWdlci5wcmVmZXJyZWRTYXZlZFJlc3VsdFByZWZpeCgp
ICsgIlwiIik7CiAgICAgfQotCi0gICAgV0kuc2V0dGluZ3MuY29uc29sZVNhdmVkUmVzdWx0QWxp
YXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHVwZGF0ZUNvbnNv
bGVTYXZlZFJlc3VsdFByZWZpeENTU1ZhcmlhYmxlLCBXSS5zZXR0aW5ncyk7CisgICAgV0kuc2V0
dGluZ3MuY29uc29sZVNhdmVkUmVzdWx0QWxpYXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5n
LkV2ZW50LkNoYW5nZWQsIHVwZGF0ZUNvbnNvbGVTYXZlZFJlc3VsdFByZWZpeENTU1ZhcmlhYmxl
KTsKICAgICB1cGRhdGVDb25zb2xlU2F2ZWRSZXN1bHRQcmVmaXhDU1NWYXJpYWJsZSgpOwogCi0g
ICAgZnVuY3Rpb24gdXBkYXRlWm9vbUZhY3RvckNTU1ZhcmlhYmxlKCkgewotICAgICAgICBkb2N1
bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCItLXpvb20tZmFjdG9yIiwgV0kuc2V0dGluZ3Mu
em9vbUZhY3Rvci52YWx1ZSk7Ci0gICAgfQotCi0gICAgV0kuc2V0dGluZ3Muem9vbUZhY3Rvci5h
ZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdXBkYXRlWm9vbUZhY3Rv
ckNTU1ZhcmlhYmxlLCBXSS5zZXR0aW5ncyk7Ci0gICAgdXBkYXRlWm9vbUZhY3RvckNTU1Zhcmlh
YmxlKCk7Ci0KICAgICAvLyBTaWduYWwgdGhhdCB0aGUgZnJvbnRlbmQgaXMgbm93IHJlYWR5IHRv
IHJlY2VpdmUgbWVzc2FnZXMuCiAgICAgV0kuX2JhY2tlbmRUYXJnZXRBdmFpbGFibGVQcm9taXNl
LnByb21pc2UudGhlbigoKSA9PiB7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRD
b21wbGV0ZWQoKTsKQEAgLTY4OSwxMCArNjcyLDE1IEBAIFdJLl9yZW1lbWJlck9wZW5UYWJzID0g
ZnVuY3Rpb24oKQogICAgIFdJLl9vcGVuVGFic1NldHRpbmcudmFsdWUgPSBvcGVuVGFiczsKIH07
CiAKK1dJLl9vcGVuRGVmYXVsdFRhYiA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIFdJLnNob3dO
ZXdUYWJUYWIoe3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOworfTsKKwogV0kuX2hhbmRsZVNl
dHRpbmdzS2V5Ym9hcmRTaG9ydGN1dCA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIGlmIChldmVu
dC5rZXlJZGVudGlmaWVyID09PSAiVSswMDJDIikgeyAvLyAiLCIKLSAgICAgICAgV0kudGFiQnJv
d3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcoV0kuX3NldHRpbmdzVGFiQ29udGVudFZpZXcsIHsK
KyAgICAgICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcoV0kuc2V0dGluZ3NU
YWJDb250ZW50VmlldywgewogICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nl
ci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLktleWJvYXJkU2hvcnRjdXQsCiAgICAgICAgIH0pOwog
ICAgIH0KQEAgLTcyMCw2ICs3MDgsMjAgQEAgV0kuX3RyeVRvUmVzdG9yZVBlbmRpbmdUYWJzID0g
ZnVuY3Rpb24oKQogICAgIH0KIAogICAgIFdJLl9wZW5kaW5nT3BlblRhYnMgPSBzdGlsbFBlbmRp
bmdPcGVuVGFiczsKKworICAgIGlmICghV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlTmV3
VGFiQmFyLnZhbHVlKQorICAgICAgICBXSS50YWJCYXIudXBkYXRlTmV3VGFiVGFiQmFySXRlbVN0
YXRlKCk7Cit9OworCitXSS5zaG93TmV3VGFiVGFiID0gZnVuY3Rpb24ob3B0aW9ucykKK3sKKyAg
ICBpZiAoIVdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKFdJLk5ld1RhYkNvbnRlbnRWaWV3LlR5
cGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBsZXQgdGFiQ29udGVudFZpZXcgPSBXSS50YWJC
cm93c2VyLmJlc3RUYWJDb250ZW50Vmlld0ZvckNsYXNzKFdJLk5ld1RhYkNvbnRlbnRWaWV3KTsK
KyAgICBpZiAoIXRhYkNvbnRlbnRWaWV3KQorICAgICAgICB0YWJDb250ZW50VmlldyA9IG5ldyBX
SS5OZXdUYWJDb250ZW50VmlldzsKKyAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50
Vmlldyh0YWJDb250ZW50Vmlldywgb3B0aW9ucyk7CiB9OwogCiBXSS5pc05ld1RhYldpdGhUeXBl
QWxsb3dlZCA9IGZ1bmN0aW9uKHRhYlR5cGUpCkBAIC03MzcsNiArNzM5LDEzIEBAIFdJLmlzTmV3
VGFiV2l0aFR5cGVBbGxvd2VkID0gZnVuY3Rpb24odGFiVHlwZSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAodGFiQ2xhc3MgPT09IFdJLk5ld1RhYkNvbnRlbnRW
aWV3KSB7CisgICAgICAgIGxldCBhbGxUYWJzID0gQXJyYXkuZnJvbShXSS5rbm93blRhYkNsYXNz
ZXMoKSk7CisgICAgICAgIGxldCBhZGRhYmxlVGFicyA9IGFsbFRhYnMuZmlsdGVyKCh0YWJDbGFz
cykgPT4gIXRhYkNsYXNzLnRhYkluZm8oKS5pc0VwaGVtZXJhbCk7CisgICAgICAgIGxldCBjYW5N
YWtlTmV3VGFiID0gYWRkYWJsZVRhYnMuc29tZSgodGFiQ2xhc3MpID0+IFdJLmlzTmV3VGFiV2l0
aFR5cGVBbGxvd2VkKHRhYkNsYXNzLlR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGNhbk1ha2VOZXdU
YWI7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9OwogCkBAIC03ODAsOSArNzg5LDkgQEAg
V0kuYWN0aXZhdGVFeHRyYURvbWFpbnMgPSBmdW5jdGlvbihkb21haW5zKQogICAgICAgICAgICAg
V0kubmV0d29ya01hbmFnZXIuaW5pdGlhbGl6ZVRhcmdldChXSS5tYWluVGFyZ2V0KTsKICAgICB9
CiAKLSAgICBXSS5fdXBkYXRlSW5zcGVjdE1vZGVUYWJCYXJCdXR0b24oKTsKLSAgICBXSS5fdXBk
YXRlRG93bmxvYWRUYWJCYXJCdXR0b24oKTsKLSAgICBXSS5fdXBkYXRlUmVsb2FkVGFiQmFyQnV0
dG9uKCk7CisgICAgV0kuX3VwZGF0ZVJlbG9hZFRvb2xiYXJCdXR0b24oKTsKKyAgICBXSS5fdXBk
YXRlRG93bmxvYWRUb29sYmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZUluc3BlY3RNb2RlVG9v
bGJhckJ1dHRvbigpOwogCiAgICAgV0kuX3RyeVRvUmVzdG9yZVBlbmRpbmdUYWJzKCk7CiB9OwpA
QCAtODQyLDYgKzg1MSw4IEBAIFdJLnVwZGF0ZURvY2tlZFN0YXRlID0gZnVuY3Rpb24oc2lkZSkK
IAogICAgIFdJLmRvY2tlZCA9IHNpZGUgIT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlVuZG9ja2Vk
OwogCisgICAgV0kuX2lnbm9yZVRvb2xiYXJNb2RlRGlkQ2hhbmdlRXZlbnRzID0gdHJ1ZTsKKwog
ICAgIGlmIChzaWRlID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b20pIHsKICAgICAgICAg
ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJkb2NrZWQiLCBXSS5Eb2NrQ29uZmlndXJhdGlv
bi5Cb3R0b20pOwogICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoIndpbmRv
dy1pbmFjdGl2ZSIsIFdJLkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0LCBXSS5Eb2NrQ29uZmlndXJh
dGlvbi5MZWZ0KTsKQEAgLTg1NCw2ICs4NjUsOCBAQCBXSS51cGRhdGVEb2NrZWRTdGF0ZSA9IGZ1
bmN0aW9uKHNpZGUpCiAgICAgfSBlbHNlCiAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0
LnJlbW92ZSgiZG9ja2VkIiwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQsIFdJLkRvY2tDb25m
aWd1cmF0aW9uLkxlZnQsIFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbSk7CiAKKyAgICBXSS5f
aWdub3JlVG9vbGJhck1vZGVEaWRDaGFuZ2VFdmVudHMgPSBmYWxzZTsKKwogICAgIFdJLl91cGRh
dGVEb2NrTmF2aWdhdGlvbkl0ZW1zKCk7CiAKICAgICBpZiAoIVdJLmRvY2tlZENvbmZpZ3VyYXRp
b25TdXBwb3J0c1NwbGl0Q29udGVudEJyb3dzZXIoKSAmJiAhV0kuZG9lc0N1cnJlbnRUYWJTdXBw
b3J0U3BsaXRDb250ZW50QnJvd3NlcigpKQpAQCAtMTExOSwxMCArMTEzMiwxMCBAQCBXSS5pc1No
b3dpbmdMYXllcnNUYWIgPSBmdW5jdGlvbigpCiAKIFdJLnNob3dTZXR0aW5nc1RhYiA9IGZ1bmN0
aW9uKG9wdGlvbnMgPSB7fSkKIHsKLSAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50
VmlldyhXSS5fc2V0dGluZ3NUYWJDb250ZW50Vmlldywgb3B0aW9ucyk7CisgICAgV0kudGFiQnJv
d3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcoV0kuc2V0dGluZ3NUYWJDb250ZW50Vmlldywgb3B0
aW9ucyk7CiAKICAgICBpZiAob3B0aW9ucy5ibGFja2JveFBhdHRlcm5Ub1NlbGVjdCkKLSAgICAg
ICAgV0kuX3NldHRpbmdzVGFiQ29udGVudFZpZXcuc2VsZWN0QmxhY2tib3hQYXR0ZXJuKG9wdGlv
bnMuYmxhY2tib3hQYXR0ZXJuVG9TZWxlY3QpOworICAgICAgICBXSS5zZXR0aW5nc1RhYkNvbnRl
bnRWaWV3LnNlbGVjdEJsYWNrYm94UGF0dGVybihvcHRpb25zLmJsYWNrYm94UGF0dGVyblRvU2Vs
ZWN0KTsKIH07CiAKIFdJLmluZGVudFN0cmluZyA9IGZ1bmN0aW9uKCkKQEAgLTEzNjcsMTQgKzEz
ODAsMzUgQEAgV0kuZGVidWdnZXJTdGVwT3V0ID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLnN0ZXBPdXQoKTsKIH07CiAKLVdJLl9mb2N1c1NlYXJjaEZpZWxkID0gZnVu
Y3Rpb24oZXZlbnQpCitXSS5fc2VhcmNoVGV4dERpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQog
ewotICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KFdJLl9zZWFyY2hUYWJD
b250ZW50VmlldywgeworICAgIHZhciB0YWJDb250ZW50VmlldyA9IFdJLnRhYkJyb3dzZXIuYmVz
dFRhYkNvbnRlbnRWaWV3Rm9yQ2xhc3MoV0kuU2VhcmNoVGFiQ29udGVudFZpZXcpOworICAgIGlm
ICghdGFiQ29udGVudFZpZXcpCisgICAgICAgIHRhYkNvbnRlbnRWaWV3ID0gbmV3IFdJLlNlYXJj
aFRhYkNvbnRlbnRWaWV3OworCisgICAgdmFyIHNlYXJjaFF1ZXJ5ID0gV0kuX3NlYXJjaFRvb2xi
YXJJdGVtLnRleHQ7CisgICAgV0kuX3NlYXJjaFRvb2xiYXJJdGVtLnRleHQgPSAiIjsKKworICAg
IFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3LCB7CiAg
ICAgICAgIC8vIENsYXNzaWZ5IHRoaXMgYXMgYSBrZXlib2FyZCBzaG9ydGN1dCwgYXMgdGhlIG9u
bHkgb3RoZXIgd2F5IHRvIGdldCB0byBTZWFyY2ggVGFiIGlzIHZpYSBUYWJCYXIgaXRzZWxmLgog
ICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0
b3IuS2V5Ym9hcmRTaG9ydGN1dCwKICAgICB9KTsKIAotICAgIFdJLl9zZWFyY2hUYWJDb250ZW50
Vmlldy5mb2N1c1NlYXJjaEZpZWxkKCk7CisgICAgdGFiQ29udGVudFZpZXcucGVyZm9ybVNlYXJj
aChzZWFyY2hRdWVyeSk7Cit9OworCitXSS5fZm9jdXNTZWFyY2hGaWVsZCA9IGZ1bmN0aW9uKGV2
ZW50KQoreworICAgIGlmIChXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXIu
dmFsdWUpCisgICAgICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KFdJLl9z
ZWFyY2hUYWJDb250ZW50Vmlldyk7CisKKyAgICBpZiAoV0kudGFiQnJvd3Nlci5zZWxlY3RlZFRh
YkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0kuU2VhcmNoVGFiQ29udGVudFZpZXcpIHsKKyAgICAg
ICAgV0kudGFiQnJvd3Nlci5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3LmZvY3VzU2VhcmNoRmllbGQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXSS5fc2VhcmNoVG9vbGJhckl0
ZW0pCisgICAgICAgIFdJLl9zZWFyY2hUb29sYmFySXRlbS5mb2N1cygpOwogfTsKIAogV0kuX2Zv
Y3VzQ2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMTQ4Myw5ICsxNTE3LDE2IEBAIFdJLl9k
ZWJ1Z2dlckRpZFBhdXNlID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgV0kuc2hvd1NvdXJjZXNU
YWIoe3Nob3dTY29wZUNoYWluU2lkZWJhcjogV0kuc2V0dGluZ3Muc2hvd1Njb3BlQ2hhaW5PblBh
dXNlLnZhbHVlfSk7CiAKKyAgICBXSS5fZGFzaGJvYXJkQ29udGFpbmVyLnNob3dEYXNoYm9hcmRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV0kuX2Rhc2hib2FyZHMuZGVidWdnZXIpOworCiAgICAg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmJyaW5nVG9Gcm9udCgpOwogfTsKIAorV0kuX2RlYnVnZ2Vy
RGlkUmVzdW1lID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgV0kuX2Rhc2hib2FyZENvbnRhaW5l
ci5jbG9zZURhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXSS5fZGFzaGJvYXJkcy5k
ZWJ1Z2dlcik7Cit9OworCiBXSS5fZnJhbWVXYXNBZGRlZCA9IGZ1bmN0aW9uKGV2ZW50KQogewog
ICAgIGlmICghV0kuX2ZyYW1lSWRlbnRpZmllclRvU2hvd1NvdXJjZUNvZGVXaGVuQXZhaWxhYmxl
KQpAQCAtMTUxMSw3ICsxNTUyLDcgQEAgV0kuX2ZyYW1lV2FzQWRkZWQgPSBmdW5jdGlvbihldmVu
dCkKIAogV0kuX21haW5GcmFtZURpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQogewotICAgIFdJ
Ll91cGRhdGVEb3dubG9hZFRhYkJhckJ1dHRvbigpOworICAgIFdJLl91cGRhdGVEb3dubG9hZFRv
b2xiYXJCdXR0b24oKTsKIAogICAgIFdJLnVwZGF0ZVdpbmRvd1RpdGxlKCk7CiB9OwpAQCAtMTUy
Nyw3ICsxNTY4LDcgQEAgV0kuX21haW5SZXNvdXJjZURpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50
KQogICAgICAgICBXSS5fcmVzdG9yZUNvb2tpZUZvck9wZW5UYWJzKFdJLlN0YXRlUmVzdG9yYXRp
b25UeXBlLk5hdmlnYXRpb24pOwogICAgIH0pOwogCi0gICAgV0kuX3VwZGF0ZURvd25sb2FkVGFi
QmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZURvd25sb2FkVG9vbGJhckJ1dHRvbigpOwogCiAg
ICAgV0kudXBkYXRlV2luZG93VGl0bGUoKTsKIH07CkBAIC0xNTQ2LDggKzE1ODcsNiBAQCBXSS5f
cmVzdG9yZUNvb2tpZUZvck9wZW5UYWJzID0gZnVuY3Rpb24ocmVzdG9yYXRpb25UeXBlKQogICAg
ICAgICB2YXIgdGFiQ29udGVudFZpZXcgPSB0YWJCYXJJdGVtLnJlcHJlc2VudGVkT2JqZWN0Owog
ICAgICAgICBpZiAoISh0YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRWaWV3
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3LmNv
bnN0cnVjdG9yLnNob3VsZFNhdmVUYWIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB0YWJDb250ZW50Vmlldy5yZXN0b3JlU3RhdGVGcm9tQ29va2llKHJlc3RvcmF0aW9uVHlwZSk7
CiAgICAgfQogCkBAIC0xNTY5LDggKzE2MDgsNiBAQCBXSS5fc2F2ZUNvb2tpZUZvck9wZW5UYWJz
ID0gZnVuY3Rpb24oKQogICAgICAgICB2YXIgdGFiQ29udGVudFZpZXcgPSB0YWJCYXJJdGVtLnJl
cHJlc2VudGVkT2JqZWN0OwogICAgICAgICBpZiAoISh0YWJDb250ZW50VmlldyBpbnN0YW5jZW9m
IFdJLlRhYkNvbnRlbnRWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAo
IXRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnNob3VsZFNhdmVUYWIoKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB0YWJDb250ZW50Vmlldy5zYXZlU3RhdGVUb0Nvb2tpZSgpOwog
ICAgIH0KIH07CkBAIC0xNTk1LDYgKzE2MzIsNyBAQCBXSS5fd2luZG93Qmx1cnJlZCA9IGZ1bmN0
aW9uKGV2ZW50KQogCiBXSS5fd2luZG93UmVzaXplZCA9IGZ1bmN0aW9uKGV2ZW50KQogeworICAg
IFdJLnRvb2xiYXIudXBkYXRlTGF5b3V0KFdJLlZpZXcuTGF5b3V0UmVhc29uLlJlc2l6ZSk7CiAg
ICAgV0kudGFiQmFyLnVwZGF0ZUxheW91dChXSS5WaWV3LkxheW91dFJlYXNvbi5SZXNpemUpOwog
ICAgIFdJLl90YWJCcm93c2VyU2l6ZURpZENoYW5nZSgpOwogICAgIFdJLl91cGRhdGVTaGVldFJl
Y3QoKTsKQEAgLTE2MzgsNiArMTY3NiwxMiBAQCBXSS5fd2luZG93S2V5VXAgPSBmdW5jdGlvbihl
dmVudCkKICAgICBXSS5fdXBkYXRlTW9kaWZpZXJLZXlzKGV2ZW50KTsKIH07CiAKK1dJLl9tb3Vz
ZURvd24gPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBpZiAoV0kudG9vbGJhci5lbGVtZW50LmNv
bnRhaW5zKGV2ZW50LnRhcmdldCkpCisgICAgICAgIFdJLl90b29sYmFyTW91c2VEb3duKGV2ZW50
KTsKK307CisKIFdJLl9tb3VzZU1vdmVkID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgV0kuX3Vw
ZGF0ZU1vZGlmaWVyS2V5cyhldmVudCk7CkBAIC0xNzIyLDE4ICsxNzY2LDE2IEBAIFdJLl90b2dn
bGVQcmV2aW91c0RvY2tDb25maWd1cmF0aW9uID0gZnVuY3Rpb24oZXZlbnQpCiBXSS5fdXBkYXRl
RG9ja05hdmlnYXRpb25JdGVtcyA9IGZ1bmN0aW9uKCkKIHsKICAgICBpZiAoV0kuX2RvY2tpbmdB
dmFpbGFibGUgfHwgV0kuZG9ja2VkKSB7Ci0gICAgICAgIFdJLl9jbG9zZVRhYkJhckJ1dHRvbi5o
aWRkZW4gPSAhV0kuZG9ja2VkOwotICAgICAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uLmhpZGRl
biA9IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uVW5kb2Nr
ZWQ7Ci0gICAgICAgIFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0dG9uLmhpZGRlbiA9IFdJLl9kb2Nr
Q29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tOwotICAgICAgICBX
SS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24g
PT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0IHx8IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9
PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdDsKKyAgICAgICAgV0kuX2Nsb3NlVG9vbGJhckJ1
dHRvbi5oaWRkZW4gPSAhV0kuZG9ja2VkOworICAgICAgICBXSS5fdW5kb2NrVG9vbGJhckJ1dHRv
bi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9u
LlVuZG9ja2VkOworICAgICAgICBXSS5fZG9ja0JvdHRvbVRvb2xiYXJCdXR0b24uaGlkZGVuID0g
V0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5Cb3R0b207Cisg
ICAgICAgIFdJLl9kb2NrVG9TaWRlVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZp
Z3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0IHx8IFdJLl9kb2NrQ29uZmln
dXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdDsKICAgICB9IGVsc2UgewotICAg
ICAgICBXSS5fY2xvc2VUYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgV0kuX3Vu
ZG9ja1RhYkJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwotICAgICAgICBXSS5fZG9ja0JvdHRvbVRh
YkJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwotICAgICAgICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1
dHRvbi5oaWRkZW4gPSB0cnVlOworICAgICAgICBXSS5fY2xvc2VUb29sYmFyQnV0dG9uLmhpZGRl
biA9IHRydWU7CisgICAgICAgIFdJLl91bmRvY2tUb29sYmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7
CisgICAgICAgIFdJLl9kb2NrQm90dG9tVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOworICAg
ICAgICBXSS5fZG9ja1RvU2lkZVRvb2xiYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKICAgICB9Ci0K
LSAgICBXSS5fdXBkYXRlVGFiQmFyRGl2aWRlcnMoKTsKIH07CiAKIFdJLl90YWJCcm93c2VyU2l6
ZURpZENoYW5nZSA9IGZ1bmN0aW9uKCkKQEAgLTE3NjMsNiArMTgwNSw3IEBAIFdJLl9zaWRlYmFy
V2lkdGhEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKIFdJLl9zZXR1cFZpZXdIaWVyYXJjaHkg
PSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHJvb3RWaWV3ID0gV0kuVmlldy5yb290VmlldygpOwor
ICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcoV0kudG9vbGJhcik7CiAgICAgcm9vdFZpZXcuYWRkU3Vi
dmlldyhXSS50YWJCYXIpOwogICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcoV0kubmF2aWdhdGlvblNp
ZGViYXIpOwogICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcoV0kudGFiQnJvd3Nlcik7CkBAIC0xNzg4
LDYgKzE4MzEsMjAgQEAgV0kuX3RhYkJyb3dzZXJTZWxlY3RlZFRhYkNvbnRlbnRWaWV3RGlkQ2hh
bmdlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgV0kuaGlkZVNwbGl0Q29uc29sZSgpOwogfTsKIAor
V0kuX3Rvb2xiYXJNb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBpZiAoZXZlbnQu
Y3RybEtleSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFdJLl9kb2NrQ29uZmlndXJhdGlv
biA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uUmlnaHQgfHwgV0kuX2RvY2tDb25maWd1cmF0aW9u
ID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0KQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoV0kuZG9ja2VkKQorICAgICAgICBXSS5fZG9ja2VkUmVzaXplck1vdXNlRG93bihldmVudCk7
CisgICAgZWxzZQorICAgICAgICBXSS5fbW92ZVdpbmRvd01vdXNlRG93bihldmVudCk7Cit9Owor
CiBXSS5fZG9ja2VkUmVzaXplck1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIGlm
IChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtleSkKQEAgLTE3OTcsNyArMTg1NCw4
IEBAIFdJLl9kb2NrZWRSZXNpemVyTW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIE9ubHkgc3RhcnQgZHJhZ2dpbmcgaWYgdGhlIHRhcmdldCBpcyBv
bmUgb2YgdGhlIGVsZW1lbnRzIHRoYXQgd2UgZXhwZWN0LgotICAgIGlmIChldmVudC50YXJnZXQg
IT09IFdJLl9kb2NrZWRSZXNpemVyRWxlbWVudCkKKyAgICBpZiAoZXZlbnQudGFyZ2V0LmlkICE9
PSAiZG9ja2VkLXJlc2l6ZXIiICYmICFldmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0
b29sYmFyIikgJiYKKyAgICAgICAgIWV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImZs
ZXhpYmxlLXNwYWNlIikgJiYgIWV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoIml0ZW0t
c2VjdGlvbiIpKQogICAgICAgICByZXR1cm47CiAKICAgICBldmVudFtXSS5Qb3BvdmVyLkV2ZW50
UHJldmVudERpc21pc3NTeW1ib2xdID0gdHJ1ZTsKQEAgLTE4NjUsNiArMTkyMyw1NCBAQCBXSS5f
ZG9ja2VkUmVzaXplck1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIFdJLmVsZW1lbnRE
cmFnU3RhcnQocmVzaXplckVsZW1lbnQsIGRvY2tlZFJlc2l6ZXJEcmFnLCBkb2NrZWRSZXNpemVy
RHJhZ0VuZCwgZXZlbnQsIFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3Vy
YXRpb24uQm90dG9tID8gInJvdy1yZXNpemUiIDogImNvbC1yZXNpemUiKTsKIH07CiAKK1dJLl9t
b3ZlV2luZG93TW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgY29uc29sZS5hc3Nl
cnQoIVdJLmRvY2tlZCk7CisKKyAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8IGV2ZW50LmN0
cmxLZXkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE9ubHkgc3RhcnQgZHJhZ2dpbmcgaWYg
dGhlIHRhcmdldCBpcyBvbmUgb2YgdGhlIGVsZW1lbnRzIHRoYXQgd2UgZXhwZWN0LgorICAgIGlm
ICghZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygidG9vbGJhciIpICYmICFldmVudC50
YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGV4aWJsZS1zcGFjZSIpICYmCisgICAgICAgICFl
dmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJpdGVtLXNlY3Rpb24iKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZXZlbnRbV0kuUG9wb3Zlci5FdmVudFByZXZlbnREaXNtaXNzU3ltYm9s
XSA9IHRydWU7CisKKyAgICBpZiAoV0kuUGxhdGZvcm0ubmFtZSA9PT0gIm1hYyIpIHsKKyAgICAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnN0YXJ0V2luZG93RHJhZygpOworICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGxh
c3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKKyAgICB2YXIgbGFzdFNjcmVlblkgPSBldmVudC5z
Y3JlZW5ZOworCisgICAgZnVuY3Rpb24gdG9vbGJhckRyYWcoZXZlbnQpCisgICAgeworICAgICAg
ICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHZhciB4ID0gZXZlbnQuc2NyZWVuWCAtIGxhc3RTY3JlZW5YOworICAgICAgICB2YXIgeSA9IGV2
ZW50LnNjcmVlblkgLSBsYXN0U2NyZWVuWTsKKworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3QubW92ZVdpbmRvd0J5KHgsIHkpOworCisgICAgICAgIGxhc3RTY3JlZW5YID0gZXZlbnQuc2Ny
ZWVuWDsKKyAgICAgICAgbGFzdFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHRvb2xiYXJEcmFnRW5kKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50
LmJ1dHRvbiAhPT0gMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXSS5lbGVtZW50
RHJhZ0VuZChldmVudCk7CisgICAgfQorCisgICAgV0kuZWxlbWVudERyYWdTdGFydChldmVudC50
YXJnZXQsIHRvb2xiYXJEcmFnLCB0b29sYmFyRHJhZ0VuZCwgZXZlbnQsICJkZWZhdWx0Iik7Cit9
OworCiBXSS5fZG9tU3RvcmFnZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAg
IFdJLnNob3dTdG9yYWdlVGFiKHtpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmln
YXRpb25Jbml0aWF0b3IuSW5zcGVjdH0pOwpAQCAtMTg5Myw3ICsxOTk5LDcgQEAgV0kuX2RvbU5v
ZGVXYXNJbnNwZWN0ZWQgPSBmdW5jdGlvbihldmVudCkKIAogV0kuX2luc3BlY3RNb2RlU3RhdGVD
aGFuZ2VkID0gZnVuY3Rpb24oZXZlbnQpCiB7Ci0gICAgV0kuX2luc3BlY3RNb2RlVGFiQmFyQnV0
dG9uLmFjdGl2YXRlZCA9IFdJLmRvbU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFibGVkOworICAgIFdJ
Ll9pbnNwZWN0TW9kZVRvb2xiYXJCdXR0b24uYWN0aXZhdGVkID0gV0kuZG9tTWFuYWdlci5pbnNw
ZWN0TW9kZUVuYWJsZWQ7CiB9OwogCiBXSS5fdG9nZ2xlSW5zcGVjdE1vZGUgPSBmdW5jdGlvbihl
dmVudCkKQEAgLTE5MDEsNyArMjAwNyw3IEBAIFdJLl90b2dnbGVJbnNwZWN0TW9kZSA9IGZ1bmN0
aW9uKGV2ZW50KQogICAgIFdJLmRvbU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFibGVkID0gIVdJLmRv
bU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFibGVkOwogfTsKIAotV0kuX2hhbmRsZURldmljZVNldHRp
bmdzVGFiQmFyQnV0dG9uQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQorV0kuX2hhbmRsZURldmlj
ZVNldHRpbmdzVG9vbGJhckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBp
ZiAoV0kuX2RldmljZVNldHRpbmdzUG9wb3ZlcikgewogICAgICAgICBXSS5fZGV2aWNlU2V0dGlu
Z3NQb3BvdmVyLmRpc21pc3MoKTsKQEAgLTE5MTIsNyArMjAxOCw3IEBAIFdJLl9oYW5kbGVEZXZp
Y2VTZXR0aW5nc1RhYkJhckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKICAgICBsZXQg
dGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CiAKICAgICBmdW5jdGlvbiB1cGRhdGVB
Y3RpdmF0ZWRTdGF0ZSgpIHsKLSAgICAgICAgV0kuX2RldmljZVNldHRpbmdzVGFiQmFyQnV0dG9u
LmFjdGl2YXRlZCA9IFdJLl9vdmVycmlkZW5EZXZpY2VVc2VyQWdlbnQgfHwgV0kuX292ZXJyaWRl
bkRldmljZVNldHRpbmdzLnNpemUgPiAwOworICAgICAgICBXSS5fZGV2aWNlU2V0dGluZ3NUb29s
YmFyQnV0dG9uLmFjdGl2YXRlZCA9IFdJLl9vdmVycmlkZW5EZXZpY2VVc2VyQWdlbnQgfHwgV0ku
X292ZXJyaWRlbkRldmljZVNldHRpbmdzLnNpemUgPiAwOwogICAgIH0KIAogICAgIGZ1bmN0aW9u
IGFwcGx5T3ZlcnJpZGRlblVzZXJBZ2VudCh2YWx1ZSwgZm9yY2UpIHsKQEAgLTE5OTAsMTAgKzIw
OTYsMTAgQEAgV0kuX2hhbmRsZURldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uQ2xpY2tlZCA9IGZ1
bmN0aW9uKGV2ZW50KQogICAgIH0KIAogICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZVRhcmdldEZyYW1l
KCkgewotICAgICAgICByZXR1cm4gV0kuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoV0kuX2Rldmlj
ZVNldHRpbmdzVGFiQmFyQnV0dG9uLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLnBh
ZCgyKTsKKyAgICAgICAgcmV0dXJuIFdJLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KFdJLl9kZXZp
Y2VTZXR0aW5nc1Rvb2xiYXJCdXR0b24uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7
CiAgICAgfQogCi0gICAgY29uc3QgcHJlZmVycmVkRWRnZXMgPSBbV0kuUmVjdEVkZ2UuTUFYX1ks
IFdJLlJlY3RFZGdlLk1BWF9YXTsKKyAgICBjb25zdCBwcmVmZXJyZWRFZGdlcyA9IFtXSS5SZWN0
RWRnZS5NQVhfWSwgV0kuUmVjdEVkZ2UuTUlOX1gsIFdJLlJlY3RFZGdlLk1BWF9YXTsKIAogICAg
IFdJLl9kZXZpY2VTZXR0aW5nc1BvcG92ZXIgPSBuZXcgV0kuUG9wb3ZlcihXSSk7CiAgICAgV0ku
X2RldmljZVNldHRpbmdzUG9wb3Zlci53aW5kb3dSZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZXZl
bnQpIHsKQEAgLTIyMDAsNyArMjMwNiw3IEBAIFdJLl9yZWxvYWRQYWdlRnJvbU9yaWdpbiA9IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHRhcmdldC5QYWdlQWdlbnQucmVsb2FkLmludm9rZSh7aWdub3Jl
Q2FjaGU6IHRydWV9KTsKIH07CiAKLVdJLl9yZWxvYWRUYWJCYXJCdXR0b25DbGlja2VkID0gZnVu
Y3Rpb24oZXZlbnQpCitXSS5fcmVsb2FkVG9vbGJhckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihl
dmVudCkKIHsKICAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmluc3BlY3Rpb25MZXZlbCA+
IDEpIHsKICAgICAgICAgV0kuX3JlbG9hZEluc3BlY3RlZEluc3BlY3RvcigpOwpAQCAtMjIxMiwx
MDYgKzIzMTgsMjkgQEAgV0kuX3JlbG9hZFRhYkJhckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihl
dmVudCkKICAgICB0YXJnZXQuUGFnZUFnZW50LnJlbG9hZC5pbnZva2Uoe2lnbm9yZUNhY2hlOiBX
SS5tb2RpZmllcktleXMuc2hpZnRLZXl9KTsKIH07CiAKLVdJLl91cGRhdGVSZWxvYWRUYWJCYXJC
dXR0b24gPSBmdW5jdGlvbigpCitXSS5fdXBkYXRlUmVsb2FkVG9vbGJhckJ1dHRvbiA9IGZ1bmN0
aW9uKCkKIHsKLSAgICBpZiAoIVdJLl9yZWxvYWRUYWJCYXJCdXR0b24pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFdJLl9yZWxvYWRUYWJCYXJCdXR0b24uaGlkZGVuID0gIUluc3BlY3RvckJhY2tl
bmQuaGFzRG9tYWluKCJQYWdlIik7Ci0gICAgV0kuX3VwZGF0ZVRhYkJhckRpdmlkZXJzKCk7Cisg
ICAgV0kuX3JlbG9hZFRvb2xiYXJCdXR0b24uaGlkZGVuID0gIUluc3BlY3RvckJhY2tlbmQuaGFz
RG9tYWluKCJQYWdlIik7CiB9OwogCi1XSS5fdXBkYXRlRG93bmxvYWRUYWJCYXJCdXR0b24gPSBm
dW5jdGlvbigpCitXSS5fdXBkYXRlRG93bmxvYWRUb29sYmFyQnV0dG9uID0gZnVuY3Rpb24oKQog
ewotICAgIGlmICghV0kuX2Rvd25sb2FkVGFiQmFyQnV0dG9uKQotICAgICAgICByZXR1cm47Ci0K
ICAgICBpZiAoIUluc3BlY3RvckJhY2tlbmQuaGFzRG9tYWluKCJQYWdlIikpIHsKLSAgICAgICAg
V0kuX2Rvd25sb2FkVGFiQmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7Ci0gICAgICAgIFdJLl91cGRh
dGVUYWJCYXJEaXZpZGVycygpOworICAgICAgICBXSS5fZG93bmxvYWRUb29sYmFyQnV0dG9uLmhp
ZGRlbiA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoV0kuX2Rvd25s
b2FkaW5nUGFnZSkgewotICAgICAgICBXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24uZW5hYmxlZCA9
IGZhbHNlOworICAgICAgICBXSS5fZG93bmxvYWRUb29sYmFyQnV0dG9uLmVuYWJsZWQgPSBmYWxz
ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFdJLl9kb3dubG9hZFRhYkJhckJ1dHRv
bi5lbmFibGVkID0gV0kuY2FuQXJjaGl2ZU1haW5GcmFtZSgpOwotfTsKLQotV0kuX3VwZGF0ZUlu
c3BlY3RNb2RlVGFiQmFyQnV0dG9uID0gZnVuY3Rpb24oKQotewotICAgIFdJLl9pbnNwZWN0TW9k
ZVRhYkJhckJ1dHRvbi5oaWRkZW4gPSAhSW5zcGVjdG9yQmFja2VuZC5oYXNEb21haW4oIkRPTSIp
OwotICAgIFdJLl91cGRhdGVUYWJCYXJEaXZpZGVycygpOwotfTsKLQotV0kuX3VwZGF0ZVRhYkJh
ckRpdmlkZXJzID0gZnVuY3Rpb24oKQotewotICAgIGxldCBjbG9zZUhpZGRlbiA9IFdJLl9jbG9z
ZVRhYkJhckJ1dHRvbi5oaWRkZW47Ci0gICAgbGV0IGRvY2tUb1NpZGVIaWRkZW4gPSBXSS5fZG9j
a1RvU2lkZVRhYkJhckJ1dHRvbi5oaWRkZW47Ci0gICAgbGV0IGRvY2tCb3R0b21IaWRkZW4gPSBX
SS5fZG9ja0JvdHRvbVRhYkJhckJ1dHRvbi5oaWRkZW47Ci0gICAgbGV0IHVuZG9ja0hpZGRlbiA9
IFdJLl91bmRvY2tUYWJCYXJCdXR0b24uaGlkZGVuOwotCi0gICAgbGV0IGluc3BlY3RNb2RlSGlk
ZGVuID0gV0kuX2luc3BlY3RNb2RlVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgZGV2aWNl
U2V0dGluZ3NIaWRkZW4gPSBXSS5fZGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0b24gJiYgV0kuX2Rl
dmljZVNldHRpbmdzVGFiQmFyQnV0dG9uLmhpZGRlbjsKLSAgICBsZXQgcmVsb2FkSGlkZGVuID0g
V0kuX3JlbG9hZFRhYkJhckJ1dHRvbiAmJiBXSS5fcmVsb2FkVGFiQmFyQnV0dG9uLmhpZGRlbjsK
LSAgICBsZXQgZG93bmxvYWRIaWRkZW4gPSBXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24gJiYgV0ku
X2Rvd25sb2FkVGFiQmFyQnV0dG9uLmhpZGRlbjsKLQotICAgIGxldCB3YXJuaW5nc0hpZGRlbiA9
IFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24uaGlkZGVuOwotICAgIGxldCBlcnJvcnNI
aWRkZW4gPSBXSS5fY29uc29sZUVycm9yc1RhYkJhckJ1dHRvbi5oaWRkZW47Ci0KLSAgICAvLyBI
aWRlIHRoZSBkaXZpZGVyIGlmIGV2ZXJ5dGhpbmcgdG8gdGhlIGxlZnQgaXMgaGlkZGVuIE9SIGlm
IGV2ZXJ5dGhpbmcgdG8gdGhlIHJpZ2h0IGlzIGhpZGRlbi4KLSAgICBXSS5fZG9ja0RpdmlkZXJU
YWJCYXJOYXZpZ2F0aW9uSXRlbS5oaWRkZW4gPSAoY2xvc2VIaWRkZW4gJiYgZG9ja1RvU2lkZUhp
ZGRlbiAmJiBkb2NrQm90dG9tSGlkZGVuICYmIHVuZG9ja0hpZGRlbikgfHwgKGluc3BlY3RNb2Rl
SGlkZGVuICYmIGRldmljZVNldHRpbmdzSGlkZGVuICYmIHJlbG9hZEhpZGRlbiAmJiBkb3dubG9h
ZEhpZGRlbiAmJiB3YXJuaW5nc0hpZGRlbiAmJiBlcnJvcnNIaWRkZW4pOwotICAgIFdJLl9jb25z
b2xlRGl2aWRlck5hdmlnYXRpb25JdGVtLmhpZGRlbiA9IChjbG9zZUhpZGRlbiAmJiBkb2NrVG9T
aWRlSGlkZGVuICYmIGRvY2tCb3R0b21IaWRkZW4gJiYgdW5kb2NrSGlkZGVuICYmIGluc3BlY3RN
b2RlSGlkZGVuICYmIGRldmljZVNldHRpbmdzSGlkZGVuICYmIHJlbG9hZEhpZGRlbiAmJiBkb3du
bG9hZEhpZGRlbikgfHwgKHdhcm5pbmdzSGlkZGVuICYmIGVycm9yc0hpZGRlbik7Ci0KLSAgICBX
SS50YWJCYXIubmVlZHNMYXlvdXQoKTsKKyAgICBXSS5fZG93bmxvYWRUb29sYmFyQnV0dG9uLmVu
YWJsZWQgPSBXSS5jYW5BcmNoaXZlTWFpbkZyYW1lKCk7CiB9OwogCi1XSS5fdXBkYXRlQ29uc29s
ZVRhYkJhckJ1dHRvbnMgPSBmdW5jdGlvbigpCitXSS5fdXBkYXRlSW5zcGVjdE1vZGVUb29sYmFy
QnV0dG9uID0gZnVuY3Rpb24oKQogewotICAgIGZ1bmN0aW9uIHB1bHNlKGVsZW1lbnQpIHsKLSAg
ICAgICAgLy8gV2UgbmVlZCB0byBmb3JjZSBhIHN0eWxlIGludmFsaWRhdGlvbiBpbiB0aGUgY2Fz
ZSB3aGVyZSB3ZSBhbHJlYWR5Ci0gICAgICAgIC8vIHdlcmUgYW5pbWF0aW5nIHRoaXMgaXRlbSBh
ZnRlciB3ZSd2ZSByZW1vdmVkIHRoZSBwdWxzaW5nIENTUyBjbGFzcy4KLSAgICAgICAgaWYgKGVs
ZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJwdWxzaW5nIikpIHsKLSAgICAgICAgICAgIGVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgicHVsc2luZyIpOwotICAgICAgICAgICAgZWxlbWVudC5yZWNh
bGN1bGF0ZVN0eWxlcygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJwdWxzaW5nIik7Ci0gICAgICAgICAgICB9LCB7b25j
ZTogdHJ1ZX0pOwotICAgICAgICB9Ci0KLSAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJw
dWxzaW5nIik7Ci0gICAgfQotICAgIGxldCB3YXJuaW5nQ291bnQgPSBXSS5jb25zb2xlTWFuYWdl
ci53YXJuaW5nQ291bnQ7Ci0gICAgaWYgKHdhcm5pbmdDb3VudCkgewotICAgICAgICBsZXQgd2Fy
bmluZ0Zvcm1hdCA9ICh3YXJuaW5nQ291bnQgPT09IDEpID8gV0kuVUlTdHJpbmcoIkNsaWNrIHRv
IHNob3cgJWQgd2FybmluZyBpbiB0aGUgQ29uc29sZSIpIDogV0kuVUlTdHJpbmcoIkNsaWNrIHRv
IHNob3cgJWQgd2FybmluZ3MgaW4gdGhlIENvbnNvbGUiKTsKLSAgICAgICAgV0kuX2NvbnNvbGVX
YXJuaW5nc1RhYkJhckJ1dHRvbi50b29sdGlwID0gd2FybmluZ0Zvcm1hdC5mb3JtYXQod2Fybmlu
Z0NvdW50KTsKLSAgICAgICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5oaWRkZW4g
PSBmYWxzZTsKLQotICAgICAgICBpZiAod2FybmluZ0NvdW50ICE9PSBXSS5fY29uc29sZVdhcm5p
bmdzVGFiQmFyQnV0dG9uLl9fbGFzdFdhcm5pbmdDb3VudCkKLSAgICAgICAgICAgIHB1bHNlKFdJ
Ll9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24uZWxlbWVudCk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwotICAg
IH0KLQotICAgIGxldCBlcnJvckNvdW50ID0gV0kuY29uc29sZU1hbmFnZXIuZXJyb3JDb3VudDsK
LSAgICBpZiAoZXJyb3JDb3VudCkgewotICAgICAgICBsZXQgZXJyb3JGb3JtYXQgPSAoZXJyb3JD
b3VudCA9PT0gMSkgPyBXSS5VSVN0cmluZygiQ2xpY2sgdG8gc2hvdyAlZCBlcnJvciBpbiB0aGUg
Q29uc29sZSIpIDogV0kuVUlTdHJpbmcoIkNsaWNrIHRvIHNob3cgJWQgZXJyb3JzIGluIHRoZSBD
b25zb2xlIik7Ci0gICAgICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLnRvb2x0aXAg
PSBlcnJvckZvcm1hdC5mb3JtYXQoZXJyb3JDb3VudCk7Ci0gICAgICAgIFdJLl9jb25zb2xlRXJy
b3JzVGFiQmFyQnV0dG9uLmhpZGRlbiA9IGZhbHNlOwotCi0gICAgICAgIGlmIChlcnJvckNvdW50
ICE9PSBXSS5fY29uc29sZUVycm9yc1RhYkJhckJ1dHRvbi5fX2xhc3RFcnJvckNvdW50KQotICAg
ICAgICAgICAgcHVsc2UoV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0b24uZWxlbWVudCk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0b24uaGlkZGVu
ID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBXSS5fdXBkYXRlVGFiQmFyRGl2aWRlcnMoKTsKLQotICAg
IFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24uX19sYXN0V2FybmluZ0NvdW50ID0gd2Fy
bmluZ0NvdW50OwotICAgIFdJLl9jb25zb2xlRXJyb3JzVGFiQmFyQnV0dG9uLl9fbGFzdEVycm9y
Q291bnQgPSBlcnJvckNvdW50OworICAgIFdJLl9pbnNwZWN0TW9kZVRvb2xiYXJCdXR0b24uaGlk
ZGVuID0gIUluc3BlY3RvckJhY2tlbmQuaGFzRG9tYWluKCJET00iKTsKIH07CiAKIFdJLl9zaG93
Q29uc29sZVRhYiA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMjY2OCw5ICsyNjk3LDE0IEBAIFdJLnNl
dExheW91dERpcmVjdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKQogICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5yZW9wZW4oKTsKIH07CiAKK1dJLl9zaG93TmV3VGFiRnJvbVNob3J0Y3V0ID0gZnVuY3Rp
b24oKQoreworICAgIFdJLnNob3dOZXdUYWJUYWIoe2luaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dz
ZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5LZXlib2FyZFNob3J0Y3V0fSk7Cit9CisKIFdJLl9z
aG93VGFiQXRJbmRleEZyb21TaG9ydGN1dCA9IGZ1bmN0aW9uKGkpCiB7Ci0gICAgaWYgKGkgPD0g
V0kudGFiQmFyLnRhYkNvdW50KSB7CisgICAgaWYgKGkgPD0gV0kudGFiQmFyLnRhYkJhckl0ZW1z
Lmxlbmd0aCkgewogICAgICAgICBXSS50YWJCYXIuc2VsZWN0VGFiQmFySXRlbShpIC0gMSwgewog
ICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5p
dGlhdG9yLktleWJvYXJkU2hvcnRjdXQsCiAgICAgICAgIH0pOwpAQCAtMzEyMCwxMiArMzE1NCwx
MiBAQCBXSS5yZXZlcnRET01DaGFuZ2VzID0gZnVuY3Rpb24oZG9tQ2hhbmdlcykKIFdJLmFyY2hp
dmVNYWluRnJhbWUgPSBmdW5jdGlvbigpCiB7CiAgICAgV0kuX2Rvd25sb2FkaW5nUGFnZSA9IHRy
dWU7Ci0gICAgV0kuX3VwZGF0ZURvd25sb2FkVGFiQmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0
ZURvd25sb2FkVG9vbGJhckJ1dHRvbigpOwogCiAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5n
TWFpblRhcmdldCgpOwogICAgIHRhcmdldC5QYWdlQWdlbnQuYXJjaGl2ZSgoZXJyb3IsIGRhdGEp
ID0+IHsKICAgICAgICAgV0kuX2Rvd25sb2FkaW5nUGFnZSA9IGZhbHNlOwotICAgICAgICBXSS5f
dXBkYXRlRG93bmxvYWRUYWJCYXJCdXR0b24oKTsKKyAgICAgICAgV0kuX3VwZGF0ZURvd25sb2Fk
VG9vbGJhckJ1dHRvbigpOwogCiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
U2V0dGluZy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0
dGluZy5qcwppbmRleCAxYWY4N2E4M2NlOGU2NTkwY2YyOWZhY2RjODMxNzJkYTUzNzE4NmI5Li5k
NGMxNTRkOTczOWY4Y2QyZDdlOGUwZjRlNTFlYjhkZDhjZmI2OWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCkBAIC0yMTcs
NiArMjE3LDcgQEAgV0kuc2V0dGluZ3MgPSB7CiAKICAgICAvLyBFeHBlcmltZW50YWwKICAgICBl
eHBlcmltZW50YWxFbmFibGVQcmV2aWV3RmVhdHVyZXM6IG5ldyBXSS5TZXR0aW5nKCJleHBlcmlt
ZW50YWwtZW5hYmxlLXByZXZpZXctZmVhdHVyZXMiLCB0cnVlKSwKKyAgICBleHBlcmltZW50YWxF
bmFibGVOZXdUYWJCYXI6IG5ldyBXSS5TZXR0aW5nKCJleHBlcmltZW50YWwtZW5hYmxlLW5ldy10
YWItYmFyIiwgZmFsc2UpLAogICAgIGV4cGVyaW1lbnRhbEVuYWJsZVN0eWxlc0p1bXBUb0VmZmVj
dGl2ZTogbmV3IFdJLlNldHRpbmcoImV4cGVyaW1lbnRhbC1zdHlsZXMtanVtcC10by1lZmZlY3Rp
dmUiLCBmYWxzZSksCiAKICAgICAvLyBQcm90b2NvbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29uc29sZU1hbmFnZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xlTWFu
YWdlci5qcwppbmRleCA4MmZiYmYxNTcwYzQ5OWZhM2EyMTEzMjJlYjU3ZTUzY2VmNmJhNWQ2Li5k
OTBlOWFhZjM0NDA0MWZjYjI5NGM2NzBmZDYzODZlMGVlNzFjMmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xlTWFuYWdl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9Db25zb2xlTWFuYWdlci5qcwpAQCAtMzAsMTEgKzMwLDggQEAgV0kuQ29uc29sZU1hbmFnZXIg
PSBjbGFzcyBDb25zb2xlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAg
c3VwZXIoKTsKIAotICAgICAgICB0aGlzLl93YXJuaW5nQ291bnQgPSAwOwotICAgICAgICB0aGlz
Ll9lcnJvckNvdW50ID0gMDsKICAgICAgICAgdGhpcy5faXNzdWVzID0gW107CiAKLSAgICAgICAg
dGhpcy5fbGFzdE1lc3NhZ2VMZXZlbCA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NsZWFyTWVzc2Fn
ZXNSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5faXNOZXdQYWdlT3JSZWxvYWQgPSBm
YWxzZTsKICAgICAgICAgdGhpcy5fcmVtb3RlT2JqZWN0c1RvUmVsZWFzZSA9IG51bGw7CkBAIC02
NSw4ICs2Miw2IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IHdhcm5pbmdDb3VudCgp
IHsgcmV0dXJuIHRoaXMuX3dhcm5pbmdDb3VudDsgfQotICAgIGdldCBlcnJvckNvdW50KCkgeyBy
ZXR1cm4gdGhpcy5fZXJyb3JDb3VudDsgfQogICAgIGdldCBjdXN0b21Mb2dnaW5nQ2hhbm5lbHMo
KSB7IHJldHVybiB0aGlzLl9jdXN0b21Mb2dnaW5nQ2hhbm5lbHM7IH0KICAgICBnZXQgbG9nQ2hh
bm5lbFNvdXJjZXMoKSB7IHJldHVybiB0aGlzLl9sb2dnaW5nQ2hhbm5lbFNvdXJjZXM7IH0KIApA
QCAtMTAxLDExICs5Niw5IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBsZXQgbWVzc2FnZSA9IG5ldyBXSS5Db25z
b2xlTWVzc2FnZSh0YXJnZXQsIHNvdXJjZSwgbGV2ZWwsIHRleHQsIHR5cGUsIHVybCwgbGluZSwg
Y29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgbnVsbCk7CiAKLSAg
ICAgICAgdGhpcy5faW5jcmVtZW50TWVzc2FnZUxldmVsQ291bnQobWVzc2FnZS5sZXZlbCwgbWVz
c2FnZS5yZXBlYXRDb3VudCk7Ci0KICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCB7bWVzc2FnZX0pOwogCi0g
ICAgICAgIGlmIChtZXNzYWdlLmxldmVsID09PSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2
ZWwuV2FybmluZyB8fCBtZXNzYWdlLmxldmVsID09PSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdl
TGV2ZWwuRXJyb3IpIHsKKyAgICAgICAgaWYgKG1lc3NhZ2UubGV2ZWwgPT09ICJ3YXJuaW5nIiB8
fCBtZXNzYWdlLmxldmVsID09PSAiZXJyb3IiKSB7CiAgICAgICAgICAgICBsZXQgaXNzdWUgPSBu
ZXcgV0kuSXNzdWVNZXNzYWdlKG1lc3NhZ2UpOwogICAgICAgICAgICAgdGhpcy5faXNzdWVzLnB1
c2goaXNzdWUpOwogCkBAIC0xMjcsMTIgKzEyMCw4IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xh
c3MgQ29uc29sZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIC8vIEZyb250
ZW5kIHJlcXVlc3RlZCAiY2xlYXIgY29uc29sZSIgYW5kIEJhY2tlbmQgc3VjY2Vzc2Z1bGx5IGNv
bXBsZXRlZCB0aGUgcmVxdWVzdC4KICAgICAgICAgICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1
ZXN0ZWQgPSBmYWxzZTsKIAotICAgICAgICAgICAgdGhpcy5fd2FybmluZ0NvdW50ID0gMDsKLSAg
ICAgICAgICAgIHRoaXMuX2Vycm9yQ291bnQgPSAwOwogICAgICAgICAgICAgdGhpcy5faXNzdWVz
ID0gW107CiAKLSAgICAgICAgICAgIHRoaXMuX2xhc3RNZXNzYWdlTGV2ZWwgPSBudWxsOwotCiAg
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db25zb2xlTWFuYWdl
ci5FdmVudC5DbGVhcmVkKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFJlY2Vp
dmVkIGFuIHVucmVxdWVzdGVkIGNsZWFyIGNvbnNvbGUgZXZlbnQuCkBAIC0xNDUsOCArMTM0LDYg
QEAgV0kuQ29uc29sZU1hbmFnZXIgPSBjbGFzcyBDb25zb2xlTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZChjb3VudCkKICAgICB7Ci0gICAg
ICAgIHRoaXMuX2luY3JlbWVudE1lc3NhZ2VMZXZlbENvdW50KHRoaXMuX2xhc3RNZXNzYWdlTGV2
ZWwsIDEpOwotCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnNv
bGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwge2NvdW50
fSk7CiAgICAgfQogCkBAIC0xODIsMjAgKzE2OSw2IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xh
c3MgQ29uc29sZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9pbmNyZW1lbnRNZXNzYWdlTGV2ZWxDb3VudChsZXZlbCwgY291bnQpCi0gICAgewotICAg
ICAgICBzd2l0Y2ggKGxldmVsKSB7Ci0gICAgICAgIGNhc2UgV0kuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZUxldmVsLldhcm5pbmc6Ci0gICAgICAgICAgICB0aGlzLl93YXJuaW5nQ291bnQgKz0gY291
bnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXSS5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlTGV2ZWwuRXJyb3I6Ci0gICAgICAgICAgICB0aGlzLl9lcnJvckNvdW50ICs9IGNvdW50
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9sYXN0TWVz
c2FnZUxldmVsID0gbGV2ZWw7Ci0gICAgfQotCiAgICAgX2RlbGF5ZWRNZXNzYWdlc0NsZWFyZWQo
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2lzTmV3UGFnZU9yUmVsb2FkKSB7CkBAIC0yMDUs
MTIgKzE3OCw4IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICB0aGlzLl93YXJuaW5nQ291bnQgPSAwOwotICAgICAgICB0aGlzLl9lcnJvckNvdW50ID0g
MDsKICAgICAgICAgdGhpcy5faXNzdWVzID0gW107CiAKLSAgICAgICAgdGhpcy5fbGFzdE1lc3Nh
Z2VMZXZlbCA9IG51bGw7Ci0KICAgICAgICAgLy8gQSBjb25zb2xlLmNsZWFyKCkgb3IgY29tbWFu
ZCBsaW5lIGNsZWFyKCkgaGFwcGVuZWQuCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5q
cwppbmRleCA1MDUzYTgyNzY5ZGNiYjFhZGIwNjQwZGQ3NWZiMTljOGM5N2QzMGQ4Li42Mzc2ZTM1
MTNjODI5ODc4ZDlmOWU0NzgwNzY2MmVkYTI4YTk3ZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Zy9Cb290c3RyYXAuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvQm9vdHN0cmFwLmpzCkBAIC01Niw3
ICs1Niw3IEBAIFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMgPSBmdW5jdGlvbigpIHsKICAgICBj
b25zdCBEdW1wTWVzc2FnZXNTdGF0ZSA9IHtPZmY6ICJvZmYiLCBGaWx0ZXJpbmc6ICJmaWx0ZXJp
bmciLCBFdmVyeXRoaW5nOiAiZXZlcnl0aGluZyJ9OwogICAgIGNvbnN0IGR1bXBNZXNzYWdlc1Rv
b2xUaXAgPSBXSS51bmxvY2FsaXplZFN0cmluZygiRW5hYmxlIGR1bXAgaW5zcGVjdG9yIG1lc3Nh
Z2VzIHRvIGNvbnNvbGUuXG5TaGlmdC1jbGljayB0byBkdW1wIGFsbCBpbnNwZWN0b3IgbWVzc2Fn
ZXMgd2l0aCBubyBmaWx0ZXJpbmcuIik7CiAgICAgY29uc3QgZHVtcE1lc3NhZ2VzQWN0aXZhdGVk
VG9vbFRpcCA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCJEaXNhYmxlIGR1bXAgaW5zcGVjdG9yIG1l
c3NhZ2VzIHRvIGNvbnNvbGUiKTsKLSAgICBsZXQgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlv
bkl0ZW0gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiZHVtcC1tZXNzYWdl
cyIsIGR1bXBNZXNzYWdlc1Rvb2xUaXAsIGR1bXBNZXNzYWdlc0FjdGl2YXRlZFRvb2xUaXAsICJJ
bWFnZXMvQ29uc29sZS5zdmciKTsKKyAgICBsZXQgZHVtcE1lc3NhZ2VzVG9vbGJhckl0ZW0gPSBu
ZXcgV0kuQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbSgiZHVtcC1tZXNzYWdlcyIsIGR1bXBNZXNz
YWdlc1Rvb2xUaXAsIGR1bXBNZXNzYWdlc0FjdGl2YXRlZFRvb2xUaXAsICJJbWFnZXMvQ29uc29s
ZS5zdmciKTsKIAogICAgIGZ1bmN0aW9uIGR1bXBNZXNzYWdlc0N1cnJlbnRTdGF0ZSgpIHsKICAg
ICAgICAgaWYgKCFJbnNwZWN0b3JCYWNrZW5kLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2Vz
KQpAQCAtNzIsMjYgKzcyLDI3IEBAIFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMgPSBmdW5jdGlv
bigpIHsKICAgICAgICAgY2FzZSBEdW1wTWVzc2FnZXNTdGF0ZS5PZmY6CiAgICAgICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gZmFsc2U7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmZpbHRlck11bHRpcGxleGluZ0JhY2tlbmRJbnNw
ZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gZmFsc2U7Ci0gICAgICAgICAgICBkdW1wTWVzc2FnZXNU
YWJCYXJOYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGR1bXBN
ZXNzYWdlc1RhYkJhck5hdmlnYXRpb25JdGVtLmVsZW1lbnQuZmlyc3RDaGlsZC5zdHlsZS5yZW1v
dmVQcm9wZXJ0eSgiY29sb3IiKTsKKyAgICAgICAgICAgIGR1bXBNZXNzYWdlc1Rvb2xiYXJJdGVt
LmFjdGl2YXRlZCA9IGZhbHNlOworICAgICAgICAgICAgZHVtcE1lc3NhZ2VzVG9vbGJhckl0ZW0u
ZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiY29sb3IiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIER1bXBNZXNzYWdlc1N0YXRlLkZpbHRlcmluZzoKICAgICAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSB0cnVlOwog
ICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5maWx0ZXJNdWx0aXBsZXhpbmdCYWNrZW5kSW5z
cGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IHRydWU7Ci0gICAgICAgICAgICBkdW1wTWVzc2FnZXNU
YWJCYXJOYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgZHVtcE1l
c3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0uZWxlbWVudC5maXJzdENoaWxkLnN0eWxlLnJlbW92
ZVByb3BlcnR5KCJjb2xvciIpOworICAgICAgICAgICAgZHVtcE1lc3NhZ2VzVG9vbGJhckl0ZW0u
YWN0aXZhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGR1bXBNZXNzYWdlc1Rvb2xiYXJJdGVtLmVs
ZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoImNvbG9yIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBEdW1wTWVzc2FnZXNTdGF0ZS5FdmVyeXRoaW5nOgogICAgICAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IHRydWU7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmZpbHRlck11bHRpcGxleGluZ0JhY2tlbmRJbnNw
ZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gZmFsc2U7Ci0gICAgICAgICAgICBkdW1wTWVzc2FnZXNU
YWJCYXJOYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgZHVtcE1l
c3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0uZWxlbWVudC5maXJzdENoaWxkLnN0eWxlLmNvbG9y
ID0gInJnYigxNjQsIDQxLCAxNTQpIjsKKyAgICAgICAgICAgIGR1bXBNZXNzYWdlc1Rvb2xiYXJJ
dGVtLmFjdGl2YXRlZCA9IHRydWU7CisgICAgICAgICAgICBkdW1wTWVzc2FnZXNUb29sYmFySXRl
bS5lbGVtZW50LnN0eWxlLmNvbG9yID0gInJnYigxNjQsIDQxLCAxNTQpIjsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlnbm9yZUNoYW5nZXNUb1N0YXRlID0gZmFsc2U7
CiAgICAgfQogCi0gICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRM
aXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCAoKSA9PiB7Cisg
ICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShkdW1wTWVzc2FnZXNUb29sYmFySXRlbSwgV0ku
VG9vbGJhci5TZWN0aW9uLkNlbnRlclJpZ2h0KTsKKyAgICBkdW1wTWVzc2FnZXNUb29sYmFySXRl
bS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQs
ICgpID0+IHsKICAgICAgICAgbGV0IG5leHRTdGF0ZTsKICAgICAgICAgc3dpdGNoIChkdW1wTWVz
c2FnZXNDdXJyZW50U3RhdGUoKSkgewogICAgICAgICBjYXNlIER1bXBNZXNzYWdlc1N0YXRlLk9m
ZjoKQEAgLTExNiwyMSArMTE3LDE2IEBAIFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMgPSBmdW5j
dGlvbigpIHsKICAgICAvLyBOZXh0IExldmVsIEluc3BlY3Rvci4KICAgICBsZXQgaW5zcGVjdGlv
bkxldmVsID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmluc3BlY3Rpb25MZXZlbDsKICAgICBjb25z
dCBpbnNwZWN0SW5zcGVjdG9yVG9vbFRpcCA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCJPcGVuIFdl
YiBJbnNwZWN0b3IgWyVkXSIpLmZvcm1hdChpbnNwZWN0aW9uTGV2ZWwgKyAxKTsKLSAgICBsZXQg
aW5zcGVjdEluc3BlY3RvclRhYkJhck5hdmlnYXRpb25JdGVtID0gbmV3IFdJLkJ1dHRvbk5hdmln
YXRpb25JdGVtKCJpbnNwZWN0LWluc3BlY3RvciIsIGluc3BlY3RJbnNwZWN0b3JUb29sVGlwKTsK
LSAgICBpbnNwZWN0SW5zcGVjdG9yVGFiQmFyTmF2aWdhdGlvbkl0ZW0uZWxlbWVudC50ZXh0Q29u
dGVudCA9IGluc3BlY3Rpb25MZXZlbCArIDE7Ci0gICAgaW5zcGVjdEluc3BlY3RvclRhYkJhck5h
dmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZl
bnQuQ2xpY2tlZCwgKCkgPT4geworICAgIGxldCBpbnNwZWN0SW5zcGVjdG9yVG9vbGJhckl0ZW0g
PSBuZXcgV0kuQnV0dG9uVG9vbGJhckl0ZW0oImluc3BlY3QtaW5zcGVjdG9yIiwgaW5zcGVjdElu
c3BlY3RvclRvb2xUaXApOworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oaW5zcGVjdElu
c3BlY3RvclRvb2xiYXJJdGVtLCBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyUmlnaHQpOworICAg
IGluc3BlY3RJbnNwZWN0b3JUb29sYmFySXRlbS5lbGVtZW50LnRleHRDb250ZW50ID0gaW5zcGVj
dGlvbkxldmVsICsgMTsKKyAgICBpbnNwZWN0SW5zcGVjdG9yVG9vbGJhckl0ZW0uYWRkRXZlbnRM
aXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCAoKSA9PiB7CiAg
ICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5pbnNwZWN0SW5zcGVjdG9yKCk7CiAgICAgfSk7
CiAKLSAgICBsZXQgZ3JvdXBOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5Hcm91cE5hdmlnYXRpb25J
dGVtKFsKLSAgICAgICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0sCi0gICAgICAg
IGluc3BlY3RJbnNwZWN0b3JUYWJCYXJOYXZpZ2F0aW9uSXRlbSwKLSAgICBdKTsKLSAgICBXSS50
YWJCYXIuYWRkTmF2aWdhdGlvbkl0ZW1BZnRlcihncm91cE5hdmlnYXRpb25JdGVtKTsKLQogICAg
IGZ1bmN0aW9uIHVwZGF0ZURlYnVnVUkoKSB7Ci0gICAgICAgIGdyb3VwTmF2aWdhdGlvbkl0ZW0u
aGlkZGVuID0gIVdJLnNob3dEZWJ1Z1VJU2V0dGluZy52YWx1ZTsKLSAgICAgICAgV0kudGFiQmFy
Lm5lZWRzTGF5b3V0KCk7CisgICAgICAgIGR1bXBNZXNzYWdlc1Rvb2xiYXJJdGVtLmhpZGRlbiA9
ICFXSS5zaG93RGVidWdVSVNldHRpbmcudmFsdWU7CisgICAgICAgIGluc3BlY3RJbnNwZWN0b3JU
b29sYmFySXRlbS5oaWRkZW4gPSAhV0kuc2hvd0RlYnVnVUlTZXR0aW5nLnZhbHVlOwogICAgIH0K
IAogICAgIFdJLnNob3dEZWJ1Z1VJU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcu
RXZlbnQuQ2hhbmdlZCwgKCkgPT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYi5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGM2ZjIyNWJhYTNm
ZDIwZTNhODZiNDA1NDFhMjA0NWQxODc2N2NkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYi5zdmcKQEAgLTAsMCArMSw2
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmln
aHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJyb290IiB2ZXJzaW9uPSIxLjEiIHZp
ZXdCb3g9IjAgMCAxNiAxNiI+CisgICAgPHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50
Q29sb3IiIHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHJ4PSIyIi8+Cisg
ICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gOCAzIEwgOCAx
MyBNIDMgOCBMIDEzIDgiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYlBsdXMuc3ZnIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYlBsdXMuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2
MTZhOGE0MjI3MzJiNDNhODc2NWUxYWIwYWNjOTRhZDBmNmVlMmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiUGx1cy5z
dmcKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IC0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJyb290IiB2
ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNSAxNSI+CisgICAgPHBhdGggZmlsbD0ibm9uZSIg
c3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gNy41IDIgViAxMyBNIDIgNy41IEggMTMiLz4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1h
Z2VzL09yaWdpbi5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFn
ZXMvT3JpZ2luLnN2ZwppbmRleCBmNjg1M2ViNTRlMGJhNTg2ZDZkZGIyNGFjZmUwNzgyZTZkZjRl
YWZiLi41MDNkYzI1YmUxNmExYzU2MmIxNzVkODRkMjNlYjI3ZGEzZDc3ZTQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvT3JpZ2luLnN2Zwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvT3JpZ2luLnN2
ZwpAQCAtMSw2ICsxLDYgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+
CiA8IS0tIENvcHlyaWdodCDCqSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
LS0+Ci08c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InJvb3QiIHZl
cnNpb249IjEuMSIgdmlld0JveD0iMCAwIDY0IDY0Ij4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2NCA2NCI+CiAgICAg
PGRlZnM+CiAgICAgICAgIDxyYWRpYWxHcmFkaWVudCBpZD0iZ3JhZGllbnQiIGN4PSI1OC42JSIg
Y3k9IjI3Ljc0JSIgZng9IjU4LjYlIiBmeT0iMjcuNzQlIiByPSI1Ny41JSIgZ3JhZGllbnRUcmFu
c2Zvcm09InRyYW5zbGF0ZSgwLjU5LCAwLjI4KSwgcm90YXRlKDk4LjYxKSwgc2NhbGUoMSwgMC45
OCksIHRyYW5zbGF0ZSgtMC41OSwgLTAuMjgpIj4KICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29s
b3I9InJnYigxNjgsIDE3MSwgMTgyKSIgb2Zmc2V0PSIwJSIvPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NlYXJjaFJlc3VsdHMuc3ZnIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NlYXJjaFJlc3VsdHMu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIwODJjMjQ2YmY3N2U5YTA3N2E1ODk1NTRlMmMyMmMwMGViMmVlOGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9J
bWFnZXMvU2VhcmNoUmVzdWx0cy5zdmcKQEAgLTAsMCArMSw3IEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIGlkPSJyb290IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAxNiI+Cisg
ICAgPHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHg9IjAuNSIgeT0iMC41
IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHJ4PSIyIi8+CisgICAgPGNpcmNsZSBmaWxsPSJub25l
IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgY3g9IjciIGN5PSI3IiByPSIzIi8+CisgICAgPHBhdGgg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gOS41IDkuNSBMIDEyLjUgMTIu
NSIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvU291cmNlc1BhdXNlZC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9JbWFnZXMvU291cmNlc1BhdXNlZC5zdmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGU5YmM1NDcyZWNhZTEwZWQ5MjYyODE3MjU1YTc4ZDUxOWU4YWIyODYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NvdXJjZXNQYXVzZWQuc3ZnCisrKyAvZGV2L251
bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
PgotPCEtLSBDb3B5cmlnaHQgwqkgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IC0tPgotPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJyb290IiB2
ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAxNiI+Ci0gICAgPHBhdGggZmlsbD0ibm9uZSIg
c3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gNy43IDE0LjUgMi41IDE0LjUgMi41IDEuNSA5LjUg
MS41IDEzLjUgNS41IDEzLjUgOC44Ii8+Ci0gICAgPHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBk
PSJNIDkuMCAzLjAgTCA5LjAgNi4wIEwgMTIuMCA2LjAgWiIvPgotICAgIDxjaXJjbGUgZmlsbD0i
bm9uZSIgY3g9IjEwLjUiIGN5PSIxMS41IiByPSI0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIvPgot
ICAgIDxwYXRoIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJNIDkuNSA5LjUgTCA5LjUgMTMuNSBN
IDExLjUgOS41IEwgMTEuNSAxMy41Ii8+Ci08L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCAxM2Y0MjNhZGZmNWI0Y2FjNmZhMzQ1M2M1
NmRkMWRmOGM1MGU1M2FmLi41Yjg1NjUyMjE2NDRiZTFhNWYyZTZmYjEzNzQ3ZjY0YzhlYmI0YmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBA
IC00Nyw2ICs0Nyw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9C
cmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY3NzIj4KKyAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmNz
cyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DUFVUaW1lbGluZU92
ZXJ2aWV3R3JhcGguY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L0NQVVRpbWVsaW5lVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvQ1BVVXNhZ2VDb21iaW5lZFZpZXcuY3NzIj4KQEAgLTc5LDYgKzgwLDcgQEAKICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29udGVu
dFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NvbnRl
bnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Db250
ZW50Vmlld0NvbnRhaW5lci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRE9NRXZlbnRzQnJlYWtk
b3duVmlldy5jc3MiPgpAQCAtODgsOSArOTAsMTIgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmNzcyI+CiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9ET01UcmVlT3V0bGluZS5jc3MiPgor
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGFzaGJvYXJkQ29udGFpbmVy
Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGF0YUdy
aWQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RhdGFiYXNl
Q29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5jc3MiPgogICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGV0YWlsc1NlY3Rpb24uY3NzIj4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9u
SXRlbS5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRHJvcFpv
bmVWaWV3LmNzcyI+CkBAIC0xNTEsNiArMTU2LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBo
LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9OZXR3b3JrVGlt
ZWxpbmVWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9O
ZXdUYWJDb250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvT2JqZWN0UHJldmlld1ZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL09iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQuY3NzIj4KICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL09iamVjdFRyZWVNYXBFbnRyeVRyZWVF
bGVtZW50LmNzcyI+CkBAIC0yMzEsNiArMjM3LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1RpbWVsaW5lVmlldy5jc3MiPgogICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVGl0bGVWaWV3LmNzcyI+CisgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Ub29sYmFyLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5jc3MiPgog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHJlZU91dGxpbmUuY3NzIj4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUb2tlblZpZXcuY3Nz
Ij4KQEAgLTM5NSw3ICs0MDIsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRE9NVHJlZS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9EYXRhYmFzZU9iamVjdC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9EYXRhYmFzZVRhYmxlT2JqZWN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RlYnVnZ2VyRGFzaGJvYXJkLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RlYnVnZ2VyRGF0YS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0V2ZW50QnJlYWtwb2ludC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9FeGVjdXRpb25Db250ZXh0LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0V4ZWN1dGlvbkNvbnRleHRMaXN0LmpzIj48L3Nj
cmlwdD4KQEAgLTUyNCw2ICs1MzMsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UcmVlT3V0
bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RyZWVPdXRsaW5lR3Jv
dXAuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0xlZ2FjeVRhYkJhci5q
cyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXRhYmFzZVVzZXJRdWVy
eVZpZXdCYXNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGF0YWJhc2VV
c2VyUXVlcnlFcnJvclZpZXcuanMiPjwvc2NyaXB0PgpAQCAtNTQ2LDYgKzU1Nyw3IEBACiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0ZvbGRlcml6ZWRUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL05ldHdvcmtEZXRhaWxWaWV3LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU291cmNlQ29kZVRyZWVFbGVtZW50LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU3RvcmFnZVRyZWVFbGVtZW50LmpzIj48
L3NjcmlwdD4KQEAgLTU4Nyw2ICs1OTksNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Mb2Nh
bFJlbW90ZU9iamVjdENvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iVmlld3MvQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0FuaW1hdGlvbkNvbGxlY3Rpb25Db250ZW50Vmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0FuaW1hdGlvbkNvbnRlbnRWaWV3
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQW5pbWF0aW9uRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CkBAIC02MDUsNiArNjE4LDcgQEAKICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DUFVUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DUFVUaW1lbGluZVZpZXcuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DUFVVc2FnZUNvbWJpbmVkVmlldy5qcyI+PC9zY3Jp
cHQ+CkBAIC02NDAsNiArNjU0LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udGVudFZp
ZXdDb250YWluZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db250ZXh0
TWVudS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnRleHRNZW51VXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udHJvbFRvb2xi
YXJJdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29va2llU3RvcmFn
ZUNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29va2ll
U3RvcmFnZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
RE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KQEAgLTY1MywxMSArNjY4LDE1
IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGFzaGJvYXJkVmlldy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXRhYmFzZUhvc3RUcmVlRWxlbWVudC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50Vmll
dy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlVGFibGVUcmVl
RWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlVHJl
ZUVsZW1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZWJ1Z2dlckRh
c2hib2FyZFZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZWZhdWx0
RGFzaGJvYXJkVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Rpdmlk
ZXJOYXZpZ2F0aW9uSXRlbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Ry
b3Bab25lVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0VkaXRhYmxl
RGF0YUdyaWROb2RlLmpzIj48L3NjcmlwdD4KQEAgLTc5Nyw2ICs4MTYsNyBAQAogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9TaWRlYmFyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvU2l6ZXNUb0ZpdE5hdmlnYXRpb25CYXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9TbGlkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9Tb2Z0Q29udGV4dE1lbnUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyI+PC9zY3JpcHQ+CkBAIC04MzEsNiArODUxLDcg
QEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVGltZWxpbmVSdWxlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RpdGxlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL1RvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvVG9vbGJhci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvVHlwZVRva2VuVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1R5cGVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CkBAIC05MTEsNyArOTMyLDcg
QEAKIDwvaGVhZD4KIDxib2R5PgogPGRpdiBpZD0iZG9ja2VkLXJlc2l6ZXIiPjwvZGl2PgotPGRp
diBpZD0idW5kb2NrZWQtdGl0bGUtYXJlYSI+PC9kaXY+Cis8ZGl2IGlkPSJ0b29sYmFyIj48L2Rp
dj4KIDxkaXYgaWQ9InRhYi1iYXIiPjwvZGl2PgogPGRpdiBpZD0ibWFpbiI+CiAgICAgPGRpdiBp
ZD0iY29udGVudCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvRGVidWdnZXJEYXNoYm9hcmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvRGVidWdnZXJEYXNoYm9hcmQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQx
MWIxMGZiZTMxN2Q1YzM2MmU3MTUxNDA3NDE0MDY2NmU3NjU1ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWJ1Z2dlckRhc2hi
b2FyZC5qcwpAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuRGVidWdnZXJEYXNoYm9h
cmQgPSBjbGFzcyBEZWJ1Z2dlckRhc2hib2FyZAoreworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9h
cmQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzhjYjlmNTYzNmQ0MGUzOWM3ZTM5MmVhNzNmYTVmNTAxNWQxMjY0
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzCkBAIC0wLDAgKzEsMjk5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dJLkRlZmF1bHREYXNoYm9hcmQgPSBjbGFzcyBEZWZhdWx0RGFz
aGJvYXJkIGV4dGVuZHMgV0kuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl93YWl0aW5nRm9yRmlyc3RNYWluUmVzb3Vy
Y2VUb1N0YXJ0VHJhY2tpbmdTaXplID0gdHJ1ZTsKKworICAgICAgICAvLyBOZWNlc3NhcnkgZXZl
bnQgcmVxdWlyZWQgdG8gdHJhY2sgcGFnZSBsb2FkIHRpbWUgYW5kIHJlc291cmNlIHNpemVzLgor
ICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNv
dXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAg
ICAgV0kudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGltZWxpbmVNYW5hZ2Vy
LkV2ZW50LkNhcHR1cmluZ1N0YXRlQ2hhbmdlZCwgdGhpcy5faGFuZGxlVGltZWxpbmVDYXB0dXJp
bmdTdGF0ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIC8vIE5lY2Vzc2FyeSBldmVudHMgcmVx
dWlyZWQgdG8gdHJhY2sgbG9hZCBvZiByZXNvdXJjZXMuCisgICAgICAgIFdJLkZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgdGhpcy5fcmVzb3Vy
Y2VXYXNBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLlRhcmdldC5hZGRFdmVudExpc3RlbmVyKFdJ
LlRhcmdldC5FdmVudC5SZXNvdXJjZUFkZGVkLCB0aGlzLl9yZXNvdXJjZVdhc0FkZGVkLCB0aGlz
KTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3Jr
TWFuYWdlci5FdmVudC5GcmFtZVdhc0FkZGVkLCB0aGlzLl9mcmFtZVdhc0FkZGVkLCB0aGlzKTsK
KworICAgICAgICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJlcXVpcmVkIHRvIHRyYWNrIGNvbnNvbGUg
bWVzc2FnZXMuCisgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
Q29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fY29uc29sZVdhc0NsZWFyZWQsIHRo
aXMpOworICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNv
bGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRlZCwg
dGhpcyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29u
c29sZU1hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCB0aGlz
Ll9jb25zb2xlTWVzc2FnZVdhc1JlcGVhdGVkLCB0aGlzKTsKKworICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyB3b3JraW5nIGFyb3VuZCB0aGUgb3JkZXIgb2YgZXZlbnRzLiBOb3JtYWwgcGFnZSBu
YXZpZ2F0aW9uCisgICAgICAgIC8vIHRyaWdnZXJzIGEgTWFpblJlc291cmNlIGNoYW5nZSBhbmQg
dGhlbiBhIE1haW5GcmFtZSBjaGFuZ2UuIFBhZ2UgVHJhbnNpdGlvbgorICAgICAgICAvLyB0cmln
Z2VycyBhIE1haW5GcmFtZSBjaGFuZ2UgdGhlbiBhIE1haW5SZXNvdXJjZSBjaGFuZ2UuCisgICAg
ICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gZmFsc2U7CisKKyAgICAgICAgV0ku
bm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdJLk5vdGlmaWNhdGlvbi5UcmFuc2l0aW9u
UGFnZVRhcmdldCwgdGhpcy5fdHJhbnNpdGlvblBhZ2VUYXJnZXQsIHRoaXMpOworCisgICAgICAg
IHRoaXMuX3Jlc291cmNlc0NvdW50ID0gMDsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzU2l6ZSA9
IDA7CisgICAgICAgIHRoaXMuX3RpbWUgPSAwOworICAgICAgICB0aGlzLl9sb2dzID0gMDsKKyAg
ICAgICAgdGhpcy5fZXJyb3JzID0gMDsKKyAgICAgICAgdGhpcy5faXNzdWVzID0gMDsKKyAgICB9
CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCByZXNvdXJjZXNDb3VudCgpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzQ291bnQ7CisgICAgfQorCisgICAgc2V0IHJlc291
cmNlc0NvdW50KHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ291bnQgPSB2
YWx1ZTsKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0KKworICAgIGdldCBy
ZXNvdXJjZXNTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXNTaXpl
OworICAgIH0KKworICAgIHNldCByZXNvdXJjZXNTaXplKHZhbHVlKQorICAgIHsKKyAgICAgICAg
dGhpcy5fcmVzb3VyY2VzU2l6ZSA9IHZhbHVlOworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdl
KCk7CisgICAgfQorCisgICAgZ2V0IHRpbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3RpbWU7CisgICAgfQorCisgICAgc2V0IHRpbWUodmFsdWUpCisgICAgeworICAgICAgICB0aGlz
Ll90aW1lID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKKyAgICB9CisK
KyAgICBnZXQgbG9ncygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbG9nczsKKyAgICB9
CisKKyAgICBzZXQgbG9ncyh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2xvZ3MgPSB2YWx1
ZTsKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0KKworICAgIGdldCBlcnJv
cnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9yczsKKyAgICB9CisKKyAgICBz
ZXQgZXJyb3JzKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fZXJyb3JzID0gdmFsdWU7Cisg
ICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBnZXQgaXNzdWVzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pc3N1ZXM7CisgICAgfQorCisgICAgc2V0IGlz
c3Vlcyh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2lzc3VlcyA9IHZhbHVlOworICAgICAg
ICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAg
X2RhdGFEaWRDaGFuZ2UoKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuRGVmYXVsdERhc2hib2FyZC5FdmVudC5EYXRhRGlkQ2hhbmdlKTsKKyAgICB9CisK
KyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOworCisgICAgICAgIGlm
ICghZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKCF0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkgeworICAgICAgICAgICAg
dGhpcy5fdGltZSA9IDA7CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IDE7Cisg
ICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lLm1haW5SZXNvdXJjZS5zaXplIHx8IDA7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBz
aG91bGQgb25seSB0cmFjayByZXNvdXJjZSBzaXplcyBvbiBmcmVzaCBsb2Fkcy4KKyAgICAgICAg
aWYgKHRoaXMuX3dhaXRpbmdGb3JGaXJzdE1haW5SZXNvdXJjZVRvU3RhcnRUcmFja2luZ1NpemUp
IHsKKyAgICAgICAgICAgIHRoaXMuX3dhaXRpbmdGb3JGaXJzdE1haW5SZXNvdXJjZVRvU3RhcnRU
cmFja2luZ1NpemUgPSBmYWxzZTsKKyAgICAgICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlz
dGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuU2l6ZURpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VTaXpl
RGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFu
Z2UoKTsKKworICAgICAgICBpZiAoIXRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0KQorICAg
ICAgICAgICAgdGhpcy5fc3RhcnRVcGRhdGluZ1RpbWUoKTsKKworICAgICAgICBpZiAodGhpcy5f
dHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQpCisgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uaW5n
UGFnZVRhcmdldCA9IGZhbHNlOworICAgIH0KKworICAgIF9oYW5kbGVUaW1lbGluZUNhcHR1cmlu
Z1N0YXRlQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIGlmIChXSS50aW1lbGluZU1hbmFn
ZXIuaXNDYXB0dXJpbmcoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBJZiBy
ZWNvcmRpbmcgc3RvcHMsIHdlIHNob3VsZCBzdG9wIHRoZSB0aW1lciBpZiBpdCBoYXNuJ3Qgc3Rv
cHBlZCBhbHJlYWR5LgorICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdUaW1lKCk7CisgICAgfQor
CisgICAgX3Jlc291cmNlV2FzQWRkZWQoZXZlbnQpCisgICAgeworICAgICAgICArK3RoaXMucmVz
b3VyY2VzQ291bnQ7CisgICAgfQorCisgICAgX2ZyYW1lV2FzQWRkZWQoZXZlbnQpCisgICAgewor
ICAgICAgICArK3RoaXMucmVzb3VyY2VzQ291bnQ7CisgICAgfQorCisgICAgX3Jlc291cmNlU2l6
ZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC50YXJnZXQudXJsQ29t
cG9uZW50cy5zY2hlbWUgPT09ICJkYXRhIikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBsZXQgZGVsdGEgPSBldmVudC50YXJnZXQuc2l6ZSAtIGV2ZW50LmRhdGEucHJldmlvdXNTaXpl
OworICAgICAgICBjb25zb2xlLmFzc2VydCghaXNOYU4oZGVsdGEpLCAiUmVzb3VyY2Ugc2l6ZSBj
aGFuZ2Ugc2hvdWxkIG5ldmVyIGJlIE5hTi4iKTsKKyAgICAgICAgdGhpcy5yZXNvdXJjZXNTaXpl
ICs9IGRlbHRhOworICAgIH0KKworICAgIF9zdGFydFVwZGF0aW5nVGltZSgpCisgICAgeworICAg
ICAgICB0aGlzLl9zdG9wVXBkYXRpbmdUaW1lKCk7CisKKyAgICAgICAgdGhpcy50aW1lID0gMDsK
KworICAgICAgICB0aGlzLl90aW1lbGluZUJhc2VUaW1lID0gRGF0ZS5ub3coKTsKKyAgICAgICAg
dGhpcy5fdGltZUludGVydmFsRGVsYXkgPSA1MDsKKyAgICAgICAgdGhpcy5fdGltZUludGVydmFs
SWRlbnRpZmllciA9IHNldEludGVydmFsKHRoaXMuX3VwZGF0ZVRpbWUuYmluZCh0aGlzKSwgdGhp
cy5fdGltZUludGVydmFsRGVsYXkpOworICAgIH0KKworICAgIF9zdG9wVXBkYXRpbmdUaW1lKCkK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy5fdGltZUludGVydmFsSWRlbnRpZmllcikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX3RpbWVJbnRlcnZh
bElkZW50aWZpZXIpOworICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyID0gdW5k
ZWZpbmVkOworICAgIH0KKworICAgIF91cGRhdGVUaW1lKCkKKyAgICB7CisgICAgICAgIHZhciBk
dXJhdGlvbiA9IERhdGUubm93KCkgLSB0aGlzLl90aW1lbGluZUJhc2VUaW1lOworCisgICAgICAg
IHZhciB0aW1lSW50ZXJ2YWxEZWxheSA9IHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5OworICAgICAg
ICBpZiAoZHVyYXRpb24gPj0gMTAwMCkgLy8gMSBzZWNvbmQKKyAgICAgICAgICAgIHRpbWVJbnRl
cnZhbERlbGF5ID0gMTAwOworICAgICAgICBlbHNlIGlmIChkdXJhdGlvbiA+PSA2MDAwMCkgLy8g
NjAgc2Vjb25kcworICAgICAgICAgICAgdGltZUludGVydmFsRGVsYXkgPSAxMDAwOworICAgICAg
ICBlbHNlIGlmIChkdXJhdGlvbiA+PSAzNjAwMDAwKSAvLyAxIG1pbnV0ZQorICAgICAgICAgICAg
dGltZUludGVydmFsRGVsYXkgPSAxMDAwMDsKKworICAgICAgICBpZiAodGltZUludGVydmFsRGVs
YXkgIT09IHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5KSB7CisgICAgICAgICAgICB0aGlzLl90aW1l
SW50ZXJ2YWxEZWxheSA9IHRpbWVJbnRlcnZhbERlbGF5OworCisgICAgICAgICAgICBjbGVhcklu
dGVydmFsKHRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZpZXIpOworICAgICAgICAgICAgdGhpcy5f
dGltZUludGVydmFsSWRlbnRpZmllciA9IHNldEludGVydmFsKHRoaXMuX3VwZGF0ZVRpbWUuYmlu
ZCh0aGlzKSwgdGhpcy5fdGltZUludGVydmFsRGVsYXkpOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICAgICAgdmFy
IG1haW5GcmFtZVN0YXJ0VGltZSA9IG1haW5GcmFtZS5tYWluUmVzb3VyY2UuZmlyc3RUaW1lc3Rh
bXA7CisgICAgICAgIHZhciBtYWluRnJhbWVMb2FkRXZlbnRUaW1lID0gbWFpbkZyYW1lLmxvYWRF
dmVudFRpbWVzdGFtcDsKKworICAgICAgICBpZiAoaXNOYU4obWFpbkZyYW1lU3RhcnRUaW1lKSB8
fCBpc05hTihtYWluRnJhbWVMb2FkRXZlbnRUaW1lKSkgeworICAgICAgICAgICAgdGhpcy50aW1l
ID0gZHVyYXRpb24gLyAxMDAwOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy50aW1lID0gbWFpbkZyYW1lTG9hZEV2ZW50VGltZSAtIG1haW5GcmFtZVN0YXJ0
VGltZTsKKworICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdUaW1lKCk7CisgICAgfQorCisgICAg
X2NvbnNvbGVNZXNzYWdlQWRkZWQoZXZlbnQpCisgICAgeworICAgICAgICB2YXIgbWVzc2FnZSA9
IGV2ZW50LmRhdGEubWVzc2FnZTsKKyAgICAgICAgdGhpcy5fbGFzdENvbnNvbGVNZXNzYWdlVHlw
ZSA9IG1lc3NhZ2UubGV2ZWw7CisgICAgICAgIHRoaXMuX2luY3JlbWVudENvbnNvbGVNZXNzYWdl
VHlwZShtZXNzYWdlLmxldmVsLCBtZXNzYWdlLnJlcGVhdENvdW50KTsKKyAgICB9CisKKyAgICBf
Y29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2lu
Y3JlbWVudENvbnNvbGVNZXNzYWdlVHlwZSh0aGlzLl9sYXN0Q29uc29sZU1lc3NhZ2VUeXBlLCAx
KTsKKyAgICB9CisKKyAgICBfaW5jcmVtZW50Q29uc29sZU1lc3NhZ2VUeXBlKHR5cGUsIGluY3Jl
bWVudCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIFdJLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2c6CisgICAgICAgIGNhc2UgV0kuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZUxldmVsLkluZm86CisgICAgICAgIGNhc2UgV0kuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZUxldmVsLkRlYnVnOgorICAgICAgICAgICAgdGhpcy5sb2dzICs9IGluY3JlbWVudDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdJLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VMZXZlbC5XYXJuaW5nOgorICAgICAgICAgICAgdGhpcy5pc3N1ZXMgKz0gaW5jcmVtZW50Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZUxldmVsLkVycm9yOgorICAgICAgICAgICAgdGhpcy5lcnJvcnMgKz0gaW5jcmVtZW50OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfY29uc29sZVdhc0NsZWFy
ZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9sb2dzID0gMDsKKyAgICAgICAgdGhpcy5f
aXNzdWVzID0gMDsKKyAgICAgICAgdGhpcy5fZXJyb3JzID0gMDsKKyAgICAgICAgdGhpcy5fZGF0
YURpZENoYW5nZSgpOworICAgIH0KKworICAgIF90cmFuc2l0aW9uUGFnZVRhcmdldCgpCisgICAg
eworICAgICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCA9IHRydWU7CisKKyAgICAg
ICAgdGhpcy5fdGltZSA9IDA7CisgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvdW50ID0gMDsKKyAg
ICAgICAgdGhpcy5fcmVzb3VyY2VzU2l6ZSA9IDA7CisKKyAgICAgICAgdGhpcy5fZGF0YURpZENo
YW5nZSgpOworICAgIH0KK307CisKK1dJLkRlZmF1bHREYXNoYm9hcmQuRXZlbnQgPSB7CisgICAg
RGF0YURpZENoYW5nZTogImRlZmF1bHQtZGFzaGJvYXJkLWRhdGEtZGlkLWNoYW5nZSIKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BY3Rp
dmF0ZUJ1dHRvblRvb2xiYXJJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTc1
NDJjZjRlNTI3YWZlNDBmNTQ1MzNhYWNhOTk3NGFjMDQ1NjA2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQWN0aXZhdGVCdXR0b25U
b29sYmFySXRlbS5qcwpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuQWN0
aXZhdGVCdXR0b25Ub29sYmFySXRlbSA9IGNsYXNzIEFjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0g
ZXh0ZW5kcyBXSS5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtCit7CisgICAgY29uc3RydWN0
b3IoaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGltYWdlLCBy
b2xlKQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGFj
dGl2YXRlZFRvb2xUaXAsIGltYWdlLCAxNiwgMTYsIHJvbGUpOworICAgIH0KK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BdWRpdFRhYkNv
bnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
QXVkaXRUYWJDb250ZW50Vmlldy5qcwppbmRleCA1MzJkMGMzYWVmZTc5YTczNTI4ZmJmYmNiYzIx
MjE2ZDY2Mjg4MGYyLi4yMTVkYmE1Mjc2ODZhZjdiNjVlMzc1YWQzMWZiMWVhNDgxMjk2MmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BdWRp
dFRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0F1ZGl0VGFiQ29udGVudFZpZXcuanMKQEAgLTI3LDkgKzI3LDcgQEAgV0kuQXVk
aXRUYWJDb250ZW50VmlldyA9IGNsYXNzIEF1ZGl0VGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
b250ZW50QnJvd3NlclRhYkMKIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewotICAgICAgICBz
dXBlcihBdWRpdFRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSwgewotICAgICAgICAgICAgbmF2aWdh
dGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yOiBXSS5BdWRpdE5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwsCi0gICAgICAgIH0pOworICAgICAgICBzdXBlcigiYXVkaXQiLCBbImF1ZGl0Il0sIFdJLkdl
bmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLkF1ZGl0VGFiQ29udGVudFZpZXcudGFiSW5m
bygpKSwgV0kuQXVkaXROYXZpZ2F0aW9uU2lkZWJhclBhbmVsKTsKIAogICAgICAgICB0aGlzLl9z
dGFydFN0b3BTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdJLktleWJv
YXJkU2hvcnRjdXQuS2V5LlNwYWNlLCB0aGlzLl9oYW5kbGVTcGFjZS5iaW5kKHRoaXMpKTsKICAg
ICAgICAgdGhpcy5fc3RhcnRTdG9wU2hvcnRjdXQuaW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCA9
IGZhbHNlOwpAQCAtNDEsNyArMzksNiBAQCBXSS5BdWRpdFRhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
QXVkaXRUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGFiQwogICAgIHN0
YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBpZGVu
dGlmaWVyOiBBdWRpdFRhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTogIklt
YWdlcy9BdWRpdC5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJBdWRpdCIp
LAogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY3NzCmluZGV4IDgx
NmNjZDZiNDFjN2M2ZWVjODM0NjU3YWI5OGQ5ZTY2NDgzMDEwMjguLjE0NzBiYjIwNjFkMDBlOTcz
N2E3NWVjYjRjMjhkZTQzNDVlZGNiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmNzcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRl
bS5jc3MKQEAgLTQxLDEwICs0MSw2IEBACiAgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiA0cHg7
CiB9CiAKLS50YWItYmFyID4gLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbi5pbWFnZS1hbmQt
dGV4dCA+IHNwYW4gewotICAgIHBhZGRpbmctYm90dG9tOiAwOwotfQotCiAubmF2aWdhdGlvbi1i
YXIgLml0ZW0uYnV0dG9uLnRleHQtb25seSB7CiAgICAgcGFkZGluZzogMXB4IDhweCAzcHg7CiAg
ICAgbWFyZ2luOiAwIDJweDsgLyogV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLmdl
dCB0b3RhbE1hcmdpbiAqLwpAQCAtNzgsMjkgKzc0LDggQEAKICAgICBjb2xvcjogdmFyKC0tZ2x5
cGgtY29sb3ItZGlzYWJsZWQpOwogfQogCi0ubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uID4g
aW1nIHsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBoZWlnaHQ6IDEwMCU7Ci19Ci0KLS5uYXZpZ2F0
aW9uLWJhciAuaXRlbS5idXR0b24uZGlzYWJsZWQgPiBpbWcgewotICAgIG9wYWNpdHk6IDAuMzsK
LX0KLQotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0
aXZlKSAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uID4gaW1nIHsKLSAgICBvcGFjaXR5OiAw
LjY7Ci19Ci0KLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1p
bmFjdGl2ZSkgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbi5kaXNhYmxlZCA+IGltZyB7Ci0g
ICAgb3BhY2l0eTogMC4xODsKLX0KLQogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFy
aykgewogICAgIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24gewogICAgICAgICBjb2xvcjog
dmFyKC0tdGV4dC1jb2xvci1zZWNvbmRhcnkpOwogICAgIH0KLQotICAgIC5uYXZpZ2F0aW9uLWJh
ciAuaXRlbS5idXR0b24uZGlzYWJsZWQgPiBpbWcgewotICAgICAgICBmaWx0ZXI6IGludmVydCgp
OwotICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMKaW5kZXggMWI3MGQ0
NmY5MzM1MjY2MzhmYzU2Y2FjNDUxYWRlNjk4NmUyZWIyNi4uMGE3MzcyY2U3OGQzZTFkMzUxMTYx
OTM5NDJjYWE0MmNmNTQ1ZmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMK
QEAgLTQ4LDggKzQ4LDYgQEAgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBCdXR0b25O
YXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdJLk5hdmlnYXRpb25JdGVtCiAKICAgICAgICAgdGhpcy5i
dXR0b25TdHlsZSA9IHRoaXMuX2ltYWdlID8gV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGUu
SW1hZ2UgOiBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZS5UZXh0OwogCi0gICAgICAgIHRo
aXMuaW1hZ2VUeXBlID0gdGhpcy5faW1hZ2UgPyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5JbWFn
ZVR5cGUuU1ZHIDogbnVsbDsKLQogICAgICAgICBpZiAodGhpcy5idXR0b25TdHlsZSA9PT0gV0ku
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGUuSW1hZ2UpCiAgICAgICAgICAgICB0aGlzLnRvb2x0
aXAgPSB0b29sVGlwT3JMYWJlbDsKICAgICB9CkBAIC0xMjUsMjcgKzEyMyw2IEBAIFdJLkJ1dHRv
bk5hdmlnYXRpb25JdGVtID0gY2xhc3MgQnV0dG9uTmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXSS5O
YXZpZ2F0aW9uSXRlbQogICAgICAgICAgICAgdGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyLm5lZWRz
TGF5b3V0KCk7CiAgICAgfQogCi0gICAgZ2V0IGltYWdlVHlwZSgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5faW1hZ2VUeXBlOwotICAgIH0KLQotICAgIHNldCBpbWFnZVR5cGUoaW1hZ2VU
eXBlKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWltYWdlVHlwZSB8fCBPYmplY3Qu
dmFsdWVzKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkltYWdlVHlwZSkuaW5jbHVkZXMoaW1hZ2VU
eXBlKSwgaW1hZ2VUeXBlKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWltYWdlVHlwZSB8fCAo
dGhpcy5fYnV0dG9uU3R5bGUgPT09IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlLkltYWdl
IHx8IHRoaXMuX2J1dHRvblN0eWxlID09PSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZS5J
bWFnZUFuZFRleHQpKTsKLQotICAgICAgICBpZiAodGhpcy5faW1hZ2VUeXBlID09PSBpbWFnZVR5
cGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5faW1hZ2VUeXBlID0gaW1h
Z2VUeXBlOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZSgpOwotCi0gICAgICAgIGlmICh0aGlzLnBh
cmVudE5hdmlnYXRpb25CYXIpCi0gICAgICAgICAgICB0aGlzLnBhcmVudE5hdmlnYXRpb25CYXIu
bmVlZHNMYXlvdXQoKTsKLSAgICB9Ci0KICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIGdldCB0b3Rh
bE1hcmdpbigpCkBAIC0xNzcsMjIgKzE1NCwxMCBAQCBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSA9
IGNsYXNzIEJ1dHRvbk5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV0kuTmF2aWdhdGlvbkl0ZW0KICAg
ICAgICAgaWYgKHRoaXMuX2J1dHRvblN0eWxlID09PSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5T
dHlsZS5UZXh0KQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5f
bGFiZWw7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgc3dpdGNoICh0aGlzLl9pbWFnZVR5
cGUpIHsKLSAgICAgICAgICAgIGNhc2UgbnVsbDoKLSAgICAgICAgICAgIGNhc2UgV0kuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uSW1hZ2VUeXBlLlNWRzogewotICAgICAgICAgICAgICAgIGxldCBnbHlw
aEVsZW1lbnQgPSBXSS5JbWFnZVV0aWxpdGllcy51c2VTVkdTeW1ib2wodGhpcy5faW1hZ2UsICJn
bHlwaCIpOwotICAgICAgICAgICAgICAgIGdseXBoRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMu
X2ltYWdlV2lkdGggKyAicHgiOwotICAgICAgICAgICAgICAgIGdseXBoRWxlbWVudC5zdHlsZS5o
ZWlnaHQgPSB0aGlzLl9pbWFnZUhlaWdodCArICJweCI7Ci0gICAgICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKGdseXBoRWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2UgV0kuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uSW1hZ2VUeXBlLklNRzogewotICAgICAgICAgICAgICAgIGxldCBpbWcgPSB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOwotICAgICAgICAg
ICAgICAgIGltZy5zcmMgPSB0aGlzLl9pbWFnZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBnbHlwaEVsZW1lbnQg
PSBXSS5JbWFnZVV0aWxpdGllcy51c2VTVkdTeW1ib2wodGhpcy5faW1hZ2UsICJnbHlwaCIpOwor
ICAgICAgICAgICAgZ2x5cGhFbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5faW1hZ2VXaWR0aCAr
ICJweCI7CisgICAgICAgICAgICBnbHlwaEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5faW1h
Z2VIZWlnaHQgKyAicHgiOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGds
eXBoRWxlbWVudCk7CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9idXR0b25TdHlsZSA9PT0gV0ku
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGUuSW1hZ2VBbmRUZXh0KSB7CiAgICAgICAgICAgICAg
ICAgbGV0IGxhYmVsRWxlbWVudCA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIikpOwpAQCAtMjExLDggKzE3NiwzIEBAIFdJLkJ1dHRvbk5hdmln
YXRpb25JdGVtLlN0eWxlID0gewogICAgIFRleHQ6ICJ0ZXh0LW9ubHkiLAogICAgIEltYWdlQW5k
VGV4dDogImltYWdlLWFuZC10ZXh0IiwKIH07Ci0KLVdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLklt
YWdlVHlwZSA9IHsKLSAgICBTVkc6ICJpbWFnZS10eXBlLXN2ZyIsCi0gICAgSU1HOiAiaW1hZ2Ut
dHlwZS1pbWciLAotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmNzcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZDFjNmQ2OGM0NmI3M2E4M2ZhY2Q3Mjk0YjdmZjRhOTQ2NzhmYWYzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJh
ckl0ZW0uY3NzCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy50b29sYmFyIC5p
dGVtLmJ1dHRvbiB7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICBqdXN0aWZ5LWNvbnRl
bnQ6IGNlbnRlcjsKKworICAgIG1hcmdpbjogNHB4OworICAgIHBhZGRpbmc6IDAgMTBweDsKKwor
ICAgIGNvbG9yOiBoc2woMCwgMCUsIDQ1JSk7Cit9CisKKy50b29sYmFyIC5pdGVtLmJ1dHRvbjpu
b3QoLmRpc2FibGVkKTphY3RpdmUgeworICAgIGNvbG9yOiBoc2woMCwgMCUsIDMwJSk7Cit9CisK
Ky50b29sYmFyIC5pdGVtLmJ1dHRvbjpub3QoLmRpc2FibGVkKTptYXRjaGVzKDpmb2N1cywgLmFj
dGl2YXRlLmFjdGl2YXRlZCkgeworICAgIGNvbG9yOiB2YXIoLS1nbHlwaC1jb2xvci1hY3RpdmUp
OworfQorCisudG9vbGJhciAuaXRlbS5idXR0b24gPiAuZ2x5cGggeworICAgIHdpZHRoOiAxNnB4
OworICAgIGhlaWdodDogMTZweDsKK30KKworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIg
Lml0ZW0uYnV0dG9uIHsKKyAgICBvcGFjaXR5OiAwLjY1OworfQorCisudG9vbGJhciAuaXRlbS5i
dXR0b24uZGlzYWJsZWQgeworICAgIG9wYWNpdHk6IDAuNTUgIWltcG9ydGFudDsKK30KKworYm9k
eS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLml0ZW0uYnV0dG9uLmRpc2FibGVkIHsKKyAgICBv
cGFjaXR5OiAwLjM1ICFpbXBvcnRhbnQ7Cit9CisKK0BtZWRpYSAocHJlZmVycy1jb2xvci1zY2hl
bWU6IGRhcmspIHsKKyAgICAudG9vbGJhciAuaXRlbS5idXR0b24geworICAgICAgICBjb2xvcjog
dmFyKC0tY29sb3ItYnV0dG9uKTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuaXRlbS5idXR0b246
bm90KC5kaXNhYmxlZCk6YWN0aXZlIHsKKyAgICAgICAgY29sb3I6IHZhcigtLWNvbG9yLWJ1dHRv
bi1hY3RpdmUpOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworICAgICAgICBiYWNr
Z3JvdW5kOiB2YXIoLS1idXR0b24tYmFja2dyb3VuZC1jb2xvci1wcmVzc2VkKTsKKyAgICB9CisK
KyAgICBib2R5Om5vdCgud2luZG93LWluYWN0aXZlKSAudG9vbGJhciAuaXRlbS5idXR0b246bm90
KC5kaXNhYmxlZCk6bWF0Y2hlcyg6Zm9jdXMsIC5hY3RpdmF0ZS5hY3RpdmF0ZWQpID4gLmdseXBo
IHsKKyAgICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMzUpOworICAgIH0KK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xi
YXJJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0
dG9uVG9vbGJhckl0ZW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU0ZjZkMGExYmI2ZmQ2ZjU1M2I2NGJiNjg2
YzM1NWI1MDIwODc1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmpzCkBAIC0wLDAgKzEsMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitXSS5CdXR0b25Ub29sYmFySXRlbSA9IGNsYXNzIEJ1dHRvblRv
b2xiYXJJdGVtIGV4dGVuZHMgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0KK3sKKyAgICBjb25zdHJ1
Y3RvcihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgcm9sZSkKKyAgICB7CisgICAgICAgIHN1
cGVyKGlkZW50aWZpZXIsIHRvb2xUaXAsIGltYWdlLCAxNiwgMTYsIHJvbGUpOworICAgIH0KK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b25zb2xlVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanMKaW5kZXggZjY4YTlmYWMyN2JiNTRm
MmRlYWEyMDU1NTNjMzI0ZTk1ZmRmNmI1YS4uMTI1OTg2YTY2YmQyMWUyYTM3YWY2NmRlYzhhMDUy
NzI3NmRhYmFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29uc29sZVRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVUYWJDb250ZW50Vmlldy5qcwpAQCAtMjUs
MTUgKzI1LDE2IEBACiAKIFdJLkNvbnNvbGVUYWJDb250ZW50VmlldyA9IGNsYXNzIENvbnNvbGVU
YWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcKIHsK
LSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKICAgICB7Ci0g
ICAgICAgIHN1cGVyKENvbnNvbGVUYWJDb250ZW50Vmlldy50YWJJbmZvKCksIHtkaXNhYmxlQmFj
a0ZvcndhcmQ6IHRydWV9KTsKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFi
QmFySXRlbS5mcm9tVGFiSW5mbyhXSS5Db25zb2xlVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsK
KworICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJjb25zb2xlIiwgImNvbnNvbGUiLCB0YWJC
YXJJdGVtLCBudWxsLCBudWxsLCB0cnVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgdGFiSW5mbygp
CiAgICAgewogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWRlbnRpZmllcjogQ29uc29s
ZVRhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9Db25zb2xl
LnN2ZyIsCiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIkNvbnNvbGUiKSwKICAgICAg
ICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzCmlu
ZGV4IGJjM2Q1MThhZmY5ZTkxYmY3MWFhNWRhNTNhZWJjNGJmMDU0MWI0MmYuLjJkNzVjMGRhNjY0
MGIzNzViODRiYjQyZjEzNjgxOTFhNDhkOTY2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVu
dEJyb3dzZXJUYWJDb250ZW50Vmlldy5qcwpAQCAtMjUsMTkgKzI1LDI1IEBACiAKIFdJLkNvbnRl
bnRCcm93c2VyVGFiQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50QnJvd3NlclRhYkNvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpZXcKIHsKLSAgICBjb25zdHJ1Y3Rvcih0YWJJbmZv
LCB7bmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJhclBhbmVs
Q29uc3RydWN0b3JzLCBkaXNhYmxlQmFja0ZvcndhcmQsIGZsZXhpYmxlTmF2aWdhdGlvbkl0ZW19
ID0ge30pCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgc3R5bGVDbGFzc05hbWVzLCB0YWJC
YXJJdGVtLCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IsIGRldGFpbHNTaWRlYmFy
UGFuZWxDb25zdHJ1Y3RvcnMsIGRpc2FibGVCYWNrRm9yd2FyZCwgZmxleGlibGVOYXZpZ2F0aW9u
SXRlbSkKICAgICB7Ci0gICAgICAgIHN1cGVyKHRhYkluZm8sIHtuYXZpZ2F0aW9uU2lkZWJhclBh
bmVsQ29uc3RydWN0b3IsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnN9KTsKKyAgICAg
ICAgaWYgKHR5cGVvZiBzdHlsZUNsYXNzTmFtZXMgPT09ICJzdHJpbmciKQorICAgICAgICAgICAg
c3R5bGVDbGFzc05hbWVzID0gW3N0eWxlQ2xhc3NOYW1lc107CiAKLSAgICAgICAgY29uc3QgY29u
dGVudEJyb3dzZXJFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgY29uc3QgZGlzYWJsZUZpbmRCYW5u
ZXIgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIgPSBuZXcgV0kuQ29udGVu
dEJyb3dzZXIoY29udGVudEJyb3dzZXJFbGVtZW50LCB0aGlzLCBkaXNhYmxlQmFja0ZvcndhcmQs
IGRpc2FibGVGaW5kQmFubmVyLCBmbGV4aWJsZU5hdmlnYXRpb25JdGVtKTsKKyAgICAgICAgc3R5
bGVDbGFzc05hbWVzLnB1c2goImNvbnRlbnQtYnJvd3NlciIpOworCisgICAgICAgIHZhciBjb250
ZW50QnJvd3NlciA9IG5ldyBXSS5Db250ZW50QnJvd3NlcihudWxsLCBudWxsLCBkaXNhYmxlQmFj
a0ZvcndhcmQsIGZhbHNlLCBmbGV4aWJsZU5hdmlnYXRpb25JdGVtKTsKKworICAgICAgICBzdXBl
cihpZGVudGlmaWVyLCBzdHlsZUNsYXNzTmFtZXMsIHRhYkJhckl0ZW0sIG5hdmlnYXRpb25TaWRl
YmFyUGFuZWxDb25zdHJ1Y3RvciwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyk7CisK
KyAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIgPSBjb250ZW50QnJvd3NlcjsKKyAgICAgICAg
dGhpcy5fY29udGVudEJyb3dzZXIuZGVsZWdhdGUgPSB0aGlzOwogCiAgICAgICAgIHRoaXMuX2ln
bm9yZU5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb2xsYXBzZWRFdmVudCA9IGZhbHNlOwogICAgICAg
ICB0aGlzLl9pZ25vcmVEZXRhaWxzU2lkZWJhclBhbmVsQ29sbGFwc2VkRXZlbnQgPSBmYWxzZTsK
ICAgICAgICAgdGhpcy5faWdub3JlRGV0YWlsc1NpZGViYXJQYW5lbFNlbGVjdGVkRXZlbnQgPSBm
YWxzZTsKIAotICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWREZXRhaWxzU2lkZWJhclBhbmVsU2V0
dGluZyA9IG5ldyBXSS5TZXR0aW5nKHRoaXMuX2lkZW50aWZpZXIgKyAiLWxhc3Qtc2VsZWN0ZWQt
ZGV0YWlscy1zaWRlYmFyLXBhbmVsIiwgbnVsbCk7CisgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rl
ZERldGFpbHNTaWRlYmFyUGFuZWxTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoaWRlbnRpZmllciAr
ICItbGFzdC1zZWxlY3RlZC1kZXRhaWxzLXNpZGViYXItcGFuZWwiLCBudWxsKTsKIAogICAgICAg
ICB0aGlzLl9jb250ZW50QnJvd3Nlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnRlbnRCcm93c2Vy
LkV2ZW50LkN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRC
cm93c2VyQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7CiAgICAgICAg
IHRoaXMuX2NvbnRlbnRCcm93c2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29udGVudEJyb3dzZXIu
RXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50QnJvd3NlckN1
cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcyk7CkBAIC00Niw3ICs1Miw3IEBAIFdJLkNv
bnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50QnJvd3NlclRhYkNvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuCiAgICAgICAgIC8vIEV4cGxpY2l0bHkgdXBkYXRlIHRoZSBwYXRo
IGZvciB0aGUgbmF2aWdhdGlvbiBiYXIgdG8gcHJldmVudCBpdCBmcm9tIHNob3dpbmcgdXAgYXMg
YmxhbmsuCiAgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLnVwZGF0ZUhpZXJhcmNoaWNhbFBh
dGhGb3JDdXJyZW50Q29udGVudFZpZXcoKTsKIAotICAgICAgICBpZiAodGhpcy5fbmF2aWdhdGlv
blNpZGViYXJQYW5lbENvbnN0cnVjdG9yKSB7CisgICAgICAgIGlmIChuYXZpZ2F0aW9uU2lkZWJh
clBhbmVsQ29uc3RydWN0b3IpIHsKICAgICAgICAgICAgIGxldCBzaG93VG9vbFRpcCA9IFdJLlVJ
U3RyaW5nKCJTaG93IHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSIpLmZvcm1hdChXSS5uYXZp
Z2F0aW9uU2lkZWJhcktleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwogICAgICAgICAgICAg
bGV0IGhpZGVUb29sVGlwID0gV0kuVUlTdHJpbmcoIkhpZGUgdGhlIG5hdmlnYXRpb24gc2lkZWJh
ciAoJXMpIikuZm9ybWF0KFdJLm5hdmlnYXRpb25TaWRlYmFyS2V5Ym9hcmRTaG9ydGN1dC5kaXNw
bGF5TmFtZSk7CiAgICAgICAgICAgICBsZXQgaW1hZ2UgPSBXSS5yZXNvbHZlZExheW91dERpcmVj
dGlvbigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRMID8gIkltYWdlcy9Ub2dnbGVSaWdodFNp
ZGViYXIuc3ZnIiA6ICJJbWFnZXMvVG9nZ2xlTGVmdFNpZGViYXIuc3ZnIjsKQEAgLTYyLDcgKzY4
LDcgQEAgV0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRCcm93
c2VyVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS4KICAgICAgICAgICAgIFdJLm5hdmlnYXRpb25T
aWRlYmFyLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2lkZWJhci5FdmVudC5Db2xsYXBzZWRTdGF0ZURp
ZENoYW5nZSwgdGhpcy5fbmF2aWdhdGlvblNpZGViYXJDb2xsYXBzZWRTdGF0ZURpZENoYW5nZSwg
dGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5fZGV0YWlsc1NpZGViYXJQYW5l
bENvbnN0cnVjdG9ycy5sZW5ndGgpIHsKKyAgICAgICAgaWYgKGRldGFpbHNTaWRlYmFyUGFuZWxD
b25zdHJ1Y3RvcnMgJiYgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycy5sZW5ndGgpIHsK
ICAgICAgICAgICAgIGxldCBzaG93VG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJTaG93IHRoZSBkZXRh
aWxzIHNpZGViYXIgKCVzKSIpLmZvcm1hdChXSS5kZXRhaWxzU2lkZWJhcktleWJvYXJkU2hvcnRj
dXQuZGlzcGxheU5hbWUpOwogICAgICAgICAgICAgbGV0IGhpZGVUb29sVGlwID0gV0kuVUlTdHJp
bmcoIkhpZGUgdGhlIGRldGFpbHMgc2lkZWJhciAoJXMpIikuZm9ybWF0KFdJLmRldGFpbHNTaWRl
YmFyS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CiAgICAgICAgICAgICBsZXQgaW1hZ2Ug
PSBXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRM
ID8gIkltYWdlcy9Ub2dnbGVMZWZ0U2lkZWJhci5zdmciIDogIkltYWdlcy9Ub2dnbGVSaWdodFNp
ZGViYXIuc3ZnIjsKQEAgLTgwLDggKzg2LDYgQEAgV0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50
VmlldyA9IGNsYXNzIENvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS4KICAg
ICAgICAgICAgIFdJLmRldGFpbHNTaWRlYmFyLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2lkZWJhci5F
dmVudC5TaWRlYmFyUGFuZWxTZWxlY3RlZCwgdGhpcy5fZGV0YWlsc1NpZGViYXJQYW5lbFNlbGVj
dGVkLCB0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJjb250ZW50LWJyb3dzZXIiKTsKLQogICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5f
Y29udGVudEJyb3dzZXIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmNzcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5jc3MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGEyMzlhMTY2YjJkY2UwZjk2YTBlMmUwNWMwMzZhZjE4MTFiMjIzNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRyb2xUb29sYmFySXRlbS5jc3MKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLnRvb2xiYXIgLml0ZW0uY29udHJvbCB7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAg
ICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKKworICAgIHBhZGRpbmc6IDAgMnB4OworCisgICAg
b3BhY2l0eTogMC41OworfQorCisudG9vbGJhci5zbWFsbC1zaXplIC5pdGVtLmNvbnRyb2wgewor
ICAgIHBhZGRpbmc6IDJweDsKK30KKworLnRvb2xiYXIgLml0ZW0uY29udHJvbDpob3ZlciB7Cisg
ICAgb3BhY2l0eTogMC43NTsKK30KKworLnRvb2xiYXIgLml0ZW0uY29udHJvbDphY3RpdmUgewor
ICAgIG9wYWNpdHk6IDE7Cit9CisKKy50b29sYmFyIC5pdGVtLmNvbnRyb2wgPiAuZ2x5cGggewor
ICAgIHdpZHRoOiAxNnB4OworICAgIGhlaWdodDogMTZweDsKKworICAgIGJhY2tncm91bmQtcmVw
ZWF0OiBuby1yZXBlYXQ7CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsK
K30KKworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLml0ZW0uY29udHJvbCB7CisgICAg
b3BhY2l0eTogMC4zNTsKK30KKworLnRvb2xiYXIgLml0ZW0uY29udHJvbC5kaXNhYmxlZCB7Cisg
ICAgb3BhY2l0eTogMC4zNSAhaW1wb3J0YW50OworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAu
dG9vbGJhciAuaXRlbS5jb250cm9sLmRpc2FibGVkIHsKKyAgICBvcGFjaXR5OiAwLjIgIWltcG9y
dGFudDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzQyOGM4
YWIxM2QyYTVlZGNiMWQwZDE4MWU0YjlhZWRkYjc4YjhhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVt
LmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5Db250cm9sVG9vbGJh
ckl0ZW0gPSBjbGFzcyBDb250cm9sVG9vbGJhckl0ZW0gZXh0ZW5kcyBXSS5CdXR0b25OYXZpZ2F0
aW9uSXRlbQoreworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIHRvb2xUaXAsIGltYWdlLCBp
bWFnZVdpZHRoLCBpbWFnZUhlaWdodCkKKyAgICB7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIs
IHRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgZmFsc2UpOworICAgIH0K
KworICAgIC8vIFByb3RlY3RlZAorCisgICAgZ2V0IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBbImNvbnRyb2wiXTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRW
aWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVDb250ZW50Vmlldy5jc3MKaW5kZXggYzg5ZTlkMGYzOWYxZWIxYmY5YzJjNmIxOTNlZmY0NGU0
M2M4ODZlNy4uNDEzZDA2ZDIzZDFiMjE1Yjg2ZDNjNGJlNWUxMWM5NTA0ODUyN2U0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNv
bnRlbnRWaWV3LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlQ29udGVudFZpZXcuY3NzCkBAIC01OSw3ICs1OSw3IEBAIGJvZHlbZGlyPXJ0
bF0gLmNvbnRlbnQtdmlldy5kb20tdHJlZSAudHJlZS1vdXRsaW5lLmRvbSBsaSAuc3RhdHVzLWlt
YWdlIHsKICAgICBmaWxsOiB2YXIoLS1icmVha3BvaW50LWNvbG9yKTsKIH0KIAotYm9keTpub3Qo
LndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC5jb250ZW50LXZpZXcu
ZG9tLXRyZWUgLnRyZWUtb3V0bGluZS5kb206Zm9jdXMgbGk6bWF0Y2hlcyguc2VsZWN0ZWQsIC5o
b3ZlcmVkKSAuc3RhdHVzLWltYWdlLmJyZWFrcG9pbnQgeworYm9keTpub3QoLndpbmRvdy1pbmFj
dGl2ZSkgLmNvbnRlbnQtdmlldy5kb20tdHJlZSAudHJlZS1vdXRsaW5lLmRvbTpmb2N1cyBsaTpt
YXRjaGVzKC5zZWxlY3RlZCwgLmhvdmVyZWQpIC5zdGF0dXMtaW1hZ2UuYnJlYWtwb2ludCB7CiAg
ICAgc3Ryb2tlOiB2YXIoLS1zZWxlY3RlZC1mb3JlZ3JvdW5kLWNvbG9yKTsKIH0KIApAQCAtNzYs
NyArNzYsNyBAQCBib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFj
dGl2ZSkgLmNvbnRlbnQtdmlldy5kb20tdHJlZSAudHJlZQogICAgIHN0cm9rZTogdmFyKC0tYnJl
YWtwb2ludC1jb2xvcik7CiB9CiAKLWJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ct
ZG9ja2VkLWluYWN0aXZlKSAuY29udGVudC12aWV3LmRvbS10cmVlIC50cmVlLW91dGxpbmUuZG9t
OmZvY3VzIGxpOm1hdGNoZXMoLnNlbGVjdGVkLCAuaG92ZXJlZCkgLnN0YXR1cy1pbWFnZS5icmVh
a3BvaW50LnN1YnRyZWUgeworYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSkgLmNvbnRlbnQtdmll
dy5kb20tdHJlZSAudHJlZS1vdXRsaW5lLmRvbTpmb2N1cyBsaTptYXRjaGVzKC5zZWxlY3RlZCwg
LmhvdmVyZWQpIC5zdGF0dXMtaW1hZ2UuYnJlYWtwb2ludC5zdWJ0cmVlIHsKICAgICBzdHJva2U6
IHZhcigtLXNlbGVjdGVkLWZvcmVncm91bmQtY29sb3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJW
aWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hi
b2FyZENvbnRhaW5lclZpZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzY2JhN2ZiOGU4NTg3MWU4MmQ4YWI3
OWQ0MzgwOTcxZjg4ZGNkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmNzcwpAQCAtMCww
ICsxLDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWlu
ZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBtYXJnaW46IDRweDsKKyAgICBoZWln
aHQ6IDIycHg7CisKKyAgICBib3JkZXItcmFkaXVzOiA0cHg7CisgICAgb3ZlcmZsb3c6IGhpZGRl
bjsKK30KKworYm9keTptYXRjaGVzKC5wYWdlLCAud2ViLXBhZ2UpIC50b29sYmFyIC5kYXNoYm9h
cmQtY29udGFpbmVyIHsKKyAgICB3aWR0aDogMzZ2dzsKKyAgICBtaW4td2lkdGg6IDM1MHB4Owor
fQorCitib2R5Om5vdCgucGFnZSwgLndlYi1wYWdlKSAudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRh
aW5lciB7CisgICAgd2lkdGg6IDI1dnc7CisgICAgbWluLXdpZHRoOiAxNzVweDsKK30KKworLnRv
b2xiYXIuY29sbGFwc2VkIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICBtaW4td2lkdGg6IDE3
NXB4ICFpbXBvcnRhbnQ7CisgICAgd2lkdGg6IDE3NXB4ICFpbXBvcnRhbnQ7Cit9CisKKy8qIERl
ZmF1bHQgc3R5bGVzIGZvciBkYXNoYm9hcmRzICovCisudG9vbGJhciAuZGFzaGJvYXJkIHsKKyAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGJvdHRvbTogMDsKKyAgICBs
ZWZ0OiAwOworICAgIHJpZ2h0OiAwOworICAgIC13ZWJraXQtcGFkZGluZy1zdGFydDogMTBweDsK
KyAgICAtd2Via2l0LXBhZGRpbmctZW5kOiA1cHg7CisgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAw
LjRzOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLnZpc2libGUgeworICAgIHotaW5kZXg6IDE7
IC8qIEVzdGFibGlzaCBhIHN0YWNraW5nIGNvbnRleHQuICovCit9CisKKy50b29sYmFyIC5kYXNo
Ym9hcmQ6bm90KC52aXNpYmxlKSB7CisgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OworfQor
CisudG9vbGJhciAuZGFzaGJvYXJkLnNsaWRlLW91dC11cCB7CisgICAgYW5pbWF0aW9uLW5hbWU6
IHNsaWRlLXRvcC1lZGdlOworICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IHJldmVyc2U7Cit9CisK
Ky50b29sYmFyIC5kYXNoYm9hcmQuc2xpZGUtb3V0LWRvd24geworICAgIGFuaW1hdGlvbi1uYW1l
OiBzbGlkZS1ib3R0b20tZWRnZTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1pbi11
cCB7CisgICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlLWJvdHRvbS1lZGdlOworICAgIGFuaW1hdGlv
bi1kaXJlY3Rpb246IHJldmVyc2U7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuc2xpZGUtaW4t
ZG93biB7CisgICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlLXRvcC1lZGdlOworfQorCitAa2V5ZnJh
bWVzIHNsaWRlLXRvcC1lZGdlIHsKKyAgICBmcm9tIHsKKyAgICAgICAgdHJhbnNmb3JtOiB0cmFu
c2xhdGVZKC0zMHB4KTsKKyAgICB9CisgICAgdG8geworICAgICAgICB0cmFuc2Zvcm06IHRyYW5z
bGF0ZVkoMCk7CisgICAgfQorfQorCitAa2V5ZnJhbWVzIHNsaWRlLWJvdHRvbS1lZGdlIHsKKyAg
ICBmcm9tIHsKKyAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOworICAgIH0KKyAgICB0
byB7CisgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTsKKyAgICB9Cit9CisKKy5k
YXNoYm9hcmQtY29udGFpbmVyIC5hZHZhbmNlLWFycm93IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgd2lkdGg6IDE5cHg7CisgICAgdG9wOiAwOworICAgIGJvdHRvbTogMDsKKyAgICBw
YWRkaW5nOiA0cHggMDsKKyAgICBvcGFjaXR5OiAwLjY7CisKKyAgICB6LWluZGV4OiAyOworICAg
IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgYmFja2dyb3VuZC1zaXplOiA4cHg7
CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL0ltYWdlcy9VcERvd25BcnJvd3Muc3ZnKTsK
KworICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHk7CisgICAgdHJhbnNpdGlvbi1kdXJh
dGlvbjogMC4yczsKKyAgICBiYWNrZ3JvdW5kLWNsaXA6IGNvbnRlbnQtYm94OworCisgICAgLS1k
YXNoYm9hcmQtYWR2YW5jZS1hcnJvdy1vZmZzZXQtZW5kOiAwcHg7Cit9CisKK2JvZHlbZGlyPWx0
cl0gLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3cgeworICAgIHJpZ2h0OiB2YXIo
LS1kYXNoYm9hcmQtYWR2YW5jZS1hcnJvdy1vZmZzZXQtZW5kKTsKK30KKworYm9keVtkaXI9cnRs
XSAuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdyB7CisgICAgbGVmdDogdmFyKC0t
ZGFzaGJvYXJkLWFkdmFuY2UtYXJyb3ctb2Zmc2V0LWVuZCk7Cit9CisKKy5kYXNoYm9hcmQtY29u
dGFpbmVyIC5hZHZhbmNlLWFycm93OmhvdmVyIHsKKyAgICBvcGFjaXR5OiAwLjg7Cit9CisKKy5k
YXNoYm9hcmQtY29udGFpbmVyIC5hZHZhbmNlLWFycm93OmFjdGl2ZSB7CisgICAgb3BhY2l0eTog
MTsKK30KKworLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3cuaW5hY3RpdmUgewor
ICAgIG9wYWNpdHk6IDA7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CisKKy5kYXNoYm9h
cmQtY29udGFpbmVyIC5hZHZhbmNlLWFycm93LmFkdmFuY2UtZm9yd2FyZCB7CisgICAgdG9wOiAw
OworICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSA0cHg7Cit9CisKKy5kYXNoYm9hcmQtY29u
dGFpbmVyIC5hZHZhbmNlLWFycm93LmFkdmFuY2UtYmFja3dhcmQgeworICAgIGJvdHRvbTogMDsK
KyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgLTRweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9h
cmRDb250YWluZXJWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NzMwNzAxYzZjYTQ5MGNkNTMxMDRiNWIy
ZmMzNDgxYTg5YjIwODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmpzCkBAIC0wLDAgKzEs
MjgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3ID0gY2xh
c3MgRGFzaGJvYXJkQ29udGFpbmVyVmlldyBleHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0
cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fdG9vbGJh
ckl0ZW0gPSBuZXcgV0kuTmF2aWdhdGlvbkl0ZW0oImRhc2hib2FyZC1jb250YWluZXIiLCAiZ3Jv
dXAiLCBXSS5VSVN0cmluZygiQWN0aXZpdHkgVmlld2VyIikpOworCisgICAgICAgIHRoaXMuX2Fk
dmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50ID0gdGhpcy5fdG9vbGJhckl0ZW0uZWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAgIHRoaXMuX2Fk
dmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50LmNsYXNzTmFtZSA9ICJhZHZhbmNlLWFycm93IGFkdmFu
Y2UtZm9yd2FyZCI7CisgICAgICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVudCA9
IHRoaXMuX3Rvb2xiYXJJdGVtLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2IikpOworICAgICAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0VsZW1lbnQu
Y2xhc3NOYW1lID0gImFkdmFuY2UtYXJyb3cgYWR2YW5jZS1iYWNrd2FyZCI7CisKKyAgICAgICAg
dGhpcy5fYWR2YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLl9hZHZhbmNlRm9yd2FyZEFycm93Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
dGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dDbGlja2VkLmJpbmQodGhpcykpOworCisgICAg
ICAgIC8vIFJlcHJlc2VudHMgY3VycmVudGx5IG9wZW4gZGFzaGJvYXJkcywgd2l0aCB0aGUgbW9z
dCByZWNlbnQgZW50cmllcyBhcHBlbmRlZCB0byB0aGUgZW5kLgorICAgICAgICB0aGlzLl9kYXNo
Ym9hcmRTdGFjayA9IFtdOworICAgICAgICB0aGlzLl9jdXJyZW50SW5kZXggPSAtMTsKKworICAg
ICAgICB0aGlzLl91cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5KCk7CisgICAgfQorCisgICAg
Ly8gUHVibGljCisKKyAgICBnZXQgdG9vbGJhckl0ZW0oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3Rvb2xiYXJJdGVtOworICAgIH0KKworICAgIGdldCBjdXJyZW50RGFzaGJvYXJkVmll
dygpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY3VycmVudEluZGV4ID09PSAtMSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHJldHVybiB0aGlzLl9kYXNoYm9hcmRTdGFj
a1t0aGlzLl9jdXJyZW50SW5kZXhdOworICAgIH0KKworICAgIHNob3dEYXNoYm9hcmRWaWV3Rm9y
UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICB2YXIg
ZGFzaGJvYXJkVmlldyA9IHRoaXMuX2Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChy
ZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAgIGlmICghZGFzaGJvYXJkVmlldykKKyAgICAgICAg
ICAgIHJldHVybiBudWxsOworCisgICAgICAgIGlmICh0aGlzLmN1cnJlbnREYXNoYm9hcmRWaWV3
ID09PSBkYXNoYm9hcmRWaWV3KQorICAgICAgICAgICAgcmV0dXJuIGRhc2hib2FyZFZpZXc7CisK
KyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZGFzaGJvYXJkU3RhY2suaW5kZXhPZihkYXNoYm9h
cmRWaWV3KTsKKyAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZEF0SW5kZXgoaW5kZXgpOworICAg
ICAgICByZXR1cm4gZGFzaGJvYXJkVmlldzsKKyAgICB9CisKKyAgICBoaWRlRGFzaGJvYXJkVmll
d0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAg
dmFyIG9ubHlSZXR1cm5FeGlzdGluZ1ZpZXdzID0gdHJ1ZTsKKyAgICAgICAgdmFyIGRhc2hib2Fy
ZFZpZXcgPSB0aGlzLl9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50
ZWRPYmplY3QsIG9ubHlSZXR1cm5FeGlzdGluZ1ZpZXdzKTsKKworICAgICAgICBpZiAodGhpcy5j
dXJyZW50RGFzaGJvYXJkVmlldyAhPT0gZGFzaGJvYXJkVmlldykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jdXJyZW50SW5kZXggPiAwKTsKKyAg
ICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZEF0SW5kZXgodGhpcy5fY3VycmVudEluZGV4IC0gMSk7
CisgICAgfQorCisgICAgY2xvc2VEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVw
cmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICB2YXIgb25seVJldHVybkV4aXN0aW5nVmll
d3MgPSB0cnVlOworICAgICAgICB2YXIgZGFzaGJvYXJkVmlldyA9IHRoaXMuX2Rhc2hib2FyZFZp
ZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seVJldHVybkV4aXN0
aW5nVmlld3MpOworICAgICAgICBpZiAoIWRhc2hib2FyZFZpZXcpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5fY2xvc2VEYXNoYm9hcmRWaWV3KGRhc2hib2FyZFZpZXcpOwor
ICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9hZHZhbmNlRm9yd2FyZEFycm93Q2xpY2tl
ZCgpCisgICAgeworICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkQXRJbmRleCh0aGlzLl9jdXJy
ZW50SW5kZXggKyAxKTsKKyAgICB9CisKKyAgICBfYWR2YW5jZUJhY2t3YXJkQXJyb3dDbGlja2Vk
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRBdEluZGV4KHRoaXMuX2N1cnJl
bnRJbmRleCAtIDEpOworICAgIH0KKworICAgIF9kaXNtaXNzQWR2YW5jZUFycm93cygpCisgICAg
eworICAgICAgICB0aGlzLl9hZHZhbmNlRm9yd2FyZEFycm93RWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSk7CisgICAg
ICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLkRh
c2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSk7CisgICAgfQorCisg
ICAgX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKQorICAgIHsKKyAgICAgICAgdmFyIGNh
bkFkdmFuY2VGb3J3YXJkID0gdGhpcy5fY3VycmVudEluZGV4IDwgdGhpcy5fZGFzaGJvYXJkU3Rh
Y2subGVuZ3RoIC0gMTsKKyAgICAgICAgdmFyIGNhbkFkdmFuY2VCYWNrd2FyZCA9IHRoaXMuX2N1
cnJlbnRJbmRleCA+IDA7CisgICAgICAgIHRoaXMuX2FkdmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50
LmNsYXNzTGlzdC50b2dnbGUoV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5JbmFjdGl2ZVN0eWxl
Q2xhc3NOYW1lLCAhY2FuQWR2YW5jZUZvcndhcmQpOworICAgICAgICB0aGlzLl9hZHZhbmNlQmFj
a3dhcmRBcnJvd0VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXSS5EYXNoYm9hcmRDb250YWluZXJW
aWV3LkluYWN0aXZlU3R5bGVDbGFzc05hbWUsICFjYW5BZHZhbmNlQmFja3dhcmQpOworICAgIH0K
KworICAgIF9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmpl
Y3QsIG9ubHlSZXR1cm5FeGlzdGluZ1ZpZXdzKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQocmVwcmVzZW50ZWRPYmplY3QpOworCisgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwga25v
d24gZGFzaGJvYXJkIHZpZXdzIGFuZCBzZWUgaWYgYW55IGFyZSBmb3IgdGhpcyBvYmplY3QuCisg
ICAgICAgIGZvciAodmFyIGRhc2hib2FyZFZpZXcgb2YgdGhpcy5fZGFzaGJvYXJkU3RhY2spIHsK
KyAgICAgICAgICAgIGlmIChkYXNoYm9hcmRWaWV3LnJlcHJlc2VudGVkT2JqZWN0ID09PSByZXBy
ZXNlbnRlZE9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZGFzaGJvYXJkVmlldzsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cykKKyAgICAgICAg
ICAgIHJldHVybiBudWxsOworCisgICAgICAgIC8vIE5vIGV4aXN0aW5nIGNvbnRlbnQgdmlldyBm
b3VuZCwgbWFrZSBhIG5ldyBvbmUuCisgICAgICAgIGRhc2hib2FyZFZpZXcgPSBXSS5EYXNoYm9h
cmRWaWV3LmNyZWF0ZShyZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoZGFzaGJvYXJkVmlldywgIlVua25vd24gcmVwcmVzZW50ZWRPYmplY3QiLCByZXByZXNlbnRl
ZE9iamVjdCk7CisgICAgICAgIGlmICghZGFzaGJvYXJkVmlldykKKyAgICAgICAgICAgIHJldHVy
biBudWxsOworCisgICAgICAgIHRoaXMuX2Rhc2hib2FyZFN0YWNrLnB1c2goZGFzaGJvYXJkVmll
dyk7CisgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZGFzaGJv
YXJkVmlldy5lbGVtZW50KTsKKworICAgICAgICByZXR1cm4gZGFzaGJvYXJkVmlldzsKKyAgICB9
CisKKyAgICBfc2hvd0Rhc2hib2FyZEF0SW5kZXgoaW5kZXgpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydChpbmRleCA+PSAwICYmIGluZGV4IDw9IHRoaXMuX2Rhc2hib2FyZFN0YWNrLmxl
bmd0aCAtIDEpOworCisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPT09IGluZGV4KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBhZHZhbmNlRGlyZWN0aW9uID0gbnVs
bDsKKyAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRJbmRleCA8IGluZGV4KQorICAgICAgICAgICAg
YWR2YW5jZURpcmVjdGlvbiA9IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVj
dGlvbi5Gb3J3YXJkOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZHZhbmNlRGlyZWN0aW9u
ID0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0aW9uLkJhY2t3YXJkOwor
ICAgICAgICB2YXIgaW5pdGlhbERpcmVjdGlvbiA9IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcu
QWR2YW5jZURpcmVjdGlvbi5Ob25lOworICAgICAgICB2YXIgaXNJbml0aWFsRGFzaGJvYXJkID0g
dGhpcy5fY3VycmVudEluZGV4ID09PSAtMTsKKyAgICAgICAgaWYgKCFpc0luaXRpYWxEYXNoYm9h
cmQpCisgICAgICAgICAgICB0aGlzLl9oaWRlRGFzaGJvYXJkVmlldyh0aGlzLmN1cnJlbnREYXNo
Ym9hcmRWaWV3LCBhZHZhbmNlRGlyZWN0aW9uKTsKKworICAgICAgICB0aGlzLl9jdXJyZW50SW5k
ZXggPSBpbmRleDsKKyAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZFZpZXcodGhpcy5jdXJyZW50
RGFzaGJvYXJkVmlldywgaXNJbml0aWFsRGFzaGJvYXJkID8gaW5pdGlhbERpcmVjdGlvbiA6IGFk
dmFuY2VEaXJlY3Rpb24pOworICAgIH0KKworICAgIF9zaG93RGFzaGJvYXJkVmlldyhkYXNoYm9h
cmRWaWV3LCBhZHZhbmNlRGlyZWN0aW9uKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
ZGFzaGJvYXJkVmlldyBpbnN0YW5jZW9mIFdJLkRhc2hib2FyZFZpZXcpOworCisgICAgICAgIGRh
c2hib2FyZFZpZXcuc2hvd24oKTsKKyAgICAgICAgdGhpcy5fZGlzbWlzc0FkdmFuY2VBcnJvd3Mo
KTsKKworICAgICAgICB2YXIgYW5pbWF0aW9uQ2xhc3MgPSBudWxsOworICAgICAgICBpZiAoYWR2
YW5jZURpcmVjdGlvbiA9PT0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0
aW9uLkZvcndhcmQpCisgICAgICAgICAgICBhbmltYXRpb25DbGFzcyA9IFdJLkRhc2hib2FyZENv
bnRhaW5lclZpZXcuRm9yd2FyZEluY29taW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWU7CisgICAg
ICAgIGlmIChhZHZhbmNlRGlyZWN0aW9uID09PSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFk
dmFuY2VEaXJlY3Rpb24uQmFja3dhcmQpCisgICAgICAgICAgICBhbmltYXRpb25DbGFzcyA9IFdJ
LkRhc2hib2FyZENvbnRhaW5lclZpZXcuQmFja3dhcmRJbmNvbWluZ0Rhc2hib2FyZFN0eWxlQ2xh
c3NOYW1lOworCisgICAgICAgIHZhciBjb250YWluZXIgPSB0aGlzOworICAgICAgICBkYXNoYm9h
cmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZp
c2libGVEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSk7CisKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0
aW9uRW5kZWQoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGRhc2hi
b2FyZFZpZXcuZWxlbWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGRhc2hib2FyZFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQi
LCBhbmltYXRpb25FbmRlZCk7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZShhbmltYXRpb25DbGFzcyk7CisgICAgICAgICAgICBjb250YWluZXIuX3Vw
ZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChh
bmltYXRpb25DbGFzcykgeworICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoYW5pbWF0aW9uQ2xhc3MpOworICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsIGFuaW1hdGlvbkVuZGVkKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBkYXNoYm9hcmRWaWV3OworICAgIH0KKworICAgIF9o
aWRlRGFzaGJvYXJkVmlldyhkYXNoYm9hcmRWaWV3LCBhZHZhbmNlRGlyZWN0aW9uLCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhc2hib2FyZFZpZXcgaW5zdGFuY2Vv
ZiBXSS5EYXNoYm9hcmRWaWV3KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5jdXJyZW50
RGFzaGJvYXJkVmlldyA9PT0gZGFzaGJvYXJkVmlldyk7CisKKyAgICAgICAgZGFzaGJvYXJkVmll
dy5oaWRkZW4oKTsKKyAgICAgICAgdGhpcy5fZGlzbWlzc0FkdmFuY2VBcnJvd3MoKTsKKworICAg
ICAgICB2YXIgYW5pbWF0aW9uQ2xhc3MgPSBudWxsOworICAgICAgICBpZiAoYWR2YW5jZURpcmVj
dGlvbiA9PT0gV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0aW9uLkZvcndh
cmQpCisgICAgICAgICAgICBhbmltYXRpb25DbGFzcyA9IFdJLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuRm9yd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWU7CisgICAgICAgIGlmIChh
ZHZhbmNlRGlyZWN0aW9uID09PSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJl
Y3Rpb24uQmFja3dhcmQpCisgICAgICAgICAgICBhbmltYXRpb25DbGFzcyA9IFdJLkRhc2hib2Fy
ZENvbnRhaW5lclZpZXcuQmFja3dhcmRPdXRnb2luZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lOwor
CisgICAgICAgIHZhciBjb250YWluZXIgPSB0aGlzOworCisgICAgICAgIGZ1bmN0aW9uIGFuaW1h
dGlvbkVuZGVkKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBkYXNo
Ym9hcmRWaWV3LmVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5k
IiwgYW5pbWF0aW9uRW5kZWQpOworICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoYW5pbWF0aW9uQ2xhc3MpOworICAgICAgICAgICAgZGFzaGJvYXJkVmll
dy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5WaXNp
YmxlRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgY29udGFpbmVyLl91cGRh
dGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5KCk7CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgY2Fs
bGJhY2sgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChhbmltYXRpb25DbGFzcykgeworICAgICAgICAgICAgZGFzaGJv
YXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoYW5pbWF0aW9uQ2xhc3MpOworICAgICAgICAg
ICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIs
IGFuaW1hdGlvbkVuZGVkKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBkYXNoYm9hcmRW
aWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZp
c2libGVEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSk7CisgICAgfQorCisgICAgX2Nsb3NlRGFzaGJv
YXJkVmlldyhkYXNoYm9hcmRWaWV3KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGFz
aGJvYXJkVmlldyBpbnN0YW5jZW9mIFdJLkRhc2hib2FyZFZpZXcpOworCisgICAgICAgIGZ1bmN0
aW9uIGRpc3NvY2lhdGVEYXNoYm9hcmRWaWV3KCkgeworICAgICAgICAgICAgZGFzaGJvYXJkVmll
dy5jbG9zZWQoKTsKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKGRhc2hib2FyZFZpZXcuZWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgaW5kZXggPSB0aGlzLl9kYXNoYm9hcmRTdGFjay5pbmRleE9mKGRhc2hib2FyZFZpZXcp
OworCisgICAgICAgIGlmICh0aGlzLmN1cnJlbnREYXNoYm9hcmRWaWV3ID09PSBkYXNoYm9hcmRW
aWV3KSB7CisgICAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gV0kuRGFzaGJvYXJkQ29udGFpbmVy
Vmlldy5BZHZhbmNlRGlyZWN0aW9uLkJhY2t3YXJkOworICAgICAgICAgICAgdGhpcy5faGlkZURh
c2hib2FyZFZpZXcodGhpcy5jdXJyZW50RGFzaGJvYXJkVmlldywgZGlyZWN0aW9uLCBkaXNzb2Np
YXRlRGFzaGJvYXJkVmlldyk7CisgICAgICAgICAgICB0aGlzLl9kYXNoYm9hcmRTdGFjay5zcGxp
Y2UoaW5kZXgsIDEpOworICAgICAgICAgICAgLS10aGlzLl9jdXJyZW50SW5kZXg7CisgICAgICAg
ICAgICB0aGlzLl9zaG93RGFzaGJvYXJkVmlldyh0aGlzLmN1cnJlbnREYXNoYm9hcmRWaWV3LCBk
aXJlY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5fZGFzaGJvYXJkU3RhY2suc3BsaWNlKGluZGV4LCAxKTsKKyAgICAgICAgaWYgKHRoaXMuX2N1
cnJlbnRJbmRleCA+IGluZGV4KQorICAgICAgICAgICAgLS10aGlzLl9jdXJyZW50SW5kZXg7Cisg
ICAgICAgIGRpc3NvY2lhdGVEYXNoYm9hcmRWaWV3LmNhbGwodGhpcyk7CisKKyAgICAgICAgdGhp
cy5fdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpOworICAgIH0KK307CisKK1dJLkRhc2hi
b2FyZENvbnRhaW5lclZpZXcuVmlzaWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInZpc2li
bGUiOworV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lID0g
ImluYWN0aXZlIjsKKworV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0aW9u
ID0geworICAgIEZvcndhcmQ6IFN5bWJvbCgiZGFzaGJvYXJkLWNvbnRhaW5lci12aWV3LWFkdmFu
Y2UtZGlyZWN0aW9uLWZvcndhcmQiKSwKKyAgICBCYWNrd2FyZDogU3ltYm9sKCJkYXNoYm9hcmQt
Y29udGFpbmVyLXZpZXctYWR2YW5jZS1kaXJlY3Rpb24tYmFja3dhcmQiKSwKKyAgICBOb25lOiBT
eW1ib2woImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1ub25lIikK
K307CisKK1dJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuRm9yd2FyZEluY29taW5nRGFzaGJvYXJk
U3R5bGVDbGFzc05hbWUgPSAic2xpZGUtaW4tZG93biI7CitXSS5EYXNoYm9hcmRDb250YWluZXJW
aWV3LkJhY2t3YXJkSW5jb21pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSA9ICJzbGlkZS1pbi11
cCI7CitXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkZvcndhcmRPdXRnb2luZ0Rhc2hib2FyZFN0
eWxlQ2xhc3NOYW1lID0gInNsaWRlLW91dC1kb3duIjsKK1dJLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuQmFja3dhcmRPdXRnb2luZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLW91dC11
cCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EYXNoYm9hcmRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGFzaGJvYXJkVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjQ1Y2JhMmNjM2FmYzA3NGJmYmU2
NjRjMjk1NGVlNjVkNWUyYmI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5qcwpAQCAtMCwwICsxLDgyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitXSS5EYXNoYm9hcmRWaWV3ID0gY2xhc3MgRGFzaGJvYXJkVmll
dyBleHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0
LCBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaWRlbnRpZmllcik7
CisKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9
IHJlcHJlc2VudGVkT2JqZWN0OworCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJkYXNoYm9hcmQiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGlkZW50
aWZpZXIpOworICAgIH0KKworICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGNyZWF0ZShyZXBy
ZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVk
T2JqZWN0KTsKKworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5E
ZWZhdWx0RGFzaGJvYXJkKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5EZWZhdWx0RGFzaGJv
YXJkVmlldyhyZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV0kuRGVidWdnZXJEYXNoYm9hcmQpCisgICAgICAgICAgICByZXR1cm4g
bmV3IFdJLkRlYnVnZ2VyRGFzaGJvYXJkVmlldyhyZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAg
ICAgdGhyb3cgIkNhbid0IG1ha2UgYSBEYXNoYm9hcmRWaWV3IGZvciBhbiB1bmtub3duIHJlcHJl
c2VudGVkT2JqZWN0LiI7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZWxlbWVu
dCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9CisKKyAgICBn
ZXQgcmVwcmVzZW50ZWRPYmplY3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlcHJl
c2VudGVkT2JqZWN0OworICAgIH0KKworICAgIHNob3duKCkKKyAgICB7CisgICAgICAgIC8vIElt
cGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgaGlkZGVuKCkKKyAgICB7Cisg
ICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgY2xvc2Vk
KCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmN2E2
OGEwNjRlZDFjZmY2ODQ5ZGVjZDZiYzFiMDJmMTQxMjQ4NTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2Fy
ZFZpZXcuY3NzCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudG9vbGJhciAu
ZGFzaGJvYXJkLmRlYnVnZ2VyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGZsZXgtd3JhcDog
bm93cmFwOworICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOworICAgIGFsaWduLWl0ZW1zOiBj
ZW50ZXI7CisgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiA1cHg7CisgICAgLXdlYmtpdC1wYWRk
aW5nLWVuZDogMTJweDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgY29sb3I6IGhzbCgw
LCAwJSwgMjMlKTsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5tZXNzYWdlIHsKKyAgICBm
b250LXdlaWdodDogYm9sZDsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciAubmF2aWdhdGlvbi1i
YXIgeworICAgIC13ZWJraXQtbWFyZ2luLWVuZDogNHB4OworICAgIGJvcmRlcjogMDsKK30KKwor
LnRvb2xiYXI6bm90KC5zbWFsbC1zaXplKSAuZGFzaGJvYXJkLmRlYnVnZ2VyIC5uYXZpZ2F0aW9u
LWJhciB7CisgICAgbWFyZ2luLXRvcDogMXB4OworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyIC5u
YXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24geworICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7Cisg
ICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAxNnB4OworICAgIGN1cnNvcjogcG9pbnRlcjsK
KyAgICBwYWRkaW5nOiAwOworICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OworICAgIGJhY2tn
cm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKKyAgICBib3gtc2hhZG93OiBub25lICFpbXBv
cnRhbnQ7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1
dHRvbiA+IC5nbHlwaCB7CisgICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAxNnB4OworICAg
IGFuaW1hdGlvbi1uYW1lOiBwdWxzZS1wYXVzZS1idXR0b247CisgICAgYW5pbWF0aW9uLWR1cmF0
aW9uOiAxczsKKyAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKKyAgICBh
bmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTsKKyAgICBhbmltYXRpb24tZGlyZWN0
aW9uOiBhbHRlcm5hdGU7CisgICAgY29sb3I6IGhzbCgyMDcsIDQ2JSwgNTklKTsKK30KKworYm9k
eS53aW5kb3ctaW5hY3RpdmUgLmRhc2hib2FyZC5kZWJ1Z2dlciAubmF2aWdhdGlvbi1iYXIgLml0
ZW0uYnV0dG9uID4gLmdseXBoIHsKKyAgICBhbmltYXRpb24tbmFtZTogbm9uZTsKK30KKworLmRh
c2hib2FyZC5kZWJ1Z2dlciAubmF2aWdhdGlvbi1iYXIgLml0ZW0uZGVidWdnZXItZGFzaGJvYXJk
LXBhdXNlLmFjdGl2YXRlZCB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IHZhcigtLWds
eXBoLWNvbG9yLWFjdGl2ZSk7Cit9CisKK0BrZXlmcmFtZXMgcHVsc2UtcGF1c2UtYnV0dG9uIHsK
KyAgICBmcm9tIHsgb3BhY2l0eTogMC43OyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9CisgICAgdG8g
eyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7IH0KK30KKworLmRhc2hib2FyZC5k
ZWJ1Z2dlciA+IC5kaXZpZGVyIHsKKyAgICB3aWR0aDogMXB4OworICAgIGhlaWdodDogMTAwJTsK
KworICAgIG1hcmdpbjogMCAxMHB4OworCisgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdy
YWRpZW50KGhzbCgwLCAwJSwgNzQlKSwgaHNsKDAsIDAlLCA3NCUpKTsKKyAgICBiYWNrZ3JvdW5k
LXNpemU6IDEwMCUgNjYlOworICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAg
YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4g
ZGl2IHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAg
ZmxleDogbm9uZTsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiB7CisgICAg
b3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBmbGV4OiBpbml0aWFsOworfQorCisuZGFzaGJvYXJkLmRl
YnVnZ2VyID4gLmxvY2F0aW9uID4gKiB7CisgICAgZmxleDogbm9uZTsKK30KKworLmRhc2hib2Fy
ZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiA+IDpmaXJzdC1jaGlsZCB7CisgICAgYWxpZ24tc2VsZjog
Y2VudGVyOworICAgIHdpZHRoOiAxNnB4OworICAgIGhlaWdodDogMTZweDsKK30KKworLyogQWRk
IHNwYWNpbmcgYmV0d2VlbiB0aGUgZWxsaXBzaXMnZCBsb2NhdGlvbiBhbmQgdGhlIHVwL2Rvd24g
YXJyb3dzLiAqLworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiA+IDpsYXN0LWNoaWxk
IHsKKyAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDVweDsKK30KKworLnRvb2xiYXI6bm90KC5zbWFs
bC1zaXplKSAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIDpub3QoOmZpcnN0LWNoaWxk
KSB7CisgICAgbWFyZ2luLXRvcDogMXB4OworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxv
Y2F0aW9uIGltZy5pY29uIHsKKyAgICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7Cit9
CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gOm1hdGNoZXMoLmZ1bmN0aW9uLWlj
b24sIC5ldmVudC1saXN0ZW5lci1pY29uKSB7CisgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiA1cHg7
Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gLmZ1bmN0aW9uLW5hbWUgewor
ICAgIGNvbG9yOiBoc2woMCwgMCUsIDExJSk7CisgICAgcGFkZGluZy1ib3R0b206IDFweDsKK30K
KworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiAuZnVuY3Rpb24tbmFtZTo6YWZ0ZXIg
eworICAgIGNvbnRlbnQ6ICJcMDBBMFwyMDE0XDAwQTAiOyAvKiAmbmJzcDsmbWRhc2g7Jm5ic3A7
ICovOworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIC5nby10by1saW5rIHsK
KyAgICBwYWRkaW5nLWJvdHRvbTogMXB4OworICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNv
bG9yOiBoc2woMCwgMCUsIDY2JSk7CisKKyAgICBmbGV4OiBpbml0aWFsOworICAgIHRleHQtb3Zl
cmZsb3c6IGVsbGlwc2lzOworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CisKKy50b29sYmFyLmNv
bGxhcHNlZCAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gOm5vdCgubWVzc2FnZSwgLm5hdmlnYXRpb24t
YmFyKSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRvb2xiYXIuc21hbGwtc2l6ZSAuZGFz
aGJvYXJkLmRlYnVnZ2VyID4gLm1lc3NhZ2UgeworICAgIGZvbnQtc2l6ZTogMTBweDsKK30KKwor
LnRvb2xiYXIuc21hbGwtc2l6ZSAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9uIGltZy5p
Y29uLAorLnRvb2xiYXIuc21hbGwtc2l6ZSAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0aW9u
ID4gOmZpcnN0LWNoaWxkIHsKKyAgICB3aWR0aDogMTRweDsKKyAgICBoZWlnaHQ6IDE0cHg7Cit9
CisKK0BtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKKyAgICAudG9vbGJhciAu
ZGFzaGJvYXJkLmRlYnVnZ2VyIHsKKyAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwor
ICAgIH0KKworICAgIC5kYXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1
dHRvbiA+IC5nbHlwaCB7CisgICAgICAgIGNvbG9yOiB2YXIoLS1nbHlwaC1jb2xvci1hY3RpdmUp
OworICAgIH0KKworICAgIC5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gLmZ1bmN0aW9u
LW5hbWUgeworICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvci1hY3RpdmUpOworICAgIH0K
KworICAgIC5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gLmdvLXRvLWxpbmsgeworICAg
ICAgICBwYWRkaW5nLWJvdHRvbTogMXB4OworICAgICAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlv
bi1jb2xvcjogdmFyKC0tdGV4dC1jb2xvci1zZWNvbmRhcnkpOworICAgIH0KKworICAgIC5kYXNo
Ym9hcmQuZGVidWdnZXIgPiAuZGl2aWRlciB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxp
bmVhci1ncmFkaWVudCh2YXIoLS10ZXh0LWNvbG9yLXRlcnRpYXJ5KSwgdmFyKC0tdGV4dC1jb2xv
ci10ZXJ0aWFyeSkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMTAzMjY3NzlkZjM0M2UxODViZGNjZGNjNmNlMzYyNzRlNzJhMGExCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmpzCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXSS5EZWJ1Z2dlckRhc2hib2FyZFZpZXcgPSBjbGFzcyBEZWJ1Z2dlckRhc2hib2Fy
ZFZpZXcgZXh0ZW5kcyBXSS5EYXNoYm9hcmRWaWV3Cit7CisgICAgY29uc3RydWN0b3IocmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCwgImRl
YnVnZ2VyIik7CisKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkFjdGl2ZUNhbGxGcmFtZURpZENoYW5nZSwgdGhpcy5f
cmVidWlsZExvY2F0aW9uLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0g
bmV3IFdJLk5hdmlnYXRpb25CYXI7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0b29sdGlwID0gV0ku
VUlTdHJpbmcoIkNvbnRpbnVlIHNjcmlwdCBleGVjdXRpb24gKCVzIG9yICVzKSIpLmZvcm1hdChX
SS5wYXVzZU9yUmVzdW1lS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSwgV0kucGF1c2VPclJl
c3VtZUFsdGVybmF0ZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOworICAgICAgICB0aGlz
Ll9kZWJ1Z2dlclJlc3VtZUJ1dHRvbkl0ZW0gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0
aW9uSXRlbSgiZGVidWdnZXItZGFzaGJvYXJkLXBhdXNlIiwgdG9vbHRpcCwgdG9vbHRpcCwgIklt
YWdlcy9SZXN1bWUuc3ZnIiwgMTUsIDE1KTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJSZXN1bWVC
dXR0b25JdGVtLmFjdGl2YXRlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyUmVzdW1l
QnV0dG9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX3Jlc3VtZUJ1dHRvbkNsaWNrZWQsIHRoaXMpOworICAgICAgICB0aGlz
Ll9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2RlYnVnZ2VyUmVzdW1lQnV0
dG9uSXRlbSk7CisKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLl9tZXNzYWdlRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBtZXNzYWdlLmNsYXNzTGlz
dC5hZGQoIm1lc3NhZ2UiKTsKKyAgICAgICAgbWVzc2FnZS50aXRsZSA9IG1lc3NhZ2UudGV4dENv
bnRlbnQgPSBXSS5VSVN0cmluZygiRGVidWdnZXIgUGF1c2VkIik7CisgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZChtZXNzYWdlKTsKKworICAgICAgICB2YXIgZGl2aWRlckVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZGl2aWRlckVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgiZGl2aWRlciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQoZGl2aWRlckVsZW1lbnQpOworCisgICAgICAgIHZhciBsb2NhdGlvbkVsZW1lbnQgPSB0aGlz
Ll9sb2NhdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgbG9jYXRpb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoImxvY2F0aW9uIik7CisgICAgICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZChsb2NhdGlvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMu
X3JlYnVpbGRMb2NhdGlvbigpOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgY2xvc2Vk
KCkKKyAgICB7CisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KG51bGwsIG51bGwsIHRoaXMpOworCisgICAgICAgIHN1cGVyLmNsb3NlZCgpOworICAgIH0KKwor
ICAgIC8vIFByaXZhdGUKKworICAgIF9yZWJ1aWxkTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKCFXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX2xvY2F0aW9uRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwor
CisgICAgICAgIHZhciBjYWxsRnJhbWUgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZy
YW1lOworICAgICAgICB2YXIgZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSB8
fCBXSS5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKKworICAgICAgICB2YXIgaWNv
bkNsYXNzTmFtZSA9IFdJLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5GdW5jdGlvbkljb25TdHlsZUNs
YXNzTmFtZTsKKworICAgICAgICAvLyBUaGlzIGlzIG1vcmUgdGhhbiBsaWtlbHkgYW4gZXZlbnQg
bGlzdGVuZXIgZnVuY3Rpb24gd2l0aCBhbiAib24iIHByZWZpeCBhbmQgaXQgaXMKKyAgICAgICAg
Ly8gYXMgbG9uZyBvciBsb25nZXIgdGhhbiB0aGUgc2hvcnRlc3QgZXZlbnQgbGlzdGVuZXIgbmFt
ZSAtLSAib25jdXQiLgorICAgICAgICBpZiAoY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSAmJiBjYWxs
RnJhbWUuZnVuY3Rpb25OYW1lLnN0YXJ0c1dpdGgoIm9uIikgJiYgY2FsbEZyYW1lLmZ1bmN0aW9u
TmFtZS5sZW5ndGggPj0gNSkKKyAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXSS5EZWJ1Z2dl
ckRhc2hib2FyZFZpZXcuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZTsKKworICAgICAg
ICB2YXIgaWNvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgaWNvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZChpY29uQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhp
cy5fbG9jYXRpb25FbGVtZW50LmFwcGVuZENoaWxkKGljb25FbGVtZW50KTsKKworICAgICAgICB2
YXIgaWNvbkltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAg
ICAgICBpY29uSW1hZ2VFbGVtZW50LmNsYXNzTmFtZSA9ICJpY29uIjsKKyAgICAgICAgaWNvbkVs
ZW1lbnQuYXBwZW5kQ2hpbGQoaWNvbkltYWdlRWxlbWVudCk7CisKKyAgICAgICAgdmFyIG5hbWVF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIG5hbWVFbGVt
ZW50LmFwcGVuZChmdW5jdGlvbk5hbWUpOworICAgICAgICBuYW1lRWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJmdW5jdGlvbi1uYW1lIik7CisgICAgICAgIHRoaXMuX2xvY2F0aW9uRWxlbWVudC5hcHBl
bmRDaGlsZChuYW1lRWxlbWVudCk7CisKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIGRvbnRGbG9hdDogdHJ1ZSwKKyAgICAgICAgICAgIGlnbm9yZU5ldHdvcmtUYWI6IHRy
dWUsCisgICAgICAgICAgICBpZ25vcmVTZWFyY2hUYWI6IHRydWUsCisgICAgICAgIH07CisgICAg
ICAgIGxldCBsaW5rRWxlbWVudCA9IFdJLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbkxpbmsoV0ku
ZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24sIG9wdGlv
bnMpOworICAgICAgICB0aGlzLl9sb2NhdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQobGlua0VsZW1l
bnQpOworICAgIH0KKworICAgIF9yZXN1bWVCdXR0b25DbGlja2VkKCkKKyAgICB7CisgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICB9Cit9OworCitXSS5EZWJ1Z2dlckRh
c2hib2FyZFZpZXcuRnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWUgPSBXSS5DYWxsRnJhbWVWaWV3
LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lOworV0kuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkV2
ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05hbWUgPSBXSS5DYWxsRnJhbWVWaWV3LkV2ZW50TGlz
dGVuZXJJY29uU3R5bGVDbGFzc05hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5jc3MgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5j
c3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWU5NDNmZWM4Yjg4NzYwZjhmMTgzYTIyYzE5NWI5YTcwMDI3ZWYzMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmNzcwpAQCAtMCwwICsxLDIxMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworYm9keTptYXRjaGVzKC5wYWdlLCAud2ViLXBhZ2UpIC50b29sYmFyLmNvbGxhcHNl
ZCAuZGFzaGJvYXJkLmRlZmF1bHQgPiA6bWF0Y2hlcygucmVzb3VyY2VzU2l6ZSwgLnRpbWUsIC5s
b2dzKSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworYm9keTpub3QoLnBhZ2UsIC53ZWItcGFn
ZSkgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gOm1hdGNoZXMoLnJlc291cmNlc0NvdW50
LCAucmVzb3VyY2VzU2l6ZSwgLnRpbWUpIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9v
bGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleC1m
bG93OiByb3cgbm93cmFwOworICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOworfQorCisudG9v
bGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbSB7CisgICAgbGluZS1oZWlnaHQ6IDEzcHg7
CisKKyAgICBtYXJnaW46IDFweCAwOworICAgIHBhZGRpbmc6IDAgNXB4OworCisgICAgZGlzcGxh
eTogZmxleDsKKworICAgIG1pbi13aWR0aDogNDVweDsKKworICAgIGp1c3RpZnktY29udGVudDog
Y2VudGVyOworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CisKKyAgICBib3JkZXItcmFkaXVzOiA0
cHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CisKKyAgICBmb250LWZhbWls
eTogLXdlYmtpdC1zeXN0ZW0tZm9udCwgc2Fucy1zZXJpZjsKKyAgICBmb250LXZhcmlhbnQtbnVt
ZXJpYzogdGFidWxhci1udW1zOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiA6
bWF0Y2hlcygudGltZSwgLnJlc291cmNlc1NpemUpIHsKKyAgICBtaW4td2lkdGg6IDcwcHg7Cit9
CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIgewor
ICAgIGJvcmRlcjogMXB4IHNvbGlkIGhzbGEoMCwgMCUsIDAlLCAwLjEpOworfQorCisudG9vbGJh
ciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkOmFjdGl2ZSB7CisgICAgYm9yZGVy
OiAxcHggc29saWQgaHNsYSgwLCAwJSwgMCUsIDAuMik7Cit9CisKKy50b29sYmFyIC5kYXNoYm9h
cmQuZGVmYXVsdCA+IC5pdGVtID4gKiB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBhbGlnbi1p
dGVtczogY2VudGVyOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbSA+
IGltZyB7CisgICAgb3BhY2l0eTogMC4yOworICAgIHdpZHRoOiAxNnB4OworICAgIGhlaWdodDog
MTZweDsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30KKworLnRvb2xiYXIgLmRhc2hib2Fy
ZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZCA+IGltZyB7CisgICAgb3BhY2l0eTogMC41OworfQor
CisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkOmhvdmVyID4gaW1n
IHsKKyAgICBvcGFjaXR5OiAwLjY1OworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQg
PiAuaXRlbSA+IGRpdiB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBmbGV4OiAxOworICAgIC13
ZWJraXQtcGFkZGluZy1zdGFydDogMnB4OworICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC4y
KTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZCA+IGRp
diB7CisgICAgY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjcpOworfQorCisudG9vbGJhciAuZGFz
aGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkOmhvdmVyID4gZGl2IHsKKyAgICBjb2xvcjog
aHNsYSgwLCAwJSwgMCUsIDAuODUpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQg
PiAucmVzb3VyY2VzQ291bnQgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvUmVz
b3VyY2VzLnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC50aW1lID4g
aW1nIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1RpbWUuc3ZnKTsKK30KKworLnRvb2xi
YXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmxvZ3MgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCgu
Li9JbWFnZXMvTG9ncy5zdmcpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAu
cmVzb3VyY2VzU2l6ZSA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9XZWlnaHQu
c3ZnKTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmVycm9ycyA+IGltZyB7
CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9FcnJvcnMuc3ZnKTsKK30KKworLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWZhdWx0ID4gLmVycm9ycy5lbmFibGVkID4gaW1nIHsKKyAgICBjb250ZW50
OiB1cmwoLi4vSW1hZ2VzL0Vycm9yc0VuYWJsZWQuc3ZnKTsKKyAgICBvcGFjaXR5OiAwLjk7Cit9
CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMuZW5hYmxlZDpob3ZlciA+
IGltZyB7CisgICAgb3BhY2l0eTogMTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0
ID4gLmVycm9ycy5lbmFibGVkID4gZGl2IHsKKyAgICBjb2xvcjogaHNsYSgzNTksIDU3JSwgNTAl
LCAwLjkpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3JzLmVuYWJs
ZWQ6aG92ZXIgPiBkaXYgeworICAgIGNvbG9yOiBoc2woMzU5LCA1NyUsIDUwJSk7Cit9CisKKy50
b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1ZXMgPiBpbWcgeworICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvSXNzdWVzLnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVm
YXVsdCA+IC5pc3N1ZXMuZW5hYmxlZCA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdl
cy9Jc3N1ZXNFbmFibGVkLnN2Zyk7CisgICAgb3BhY2l0eTogMC45OworfQorCisudG9vbGJhciAu
ZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzLmVuYWJsZWQ6aG92ZXIgPiBpbWcgeworICAgIG9w
YWNpdHk6IDE7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1ZXMuZW5h
YmxlZCA+IGRpdiB7CisgICAgY29sb3I6IGhzbGEoNDMsIDk2JSwgNDQlLCAwLjkpOworfQorCisu
dG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzLmVuYWJsZWQ6aG92ZXIgPiBkaXYg
eworICAgIGNvbG9yOiBoc2woNDMsIDk2JSwgNDQlKTsKK30KKworLyogU3R5bGVzIGZvciB0aGUg
cHVsc2luZyBhbmltYXRlZCBzdGF0ZSBvZiBjb25zb2xlIGl0ZW1zICovCisKKy50b29sYmFyIC5k
YXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLnB1bHNpbmcgeworICAgIGFuaW1hdGlvbi1uYW1lOiBj
b25zb2xlLWl0ZW0tcHVsc2U7CisgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjc1czsKK30KKwor
QGtleWZyYW1lcyBjb25zb2xlLWl0ZW0tcHVsc2UgeworICAgIDUwJSB7IG9wYWNpdHk6IDAuNjsg
fQorfQorCitAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CisgICAgLnRvb2xi
YXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0gPiBkaXYgeworICAgICAgICAvKiBGSVhNRTog
aW50cm9kdWNlIGEgdmFyaWFibGUgZm9yIG9wYWNpdHkgYW5kIHVzZSBpdCBmb3IgYm90aCB0ZXh0
IGFuZCBpY29ucyAqLworICAgICAgICBjb2xvcjogaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjIpOwor
ICAgIH0KKworICAgIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQg
PiBkaXYgeworICAgICAgICBjb2xvcjogdmFyKC0tZ2x5cGgtY29sb3IpOworICAgIH0KKworICAg
IC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIgeworICAg
ICAgICBib3JkZXItY29sb3I6IGhzbGEoMCwgMCUsIHZhcigtLWZvcmVncm91bmQtbGlnaHRuZXNz
KSwgMC4xKTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRl
bS5lbmFibGVkOmhvdmVyID4gZGl2IHsKKyAgICAgICAgY29sb3I6IGhzbGEoMCwgMTAwJSwgMTAw
JSwgMC44NSk7CisgICAgfQorCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJl
c291cmNlc0NvdW50ID4gaW1nLAorICAgIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5y
ZXNvdXJjZXNTaXplID4gaW1nLAorICAgIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC50
aW1lID4gaW1nLAorICAgIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5sb2dzID4gaW1n
LAorICAgIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnM6bm90KC5lbmFibGVk
KSA+IGltZywKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzOm5vdCgu
ZW5hYmxlZCkgPiBpbWcgeworICAgICAgICBmaWx0ZXI6IHZhcigtLWZpbHRlci1pbnZlcnQpOwor
ICAgIH0KKworICAgIC50b29sYmFyIC5kYXNoYm9hcmQgLml0ZW0uYnV0dG9uLAorICAgIC50b29s
YmFyIC5kYXNoYm9hcmQgLml0ZW0uYnV0dG9uOmFjdGl2ZSB7CisgICAgICAgIGJhY2tncm91bmQ6
IG5vbmU7CisgICAgfQorCisgICAgLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2UtYXJyb3cg
eworICAgICAgICBmaWx0ZXI6IHZhcigtLWZpbHRlci1pbnZlcnQpOworICAgIH0KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHRE
YXNoYm9hcmRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGVmYXVsdERhc2hib2FyZFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYyNDkzMjg5MzM3ZDliNGQy
YmI1Nzg2MjI0NjNkYTg3NDc4YjQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzCkBAIC0w
LDAgKzEsMjAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuRGVmYXVsdERhc2hi
b2FyZFZpZXcgPSBjbGFzcyBEZWZhdWx0RGFzaGJvYXJkVmlldyBleHRlbmRzIFdJLkRhc2hib2Fy
ZFZpZXcKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0LCAiZGVmYXVsdCIpOworCisgICAgICAgIHJlcHJl
c2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVmYXVsdERhc2hib2FyZC5FdmVudC5E
YXRhRGlkQ2hhbmdlLCAoKSA9PiB7IHRoaXMuX3VwZGF0ZURpc3BsYXlTb29uKCk7IH0pOworICAg
ICAgICB0aGlzLl9zY2hlZHVsZWRVcGRhdGVJZGVudGlmaWVyID0gdW5kZWZpbmVkOworCisgICAg
ICAgIHRoaXMuX2l0ZW1zID0geworICAgICAgICAgICAgcmVzb3VyY2VzQ291bnQ6IHsKKyAgICAg
ICAgICAgICAgICB0b29sdGlwOiBXSS5VSVN0cmluZygiU2hvdyBwYWdlIHJlc291cmNlcyIpLAor
ICAgICAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX3Jlc291cmNlc0l0ZW1XYXNDbGlja2VkCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgcmVzb3VyY2VzU2l6ZTogeworICAgICAgICAgICAg
ICAgIHRvb2x0aXA6IFdJLlVJU3RyaW5nKCJTaG93IG5ldHdvcmsgaW5mb3JtYXRpb24iKSwKKyAg
ICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9uZXR3b3JrSXRlbVdhc0NsaWNrZWQKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB0aW1lOiB7CisgICAgICAgICAgICAgICAgdG9vbHRpcDog
V0kuVUlTdHJpbmcoIlNob3cgcGFnZSBsb2FkIHRpbWluZyIpLAorICAgICAgICAgICAgICAgIGhh
bmRsZXI6IHRoaXMuX3RpbWVsaW5lSXRlbVdhc0NsaWNrZWQKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICBsb2dzOiB7CisgICAgICAgICAgICAgICAgdG9vbHRpcDogV0kuVUlTdHJpbmcoIlNo
b3cgbWVzc2FnZXMgbG9nZ2VkIHRvIHRoZSBDb25zb2xlIiksCisgICAgICAgICAgICAgICAgaGFu
ZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXNDbGlja2VkLmJpbmQodGhpcywgV0kuTG9nQ29udGVu
dFZpZXcuU2NvcGVzLkxvZ3MpCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZXJyb3JzOiB7
CisgICAgICAgICAgICAgICAgdG9vbHRpcDogV0kuVUlTdHJpbmcoIlNob3cgZXJyb3JzIGxvZ2dl
ZCB0byB0aGUgQ29uc29sZSIpLAorICAgICAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX2NvbnNv
bGVJdGVtV2FzQ2xpY2tlZC5iaW5kKHRoaXMsIFdJLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5FcnJv
cnMpCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgaXNzdWVzOiB7CisgICAgICAgICAgICAg
ICAgdG9vbHRpcDogV0kuVUlTdHJpbmcoIlNob3cgd2FybmluZ3MgbG9nZ2VkIHRvIHRoZSBDb25z
b2xlIiksCisgICAgICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXNDbGlj
a2VkLmJpbmQodGhpcywgV0kuTG9nQ29udGVudFZpZXcuU2NvcGVzLldhcm5pbmdzKQorICAgICAg
ICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcy5faXRl
bXMpCisgICAgICAgICAgICB0aGlzLl9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtKG5hbWUpOwor
ICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF91cGRhdGVEaXNwbGF5U29vbigpCisgICAg
eworICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkVXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9zY2hlZHVsZWRVcGRhdGVJZGVudGlmaWVyID0g
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3VwZGF0ZURpc3BsYXkuYmluZCh0aGlzKSk7Cisg
ICAgfQorCisgICAgX3VwZGF0ZURpc3BsYXkoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2NoZWR1
bGVkVXBkYXRlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKworICAgICAgICB2YXIgZGFzaGJvYXJk
ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKKworICAgICAgICBmb3IgKHZhciBjYXRlZ29yeSBv
ZiBbImxvZ3MiLCAiaXNzdWVzIiwgImVycm9ycyJdKQorICAgICAgICAgICAgdGhpcy5fc2V0Q29u
c29sZUl0ZW1WYWx1ZShjYXRlZ29yeSwgZGFzaGJvYXJkW2NhdGVnb3J5XSk7CisKKyAgICAgICAg
dmFyIHRpbWVJdGVtID0gdGhpcy5faXRlbXMudGltZTsKKyAgICAgICAgdGltZUl0ZW0udGV4dCA9
IGRhc2hib2FyZC50aW1lID8gTnVtYmVyLnNlY29uZHNUb1N0cmluZyhkYXNoYm9hcmQudGltZSkg
OiBlbURhc2g7CisgICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKHRpbWVJdGVtLCBkYXNoYm9h
cmQudGltZSA+IDApOworCisgICAgICAgIHZhciBjb3VudEl0ZW0gPSB0aGlzLl9pdGVtcy5yZXNv
dXJjZXNDb3VudDsKKyAgICAgICAgY291bnRJdGVtLnRleHQgPSBOdW1iZXIuYWJicmV2aWF0ZShk
YXNoYm9hcmQucmVzb3VyY2VzQ291bnQpOworICAgICAgICB0aGlzLl9zZXRJdGVtRW5hYmxlZChj
b3VudEl0ZW0sIGRhc2hib2FyZC5yZXNvdXJjZXNDb3VudCA+IDApOworCisgICAgICAgIHZhciBz
aXplSXRlbSA9IHRoaXMuX2l0ZW1zLnJlc291cmNlc1NpemU7CisgICAgICAgIHNpemVJdGVtLnRl
eHQgPSBkYXNoYm9hcmQucmVzb3VyY2VzU2l6ZSA/IE51bWJlci5ieXRlc1RvU3RyaW5nKGRhc2hi
b2FyZC5yZXNvdXJjZXNTaXplLCBmYWxzZSkgOiBlbURhc2g7CisgICAgICAgIHRoaXMuX3NldEl0
ZW1FbmFibGVkKHNpemVJdGVtLCBkYXNoYm9hcmQucmVzb3VyY2VzU2l6ZSA+IDApOworICAgIH0K
KworICAgIF9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtKG5hbWUpCisgICAgeworICAgICAgICB2
YXIgaXRlbSA9IHRoaXMuX2l0ZW1zW25hbWVdOworCisgICAgICAgIGl0ZW0uY29udGFpbmVyID0g
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7
CisgICAgICAgIGl0ZW0uY29udGFpbmVyLmNsYXNzTmFtZSA9ICJpdGVtICIgKyBuYW1lOworCisg
ICAgICAgIGl0ZW0uY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImltZyIpKTsKKworICAgICAgICBpdGVtLm91dGxldCA9IGl0ZW0uY29udGFpbmVyLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKworICAgICAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoaXRlbSwgInRleHQiLCB7CisgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKG5l
d1RleHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbmV3VGV4dCA9IG5ld1RleHQu
dG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3VGV4dCA9PT0gaXRlbS5vdXRsZXQu
dGV4dENvbnRlbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICBpdGVtLm91dGxldC50ZXh0Q29udGVudCA9IG5ld1RleHQ7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pOworCisgICAgICAgIGl0ZW0uY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICB0aGlzLl9pdGVtV2FzQ2xpY2tlZChuYW1lKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgX2l0ZW1XYXNDbGlja2VkKG5hbWUpCisgICAgewor
ICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zW25hbWVdOworICAgICAgICBpZiAoIWl0ZW0u
Y29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucyhXSS5EZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFi
bGVkSXRlbVN0eWxlQ2xhc3NOYW1lKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoaXRlbS5oYW5kbGVyKQorICAgICAgICAgICAgaXRlbS5oYW5kbGVyLmNhbGwodGhpcyk7Cisg
ICAgfQorCisgICAgX3Jlc291cmNlc0l0ZW1XYXNDbGlja2VkKCkKKyAgICB7CisgICAgICAgIFdJ
LnNob3dTb3VyY2VzVGFiKHtpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRp
b25Jbml0aWF0b3IuRGFzaGJvYXJkfSk7CisgICAgfQorCisgICAgX25ldHdvcmtJdGVtV2FzQ2xp
Y2tlZCgpCisgICAgeworICAgICAgICBXSS5zaG93TmV0d29ya1RhYih7aW5pdGlhdG9ySGludDog
V0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkRhc2hib2FyZH0pOworICAgIH0K
KworICAgIF90aW1lbGluZUl0ZW1XYXNDbGlja2VkKCkKKyAgICB7CisgICAgICAgIFdJLnNob3dU
aW1lbGluZVRhYih7aW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5p
dGlhdG9yLkRhc2hib2FyZH0pOworICAgIH0KKworICAgIF9jb25zb2xlSXRlbVdhc0NsaWNrZWQo
c2NvcGUpCisgICAgeworICAgICAgICBXSS5zaG93Q29uc29sZVRhYihzY29wZSwgeworICAgICAg
ICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9y
LkRhc2hib2FyZCwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgX3NldENvbnNvbGVJdGVtVmFs
dWUoaXRlbU5hbWUsIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIGlWYXJOYW1lID0gIl8i
ICsgaXRlbU5hbWU7CisgICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gdGhpc1tpVmFyTmFtZV07
CisgICAgICAgIHRoaXNbaVZhck5hbWVdID0gbmV3VmFsdWU7CisKKyAgICAgICAgdmFyIGl0ZW0g
PSB0aGlzLl9pdGVtc1tpdGVtTmFtZV07CisgICAgICAgIGl0ZW0udGV4dCA9IE51bWJlci5hYmJy
ZXZpYXRlKG5ld1ZhbHVlKTsKKyAgICAgICAgdGhpcy5fc2V0SXRlbUVuYWJsZWQoaXRlbSwgbmV3
VmFsdWUgPiAwKTsKKworICAgICAgICBpZiAobmV3VmFsdWUgPD0gcHJldmlvdXNWYWx1ZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgY29udGFpbmVyID0gaXRlbS5jb250YWlu
ZXI7CisKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZlbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IGNvbnRhaW5lcikgeworICAgICAgICAg
ICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJwdWxzaW5nIik7CisgICAgICAgICAg
ICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsIGFuaW1h
dGlvbkVuZGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIG5l
ZWQgdG8gZm9yY2UgYSBzdHlsZSBpbnZhbGlkYXRpb24gaW4gdGhlIGNhc2Ugd2hlcmUgd2UgYWxy
ZWFkeQorICAgICAgICAvLyB3ZXJlIGFuaW1hdGluZyB0aGlzIGl0ZW0gYWZ0ZXIgd2UndmUgcmVt
b3ZlZCB0aGUgcHVsc2luZyBDU1MgY2xhc3MuCisgICAgICAgIGlmIChjb250YWluZXIuY2xhc3NM
aXN0LmNvbnRhaW5zKCJwdWxzaW5nIikpIHsKKyAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xp
c3QucmVtb3ZlKCJwdWxzaW5nIik7CisgICAgICAgICAgICBjb250YWluZXIucmVjYWxjdWxhdGVT
dHlsZXMoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjb250YWluZXIuYWRkRXZlbnRM
aXN0ZW5lcigiYW5pbWF0aW9uZW5kIiwgYW5pbWF0aW9uRW5kZWQpOworCisgICAgICAgIGNvbnRh
aW5lci5jbGFzc0xpc3QuYWRkKCJwdWxzaW5nIik7CisgICAgfQorCisgICAgX3NldEl0ZW1FbmFi
bGVkKGl0ZW0sIGVuYWJsZWQpCisgICAgeworICAgICAgICBpZiAoZW5hYmxlZCkgeworICAgICAg
ICAgICAgaXRlbS5jb250YWluZXIudGl0bGUgPSBpdGVtLnRvb2x0aXA7CisgICAgICAgICAgICBp
dGVtLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFdJLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJs
ZWRJdGVtU3R5bGVDbGFzc05hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaXRl
bS5jb250YWluZXIudGl0bGUgPSAiIjsKKyAgICAgICAgICAgIGl0ZW0uY29udGFpbmVyLmNsYXNz
TGlzdC5yZW1vdmUoV0kuRGVmYXVsdERhc2hib2FyZFZpZXcuRW5hYmxlZEl0ZW1TdHlsZUNsYXNz
TmFtZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitXSS5EZWZhdWx0RGFzaGJvYXJkVmlldy5F
bmFibGVkSXRlbVN0eWxlQ2xhc3NOYW1lID0gImVuYWJsZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVt
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJO
YXZpZ2F0aW9uSXRlbS5jc3MKaW5kZXggMGM3NzY2ODA2ZWMxMmViNWQ4MDNiMWIwMGYzYjg2MTAw
ZjA1OTg0Zi4uMjM3OTJkMjg5M2I4M2E1YTFkODNiYWRmODkxZjQwMjY1MmIzZDY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGl2aWRlck5h
dmlnYXRpb25JdGVtLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9EaXZpZGVyTmF2aWdhdGlvbkl0ZW0uY3NzCkBAIC0yNSw4ICsyNSwxMSBAQAogCiAu
bmF2aWdhdGlvbi1iYXIgLml0ZW0uZGl2aWRlciB7CiAgICAgd2lkdGg6IDFweDsKLSAgICBoZWln
aHQ6IDE2cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCA3NCUpOworICAgIGhl
aWdodDogMTAwJTsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoaHNsKDAs
IDAlLCA3NCUpLCBoc2woMCwgMCUsIDc0JSkpOworICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAx
NnB4OworICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgYmFja2dyb3VuZC1w
b3NpdGlvbjogY2VudGVyOwogfQogCiBAbWVkaWEgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1y
YXRpbzogMikgewpAQCAtMzcsNiArNDAsNyBAQAogCiBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSB7CiAgICAgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmRpdmlkZXIgewotICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDQwJSk7CisgICAgICAgIC0tZGl2aWRlci1i
YWNrZ3JvdW5kOiBoc2woMCwgMCUsIDQwJSk7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxp
bmVhci1ncmFkaWVudCh2YXIoLS1kaXZpZGVyLWJhY2tncm91bmQpLCB2YXIoLS1kaXZpZGVyLWJh
Y2tncm91bmQpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNUYWJDb250ZW50Vmlldy5q
cwppbmRleCBmZjIxY2YwMjVmMmU1NDEyZjA5ZGJlN2RmNWQ2NTI0YWE4N2Y4NWM0Li42MjcyOTdm
Yzc3ZGE3MmY4YmM2Y2JmZDUzYWQ1ZDAzMzUxZTkwODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRz
VGFiQ29udGVudFZpZXcuanMKQEAgLTI1LDE4ICsyNSwxNSBAQAogCiBXSS5FbGVtZW50c1RhYkNv
bnRlbnRWaWV3ID0gY2xhc3MgRWxlbWVudHNUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRCcm93c2VyVGFiQ29udGVudFZpZXcKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3Ry
dWN0b3IoaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIGxldCBkZXRhaWxzU2lkZWJhclBhbmVs
Q29uc3RydWN0b3JzID0gWwotICAgICAgICAgICAgV0kuUnVsZXNTdHlsZURldGFpbHNTaWRlYmFy
UGFuZWwsCi0gICAgICAgICAgICBXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCwK
LSAgICAgICAgICAgIFdJLkNoYW5nZXNEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAg
V0kuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgIF07CisgICAgICAgIGxldCB0
YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuRWxlbWVudHNU
YWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworCisgICAgICAgIGxldCBkZXRhaWxzU2lkZWJhclBh
bmVsQ29uc3RydWN0b3JzID0gW1dJLlJ1bGVzU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5D
b21wdXRlZFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCwgV0kuQ2hhbmdlc0RldGFpbHNTaWRlYmFy
UGFuZWwsIFdJLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsXTsKICAgICAgICAgaWYgKEluc3Bl
Y3RvckJhY2tlbmQuaGFzRG9tYWluKCJMYXllclRyZWUiKSkKICAgICAgICAgICAgIGRldGFpbHNT
aWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMucHVzaChXSS5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBh
bmVsKTsKIAotICAgICAgICBzdXBlcihFbGVtZW50c1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSwg
e2RldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMsIGRpc2FibGVCYWNrRm9yd2FyZDogdHJ1
ZX0pOworICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJlbGVtZW50cyIsICJlbGVtZW50cyIs
IHRhYkJhckl0ZW0sIG51bGwsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMsIHRydWUp
OwogCiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29y
a01hbmFnZXIuRXZlbnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFu
Z2UsIHRoaXMpOwogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2
ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzKTsKQEAgLTQ1LDcgKzQyLDYgQEAgV0kuRWxlbWVudHNUYWJDb250ZW50VmlldyA9IGNsYXNz
IEVsZW1lbnRzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3MKICAgICBzdGF0
aWMgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWRlbnRp
ZmllcjogRWxlbWVudHNUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJ
bWFnZXMvRWxlbWVudHMuc3ZnIiwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiRWxl
bWVudHMiKSwKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5jc3MgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdh
dGlvbkl0ZW0uY3NzCmluZGV4IDVmYTkyMmUwMTA1MjE4ZGZjNThlNmU2ZWY4NTdjYjdlYzgyZjRi
MTcuLjAzNDQwNWU1ZjQyYzczNGMyNzYzYjRlZmRjNzNjMjkxNzJiNzI1NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VO
YXZpZ2F0aW9uSXRlbS5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLmNzcwpAQCAtMjMsMTQgKzIzLDE0
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLm5hdmlnYXRp
b24tYmFyIC5pdGVtLmZsZXhpYmxlLXNwYWNlIHsKKzptYXRjaGVzKC5uYXZpZ2F0aW9uLWJhciwg
LnRvb2xiYXIpIC5pdGVtLmZsZXhpYmxlLXNwYWNlIHsKICAgICBmbGV4OiAxOwogfQogCi0ubmF2
aWdhdGlvbi1iYXIgLml0ZW0uZmxleGlibGUtc3BhY2UuYWxpZ24tc3RhcnQgPiAuaXRlbSB7Cis6
bWF0Y2hlcygubmF2aWdhdGlvbi1iYXIsIC50b29sYmFyKSAuaXRlbS5mbGV4aWJsZS1zcGFjZS5h
bGlnbi1zdGFydCA+IC5pdGVtIHsKICAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IGF1dG87CiB9CiAK
LS5uYXZpZ2F0aW9uLWJhciAuaXRlbS5mbGV4aWJsZS1zcGFjZS5hbGlnbi1lbmQgPiAuaXRlbSB7
Cis6bWF0Y2hlcygubmF2aWdhdGlvbi1iYXIsIC50b29sYmFyKSAuaXRlbS5mbGV4aWJsZS1zcGFj
ZS5hbGlnbi1lbmQgPiAuaXRlbSB7CiAgICAgLXdlYmtpdC1tYXJnaW4tc3RhcnQ6IGF1dG87CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9H
ZW5lcmFsVGFiQmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0dlbmVyYWxUYWJCYXJJdGVtLmpzCmluZGV4IDc3ZjVjNGYxODU5NTlmMzZjYzY5YWJm
YmM0Njg5OWIyN2M1YjNjMmQuLjZkM2FjMDc4NjA0Njg5MTIxMWRkOWM3YjE4NjI0Zjc4ZjNmN2Q0
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0dlbmVyYWxUYWJCYXJJdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUYWJCYXJJdGVtLmpzCkBAIC0yNiwxMSArMjYsMTIgQEAKIAog
V0kuR2VuZXJhbFRhYkJhckl0ZW0gPSBjbGFzcyBHZW5lcmFsVGFiQmFySXRlbSBleHRlbmRzIFdJ
LlRhYkJhckl0ZW0KIHsKLSAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCwgaW1hZ2Us
IHRpdGxlLCB7aXNFcGhlbWVyYWx9ID0ge30pCisgICAgY29uc3RydWN0b3IoaW1hZ2UsIHRpdGxl
LCBpc0VwaGVtZXJhbCA9IGZhbHNlKQogICAgIHsKLSAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRP
YmplY3QsIGltYWdlLCB0aXRsZSk7CisgICAgICAgIHN1cGVyKGltYWdlLCB0aXRsZSk7CiAKICAg
ICAgICAgdGhpcy5faXNFcGhlbWVyYWwgPSBpc0VwaGVtZXJhbDsKKwogICAgICAgICBpZiAodGhp
cy5faXNFcGhlbWVyYWwpIHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJlcGhlbWVyYWwiKTsKIApAQCAtNDMsMTYgKzQ0LDkgQEAgV0kuR2VuZXJhbFRhYkJhckl0ZW0g
PSBjbGFzcyBHZW5lcmFsVGFiQmFySXRlbSBleHRlbmRzIFdJLlRhYkJhckl0ZW0KICAgICAgICAg
fQogICAgIH0KIAotICAgIC8vIFN0YXRpYwotCi0gICAgc3RhdGljIGZyb21UYWJDb250ZW50Vmll
dyh0YWJDb250ZW50VmlldykKKyAgICBzdGF0aWMgZnJvbVRhYkluZm8oe2ltYWdlLCB0aXRsZSwg
aXNFcGhlbWVyYWx9KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGFiQ29udGVudFZp
ZXcgaW5zdGFuY2VvZiBXSS5UYWJDb250ZW50Vmlldyk7Ci0KLSAgICAgICAgbGV0IHtpbWFnZSwg
dGl0bGV9ID0gdGFiQ29udGVudFZpZXcuY29uc3RydWN0b3IudGFiSW5mbygpOwotICAgICAgICBy
ZXR1cm4gbmV3IFdJLkdlbmVyYWxUYWJCYXJJdGVtKHRhYkNvbnRlbnRWaWV3LCBpbWFnZSwgdGl0
bGUsIHsKLSAgICAgICAgICAgIGlzRXBoZW1lcmFsOiAhdGFiQ29udGVudFZpZXcuY29uc3RydWN0
b3Iuc2hvdWxkU2F2ZVRhYigpLAotICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG5ldyBXSS5H
ZW5lcmFsVGFiQmFySXRlbShpbWFnZSwgdGl0bGUsIGlzRXBoZW1lcmFsKTsKICAgICB9CiAKICAg
ICAvLyBQdWJsaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0dyYXBoaWNzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IGNj
MDI5ZTM4ZTAzZmFiMDYxOWMxZjYwNWM0YjU4NWIxMTU1YWVlNzguLjJlNmQ4NTcyMjY3OTgzMGU0
YTY1NzcxOTdkOWE5Mjg1MzgyNzAzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYXBoaWNzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhpY3NUYWJDb250ZW50
Vmlldy5qcwpAQCAtMjcsMTYgKzI3LDE3IEBAIFdJLkdyYXBoaWNzVGFiQ29udGVudFZpZXcgPSBj
bGFzcyBHcmFwaGljc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzCiB7CiAg
ICAgY29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgc3VwZXIoR3JhcGhpY3NUYWJDb250ZW50
Vmlldy50YWJJbmZvKCksIHsKLSAgICAgICAgICAgIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25z
dHJ1Y3RvcjogV0kuQ2FudmFzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgZGV0YWlsc1NpZGVi
YXJQYW5lbENvbnN0cnVjdG9yczogWwotICAgICAgICAgICAgICAgIFdJLlJlY29yZGluZ1N0YXRl
RGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgICAgICBXSS5SZWNvcmRpbmdUcmFjZURl
dGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICAgICAgV0kuQ2FudmFzRGV0YWlsc1NpZGVi
YXJQYW5lbCwKLSAgICAgICAgICAgICAgICBXSS5BbmltYXRpb25EZXRhaWxzU2lkZWJhclBhbmVs
LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIGRpc2FibGVCYWNrRm9yd2FyZDogdHJ1ZSwK
LSAgICAgICAgfSk7CisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0
ZW0uZnJvbVRhYkluZm8oV0kuR3JhcGhpY3NUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworCisg
ICAgICAgIGNvbnN0IG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciA9IFdJLkNhbnZh
c1NpZGViYXJQYW5lbDsKKyAgICAgICAgY29uc3QgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVj
dG9ycyA9IFsKKyAgICAgICAgICAgIFdJLlJlY29yZGluZ1N0YXRlRGV0YWlsc1NpZGViYXJQYW5l
bCwKKyAgICAgICAgICAgIFdJLlJlY29yZGluZ1RyYWNlRGV0YWlsc1NpZGViYXJQYW5lbCwKKyAg
ICAgICAgICAgIFdJLkNhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwsCisgICAgICAgICAgICBXSS5B
bmltYXRpb25EZXRhaWxzU2lkZWJhclBhbmVsLAorICAgICAgICBdOworICAgICAgICBjb25zdCBk
aXNhYmxlQmFja0ZvcndhcmQgPSB0cnVlOworICAgICAgICBzdXBlcigiZ3JhcGhpY3MiLCBbImdy
YXBoaWNzIl0sIHRhYkJhckl0ZW0sIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3Rvciwg
ZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycywgZGlzYWJsZUJhY2tGb3J3YXJkKTsKIAog
ICAgICAgICB0aGlzLl9jYW52YXNlc1RyZWVPdXRsaW5lID0gbmV3IFdJLlRyZWVPdXRsaW5lOwog
ICAgICAgICB0aGlzLl9jYW52YXNlc1RyZWVPdXRsaW5lLmFsbG93c1JlcGVhdFNlbGVjdGlvbiA9
IHRydWU7CkBAIC02NCw3ICs2NSw2IEBAIFdJLkdyYXBoaWNzVGFiQ29udGVudFZpZXcgPSBjbGFz
cyBHcmFwaGljc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzCiAgICAgc3Rh
dGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50
aWZpZXI6IEdyYXBoaWNzVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgICAgIGltYWdlOiAi
SW1hZ2VzL0dyYXBoaWNzLnN2ZyIsCiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIkdy
YXBoaWNzIiksCiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Hcm91cE5hdmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JvdXBOYXZpZ2F0aW9uSXRlbS5qcwppbmRl
eCA1YzYwNGQ5ZmYxZDgzZTkyMTEyMWI5Zjk4YTliMDkyM2YzMTkwOTRhLi5lYmI4OGQ4NjFlMmU0
YzU1ZTdkZmI1MWYxMDM1OWMxZjZhNTcxYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hcm91cE5hdmlnYXRpb25JdGVtLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyb3VwTmF2aWdhdGlvbkl0
ZW0uanMKQEAgLTUxLDE2ICs1MSw2IEBAIFdJLkdyb3VwTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBH
cm91cE5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV0kuTmF2aWdhdGlvbkl0ZW0KICAgICAgICAgdGhp
cy5fbmVlZHNVcGRhdGUgPSB0cnVlOwogICAgIH0KIAotICAgIGdldCBoaWRkZW4oKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN1cGVyLmhpZGRlbiB8fCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMuZXZl
cnkoKGl0ZW0pID0+IGl0ZW0uaGlkZGVuKTsKLSAgICB9Ci0KLSAgICBzZXQgaGlkZGVuKGZsYWcp
Ci0gICAgewotICAgICAgICBzdXBlci5oaWRkZW4gPSBmbGFnOwotICAgIH0KLQogICAgIGdldCB3
aWR0aCgpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVJdGVtcygpOwpAQCAtNzcsMTEgKzY3
LDYgQEAgV0kuR3JvdXBOYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIEdyb3VwTmF2aWdhdGlvbkl0ZW0g
ZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uSXRlbQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBnZXQg
YWRkaXRpb25hbENsYXNzTmFtZXMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFsiZ3JvdXAiXTsK
LSAgICB9Ci0KICAgICB1cGRhdGUob3B0aW9ucyA9IHt9KQogICAgIHsKICAgICAgICAgc3VwZXIu
dXBkYXRlKG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTGF5ZXJzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnNUYWJDb250ZW50Vmlldy5qcwppbmRleCAy
YmMwYzliNDM1MGNjNzFiMzRjODcwMzMwYjhkZDYyMjY0OTMwMzcxLi4yZWFmZjVkOTUwNTdhNDg4
ZTBiOWUwOGQ2NDQ3ZmY3ZWUyMThiMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnNUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnNUYWJDb250ZW50Vmll
dy5qcwpAQCAtMjcsOSArMjcsMTIgQEAgV0kuTGF5ZXJzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBM
YXllcnNUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGEKIHsKICAgICBj
b25zdHJ1Y3RvcigpCiAgICAgewotICAgICAgICBzdXBlcihMYXllcnNUYWJDb250ZW50Vmlldy50
YWJJbmZvKCksIHsKLSAgICAgICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnM6
IFtXSS5MYXllckRldGFpbHNTaWRlYmFyUGFuZWxdLAotICAgICAgICB9KTsKKyAgICAgICAgbGV0
IHRhYkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhXSS5MYXllcnNU
YWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworCisgICAgICAgIGNvbnN0IG5hdmlnYXRpb25TaWRl
YmFyUGFuZWxDb25zdHJ1Y3RvciA9IG51bGw7CisgICAgICAgIGNvbnN0IGRldGFpbHNTaWRlYmFy
UGFuZWxDb25zdHJ1Y3RvcnMgPSBbV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsXTsKKyAgICAg
ICAgY29uc3QgZGlzYWJsZUJhY2tGb3J3YXJkID0gdHJ1ZTsKKyAgICAgICAgc3VwZXIoImxheWVy
cyIsICJsYXllcnMiLCB0YWJCYXJJdGVtLCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0
b3IsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMsIGRpc2FibGVCYWNrRm9yd2FyZCk7
CiAKICAgICAgICAgdGhpcy5fbGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsID0gdGhpcy5kZXRhaWxz
U2lkZWJhclBhbmVsc1swXTsKICAgICAgICAgdGhpcy5fbGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVs
LmFkZEV2ZW50TGlzdGVuZXIoV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLkV2ZW50LlNlbGVj
dGVkTGF5ZXJDaGFuZ2VkLCB0aGlzLl9kZXRhaWxzU2lkZWJhclNlbGVjdGVkTGF5ZXJDaGFuZ2Vk
LCB0aGlzKTsKQEAgLTQzLDcgKzQ2LDYgQEAgV0kuTGF5ZXJzVGFiQ29udGVudFZpZXcgPSBjbGFz
cyBMYXllcnNUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGEKICAgICBz
dGF0aWMgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWRl
bnRpZmllcjogTGF5ZXJzVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgICAgIGltYWdlOiAi
SW1hZ2VzL0xheWVycy5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJMYXll
cnMiKSwKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeVRhYkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeVRhYkJhci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDFiYmRkOWQy
MmZkODAyNGIyZmYyODlmMDMzNTljZjBmMjhiODlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5VGFiQmFyLmpzCkBAIC0w
LDAgKzEsODc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuTGVnYWN5VGFiQmFyID0gY2xhc3MgTGVnYWN5
VGFiQmFyIGV4dGVuZHMgV0kuVmlldworeworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHRhYkJh
ckl0ZW1zKQorICAgIHsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1iYXIiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnNl
dEF0dHJpYnV0ZSgicm9sZSIsICJ0YWJsaXN0Iik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24uYmluZCh0aGlz
KSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X2hhbmRsZUNsaWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRo
aXMuX2hhbmRsZUNvbnRleHRNZW51LmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMuZWxlbWVu
dC5jcmVhdGVDaGlsZCgiZGl2IiwgInRvcC1ib3JkZXIiKTsKKworICAgICAgICB0aGlzLl90YWJC
YXJJdGVtcyA9IFtdOworICAgICAgICB0aGlzLl9oaWRkZW5UYWJCYXJJdGVtcyA9IFtdOworCisg
ICAgICAgIGlmICh0YWJCYXJJdGVtcykgeworICAgICAgICAgICAgZm9yIChsZXQgdGFiQmFySXRl
bSBpbiB0YWJCYXJJdGVtcykKKyAgICAgICAgICAgICAgICB0aGlzLmFkZFRhYkJhckl0ZW0odGFi
QmFySXRlbSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmFkZFRhYkJhckl0ZW0oV0kuc2V0
dGluZ3NUYWJDb250ZW50Vmlldy50YWJCYXJJdGVtLCB7c3VwcHJlc3NBbmltYXRpb25zOiB0cnVl
fSk7CisKKyAgICAgICAgdGhpcy5fbmV3VGFiVGFiQmFySXRlbSA9IG5ldyBXSS5QaW5uZWRUYWJC
YXJJdGVtKCJJbWFnZXMvTmV3VGFiUGx1cy5zdmciLCBXSS5VSVN0cmluZygiQ3JlYXRlIGEgbmV3
IHRhYiIpKTsKKyAgICAgICAgdGhpcy5fbmV3VGFiVGFiQmFySXRlbS5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlZW50ZXIiLCB0aGlzLl9oYW5kbGVOZXdUYWJNb3VzZUVudGVyLmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLl9uZXdUYWJUYWJCYXJJdGVtLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVOZXdUYWJDbGljay5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgdGhpcy5hZGRUYWJCYXJJdGVtKHRoaXMuX25ld1RhYlRhYkJhckl0ZW0sIHtzdXBwcmVz
c0FuaW1hdGlvbnM6IHRydWV9KTsKKworICAgICAgICB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVt
ID0gbmV3IFdJLlBpbm5lZFRhYkJhckl0ZW0oIkltYWdlcy9UYWJQaWNrZXIuc3ZnIiwgV0kuVUlT
dHJpbmcoIlNob3cgaGlkZGVuIHRhYnMiKSk7CisgICAgICAgIHRoaXMuX3RhYlBpY2tlclRhYkJh
ckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItcGlja2VyIik7CisgICAgICAgIHRoaXMu
YWRkVGFiQmFySXRlbSh0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLCB7c3VwcHJlc3NBbmltYXRp
b25zOiB0cnVlfSk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgbmV3VGFiVGFi
QmFySXRlbSgpIHsgcmV0dXJuIHRoaXMuX25ld1RhYlRhYkJhckl0ZW07IH0KKworICAgIHVwZGF0
ZU5ld1RhYlRhYkJhckl0ZW1TdGF0ZSgpCisgICAgeworICAgICAgICBsZXQgbmV3VGFiRXhpc3Rz
ID0gIVdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKFdJLk5ld1RhYkNvbnRlbnRWaWV3LlR5cGUp
OworICAgICAgICB0aGlzLl9uZXdUYWJUYWJCYXJJdGVtLmRpc2FibGVkID0gbmV3VGFiRXhpc3Rz
OworICAgIH0KKworICAgIGFkZFRhYkJhckl0ZW0odGFiQmFySXRlbSwgb3B0aW9ucyA9IHt9KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0VGFiQmFySXRlbSh0YWJCYXJJdGVtLCB0
aGlzLl90YWJCYXJJdGVtcy5sZW5ndGgsIG9wdGlvbnMpOworICAgIH0KKworICAgIGluc2VydFRh
YkJhckl0ZW0odGFiQmFySXRlbSwgaW5kZXgsIG9wdGlvbnMgPSB7fSkKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRhYkJhckl0ZW0gaW5zdGFuY2VvZiBXSS5UYWJCYXJJdGVtKTsKKyAg
ICAgICAgaWYgKCEodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlRhYkJhckl0ZW0pKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgaWYgKHRhYkJhckl0ZW0ucGFyZW50VGFiQmFy
ID09PSB0aGlzKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgaWYgKHRoaXMu
X3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyKSB7CisgICAgICAgICAgICAvLyBEZWxh
eSBhZGRpbmcgdGhlIG5ldyB0YWIgdW50aWwgd2UgY2FuIGV4cGFuZCB0aGUgdGFicyBhZnRlciBh
IGNsb3NlZCB0YWIuCisgICAgICAgICAgICB0aGlzLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJD
bG9zZSgpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0VGFiQmFySXRl
bSh0YWJCYXJJdGVtLCBpbmRleCwgb3B0aW9ucyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRhYkJhckl0ZW0ucGFy
ZW50VGFiQmFyKQorICAgICAgICAgICAgdGFiQmFySXRlbS5wYXJlbnRUYWJCYXIucmVtb3ZlVGFi
QmFySXRlbSh0YWJCYXJJdGVtKTsKKworICAgICAgICB0YWJCYXJJdGVtLnBhcmVudFRhYkJhciA9
IHRoaXM7CisKKyAgICAgICAgaW5kZXggPSBOdW1iZXIuY29uc3RyYWluKGluZGV4LCAwLCB0aGlz
Lm5vcm1hbFRhYkNvdW50KTsKKworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucygiYW5pbWF0aW5nIikpIHsKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFt
ZShyZW1vdmVTdHlsZXMuYmluZCh0aGlzKSk7CisgICAgICAgICAgICBvcHRpb25zLnN1cHByZXNz
QW5pbWF0aW9ucyA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB2YXIgYmVmb3JlVGFiU2l6
ZXNBbmRQb3NpdGlvbnM7CisgICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMp
CisgICAgICAgICAgICBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyA9IHRoaXMuX3JlY29yZFRh
YkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworCisgICAgICAgIHRoaXMuX3RhYkJhckl0ZW1z
LnNwbGljZShpbmRleCwgMCwgdGFiQmFySXRlbSk7CisKKyAgICAgICAgdmFyIG5leHRTaWJsaW5n
ID0gdGhpcy5fdGFiQmFySXRlbXNbaW5kZXggKyAxXTsKKyAgICAgICAgbGV0IG5leHRTaWJsaW5n
RWxlbWVudCA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6IHRoaXMuX3RhYkJh
ckl0ZW1zLmxhc3RWYWx1ZS5lbGVtZW50OworCisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY29u
dGFpbnMobmV4dFNpYmxpbmdFbGVtZW50KSkKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5pbnNl
cnRCZWZvcmUodGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGFiQmFySXRlbS5l
bGVtZW50KTsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xl
LXRhYiIsICF0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpKTsKKworICAgICAgICB0YWJC
YXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IG51bGw7CisgICAgICAgIHRhYkJhckl0ZW0uZWxl
bWVudC5zdHlsZS53aWR0aCA9IG51bGw7CisKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMo
KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5p
bWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5zZXJ0
aW5nLXRhYiIpOworCisgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBv
c2l0aW9ucyhhZnRlclRhYlNpemVzQW5kUG9zaXRpb25zKTsKKworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHls
ZXNMaXN0ZW5lcik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiByZW1vdmVTdHlsZXMo
KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgi
c3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImluc2VydGluZy10YWIiKTsKKworICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoImJlaW5nLWluc2VydGVkIik7CisKKyAgICAgICAgICAgIHRoaXMuX2Ns
ZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5
bGVzTGlzdGVuZXIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFvcHRpb25zLnN1cHByZXNz
QW5pbWF0aW9ucykgeworICAgICAgICAgICAgdmFyIGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMg
PSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKworICAgICAgICAg
ICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKKworICAgICAgICAgICAgbGV0IHRhYkJhckl0ZW1zID0g
dGhpcy5fdGFiQmFySXRlbXNGcm9tTGVmdFRvUmlnaHQoKTsKKyAgICAgICAgICAgIGxldCBwcmV2
aW91c1RhYkJhckl0ZW0gPSB0YWJCYXJJdGVtc1t0YWJCYXJJdGVtcy5pbmRleE9mKHRhYkJhckl0
ZW0pIC0gMV0gfHwgbnVsbDsKKyAgICAgICAgICAgIGxldCBwcmV2aW91c1RhYkJhckl0ZW1TaXpl
QW5kUG9zaXRpb24gPSBwcmV2aW91c1RhYkJhckl0ZW0gPyBiZWZvcmVUYWJTaXplc0FuZFBvc2l0
aW9ucy5nZXQocHJldmlvdXNUYWJCYXJJdGVtKSA6IG51bGw7CisKKyAgICAgICAgICAgIGlmIChw
cmV2aW91c1RhYkJhckl0ZW1TaXplQW5kUG9zaXRpb24pCisgICAgICAgICAgICAgICAgYmVmb3Jl
VGFiU2l6ZXNBbmRQb3NpdGlvbnMuc2V0KHRhYkJhckl0ZW0sIHtsZWZ0OiBwcmV2aW91c1RhYkJh
ckl0ZW1TaXplQW5kUG9zaXRpb24ubGVmdCArIHByZXZpb3VzVGFiQmFySXRlbVNpemVBbmRQb3Np
dGlvbi53aWR0aCwgd2lkdGg6IDB9KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucy5zZXQodGFiQmFySXRlbSwge2xlZnQ6IDAsIHdp
ZHRoOiAwfSk7CisKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0
aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiYmVpbmctaW5zZXJ0ZWQiKTsKKworICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVt
U2l6ZXNBbmRQb3NpdGlvbnMoYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOworCisgICAgICAg
ICAgICB2YXIgcmVtb3ZlU3R5bGVzTGlzdGVuZXIgPSByZW1vdmVTdHlsZXMuYmluZCh0aGlzKTsK
KworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVUYWJzLmJpbmQodGhp
cykpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKKwor
ICAgICAgICBpZiAoISh0YWJCYXJJdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkp
CisgICAgICAgICAgICB0aGlzLnVwZGF0ZU5ld1RhYlRhYkJhckl0ZW1TdGF0ZSgpOworCisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhYkJhci5FdmVudC5UYWJCYXJJ
dGVtQWRkZWQsIHt0YWJCYXJJdGVtfSk7CisKKyAgICAgICAgcmV0dXJuIHRhYkJhckl0ZW07Cisg
ICAgfQorCisgICAgcmVtb3ZlVGFiQmFySXRlbSh0YWJCYXJJdGVtT3JJbmRleCwgb3B0aW9ucyA9
IHt9KQorICAgIHsKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSB0aGlzLl9maW5kVGFiQmFySXRl
bSh0YWJCYXJJdGVtT3JJbmRleCk7CisgICAgICAgIGlmICghdGFiQmFySXRlbSB8fCB0YWJCYXJJ
dGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxsOworCisgICAgICAgIHRhYkJhckl0ZW0ucGFyZW50VGFiQmFyID0gbnVsbDsKKworICAgICAg
ICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtID09PSB0YWJCYXJJdGVtKSB7CisgICAgICAg
ICAgICB2YXIgaW5kZXggPSB0aGlzLl90YWJCYXJJdGVtcy5pbmRleE9mKHRhYkJhckl0ZW0pOwor
ICAgICAgICAgICAgdmFyIG5leHRUYWJCYXJJdGVtID0gdGhpcy5fdGFiQmFySXRlbXNbaW5kZXgg
KyAxXTsKKyAgICAgICAgICAgIGlmICghbmV4dFRhYkJhckl0ZW0gfHwgbmV4dFRhYkJhckl0ZW0g
aW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgIG5leHRUYWJC
YXJJdGVtID0gdGhpcy5fdGFiQmFySXRlbXNbaW5kZXggLSAxXTsKKworICAgICAgICAgICAgbGV0
IGluaXRpYXRvckhpbnQgPSBvcHRpb25zLmluaXRpYXRvckhpbnQgfHwgV0kuVGFiQnJvd3Nlci5U
YWJOYXZpZ2F0aW9uSW5pdGlhdG9yLlVua25vd247CisgICAgICAgICAgICB0aGlzLnNlbGVjdFRh
YkJhckl0ZW0obmV4dFRhYkJhckl0ZW0sIHtpbml0aWF0b3JIaW50fSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikp
IHsKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVTdHlsZXMuYmluZCh0
aGlzKSk7CisgICAgICAgICAgICBvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucyA9IHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICB2YXIgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnM7CisgICAg
ICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMpCisgICAgICAgICAgICBiZWZvcmVU
YWJTaXplc0FuZFBvc2l0aW9ucyA9IHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0
aW9ucygpOworCisgICAgICAgIC8vIFN1YnRyYWN0IDEgZnJvbSBub3JtYWxUYWJDb3VudCBzaW5j
ZSBhcnJheXMgYmVnaW4gaW5kZXhpbmcgYXQgMC4KKyAgICAgICAgbGV0IHdhc0xhc3ROb3JtYWxU
YWIgPSB0aGlzLl90YWJCYXJJdGVtcy5pbmRleE9mKHRhYkJhckl0ZW0pID09PSB0aGlzLm5vcm1h
bFRhYkNvdW50IC0gMTsKKworICAgICAgICB0aGlzLl90YWJCYXJJdGVtcy5yZW1vdmUodGFiQmFy
SXRlbSk7CisgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5yZW1vdmUoKTsKKworICAgICAgICB2
YXIgaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIgPSB0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRh
YigpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIs
ICFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYik7CisKKyAgICAgICAgY29uc3Qgc2hvdWxkT3BlbkRl
ZmF1bHRUYWIgPSAhdGFiQmFySXRlbS5pc0RlZmF1bHRUYWIgJiYgIXRoaXMubm9ybWFsVGFiQ291
bnQ7CisgICAgICAgIGlmIChzaG91bGRPcGVuRGVmYXVsdFRhYikKKyAgICAgICAgICAgIG9wdGlv
bnMuc3VwcHJlc3NBbmltYXRpb25zID0gdHJ1ZTsKKworICAgICAgICBpZiAoIWhhc01vcmVUaGFu
T25lTm9ybWFsVGFiIHx8IHdhc0xhc3ROb3JtYWxUYWIgfHwgIW9wdGlvbnMuc3VwcHJlc3NFeHBh
bnNpb24pIHsKKyAgICAgICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMpIHsK
KyAgICAgICAgICAgICAgICB0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciA9
IHRydWU7CisgICAgICAgICAgICAgICAgdGhpcy5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xv
c2UoYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOworCisgICAgICAgICAgICB0aGlzLnVwZGF0
ZU5ld1RhYlRhYkJhckl0ZW1TdGF0ZSgpOworCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5UYWJCYXIuRXZlbnQuVGFiQmFySXRlbVJlbW92ZWQsIHt0YWJCYXJJ
dGVtfSk7CisKKyAgICAgICAgICAgIGlmIChzaG91bGRPcGVuRGVmYXVsdFRhYikKKyAgICAgICAg
ICAgICAgICB0aGlzLl9vcGVuRGVmYXVsdFRhYigpOworCisgICAgICAgICAgICByZXR1cm4gdGFi
QmFySXRlbTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBsYXN0Tm9ybWFsVGFiQmFySXRlbTsK
KworICAgICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjbG9zaW5nLXRhYiIpOworCisgICAgICAgICAgICAv
LyBGb3IgUlRMLCB3ZSBuZWVkIHRvIHBsYWNlIGV4dHJhIHNwYWNlIGJldHdlZW4gcGlubmVkIHRh
YiBhbmQgZmlyc3Qgbm9ybWFsIHRhYi4KKyAgICAgICAgICAgIC8vIEZyb20gbGVmdCB0byByaWdo
dCB0aGVyZSBpcyBwaW5uZWQgdGFicywgZXh0cmEgc3BhY2UsIHRoZW4gbm9ybWFsIHRhYnMuIENv
bXB1dGUKKyAgICAgICAgICAgIC8vIGhvdyBtdWNoIGV4dHJhIHNwYWNlIHdlIG5lZWQgdG8gYWRk
aXRpb25hbGx5IGFkZCBmb3Igbm9ybWFsIHRhYiBpdGVtcy4KKyAgICAgICAgICAgIGxldCBleHRy
YVNwYWNlQmV0d2Vlbk5vcm1hbEFuZFBpbm5lZFRhYnMgPSAwOworICAgICAgICAgICAgaWYgKFdJ
LnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwpIHsK
KyAgICAgICAgICAgICAgICBleHRyYVNwYWNlQmV0d2Vlbk5vcm1hbEFuZFBpbm5lZFRhYnMgPSB0
aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7CisgICAgICAgICAgICAg
ICAgZm9yIChsZXQgY3VycmVudFRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXNGcm9tTGVm
dFRvUmlnaHQoKSkKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFTcGFjZUJldHdlZW5Ob3JtYWxB
bmRQaW5uZWRUYWJzIC09IGN1cnJlbnRUYWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkud2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxldCBsZWZ0ID0g
MDsKKyAgICAgICAgICAgIGZvciAobGV0IGN1cnJlbnRUYWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJh
ckl0ZW1zRnJvbUxlZnRUb1JpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICBsZXQgc2l6ZUFuZFBv
c2l0aW9uID0gYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMuZ2V0KGN1cnJlbnRUYWJCYXJJdGVt
KTsKKworICAgICAgICAgICAgICAgIGlmICghKGN1cnJlbnRUYWJCYXJJdGVtIGluc3RhbmNlb2Yg
V0kuUGlubmVkVGFiQmFySXRlbSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFRhYkJh
ckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gZXh0cmFTcGFjZUJldHdlZW5Ob3JtYWxBbmRQaW5u
ZWRUYWJzICsgbGVmdCArICJweCI7CisgICAgICAgICAgICAgICAgICAgIGxlZnQgKz0gc2l6ZUFu
ZFBvc2l0aW9uLndpZHRoOworICAgICAgICAgICAgICAgICAgICBsYXN0Tm9ybWFsVGFiQmFySXRl
bSA9IGN1cnJlbnRUYWJCYXJJdGVtOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICBsZWZ0ID0gc2l6ZUFuZFBvc2l0aW9uLmxlZnQgKyBzaXplQW5kUG9zaXRpb24u
d2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBzZWxlY3RlZCB0YWIg
YW5kIGxhc3QgdGFiIG5lZWQgdG8gZHJhdyBhIHJpZ2h0IGJvcmRlciBhcyB3ZWxsLCBzbyBtYWtl
IHRoZW0gMXB4IHdpZGVyLgorICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRl
bSkKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHls
ZS53aWR0aCA9IChwYXJzZUZsb2F0KHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnN0
eWxlLndpZHRoKSArIDEpICsgInB4IjsKKworICAgICAgICAgICAgaWYgKGxhc3ROb3JtYWxUYWJC
YXJJdGVtICE9PSB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgbGFz
dE5vcm1hbFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IChwYXJzZUZsb2F0KGxhc3RO
b3JtYWxUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgpICsgMSkgKyAicHgiOworCisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVu
ZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHJlbW92ZVN0eWxlcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBzZWxlY3RlZCB0
YWIgbmVlZHMgdG8gc3RvcCBkcmF3aW5nIHRoZSByaWdodCBib3JkZXIsIHNvIG1ha2UgaXQgMXB4
IHNtYWxsZXIuIE9ubHkgaWYgaXQgaXNuJ3QgdGhlIGxhc3QuCisgICAgICAgICAgICBpZiAodGhp
cy5fc2VsZWN0ZWRUYWJCYXJJdGVtICYmIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSAhPT0gbGFz
dE5vcm1hbFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJ
dGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9hdCh0aGlzLl9zZWxlY3RlZFRhYkJh
ckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgLSAxKSArICJweCI7CisKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjbG9zaW5nLXRhYiIpOworCisgICAgICAgICAg
ICB0aGlzLnVwZGF0ZUxheW91dCgpOworCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVy
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMp
IHsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0
Iik7CisKKyAgICAgICAgICAgIHRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVy
ID0gdHJ1ZTsKKworICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3Np
dGlvbnMoYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOworCisgICAgICAgICAgICB2YXIgcmVt
b3ZlU3R5bGVzTGlzdGVuZXIgPSByZW1vdmVTdHlsZXMuYmluZCh0aGlzKTsKKworICAgICAgICAg
ICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVUYWJzLmJpbmQodGhpcykpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKKworICAgICAgICB0aGlz
LnVwZGF0ZU5ld1RhYlRhYkJhckl0ZW1TdGF0ZSgpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtUmVtb3ZlZCwge3RhYkJh
ckl0ZW19KTsKKworICAgICAgICBpZiAoc2hvdWxkT3BlbkRlZmF1bHRUYWIpCisgICAgICAgICAg
ICB0aGlzLl9vcGVuRGVmYXVsdFRhYigpOworCisgICAgICAgIHJldHVybiB0YWJCYXJJdGVtOwor
ICAgIH0KKworICAgIHNlbGVjdFByZXZpb3VzVGFiKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll90YWJCYXJJdGVtcy5sZW5ndGggPD0gMSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB2YXIgc3RhcnRJbmRleCA9IHRoaXMuX3RhYkJhckl0ZW1zLmluZGV4T2YodGhpcy5fc2VsZWN0
ZWRUYWJCYXJJdGVtKTsKKyAgICAgICAgdmFyIG5ld0luZGV4ID0gc3RhcnRJbmRleDsKKyAgICAg
ICAgZG8geworICAgICAgICAgICAgaWYgKG5ld0luZGV4ID09PSAwKQorICAgICAgICAgICAgICAg
IG5ld0luZGV4ID0gdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIC0gMTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBuZXdJbmRleC0tOworCisgICAgICAgICAgICBpZiAoISh0aGlz
Ll90YWJCYXJJdGVtc1tuZXdJbmRleF0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSB3aGlsZSAobmV3SW5kZXggIT09IHN0
YXJ0SW5kZXgpOworCisgICAgICAgIGlmIChuZXdJbmRleCA9PT0gc3RhcnRJbmRleCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQmFySXRlbSA9IHRoaXMu
X3RhYkJhckl0ZW1zW25ld0luZGV4XTsKKyAgICB9CisKKyAgICBzZWxlY3ROZXh0VGFiKCkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl90YWJCYXJJdGVtcy5sZW5ndGggPD0gMSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB2YXIgc3RhcnRJbmRleCA9IHRoaXMuX3RhYkJhckl0ZW1z
LmluZGV4T2YodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKTsKKyAgICAgICAgdmFyIG5ld0luZGV4
ID0gc3RhcnRJbmRleDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKG5ld0luZGV4ID09
PSB0aGlzLl90YWJCYXJJdGVtcy5sZW5ndGggLSAxKQorICAgICAgICAgICAgICAgIG5ld0luZGV4
ID0gMDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdJbmRleCsrOworCisg
ICAgICAgICAgICBpZiAoISh0aGlzLl90YWJCYXJJdGVtc1tuZXdJbmRleF0gaW5zdGFuY2VvZiBX
SS5QaW5uZWRUYWJCYXJJdGVtKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSB3
aGlsZSAobmV3SW5kZXggIT09IHN0YXJ0SW5kZXgpOworCisgICAgICAgIGlmIChuZXdJbmRleCA9
PT0gc3RhcnRJbmRleCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnNlbGVj
dGVkVGFiQmFySXRlbSA9IHRoaXMuX3RhYkJhckl0ZW1zW25ld0luZGV4XTsKKyAgICB9CisKKyAg
ICBnZXQgc2VsZWN0ZWRUYWJCYXJJdGVtKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9z
ZWxlY3RlZFRhYkJhckl0ZW07CisgICAgfQorCisgICAgc2V0IHNlbGVjdGVkVGFiQmFySXRlbSh0
YWJCYXJJdGVtT3JJbmRleCkKKyAgICB7CisgICAgICAgIHRoaXMuc2VsZWN0VGFiQmFySXRlbSh0
YWJCYXJJdGVtT3JJbmRleCk7CisgICAgfQorCisgICAgc2VsZWN0VGFiQmFySXRlbSh0YWJCYXJJ
dGVtT3JJbmRleCwgb3B0aW9ucyA9IHt9KQorICAgIHsKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0g
PSB0aGlzLl9maW5kVGFiQmFySXRlbSh0YWJCYXJJdGVtT3JJbmRleCk7CisgICAgICAgIGlmICh0
YWJCYXJJdGVtID09PSB0aGlzLl9uZXdUYWJUYWJCYXJJdGVtIHx8IHRhYkJhckl0ZW0gPT09IHRo
aXMuX3RhYlBpY2tlclRhYkJhckl0ZW0pIHsKKyAgICAgICAgICAgIC8vIEdldCB0aGUgbGFzdCBu
b3JtYWwgdGFiIGl0ZW0gaWYgdGhlIGl0ZW0gaXMgbm90IHNlbGVjdGFibGUuCisgICAgICAgICAg
ICB0YWJCYXJJdGVtID0gdGhpcy5fdGFiQmFySXRlbXNbdGhpcy5ub3JtYWxUYWJDb3VudCAtIDFd
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSA9PT0g
dGFiQmFySXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgcHJldmlvdXNU
YWJCYXJJdGVtID0gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtOworCisgICAgICAgIGlmICh0aGlz
Ll9zZWxlY3RlZFRhYkJhckl0ZW0pCisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0
ZW0uc2VsZWN0ZWQgPSBmYWxzZTsKKworICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0g
PSB0YWJCYXJJdGVtIHx8IG51bGw7CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFy
SXRlbSkgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLnNlbGVjdGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5j
bGFzc0xpc3QuY29udGFpbnMoImhpZGRlbiIpKQorICAgICAgICAgICAgICAgIHRoaXMubmVlZHNM
YXlvdXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBpbml0aWF0b3JIaW50ID0gb3B0aW9u
cy5pbml0aWF0b3JIaW50IHx8IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5V
bmtub3duOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYWJCYXIu
RXZlbnQuVGFiQmFySXRlbVNlbGVjdGVkLCB7cHJldmlvdXNUYWJCYXJJdGVtLCBpbml0aWF0b3JI
aW50fSk7CisgICAgfQorCisgICAgZ2V0IHRhYkJhckl0ZW1zKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl90YWJCYXJJdGVtczsKKyAgICB9CisKKyAgICBnZXQgbm9ybWFsVGFiQ291bnQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zLmZpbHRlcigoaXRlbSkg
PT4gIShpdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkpLmxlbmd0aDsKKyAgICB9
CisKKyAgICBnZXQgc2F2ZWFibGVUYWJDb3VudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fdGFiQmFySXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnJlcHJlc2VudGVkT2JqZWN0ICYm
IGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QuY29uc3RydWN0b3Iuc2hvdWxkU2F2ZVRhYigpKS5sZW5n
dGg7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBsYXlvdXQoKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQi
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiY2FsY3VsYXRlLXdpZHRoIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCJjb2xsYXBzZWQiKTsKKworICAgICAgICBmdW5jdGlvbiBmb3JjZUl0ZW1IaWRkZW4o
aXRlbSwgaGlkZGVuKSB7CisgICAgICAgICAgICBpdGVtLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2ds
ZSgiaGlkZGVuIiwgISFoaWRkZW4pOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQgaXRl
bSBvZiB0aGlzLl90YWJCYXJJdGVtcykKKyAgICAgICAgICAgIGZvcmNlSXRlbUhpZGRlbihpdGVt
LCBpdGVtID09PSB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtKTsKKworICAgICAgICBmdW5jdGlv
biBtZWFzdXJlSXRlbVdpZHRoKGl0ZW0pIHsKKyAgICAgICAgICAgIGlmICghaXRlbVtXSS5UYWJC
YXIuQ2FjaGVkV2lkdGhTeW1ib2xdKQorICAgICAgICAgICAgICAgIGl0ZW1bV0kuVGFiQmFyLkNh
Y2hlZFdpZHRoU3ltYm9sXSA9IGl0ZW0uZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAg
ICAgICByZXR1cm4gaXRlbVtXSS5UYWJCYXIuQ2FjaGVkV2lkdGhTeW1ib2xdOworICAgICAgICB9
CisKKyAgICAgICAgbGV0IHJlY2FsY3VsYXRlSXRlbVdpZHRocyA9ICgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtcy5yZWR1Y2UoKHRvdGFsLCBpdGVtKSA9PiB7Cisg
ICAgICAgICAgICAgICAgaXRlbVtXSS5UYWJCYXIuQ2FjaGVkV2lkdGhTeW1ib2xdID0gdW5kZWZp
bmVkOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbCArIG1lYXN1cmVJdGVtV2lkdGgoaXRl
bSk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfTsKKworICAgICAgICB0aGlzLl9oaWRk
ZW5UYWJCYXJJdGVtcyA9IFtdOworCisgICAgICAgIGxldCB0b3RhbEl0ZW1XaWR0aCA9IHJlY2Fs
Y3VsYXRlSXRlbVdpZHRocygpOworICAgICAgICBsZXQgYmFyV2lkdGggPSB0aGlzLmVsZW1lbnQu
cmVhbE9mZnNldFdpZHRoOworCisgICAgICAgIGlmICh0b3RhbEl0ZW1XaWR0aCA+IGJhcldpZHRo
KSB7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7
CisgICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCA9IHJlY2FsY3VsYXRlSXRlbVdpZHRocygpOwor
ICAgICAgICAgICAgaWYgKHRvdGFsSXRlbVdpZHRoID4gYmFyV2lkdGgpIHsKKyAgICAgICAgICAg
ICAgICBmb3JjZUl0ZW1IaWRkZW4odGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgIHRvdGFsSXRlbVdpZHRoICs9IG1lYXN1cmVJdGVtV2lkdGgodGhpcy5f
dGFiUGlja2VyVGFiQmFySXRlbSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxldCB0
YWJCYXJJdGVtcyA9IHRoaXMuX3RhYkJhckl0ZW1zRnJvbUxlZnRUb1JpZ2h0KCk7CisgICAgICAg
ICAgICBsZXQgaW5kZXggPSB0YWJCYXJJdGVtcy5sZW5ndGg7CisgICAgICAgICAgICB3aGlsZSAo
dG90YWxJdGVtV2lkdGggPiBiYXJXaWR0aCAmJiAtLWluZGV4ID49IDApIHsKKyAgICAgICAgICAg
ICAgICBsZXQgaXRlbSA9IHRhYkJhckl0ZW1zW2luZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAo
aXRlbSA9PT0gdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gfHwgaXRlbSBpbnN0YW5jZW9mIFdJLlBp
bm5lZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAgICAgdG90YWxJdGVtV2lkdGggLT0gbWVhc3VyZUl0ZW1XaWR0aChpdGVtKTsKKyAgICAg
ICAgICAgICAgICBmb3JjZUl0ZW1IaWRkZW4oaXRlbSwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAg
ICB0aGlzLl9oaWRkZW5UYWJCYXJJdGVtcy5wdXNoKGl0ZW0pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNhbGN1bGF0
ZS13aWR0aCIpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF90YWJCYXJJdGVtc0Zy
b21MZWZ0VG9SaWdodCgpCisgICAgeworICAgICAgICByZXR1cm4gV0kucmVzb2x2ZWRMYXlvdXRE
aXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLkxUUiA/IHRoaXMuX3RhYkJhckl0ZW1z
IDogdGhpcy5fdGFiQmFySXRlbXMuc2xpY2UoKS5yZXZlcnNlKCk7CisgICAgfQorCisgICAgX2Zp
bmRUYWJCYXJJdGVtKHRhYkJhckl0ZW1PckluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVv
ZiB0YWJCYXJJdGVtT3JJbmRleCA9PT0gIm51bWJlciIpCisgICAgICAgICAgICByZXR1cm4gdGhp
cy5fdGFiQmFySXRlbXNbdGFiQmFySXRlbU9ySW5kZXhdIHx8IG51bGw7CisKKyAgICAgICAgaWYg
KHRhYkJhckl0ZW1PckluZGV4IGluc3RhbmNlb2YgV0kuVGFiQmFySXRlbSkgeworICAgICAgICAg
ICAgaWYgKHRoaXMuX3RhYkJhckl0ZW1zLmluY2x1ZGVzKHRhYkJhckl0ZW1PckluZGV4KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGFiQmFySXRlbU9ySW5kZXg7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBfaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIo
KQorICAgIHsKKyAgICAgICAgbGV0IG5vcm1hbFRhYkNvdW50ID0gMDsKKyAgICAgICAgZm9yIChs
ZXQgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgeworICAgICAgICAgICAgaWYgKHRh
YkJhckl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICArK25vcm1hbFRhYkNvdW50OworICAgICAgICAgICAg
aWYgKG5vcm1hbFRhYkNvdW50ID49IDIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgX29wZW5EZWZh
dWx0VGFiKCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LlRhYkJhci5FdmVudC5PcGVuRGVmYXVsdFRhYik7CisgICAgfQorCisgICAgX3JlY29yZFRhYkJh
ckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpCisgICAgeworICAgICAgICB2YXIgdGFiQmFySXRlbVNp
emVzQW5kUG9zaXRpb25zID0gbmV3IE1hcDsKKworICAgICAgICBjb25zdCBiYXJSZWN0ID0gdGhp
cy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworCisgICAgICAgIGZvciAodmFyIHRh
YkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgIHZhciBib3VuZGlu
Z1JlY3QgPSB0YWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAg
ICAgICAgICB0YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMuc2V0KHRhYkJhckl0ZW0sIHtsZWZ0
OiBib3VuZGluZ1JlY3QubGVmdCAtIGJhclJlY3QubGVmdCwgd2lkdGg6IGJvdW5kaW5nUmVjdC53
aWR0aH0pOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRhYkJhckl0ZW1TaXplc0FuZFBv
c2l0aW9uczsKKyAgICB9CisKKyAgICBfYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMo
dGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zLCBza2lwVGFiQmFySXRlbSkKKyAgICB7CisgICAg
ICAgIGZvciAodmFyIFt0YWJCYXJJdGVtLCBzaXplQW5kUG9zaXRpb25dIG9mIHRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucykgeworICAgICAgICAgICAgaWYgKHNraXBUYWJCYXJJdGVtICYmIHRh
YkJhckl0ZW0gPT09IHNraXBUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBzaXplQW5kUG9zaXRp
b24ubGVmdCArICJweCI7CisgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lk
dGggPSBzaXplQW5kUG9zaXRpb24ud2lkdGggKyAicHgiOworICAgICAgICB9CisgICAgfQorCisg
ICAgX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKHNraXBUYWJCYXJJdGVtKQorICAg
IHsKKyAgICAgICAgZm9yICh2YXIgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgewor
ICAgICAgICAgICAgaWYgKHNraXBUYWJCYXJJdGVtICYmIHRhYkJhckl0ZW0gPT09IHNraXBUYWJC
YXJJdGVtKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFiQmFySXRl
bS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxsOworICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVt
ZW50LnN0eWxlLndpZHRoID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9maW5pc2hF
eHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZShiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucykKKyAgICB7
CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsK
KyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VN
b3VzZUVudGVyKTsKKyAgICAgICAgICAgIHRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3Vz
ZUVudGVyID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmICghYmVmb3JlVGFiU2l6ZXNBbmRQb3Np
dGlvbnMpCisgICAgICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlz
Ll9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAg
IHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgICAg
IHZhciBhZnRlclRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNp
emVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNp
emVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKKyAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXhwYW5kaW5nLXRhYnMiKTsKKwor
ICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGFm
dGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOworCisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0
ZW5lcik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlbW92ZVN0eWxl
cygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZGluZy10YWJzIik7CisKKyAgICAgICAgICAgICAg
ICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworCisgICAgICAgICAg
ICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKKworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVz
TGlzdGVuZXIpOworCisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgcmVtb3ZlU3R5bGVzTGlzdGVuZXIgPSByZW1vdmVTdHlsZXMuYmlu
ZCh0aGlzKTsKKworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVUYWJz
LmJpbmQodGhpcykpOworICAgICAgICB9LmJpbmQodGhpcykpOworICAgIH0KKworICAgIF9oYW5k
bGVNb3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIGxlZnQg
bW91c2UgY2xpY2tzIGZvciB0YWIgbW92ZW1lbnQuCisgICAgICAgIGlmIChldmVudC5idXR0b24g
IT09IDAgfHwgZXZlbnQuY3RybEtleSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBs
ZXQgaXRlbUVsZW1lbnQgPSBldmVudC50YXJnZXQuY2xvc2VzdCgiLiIgKyBXSS5UYWJCYXJJdGVt
LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCFpdGVtRWxlbWVudCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IGl0ZW1FbGVtZW50W1dJLlRhYkJh
ckl0ZW0uRWxlbWVudFJlZmVyZW5jZVN5bWJvbF07CisgICAgICAgIGlmICghdGFiQmFySXRlbSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGFiQmFySXRlbS5kaXNhYmxlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGFiQmFySXRlbSA9PT0gdGhpcy5f
bmV3VGFiVGFiQmFySXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGFi
QmFySXRlbSA9PT0gdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSkgeworICAgICAgICAgICAgaWYg
KCF0aGlzLl9oaWRkZW5UYWJCYXJJdGVtcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBpZiAodGhpcy5faWdub3JlVGFiUGlja2VyTW91c2VEb3duKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdGhpcy5faWdub3JlVGFiUGlja2Vy
TW91c2VEb3duID0gdHJ1ZTsKKworICAgICAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV0kuQ29u
dGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51
LmFkZEJlZm9yZVNob3dDYWxsYmFjaygoKSA9PiB7CisgICAgICAgICAgICAgICAgdGhpcy5faWdu
b3JlVGFiUGlja2VyTW91c2VEb3duID0gZmFsc2U7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLl9oaWRkZW5UYWJCYXJJdGVtcykgeworICAgICAg
ICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oaXRlbS50aXRsZSwgKCkgPT4geworICAg
ICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFRhYkJhckl0ZW0oaXRlbSwgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9u
SW5pdGlhdG9yLkNvbnRleHRNZW51LAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dE1lbnUuc2hv
dygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGNsb3Nl
QnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KCIuIiArIFdJLlRhYkJhckl0ZW0u
Q2xvc2VCdXR0b25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGlmIChjbG9zZUJ1dHRvbkVsZW1l
bnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5zZWxlY3RUYWJCYXJJdGVt
KHRhYkJhckl0ZW0sIHsKKyAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIu
VGFiTmF2aWdhdGlvbkluaXRpYXRvci5UYWJDbGljaywKKyAgICAgICAgfSk7CisKKyAgICAgICAg
aWYgKHRhYkJhckl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtIHx8ICF0aGlzLl9o
YXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHRoaXMuX2ZpcnN0Tm9ybWFsVGFiSXRlbUluZGV4ID0gMDsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCB0aGlzLl90YWJCYXJJdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYg
KHRoaXMuX3RhYkJhckl0ZW1zW2ldIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgdGhpcy5fZmlyc3ROb3JtYWxU
YWJJdGVtSW5kZXggPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLl9tb3VzZUlzRG93biA9IHRydWU7CisKKyAgICAgICAgdGhpcy5fbW91c2VNb3ZlZEV2
ZW50TGlzdGVuZXIgPSB0aGlzLl9oYW5kbGVNb3VzZU1vdmVkLmJpbmQodGhpcyk7CisgICAgICAg
IHRoaXMuX21vdXNlVXBFdmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlTW91c2VVcC5iaW5kKHRo
aXMpOworCisgICAgICAgIC8vIFJlZ2lzdGVyIHRoZXNlIGxpc3RlbmVycyBvbiB0aGUgZG9jdW1l
bnQgc28gd2UgY2FuIHRyYWNrIHRoZSBtb3VzZSBpZiBpdCBsZWF2ZXMgdGhlIHRhYiBiYXIuCisg
ICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX21vdXNl
TW92ZWRFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2V1cCIsIHRoaXMuX21vdXNlVXBFdmVudExpc3RlbmVyLCB0cnVlKTsKKworICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsKKyAgICB9CisKKyAgICBfaGFuZGxlQ2xpY2soZXZlbnQpCisgICAgeworICAgICAgICB2
YXIgaXRlbUVsZW1lbnQgPSBldmVudC50YXJnZXQuY2xvc2VzdCgiLiIgKyBXSS5UYWJCYXJJdGVt
LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCFpdGVtRWxlbWVudCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB2YXIgdGFiQmFySXRlbSA9IGl0ZW1FbGVtZW50W1dJLlRhYkJh
ckl0ZW0uRWxlbWVudFJlZmVyZW5jZVN5bWJvbF07CisgICAgICAgIGlmICghdGFiQmFySXRlbSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGFiQmFySXRlbS5kaXNhYmxlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zdCBjbGlja2VkTWlkZGxlQnV0dG9u
ID0gZXZlbnQuYnV0dG9uID09PSAxOworCisgICAgICAgIHZhciBjbG9zZUJ1dHRvbkVsZW1lbnQg
PSBldmVudC50YXJnZXQuY2xvc2VzdCgiLiIgKyBXSS5UYWJCYXJJdGVtLkNsb3NlQnV0dG9uU3R5
bGVDbGFzc05hbWUpOworICAgICAgICBpZiAoY2xvc2VCdXR0b25FbGVtZW50IHx8IGNsaWNrZWRN
aWRkbGVCdXR0b24pIHsKKyAgICAgICAgICAgIC8vIERpc2FsbG93IGNsb3NpbmcgdGhlIGRlZmF1
bHQgdGFiIGlmIGl0IGlzIHRoZSBvbmx5IHRhYi4KKyAgICAgICAgICAgIGlmICh0YWJCYXJJdGVt
LmlzRGVmYXVsdFRhYiAmJiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaW5nbGUt
dGFiIikpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIWV2ZW50
LmFsdEtleSkgeworICAgICAgICAgICAgICAgIGxldCBvcHRpb25zID0geworICAgICAgICAgICAg
ICAgICAgICBzdXBwcmVzc0V4cGFuc2lvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaW5p
dGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLlRhYkNsaWNr
LAorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVUYWJCYXJJ
dGVtKHRhYkJhckl0ZW0sIG9wdGlvbnMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuX3RhYkJhckl0ZW1zLmxl
bmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlz
Ll90YWJCYXJJdGVtc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PT0gdGFiQmFySXRl
bSB8fCBpdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVUYWJCYXJJdGVtKGl0
ZW0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgX2hhbmRsZU1vdXNl
TW92ZWQoZXZlbnQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24g
PT09IDApOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9tb3VzZUlzRG93bik7CisgICAg
ICAgIGlmICghdGhpcy5fbW91c2VJc0Rvd24pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKTsKKyAgICAgICAgaWYg
KCF0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCk7CisKKyAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0
aWMtbGF5b3V0IikpIHsKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5k
UG9zaXRpb25zKHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmctdGFiIik7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fbW91c2VPZmZzZXQgPT09IHVuZGVmaW5lZCkK
KyAgICAgICAgICAgIHRoaXMuX21vdXNlT2Zmc2V0ID0gZXZlbnQucGFnZVggLSB0aGlzLl9zZWxl
Y3RlZFRhYkJhckl0ZW0uZWxlbWVudC50b3RhbE9mZnNldExlZnQ7CisKKyAgICAgICAgdmFyIHRh
YkJhck1vdXNlT2Zmc2V0ID0gZXZlbnQucGFnZVggLSB0aGlzLmVsZW1lbnQudG90YWxPZmZzZXRM
ZWZ0OworICAgICAgICB2YXIgbmV3TGVmdCA9IHRhYkJhck1vdXNlT2Zmc2V0IC0gdGhpcy5fbW91
c2VPZmZzZXQ7CisKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5
bGUubGVmdCA9IG5ld0xlZnQgKyAicHgiOworCisgICAgICAgIHZhciBzZWxlY3RlZFRhYk1pZFgg
PSBuZXdMZWZ0ICsgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnJlYWxPZmZzZXRX
aWR0aCAvIDIpOworCisgICAgICAgIHZhciBjdXJyZW50SW5kZXggPSB0aGlzLl90YWJCYXJJdGVt
cy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSk7CisgICAgICAgIHZhciBuZXdJbmRl
eCA9IGN1cnJlbnRJbmRleDsKKworICAgICAgICBmb3IgKGxldCB0YWJCYXJJdGVtIG9mIHRoaXMu
X3RhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICBpZiAodGFiQmFySXRlbSA9PT0gdGhpcy5fc2Vs
ZWN0ZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICB2YXIgdGFiQmFySXRlbVJlY3QgPSB0YWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7CisKKyAgICAgICAgICAgIGlmIChzZWxlY3RlZFRhYk1pZFggPCB0YWJCYXJJdGVt
UmVjdC5sZWZ0IHx8IHNlbGVjdGVkVGFiTWlkWCA+IHRhYkJhckl0ZW1SZWN0LnJpZ2h0KQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBuZXdJbmRleCA9IHRoaXMuX3Rh
YkJhckl0ZW1zLmluZGV4T2YodGFiQmFySXRlbSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFN1YnRyYWN0IDEgZnJvbSBub3JtYWxUYWJDb3VudCBzaW5jZSBh
cnJheXMgYmVnaW4gaW5kZXhpbmcgYXQgMC4KKyAgICAgICAgbmV3SW5kZXggPSBOdW1iZXIuY29u
c3RyYWluKG5ld0luZGV4LCB0aGlzLl9maXJzdE5vcm1hbFRhYkl0ZW1JbmRleCwgdGhpcy5ub3Jt
YWxUYWJDb3VudCAtIDEpOworCisgICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IG5ld0luZGV4
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3RhYkJhckl0ZW1zLnNwbGlj
ZShjdXJyZW50SW5kZXgsIDEpOworICAgICAgICB0aGlzLl90YWJCYXJJdGVtcy5zcGxpY2UobmV3
SW5kZXgsIDAsIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSk7CisKKyAgICAgICAgbGV0IG5leHRT
aWJsaW5nID0gdGhpcy5fdGFiQmFySXRlbXNbbmV3SW5kZXggKyAxXTsKKyAgICAgICAgbGV0IG5l
eHRTaWJsaW5nRWxlbWVudCA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6IHRo
aXMuX25ld1RhYlRhYkJhckl0ZW0uZWxlbWVudDsKKworICAgICAgICB0aGlzLmVsZW1lbnQuaW5z
ZXJ0QmVmb3JlKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0Vs
ZW1lbnQpOworCisgICAgICAgIC8vIEZJWE1FOiBBbmltYXRlIHRoZSB0YWJzIHRoYXQgbW92ZSB0
byBtYWtlIHJvb20gZm9yIHRoZSBzZWxlY3RlZCB0YWIuIFRoaXMgd2FzIGNhdXNpbmcgbWUgdHJv
dWJsZSB3aGVuIEkgdHJpZWQuCisKKyAgICAgICAgbGV0IGxlZnQgPSAwOworICAgICAgICBmb3Ig
KGxldCB0YWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zRnJvbUxlZnRUb1JpZ2h0KCkpIHsK
KyAgICAgICAgICAgIGlmICh0YWJCYXJJdGVtICE9PSB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0g
JiYgdGFiQmFySXRlbSAhPT0gdGhpcy5fbmV3VGFiVGFiQmFySXRlbSAmJiBwYXJzZUZsb2F0KHRh
YkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0KSAhPT0gbGVmdCkKKyAgICAgICAgICAgICAgICB0
YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAicHgiOworICAgICAgICAgICAg
bGVmdCArPSBwYXJzZUZsb2F0KHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBfaGFuZGxlTW91c2VVcChldmVudCkKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX21vdXNlSXNEb3duKTsKKyAgICAgICAgaWYgKCF0aGlzLl9tb3VzZUlzRG93bikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZSgiZHJhZ2dpbmctdGFiIik7CisKKyAgICAgICAgaWYgKCF0aGlzLl90YWJBbmltYXRlZENs
b3NlZFNpbmNlTW91c2VFbnRlcikgeworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFy
SXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBs
ZXQgbGVmdCA9IDA7CisgICAgICAgICAgICBmb3IgKGxldCB0YWJCYXJJdGVtIG9mIHRoaXMuX3Rh
YkJhckl0ZW1zRnJvbUxlZnRUb1JpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodGFiQmFy
SXRlbSA9PT0gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgICAgICB0
YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAicHgiOworICAgICAgICAgICAg
ICAgIGxlZnQgKz0gcGFyc2VGbG9hdCh0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbW91c2VJc0Rvd24gPSBm
YWxzZTsKKyAgICAgICAgdGhpcy5fbW91c2VPZmZzZXQgPSB1bmRlZmluZWQ7CisKKyAgICAgICAg
ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fbW91c2VNb3Zl
ZEV2ZW50TGlzdGVuZXIsIHRydWUpOworICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3Rl
bmVyKCJtb3VzZXVwIiwgdGhpcy5fbW91c2VVcEV2ZW50TGlzdGVuZXIsIHRydWUpOworCisgICAg
ICAgIHRoaXMuX21vdXNlTW92ZWRFdmVudExpc3RlbmVyID0gbnVsbDsKKyAgICAgICAgdGhpcy5f
bW91c2VVcEV2ZW50TGlzdGVuZXIgPSBudWxsOworCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworCisgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtc1Jlb3Jk
ZXJlZCk7CisgICAgfQorCisgICAgX2hhbmRsZU1vdXNlTGVhdmUoZXZlbnQpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5fbW91c2VJc0Rvd24gfHwgIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2lu
Y2VNb3VzZUVudGVyIHx8ICF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMt
bGF5b3V0IikgfHwgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gVGhpcyBldmVudCBjYW4gc3RpbGwg
ZmlyZSB3aGVuIHRoZSBtb3VzZSBpcyBpbnNpZGUgdGhlIGVsZW1lbnQgaWYgRE9NIG5vZGVzIGFy
ZSBhZGRlZCwgcmVtb3ZlZCBvciBnZW5lcmFsbHkgY2hhbmdlIGluc2lkZS4KKyAgICAgICAgLy8g
Q2hlY2sgaWYgdGhlIG1vdXNlIHJlYWxseSBkaWQgbGVhdmUgdGhlIGVsZW1lbnQgYnkgY2hlY2tp
bmcgdGhlIGJvdW5kcy4KKyAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgYSBXZWJLaXQgYnVnIG9y
IGNvcnJlY3QgYmVoYXZpb3I/CisgICAgICAgIGNvbnN0IGJhclJlY3QgPSB0aGlzLmVsZW1lbnQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGNvbnN0IG5ld1RhYkl0ZW1SZWN0ID0g
dGhpcy5fbmV3VGFiVGFiQmFySXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwor
ICAgICAgICBpZiAoZXZlbnQucGFnZVkgPiBiYXJSZWN0LnRvcCAmJiBldmVudC5wYWdlWSA8IGJh
clJlY3QuYm90dG9tICYmIGV2ZW50LnBhZ2VYID4gYmFyUmVjdC5sZWZ0ICYmIGV2ZW50LnBhZ2VY
IDwgKG5ld1RhYkl0ZW1SZWN0ID8gbmV3VGFiSXRlbVJlY3QucmlnaHQgOiBiYXJSZWN0LnJpZ2h0
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9maW5pc2hFeHBhbmRpbmdU
YWJzQWZ0ZXJDbG9zZSgpOworICAgIH0KKworICAgIF9oYW5kbGVDb250ZXh0TWVudShldmVudCkK
KyAgICB7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0ZUZy
b21FdmVudChldmVudCk7CisKKyAgICAgICAgZm9yIChsZXQgdGFiQ2xhc3Mgb2YgV0kua25vd25U
YWJDbGFzc2VzKCkpIHsKKyAgICAgICAgICAgIGlmICghdGFiQ2xhc3MuaXNUYWJBbGxvd2VkKCkg
fHwgdGFiQ2xhc3MudGFiSW5mbygpLmlzRXBoZW1lcmFsKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBsZXQgb3BlblRhYkJhckl0ZW0gPSBudWxsOworICAgICAgICAg
ICAgZm9yIChsZXQgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgeworICAgICAgICAg
ICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9IHRhYkJhckl0ZW0ucmVwcmVzZW50ZWRPYmplY3Q7
CisgICAgICAgICAgICAgICAgaWYgKCEodGFiQ29udGVudFZpZXcgaW5zdGFuY2VvZiBXSS5UYWJD
b250ZW50VmlldykpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICAgICAgaWYgKHRhYkNvbnRlbnRWaWV3LnR5cGUgPT09IHRhYkNsYXNzLlR5cGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgb3BlblRhYkJhckl0ZW0gPSB0YWJCYXJJdGVtOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZENoZWNrYm94SXRlbSh0YWJDbGFzcy50YWJJbmZvKCku
dGl0bGUsICgpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAob3BlblRhYkJhckl0ZW0pCisgICAg
ICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFiQmFySXRlbShvcGVuVGFiQmFySXRlbSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBXSS5jcmVhdGVOZXdUYWJX
aXRoVHlwZSh0YWJDbGFzcy5UeXBlLCB7c2hvdWxkU2hvd05ld1RhYjogdHJ1ZX0pOworICAgICAg
ICAgICAgfSwgISFvcGVuVGFiQmFySXRlbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfaGFu
ZGxlTmV3VGFiQ2xpY2soZXZlbnQpCisgICAgeworICAgICAgICBsZXQgb3B0aW9ucyA9IHtpbml0
aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuVGFiQ2xpY2t9
OworICAgICAgICBXSS5zaG93TmV3VGFiVGFiKG9wdGlvbnMpOworICAgIH0KKworICAgIF9oYW5k
bGVOZXdUYWJNb3VzZUVudGVyKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl90YWJB
bmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFp
bnMoImFuaW1hdGluZyIpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2Zp
bmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlKCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01haW4uY3NzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTWFpbi5jc3MKaW5kZXggYzllNzM4
MzRlODY0YTg3ODMwZjQ3NGQ2MDNhYWMwNzdlMjFkMzViYy4uMTBjZDY0YTQ1NTkwOTk1Y2RhNDkw
MjkyMWUxYmY5ODE1MDNhZjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTWFpbi5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTWFpbi5jc3MKQEAgLTY0LDYgKzY0LDEwIEBAIGJvZHkgewogICAg
IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3ItY29udGVudCk7CiB9CiAK
K2JvZHkuZG9ja2VkLmJvdHRvbSB7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJv
cmRlci1jb2xvcik7Cit9CisKIGJvZHkuZG9ja2VkLnJpZ2h0IHsKICAgICBib3JkZXItbGVmdDog
MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiB9CkBAIC0xMDksMjMgKzExMywxMiBAQCBi
b2R5LmRvY2tlZC5sZWZ0ICNkb2NrZWQtcmVzaXplciB7CiAgICAgY3Vyc29yOiBjb2wtcmVzaXpl
OwogfQogCi0jdW5kb2NrZWQtdGl0bGUtYXJlYSB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwot
ICAgIHRvcDogMDsKLSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdodDogdmFy
KC0tdW5kb2NrZWQtdGl0bGUtYXJlYS1oZWlnaHQpOwotICAgIGJhY2tncm91bmQtaW1hZ2U6IGxp
bmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwgOTIlKSwgaHNsKDAsIDAlLCA4NyUp
KTsKLSAgICBib3gtc2hhZG93OiBpbnNldCBoc2xhKDAsIDAlLCAxMDAlLCAwLjUpIDAgMXB4IDFw
eDsKLX0KLQotYm9keS5kb2NrZWQgI3VuZG9ja2VkLXRpdGxlLWFyZWEgewotICAgIGRpc3BsYXk6
IG5vbmU7Citib2R5LmRvY2tlZC5ib3R0b20gI3Rvb2xiYXIgeworICAgIGN1cnNvcjogcm93LXJl
c2l6ZTsKIH0KIAotYm9keS53aW5kb3ctaW5hY3RpdmUgI3VuZG9ja2VkLXRpdGxlLWFyZWEgewot
ICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgOTYlKTsKLSAgICBiYWNrZ3JvdW5kLWlt
YWdlOiBub25lOworYm9keS5kb2NrZWQuYm90dG9tICN0b29sYmFyIC5pdGVtOm5vdCguZmxleGli
bGUtc3BhY2UpIHsKKyAgICBjdXJzb3I6IGRlZmF1bHQ7CiB9CiAKIGlucHV0W3R5cGU9cmFuZ2Vd
IHsKQEAgLTE0NCw3ICsxMzcsNyBAQCBpbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXIt
cnVubmFibGUtdHJhY2sgewogCiAjbWFpbiB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IHRvcDogY2FsYyh2YXIoLS11bmRvY2tlZC10aXRsZS1hcmVhLWhlaWdodCkgKyB2YXIoLS10YWIt
YmFyLWhlaWdodCkpOworICAgIHRvcDogY2FsYyh2YXIoLS10b29sYmFyLWhlaWdodCkgKyB2YXIo
LS10YWItYmFyLWhlaWdodCkpOwogICAgIGxlZnQ6IDA7CiAgICAgcmlnaHQ6IDA7CiAgICAgYm90
dG9tOiAwOwpAQCAtNDgyLDE1ICs0NzUsNiBAQCBib2R5W2Rpcj1ydGxdIFtkaXI9bHRyXSAuZ28t
dG8tYXJyb3cgewogICAgIH0KIH0KIAotQGtleWZyYW1lcyB0YWItYmFyLWNvbnNvbGUtaXRlbS1w
dWxzZSB7Ci0gICAgNTAlIHsgb3BhY2l0eTogMC42OyB9Ci19Ci0KLS50YWItYmFyID4gLm5hdmln
YXRpb24tYmFyIDptYXRjaGVzKC5jb25zb2xlLXdhcm5pbmdzLCAuY29uc29sZS1lcnJvcnMpOm5v
dCguZGlzYWJsZWQpLnB1bHNpbmcgewotICAgIGFuaW1hdGlvbi1uYW1lOiB0YWItYmFyLWNvbnNv
bGUtaXRlbS1wdWxzZTsKLSAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNzVzOwotfQotCiAuZGV2
aWNlLXNldHRpbmdzLWNvbnRlbnQgewogICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICBwYWRk
aW5nOiAwIDRweDsKQEAgLTU1NSwxNSArNTM5LDYgQEAgYm9keVtkaXI9cnRsXSAuZGV2aWNlLXNl
dHRpbmdzLWNvbnRlbnQgPiAucmVmZXJlbmNlLXBhZ2UtbGluay1jb250YWluZXIgewogfQogCiBA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gICAgI3VuZG9ja2VkLXRpdGxl
LWFyZWEgewotICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90
dG9tLCBoc2woMCwgMCUsIDI2JSksIGhzbCgwLCAwJSwgMjMlKSk7Ci0gICAgICAgIGJveC1zaGFk
b3c6IG5vbmU7Ci0gICAgfQotCi0gICAgYm9keS53aW5kb3ctaW5hY3RpdmUgI3VuZG9ja2VkLXRp
dGxlLWFyZWEgewotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLWNv
bG9yKTsKLSAgICB9Ci0KICAgICAuZ28tdG8tYXJyb3cgewogICAgICAgICBmaWx0ZXI6IGludmVy
dCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCmluZGV4IDM0M2VkMWRhMzFmYjNjMDIxYTli
MTlhMTA5MjUyMjFlMmE5NGRlZjcuLmEyNjk2ODZkMzk3Y2IyMjJhZTBmMDg2ZDUwNTE4MTU0Zjg2
ZTg5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL05hdmlnYXRpb25CYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwpAQCAtMjUsNyArMjUsNyBAQAogCiBXSS5OYXZp
Z2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdJLlZpZXcKIHsKLSAgICBj
b25zdHJ1Y3RvcihlbGVtZW50LCB7cm9sZSwgc2l6ZXNUb0ZpdH0gPSB7fSkKKyAgICBjb25zdHJ1
Y3RvcihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMsIHJvbGUsIGxhYmVsKQogICAgIHsKICAgICAg
ICAgc3VwZXIoZWxlbWVudCk7CiAKQEAgLTM0LDYgKzM0LDggQEAgV0kuTmF2aWdhdGlvbkJhciA9
IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgaWYgKHJvbGUp
CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7Cisg
ICAgICAgIGlmIChsYWJlbCkKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUo
ImFyaWEtbGFiZWwiLCBsYWJlbCk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImZvY3VzIiwgdGhpcy5fZm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgICAgICB0
aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2JsdXIuYmluZCh0aGlz
KSwgZmFsc2UpOwpAQCAtNDMsMTkgKzQ1LDIxIEBAIFdJLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBO
YXZpZ2F0aW9uQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl9tb3VzZU1vdmVkRXZl
bnRMaXN0ZW5lciA9IHRoaXMuX21vdXNlTW92ZWQuYmluZCh0aGlzKTsKICAgICAgICAgdGhpcy5f
bW91c2VVcEV2ZW50TGlzdGVuZXIgPSB0aGlzLl9tb3VzZVVwLmJpbmQodGhpcyk7CiAKLSAgICAg
ICAgdGhpcy5fc2l6ZXNUb0ZpdCA9IHNpemVzVG9GaXQgfHwgZmFsc2U7CiAgICAgICAgIHRoaXMu
X21pbmltdW1XaWR0aCA9IE5hTjsKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zID0gW107
CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gPSBudWxsOworCisgICAgICAg
IGlmIChuYXZpZ2F0aW9uSXRlbXMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bmF2aWdhdGlvbkl0ZW1zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuYWRkTmF2
aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW1zW2ldKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCi0gICAgZ2V0IHNpemVzVG9GaXQoKSB7IHJldHVybiB0aGlzLl9zaXplc1Rv
Rml0OyB9Ci0KICAgICBhZGROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbSwgcGFyZW50RWxl
bWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmluc2VydE5hdmlnYXRpb25JdGVtKG5h
dmlnYXRpb25JdGVtLCBJbmZpbml0eSwgcGFyZW50RWxlbWVudCk7CisgICAgICAgIHJldHVybiB0
aGlzLmluc2VydE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtLCB0aGlzLl9uYXZpZ2F0aW9u
SXRlbXMubGVuZ3RoLCBwYXJlbnRFbGVtZW50KTsKICAgICB9CiAKICAgICBpbnNlcnROYXZpZ2F0
aW9uSXRlbShuYXZpZ2F0aW9uSXRlbSwgaW5kZXgsIHBhcmVudEVsZW1lbnQpCkBAIC02OSw3ICs3
Myw3IEBAIFdJLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV0ku
VmlldwogCiAgICAgICAgIG5hdmlnYXRpb25JdGVtLmRpZEF0dGFjaCh0aGlzKTsKIAotICAgICAg
ICBjb25zb2xlLmFzc2VydCghaXNGaW5pdGUoaW5kZXgpIHx8IChpbmRleCA+PSAwICYmIGluZGV4
IDw9IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGgpKTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoaW5kZXggPj0gMCAmJiBpbmRleCA8PSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoKTsK
ICAgICAgICAgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihpbmRleCwgdGhpcy5fbmF2aWdh
dGlvbkl0ZW1zLmxlbmd0aCkpOwogCiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcy5zcGxp
Y2UoaW5kZXgsIDAsIG5hdmlnYXRpb25JdGVtKTsKQEAgLTE2NCw2ICsxNjgsMTIgQEAgV0kuTmF2
aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAg
IHJldHVybiB0aGlzLl9taW5pbXVtV2lkdGg7CiAgICAgfQogCisgICAgZ2V0IHNpemVzVG9GaXQo
KQorICAgIHsKKyAgICAgICAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIGZpbmROYXZpZ2F0aW9uSXRlbShpZGVu
dGlmaWVyKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbWF0Y2hpbmdTZWxmT3JDaGlsZChpdGVt
KSB7CkBAIC0yMTQsNyArMjI0LDcgQEAgV0kuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRp
b25CYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICBpdGVtLnVwZGF0ZSh7ZXhwYW5kT25s
eTogdHJ1ZX0pOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMuX3NpemVzVG9GaXQpCisg
ICAgICAgIGlmICh0aGlzLnNpemVzVG9GaXQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgbGV0IHZpc2libGVOYXZpZ2F0aW9uSXRlbXMgPSB0aGlzLl92aXNpYmxlTmF2aWdhdGlvbkl0
ZW1zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTmV0d29ya0RldGFpbFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTmV0d29ya0RldGFpbFZpZXcuY3NzCmluZGV4IGMwMmVjYjg2NmU0NDEzODRm
ZGE5OGQ2MDEyZDNjNzZkMjQ5NzM2MmEuLmJlYTU2OGY0ZjQzNGM5NWFlNmE4NjliYjk1NjVkZTA5
MWRiZDEzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL05ldHdvcmtEZXRhaWxWaWV3LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrRGV0YWlsVmlldy5jc3MKQEAgLTI4LDcgKzI4LDcg
QEAKICAgICB0b3A6IDA7CiAgICAgbGVmdDogMDsKICAgICByaWdodDogMDsKLSAgICBib3R0b206
IHZhcigtLW5ldHdvcmstc3RhdGlzdGljcy1oZWlnaHQpOworICAgIGJvdHRvbTogMDsKICAgICAv
KiBsZWZ0IG9yIHJpZ2h0IHNldCBieSBOZXR3b3JrVGFibGVWaWV3IG9uIGRpc3BsYXkgLyByZXNp
emUgKi8KICAgICB6LWluZGV4OiAxMDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdv
cmtUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL05ldHdvcmtUYWJDb250ZW50Vmlldy5qcwppbmRleCA2NTExMGFjYTIzMjQ4NGZkZWJj
ZjNmZTkyY2MxNDc3MWM1MDFjNTE3Li5iMGUzYTMwMTg5ZGY4OTZhNTg3NGY5MGVmYzY3MzNmOTBj
MGIwNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNSw5ICsy
NSwxMSBAQAogCiBXSS5OZXR3b3JrVGFiQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFiQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKCkK
KyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc3VwZXIoTmV0d29y
a1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gV0ku
R2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuTmV0d29ya1RhYkNvbnRlbnRWaWV3LnRh
YkluZm8oKSk7CisKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAibmV0d29yayIsICJuZXR3
b3JrIiwgdGFiQmFySXRlbSk7CiAKICAgICAgICAgdGhpcy5fbmV0d29ya1RhYmxlQ29udGVudFZp
ZXcgPSBuZXcgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXc7CiAKQEAgLTQ4LDcgKzUwLDYgQEAg
V0kuTmV0d29ya1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYkNvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuVGFiQ29udGVudFZpZXcKICAgICBzdGF0aWMgdGFiSW5mbygpCiAgICAgewogICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgaWRlbnRpZmllcjogTmV0d29ya1RhYkNvbnRlbnRW
aWV3LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9OZXR3b3JrLnN2ZyIsCiAgICAg
ICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIk5ldHdvcmsiKSwKICAgICAgICAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtU
YWJsZUNvbnRlbnRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmNzcwppbmRleCBiNGYwZGViNmM3MmZkYzgz
YjkzMjVhNWZkODZjYTE2ZTY2MDUxMjI2Li5iNGZkYjEyZDY2NTUxMzQwMmU2MDNmMDNlOGU5MTRl
MDZiZDg3NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5jc3MKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuY3NzCkBA
IC0zNiwxMiArMzYsNyBAQAogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvTmV0d29ya0hBUi5z
dmcpOwogfQogCi0uY29udGVudC12aWV3Lm5ldHdvcmsgLm5ldHdvcmstdGFibGUgewotICAgIGRp
c3BsYXk6IGZsZXg7Ci0gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKLX0KLQotLmNvbnRlbnQt
dmlldy5uZXR3b3JrIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5pY29uIHsKKy5jb250ZW50LXZp
ZXcubmV0d29yayAubmV0d29yay10YWJsZSAuaWNvbiB7CiAgICAgcG9zaXRpb246IHJlbGF0aXZl
OwogICAgIHdpZHRoOiAxNnB4OwogICAgIGhlaWdodDogMTZweDsKQEAgLTUwLDE5ICs0NSwxNSBA
QAogICAgIC13ZWJraXQtbWFyZ2luLWVuZDogNHB4OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50
YWJsZSBsaTpub3QoLnNlbGVjdGVkKSAuY2VsbDpub3QoLmN1cnJlbnQtc2Vzc2lvbikgewotICAg
IG9wYWNpdHk6IDAuNTsKLX0KLQotLm5ldHdvcmstdGFibGUgPiAudGFibGUgbGk6bm90KC5maWxs
ZXIpIC5jZWxsLm5hbWUgeworLm5ldHdvcmstdGFibGUgbGk6bm90KC5maWxsZXIpIC5jZWxsLm5h
bWUgewogICAgIGN1cnNvcjogcG9pbnRlcjsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUg
LmNlbGwuZG9tLW5vZGUubmFtZSAuaWNvbiB7CisubmV0d29yay10YWJsZSAuY2VsbC5kb20tbm9k
ZS5uYW1lIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0RPTUVsZW1lbnQuc3Zn
KTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlz
Y2xvc3VyZSB7CisubmV0d29yay10YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJl
IHsKICAgICB3aWR0aDogMTNweDsKICAgICBoZWlnaHQ6IDEzcHg7CiAgICAgdmVydGljYWwtYWxp
Z246IC0ycHg7CkBAIC03MSwxMTIgKzYyLDExMiBAQAogICAgIGJhY2tncm91bmQtcmVwZWF0OiBu
by1yZXBlYXQ7CiB9CiAKLWJvZHlbZGlyPXJ0bF0gLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNl
bGwuZG9tLW5vZGUubmFtZSAuZGlzY2xvc3VyZSB7Citib2R5W2Rpcj1ydGxdIC5uZXR3b3JrLXRh
YmxlIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUgewogICAgIHRyYW5zZm9ybTogc2Nh
bGVYKC0xKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGU6Zm9jdXMgbGkuc2VsZWN0ZWQg
LmNlbGwuZG9tLW5vZGUubmFtZSAuZGlzY2xvc3VyZSB7CisubmV0d29yay10YWJsZTpmb2N1cyBs
aS5zZWxlY3RlZCAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlIHsKICAgICBjb250ZW50
OiB1cmwoLi4vSW1hZ2VzL0Rpc2Nsb3N1cmVUcmlhbmdsZXMuc3ZnI2Nsb3NlZC1zZWxlY3RlZCk7
CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Ns
b3N1cmUuZXhwYW5kZWQgeworLm5ldHdvcmstdGFibGUgLmNlbGwuZG9tLW5vZGUubmFtZSAuZGlz
Y2xvc3VyZS5leHBhbmRlZCB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9EaXNjbG9zdXJl
VHJpYW5nbGVzLnN2ZyNvcGVuLW5vcm1hbCk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
OmZvY3VzIGxpLnNlbGVjdGVkIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUuZXhwYW5k
ZWQgeworLm5ldHdvcmstdGFibGU6Zm9jdXMgbGkuc2VsZWN0ZWQgLmNlbGwuZG9tLW5vZGUubmFt
ZSAuZGlzY2xvc3VyZS5leHBhbmRlZCB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9EaXNj
bG9zdXJlVHJpYW5nbGVzLnN2ZyNvcGVuLXNlbGVjdGVkKTsKIH0KIAotLm5ldHdvcmstdGFibGUg
PiAudGFibGUuZ3JvdXBlZCAuZGF0YS1jb250YWluZXIgLmNlbGwubmFtZSB7CisubmV0d29yay10
YWJsZS5ncm91cGVkIC5kYXRhLWNvbnRhaW5lciAuY2VsbC5uYW1lIHsKICAgICAtLWl0ZW0tcGFk
ZGluZy1zdGFydDogMTlweDsKICAgICAtLWl0ZW0tZGlzY2xvc3VyZS13aWR0aDogMTFweDsKIH0K
IAotLm5ldHdvcmstdGFibGUgPiAudGFibGUuZ3JvdXBlZCAuZGF0YS1jb250YWluZXIgLmNlbGw6
bm90KC5wYXJlbnQpLm5hbWUgeworLm5ldHdvcmstdGFibGUuZ3JvdXBlZCAuZGF0YS1jb250YWlu
ZXIgLmNlbGw6bm90KC5wYXJlbnQpLm5hbWUgewogICAgIC13ZWJraXQtcGFkZGluZy1zdGFydDog
dmFyKC0taXRlbS1wYWRkaW5nLXN0YXJ0KTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUu
Z3JvdXBlZCAuZGF0YS1jb250YWluZXIgLmNlbGwuY2hpbGQubmFtZSB7CisubmV0d29yay10YWJs
ZS5ncm91cGVkIC5kYXRhLWNvbnRhaW5lciAuY2VsbC5jaGlsZC5uYW1lIHsKICAgICAtd2Via2l0
LXBhZGRpbmctc3RhcnQ6IGNhbGModmFyKC0taXRlbS1wYWRkaW5nLXN0YXJ0KSArIHZhcigtLWl0
ZW0tZGlzY2xvc3VyZS13aWR0aCkpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAuZGF0
YS1jb250YWluZXIgLmNlbGwubmFtZSAucmFuZ2UgeworLm5ldHdvcmstdGFibGUgLmRhdGEtY29u
dGFpbmVyIC5jZWxsLm5hbWUgLnJhbmdlIHsKICAgICBjb2xvcjogaHNsYSgwLCAwJSwgMCUsIDAu
Nyk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5kYXRhLWNvbnRhaW5lciAuY2VsbC5u
YW1lIC5yYW5nZTo6YmVmb3JlIHsKKy5uZXR3b3JrLXRhYmxlIC5kYXRhLWNvbnRhaW5lciAuY2Vs
bC5uYW1lIC5yYW5nZTo6YmVmb3JlIHsKICAgICBjb250ZW50OiAiXDAwQTBcMjAxNFwwMEEwIjsg
LyogJm5ic3A7Jm1kYXNoOyZuYnNwOyAqLzsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGU6
Zm9jdXMgLmRhdGEtY29udGFpbmVyIGxpLnNlbGVjdGVkIC5jZWxsLm5hbWUgLnJhbmdlIHsKKy5u
ZXR3b3JrLXRhYmxlOmZvY3VzIC5kYXRhLWNvbnRhaW5lciBsaS5zZWxlY3RlZCAuY2VsbC5uYW1l
IC5yYW5nZSB7CiAgICAgY29sb3I6IGhzbGEoMCwgMCUsIDEwMCUsIDAuOSk7CiB9CiAKLS5uZXR3
b3JrLXRhYmxlID4gLnRhYmxlIGxpOm5vdCguc2VsZWN0ZWQpIC5jZWxsOm1hdGNoZXMoLmNhY2hl
LXR5cGUsIC5tdWx0aXBsZSkgeworLm5ldHdvcmstdGFibGUgbGk6bm90KC5zZWxlY3RlZCkgLmNl
bGw6bWF0Y2hlcyguY2FjaGUtdHlwZSwgLm11bHRpcGxlKSB7CiAgICAgY29sb3I6IHZhcigtLXRl
eHQtY29sb3ItZ3JheS1tZWRpdW0pOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAuZXJy
b3IgeworLm5ldHdvcmstdGFibGUgLmVycm9yIHsKICAgICBjb2xvcjogdmFyKC0tZXJyb3ItdGV4
dC1jb2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLmRvbWFpbiA+IC5s
b2NrIHsKKy5uZXR3b3JrLXRhYmxlIC5jZWxsLmRvbWFpbiA+IC5sb2NrIHsKICAgICB3aWR0aDog
OHB4OwogICAgIGhlaWdodDogMTBweDsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0xvY2tl
ZC5zdmcpOwogICAgIC13ZWJraXQtbWFyZ2luLWVuZDogNXB4OwogfQogCi0ubmV0d29yay10YWJs
ZSA+IC50YWJsZSBsaS5zZWxlY3RlZCAuY2VsbC5kb21haW4gPiAubG9jayB7CisubmV0d29yay10
YWJsZSBsaS5zZWxlY3RlZCAuY2VsbC5kb21haW4gPiAubG9jayB7CiAgICAgLyogRklYTUU6IDxo
dHRwczovL3dlYmtpdC5vcmcvYi8xODk3NzM+IFdlYiBJbnNwZWN0b3I6IGNyZWF0ZSBzcGVjaWFs
IE5ldHdvcmsgd2F0ZXJmYWxsIGZvciBtZWRpYSBldmVudHMgKi8KICAgICBmaWx0ZXI6IGludmVy
dCgpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyB7
CisubmV0d29yay10YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyB7CiAgICAgLXdlYmtpdC1tYXJn
aW4tc3RhcnQ6IDRweDsKIH0KIAotYm9keVtkaXI9bHRyXSAubmV0d29yay10YWJsZSA+IC50YWJs
ZSAuY2VsbC5uYW1lID4gLnN0YXR1cyB7Citib2R5W2Rpcj1sdHJdIC5uZXR3b3JrLXRhYmxlIC5j
ZWxsLm5hbWUgPiAuc3RhdHVzIHsKICAgICBmbG9hdDogcmlnaHQ7CiB9CiAKLWJvZHlbZGlyPXJ0
bF0gLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgeworYm9keVtk
aXI9cnRsXSAubmV0d29yay10YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyB7CiAgICAgZmxvYXQ6
IGxlZnQ7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVz
IC5pbmRldGVybWluYXRlLXByb2dyZXNzLXNwaW5uZXIgeworLm5ldHdvcmstdGFibGUgLmNlbGwu
bmFtZSA+IC5zdGF0dXMgLmluZGV0ZXJtaW5hdGUtcHJvZ3Jlc3Mtc3Bpbm5lciB7CiAgICAgbWFy
Z2luLXRvcDogM3B4OwogICAgIHdpZHRoOiAxNHB4OwogICAgIGhlaWdodDogMTRweDsKIH0KIAot
Lm5ldHdvcmstdGFibGUuc2hvd2luZy1kZXRhaWwgPiAudGFibGUgLmNlbGw6bm90KC5uYW1lKSB7
Cisuc2hvd2luZy1kZXRhaWwgLm5ldHdvcmstdGFibGUgLmNlbGw6bm90KC5uYW1lKSB7CiAgICAg
ZGlzcGxheTogbm9uZTsKIH0KIAotLm5ldHdvcmstdGFibGUuc2hvd2luZy1kZXRhaWwgPiAudGFi
bGUgLnJlc2l6ZXI6bm90KDpmaXJzdC1vZi10eXBlKSB7Cisuc2hvd2luZy1kZXRhaWwgLm5ldHdv
cmstdGFibGUgLnJlc2l6ZXI6bm90KDpmaXJzdC1vZi10eXBlKSB7CiAgICAgZGlzcGxheTogbm9u
ZTsKIH0KIAotLm5ldHdvcmstdGFibGUuc2hvd2luZy1kZXRhaWwgPiAudGFibGUgLnRpbWVsaW5l
LXJ1bGVyIHsKKy5zaG93aW5nLWRldGFpbCAubmV0d29yay10YWJsZSAudGltZWxpbmUtcnVsZXIg
ewogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5oZWFk
ZXIgLmNlbGwud2F0ZXJmYWxsIHsKKy5uZXR3b3JrLXRhYmxlIC5oZWFkZXIgLmNlbGwud2F0ZXJm
YWxsIHsKICAgICAvKiBIaWRlIHRoZSBsYWJlbCBmb3IgdGhpcyBjb2x1bW4uICovCiAgICAgY29s
b3I6IHRyYW5zcGFyZW50OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFk
ZXIpIC5jZWxsOmZpcnN0LW9mLXR5cGUgeworLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVyKSAu
Y2VsbDpmaXJzdC1vZi10eXBlIHsKICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDcp
OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVy
ZmFsbCB7CisubmV0d29yay10YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCB7CiAg
ICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIGhlaWdodDogMjBweDsKIH0KIAotLm5ldHdvcmst
dGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1j
b250YWluZXIgeworLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwg
LndhdGVyZmFsbC1jb250YWluZXIgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6
IDA7CiAgICAgbGVmdDogMDsKQEAgLTE4NCw3ICsxNzUsNyBAQCBib2R5W2Rpcj1ydGxdIC5uZXR3
b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIHsKICAgICBib3R0b206IDA7
CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJm
YWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmRvbS1ldmVudCB7CisubmV0d29yay10YWJsZSA6
bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5kb20t
ZXZlbnQgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IGNhbGMoNTAlIC0gKHZh
cigtLW5vZGUtd2F0ZXJmYWxsLWRvbS1ldmVudC1zaXplKSAvIDIpKTsKICAgICBtaW4td2lkdGg6
IHZhcigtLW5vZGUtd2F0ZXJmYWxsLWRvbS1ldmVudC1zaXplKTsKQEAgLTE5MywxNyArMTg0LDE3
IEBAIGJvZHlbZGlyPXJ0bF0gLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwubmFtZSA+IC5z
dGF0dXMgewogICAgIGJvcmRlci1yYWRpdXM6IGNhbGModmFyKC0tbm9kZS13YXRlcmZhbGwtZG9t
LWV2ZW50LXNpemUpIC8gMik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhl
YWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmRvbS1hY3Rpdml0
eSB7CisubmV0d29yay10YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJm
YWxsLWNvbnRhaW5lciA+IC5kb20tYWN0aXZpdHkgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
ICAgICB0b3A6IGNhbGMoNTAlIC0gMC41cHgpOwogICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQg
dmFyKC0tc2VsZWN0ZWQtYmFja2dyb3VuZC1jb2xvci1hY3RpdmUpOwogfQogCi0ubmV0d29yay10
YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNv
bnRhaW5lciA+IC5kb20tYWN0aXZpdHkucGxheWluZyB7CisubmV0d29yay10YWJsZSA6bm90KC5o
ZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5kb20tYWN0aXZp
dHkucGxheWluZyB7CiAgICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7CiB9CiAKLS5uZXR3b3Jr
LXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwt
Y29udGFpbmVyID4gLmFyZWEgeworLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53
YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuYXJlYSB7CiAgICAgcG9zaXRpb246IGFi
c29sdXRlOwogICAgIHRvcDogdmFyKC0tYXJlYS1wYWRkaW5nKTsKICAgICBoZWlnaHQ6IGNhbGMo
MTAwJSAtICh2YXIoLS1hcmVhLXBhZGRpbmcpICogMikpOwpAQCAtMjEyLDIyICsyMDMsMjIgQEAg
Ym9keVtkaXI9cnRsXSAubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1
cyB7CiAgICAgLS1hcmVhLXBhZGRpbmc6IGNhbGMoKDUwJSAtICh2YXIoLS1ub2RlLXdhdGVyZmFs
bC1kb20tZXZlbnQtc2l6ZSkgLyAyKSkgLyAyKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFi
bGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAu
YXJlYS5kb20tZnVsbHNjcmVlbiB7CisubmV0d29yay10YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxs
LndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5hcmVhLmRvbS1mdWxsc2NyZWVuIHsK
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDQwJSk7CiB9CiAKLS5uZXR3b3JrLXRh
YmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29u
dGFpbmVyID4gLmFyZWEucG93ZXItZWZmaWNpZW50LXBsYXliYWNrIHsKKy5uZXR3b3JrLXRhYmxl
IDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4gLmFy
ZWEucG93ZXItZWZmaWNpZW50LXBsYXliYWNrIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1uZXR3b3JrLXJlcXVlc3QtY29sb3IpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAu
dGltZWxpbmUtcnVsZXIgeworLm5ldHdvcmstdGFibGUgLnRpbWVsaW5lLXJ1bGVyIHsKICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAwOwogICAgIGJvdHRvbTogMDsKICAgICBvdmVy
ZmxvdzogaGlkZGVuOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAudGltZWxpbmUtcnVs
ZXIgPiAuaGVhZGVyIHsKKy5uZXR3b3JrLXRhYmxlIC50aW1lbGluZS1ydWxlciA+IC5oZWFkZXIg
ewogICAgIHRvcDogY2FsYyh2YXIoLS1uYXZpZ2F0aW9uLWJhci1oZWlnaHQpIC0gdmFyKC0tdGlt
ZWxpbmUtcnVsZXItaGVpZ2h0KSk7CiB9CiAKQEAgLTI2MCwxMTAgKzI1MSw3NiBAQCBib2R5W2Rp
cj1ydGxdIC53YXRlcmZhbGwgLmJsb2NrIHsKICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1
czogdmFyKC0tc3RhcnQtcmFkaXVzKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndh
dGVyZmFsbCAuYmxvY2sgKyAuYmxvY2sgeworLm5ldHdvcmstdGFibGUgLndhdGVyZmFsbCAuYmxv
Y2sgKyAuYmxvY2sgewogICAgIC0tc3RhcnQtcmFkaXVzOiAwOwogICAgIC0tZW5kLXJhZGl1czog
MDsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2s6bWF0Y2hl
cygubW91c2UtdHJhY2tpbmcsIC5maWxsZXIpICsgLmJsb2NrOm5vdCgubW91c2UtdHJhY2tpbmcs
IC5maWxsZXIpLAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2s6bm90
KC5yZXF1ZXN0LCAucmVzcG9uc2UpICsgOm1hdGNoZXMoLnJlcXVlc3QsIC5yZXNwb25zZSkgewor
Lm5ldHdvcmstdGFibGUgLndhdGVyZmFsbCAuYmxvY2s6bWF0Y2hlcygubW91c2UtdHJhY2tpbmcs
IC5maWxsZXIpICsgLmJsb2NrOm5vdCgubW91c2UtdHJhY2tpbmcsIC5maWxsZXIpLAorLm5ldHdv
cmstdGFibGUgLndhdGVyZmFsbCAuYmxvY2s6bm90KC5yZXF1ZXN0LCAucmVzcG9uc2UpICsgOm1h
dGNoZXMoLnJlcXVlc3QsIC5yZXNwb25zZSkgewogICAgIC0tc3RhcnQtcmFkaXVzOiAycHg7CiB9
CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrOmxhc3QtY2hpbGQg
eworLm5ldHdvcmstdGFibGUgLndhdGVyZmFsbCAuYmxvY2s6bGFzdC1jaGlsZCB7CiAgICAgLS1l
bmQtcmFkaXVzOiAycHg7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwg
LmJsb2NrLnJlcXVlc3QsCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9j
ay5yZXNwb25zZSB7Cisud2F0ZXJmYWxsIC5ibG9jay5yZXF1ZXN0LAorLndhdGVyZmFsbCAuYmxv
Y2sucmVzcG9uc2UgewogICAgIHRvcDogM3B4OwogICAgIGhlaWdodDogMTRweDsKIH0KIAotLm5l
dHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2subW91c2UtdHJhY2tpbmcgewor
LndhdGVyZmFsbCAuYmxvY2subW91c2UtdHJhY2tpbmcgewogICAgIHRvcDogMXB4OwogICAgIHot
aW5kZXg6IDI7CiAgICAgaGVpZ2h0OiAxOHB4OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJs
ZSAud2F0ZXJmYWxsIC5ibG9jay5maWxsZXIgeworLndhdGVyZmFsbCAuYmxvY2suZmlsbGVyIHsK
ICAgICB0b3A6IDlweDsKICAgICBoZWlnaHQ6IDJweDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBs
aWdodGdyZXk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2Nr
LnJlZGlyZWN0IHsKKy53YXRlcmZhbGwgLmJsb2NrLnJlZGlyZWN0IHsKICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB2YXIoLS1uZXR3b3JrLXJlZGlyZWN0LWNvbG9yKTsKIH0KIAotLm5ldHdvcmstdGFi
bGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2sucXVldWUgeworLndhdGVyZmFsbCAuYmxvY2su
cXVldWUgewogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldHdvcmstcXVldWUtY29sb3Ip
OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5kbnMgewor
LndhdGVyZmFsbCAuYmxvY2suZG5zIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXR3
b3JrLWRucy1jb2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwg
LmJsb2NrLmNvbm5lY3QgeworLndhdGVyZmFsbCAuYmxvY2suY29ubmVjdCB7CiAgICAgYmFja2dy
b3VuZC1jb2xvcjogdmFyKC0tbmV0d29yay1jb25uZWN0LWNvbG9yKTsKIH0KIAotLm5ldHdvcmst
dGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2suc2VjdXJlIHsKKy53YXRlcmZhbGwgLmJs
b2NrLnNlY3VyZSB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV0d29yay1zZWN1cmUt
Y29sb3IpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5y
ZXF1ZXN0IHsKKy53YXRlcmZhbGwgLmJsb2NrLnJlcXVlc3QgewogICAgIGJhY2tncm91bmQtY29s
b3I6IHZhcigtLW5ldHdvcmstcmVxdWVzdC1jb2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4g
LnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLnJlc3BvbnNlIHsKKy53YXRlcmZhbGwgLmJsb2NrLnJl
c3BvbnNlIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXR3b3JrLXJlc3BvbnNlLWNv
bG9yKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAuc3RhdGlzdGljcyB7Ci0gICAgZGlzcGxheTog
ZmxleDsKLSAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKLSAgICBhbGlnbi1pdGVtczogY2Vu
dGVyOwotICAgIG1pbi1oZWlnaHQ6IHZhcigtLW5ldHdvcmstc3RhdGlzdGljcy1oZWlnaHQpOwot
ICAgIHBhZGRpbmc6IDRweCAwOwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItY29sb3IpOwotfQotCi0ubmV0d29yay10YWJsZSA+IC5zdGF0aXN0aWNzID4gLnN0YXRpc3Rp
YyB7Ci0gICAgZGlzcGxheTogZmxleDsKLSAgICBwYWRkaW5nOiAwIDhweDsKLX0KLQotLm5ldHdv
cmstdGFibGUgPiAuc3RhdGlzdGljcyA+IC5zdGF0aXN0aWNbaGlkZGVuXSB7Ci0gICAgZGlzcGxh
eTogbm9uZTsKLX0KLQotLm5ldHdvcmstdGFibGUgPiAuc3RhdGlzdGljcyA+IC5zdGF0aXN0aWMg
PiAuaWNvbiB7Ci0gICAgd2lkdGg6IDE2cHg7Ci0gICAgaGVpZ2h0OiAxNnB4OwotfQotCi0ubmV0
d29yay10YWJsZSA+IC5zdGF0aXN0aWNzID4gLnN0YXRpc3RpYyA+IC50ZXh0IHsKLSAgICBwYWRk
aW5nLXRvcDogMXB4OwotICAgIC13ZWJraXQtcGFkZGluZy1zdGFydDogNHB4OwotICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IGFsbDsKLX0KLQogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTog
ZGFyaykgewogICAgIC5jb250ZW50LXZpZXcudGFiLm5ldHdvcmsgPiAuY29udGVudC1icm93c2Vy
ID4gLm5hdmlnYXRpb24tYmFyIC5oaWVyYXJjaGljYWwtcGF0aCAuaWNvbiB7CiAgICAgICAgIGZp
bHRlcjogaW52ZXJ0KDg4JSk7CiAgICAgfQogCi0gICAgLm5ldHdvcmstdGFibGUgPiAudGFibGUg
LmNlbGwuZG9tYWluID4gLmxvY2sgeworICAgIC5uZXR3b3JrLXRhYmxlIC5jZWxsLmRvbWFpbiA+
IC5sb2NrIHsKICAgICAgICAgZmlsdGVyOiB2YXIoLS1maWx0ZXItaW52ZXJ0KTsKICAgICB9CiAK
LSAgICAubmV0d29yay10YWJsZSA+IC50YWJsZSAuZGF0YS1jb250YWluZXIgLmNlbGwubmFtZSAu
cmFuZ2UgeworICAgIC5uZXR3b3JrLXRhYmxlIC5kYXRhLWNvbnRhaW5lciAuY2VsbC5uYW1lIC5y
YW5nZSB7CiAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLXNlY29uZGFyeSk7CiAgICAg
fQotCi0gICAgLm5ldHdvcmstdGFibGUgPiAuc3RhdGlzdGljcyA+IC5zdGF0aXN0aWMuZG9tYWlu
LWNvdW50ID4gLmljb24gewotICAgICAgICBmaWx0ZXI6IGludmVydCgpOwotICAgICAgICBvcGFj
aXR5OiAwLjc7Ci0gICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5q
cwppbmRleCA0ZTgzN2ZhMGFjNGQxOWRmNzgzOWM5NmE2MDg4YzRlNjViMTdmOTc0Li5iMmNlMmE5
ZTRkMmI4OTkyZGE2YmIxNzc3MWI5YTYzOGYxODRjZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3Jr
VGFibGVDb250ZW50Vmlldy5qcwpAQCAtNTYsMTAgKzU2LDYgQEAgV0kuTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWaWUKICAgICAgICAgLy8gRklYTUU6IE5ldHdvcmsgVGltZWxpbmUuCiAgICAgICAgIC8vIEZJ
WE1FOiBUaHJvdHRsaW5nLgogCi0gICAgICAgIHRoaXMuX3N0YXRpc3RpY3MgPSB7fTsKLQotICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibmV0d29yay10YWJsZSIpOwotCiAgICAg
ICAgIHRoaXMuX3R5cGVGaWx0ZXJTY29wZUJhckl0ZW1BbGwgPSBuZXcgV0kuU2NvcGVCYXJJdGVt
KCJuZXR3b3JrLXR5cGUtZmlsdGVyLWFsbCIsIFdJLlVJU3RyaW5nKCJBbGwiKSwge2V4Y2x1c2l2
ZTogdHJ1ZX0pOwogICAgICAgICBsZXQgdHlwZUZpbHRlclNjb3BlQmFySXRlbXMgPSBbdGhpcy5f
dHlwZUZpbHRlclNjb3BlQmFySXRlbUFsbF07CiAKQEAgLTE2OCw3ICsxNjQsNiBAQCBXSS5OZXR3
b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFZpZQogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZy
YW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNBZGRlZCwgdGhpcy5faGFuZGxlRnJhbWVXYXNBZGRlZCwg
dGhpcyk7CiAgICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2Uu
RXZlbnQuTG9hZGluZ0RpZEZpbmlzaCwgdGhpcy5fcmVzb3VyY2VMb2FkaW5nRGlkRmluaXNoLCB0
aGlzKTsKICAgICAgICAgV0kuUmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5F
dmVudC5Mb2FkaW5nRGlkRmFpbCwgdGhpcy5fcmVzb3VyY2VMb2FkaW5nRGlkRmFpbCwgdGhpcyk7
Ci0gICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQu
U2l6ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlUmVzb3VyY2VTaXplRGlkQ2hhbmdlLCB0aGlzKTsK
ICAgICAgICAgV0kuUmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5U
cmFuc2ZlclNpemVEaWRDaGFuZ2UsIHRoaXMuX3Jlc291cmNlVHJhbnNmZXJTaXplRGlkQ2hhbmdl
LCB0aGlzKTsKICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5O
ZXR3b3JrTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX21haW5GcmFtZURp
ZENoYW5nZSwgdGhpcyk7CiAKQEAgLTMwOSwxMSArMzA0LDggQEAgV0kuTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWaWUKIAogICAgIHJlc2V0KCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3J1bkZvck1haW5Db2xs
ZWN0aW9uKChjb2xsZWN0aW9uLCB3YXNNYWluKSA9PiB7CisgICAgICAgIHRoaXMuX3J1bkZvck1h
aW5Db2xsZWN0aW9uKChjb2xsZWN0aW9uKSA9PiB7CiAgICAgICAgICAgICB0aGlzLl9yZXNldENv
bGxlY3Rpb24oY29sbGVjdGlvbik7Ci0KLSAgICAgICAgICAgIGlmICh3YXNNYWluKQotICAgICAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKICAgICAgICAgfSk7CiAKICAgICAg
ICAgZm9yIChsZXQgZGV0YWlsVmlldyBvZiB0aGlzLl9kZXRhaWxWaWV3TWFwLnZhbHVlcygpKQpA
QCAtNDUwLDggKzQ0Miw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0
d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgewogICAgICAg
ICBsZXQgZW50cnkgPSB0aGlzLl9hY3RpdmVDb2xsZWN0aW9uLmZpbHRlcmVkRW50cmllc1tyb3dJ
bmRleF07CiAKLSAgICAgICAgY2VsbC5jbGFzc0xpc3QudG9nZ2xlKCJjdXJyZW50LXNlc3Npb24i
LCBlbnRyeS5jdXJyZW50U2Vzc2lvbik7Ci0KICAgICAgICAgaWYgKGVudHJ5LnJlc291cmNlKQog
ICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QudG9nZ2xlKCJlcnJvciIsIGVudHJ5LnJlc291cmNl
LmhhZExvYWRpbmdFcnJvcigpKTsKIApAQCAtNjExLDcgKzYwMSw2IEBAIFdJLk5ldHdvcmtUYWJs
ZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
b250ZW50VmllCiAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcmVkRW50cmllcygpOwogICAgICAg
ICB0aGlzLl91cGRhdGVXYXRlcmZhbGxUaW1lbGluZVJ1bGVyKCk7CiAgICAgICAgIHRoaXMuX3Jl
bG9hZFRhYmxlKCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKICAgICAgICAg
dGhpcy5faGlkZURldGFpbFZpZXcoKTsKIAogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CkBA
IC0xMjQ5LDMxICsxMjM4LDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBO
ZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgfQog
CiAgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl90YWJsZSk7Ci0KLSAgICAgICAgbGV0IHN0
YXRpc3RpY3NDb250YWluZXIgPSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2IikpOwotICAgICAgICBzdGF0aXN0aWNzQ29udGFpbmVyLmNsYXNzTmFt
ZSA9ICJzdGF0aXN0aWNzIjsKLQotICAgICAgICBsZXQgY3JlYXRlU3RhdGlzdGljRWxlbWVudCA9
IChuYW1lLCBpbWFnZSkgPT4gewotICAgICAgICAgICAgbGV0IHN0YXRpc3RpYyA9IHRoaXMuX3N0
YXRpc3RpY3NbbmFtZV07Ci0gICAgICAgICAgICBpZiAoIXN0YXRpc3RpYykKLSAgICAgICAgICAg
ICAgICBzdGF0aXN0aWMgPSB0aGlzLl9zdGF0aXN0aWNzW25hbWVdID0ge307Ci0KLSAgICAgICAg
ICAgIHN0YXRpc3RpYy5jb250YWluZXIgPSBzdGF0aXN0aWNzQ29udGFpbmVyLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKLSAgICAgICAgICAgIHN0YXRpc3RpYy5j
b250YWluZXIuY2xhc3NMaXN0LmFkZCgic3RhdGlzdGljIiwgbmFtZSk7Ci0KLSAgICAgICAgICAg
IHN0YXRpc3RpYy5jb250YWluZXIuYXBwZW5kQ2hpbGQoV0kuSW1hZ2VVdGlsaXRpZXMudXNlU1ZH
U3ltYm9sKGltYWdlLCAiaWNvbiIpKTsKLQotICAgICAgICAgICAgc3RhdGlzdGljLmVsZW1lbnQg
PSBzdGF0aXN0aWMuY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpKTsKLSAgICAgICAgICAgIHN0YXRpc3RpYy5lbGVtZW50LmNsYXNzTmFtZSA9ICJ0ZXh0
IjsKLSAgICAgICAgfTsKLSAgICAgICAgY3JlYXRlU3RhdGlzdGljRWxlbWVudCgiZG9tYWluLWNv
dW50IiwgIkltYWdlcy9PcmlnaW4uc3ZnIik7Ci0gICAgICAgIGNyZWF0ZVN0YXRpc3RpY0VsZW1l
bnQoInJlc291cmNlLWNvdW50IiwgIkltYWdlcy9SZXNvdXJjZXMuc3ZnIik7Ci0gICAgICAgIGNy
ZWF0ZVN0YXRpc3RpY0VsZW1lbnQoInJlc291cmNlLXNpemUiLCAiSW1hZ2VzL1dlaWdodC5zdmci
KTsKLSAgICAgICAgY3JlYXRlU3RhdGlzdGljRWxlbWVudCgidHJhbnNmZXItc2l6ZSIsICJJbWFn
ZXMvTmV0d29yay5zdmciKTsKLSAgICAgICAgY3JlYXRlU3RhdGlzdGljRWxlbWVudCgicmVkaXJl
Y3QtY291bnQiLCAiSW1hZ2VzL1N0ZXBPdmVyLnN2ZyIpOwotICAgICAgICBjcmVhdGVTdGF0aXN0
aWNFbGVtZW50KCJsb2FkLXRpbWUiLCAiSW1hZ2VzL1RpbWUuc3ZnIik7Ci0KLSAgICAgICAgdGhp
cy5fdXBkYXRlU3RhdGlzdGljcygpOwogICAgIH0KIAogICAgIGxheW91dCgpCkBAIC0xMzA4LDgg
KzEyNzIsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJs
ZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogCiAgICAgICAgIGZvciAobGV0IHJl
c291cmNlIG9mIHJlc291cmNlcykKICAgICAgICAgICAgIHRoaXMuX2luc2VydFJlc291cmNlQW5k
UmVsb2FkVGFibGUocmVzb3VyY2UpOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3Mo
KTsKICAgICB9CiAKICAgICBoYW5kbGVDbGVhclNob3J0Y3V0KGV2ZW50KQpAQCAtMTM5Nyw3ICsx
MzU5LDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVD
b250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgICAgICAgICB0aGlzLl9p
bnNlcnRSZXNvdXJjZUFuZFJlbG9hZFRhYmxlKHJlc291cmNlKTsKICAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGNvbGxlY3Rpb24ucGVuZGluZ0luc2VydGlvbnMubGVuZ3RoID09PSBvcmlnaW5h
bExlbmd0aCk7CiAgICAgICAgICAgICBjb2xsZWN0aW9uLnBlbmRpbmdJbnNlcnRpb25zID0gW107
Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMTQxNyw3ICsxMzc4LDYgQEAgV0kuTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWaWUKICAgICAgICAgdGhpcy5fdXBkYXRlU29ydCgpOwogICAgICAgICB0aGlzLl91cGRhdGVG
aWx0ZXJlZEVudHJpZXMoKTsKICAgICAgICAgdGhpcy5fcmVsb2FkVGFibGUoKTsKLSAgICAgICAg
dGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwogICAgIH0KIAogICAgIF9wb3B1bGF0ZVdpdGhJbml0
aWFsUmVzb3VyY2VzSWZOZWVkZWQoY29sbGVjdGlvbikKQEAgLTE1MDUsOCArMTQ2NSw2IEBAIFdJ
Lk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcg
ZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdXBk
YXRlRXhpc3RpbmdFbnRyeShjb2xsZWN0aW9uLmZpbHRlcmVkRW50cmllc1tyb3dJbmRleF0sIGVu
dHJ5KTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7CiAgICAgfQogCiAgICAg
X2hpZGVQb3BvdmVyKCkKQEAgLTE2MzcsMzMgKzE1OTUsMjMgQEAgV0kuTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWaWUKIAogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewotICAgICAg
ICBsZXQgZnJhbWUgPSBldmVudC50YXJnZXQ7Ci0KLSAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZy
YW1lKCkgJiYgIXRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0KQotICAgICAgICAgICAgdGhp
cy5fc3RhcnRVcGRhdGluZ0xvYWRUaW1lU3RhdGlzdGljKCk7Ci0KICAgICAgICAgdGhpcy5fcnVu
Rm9yTWFpbkNvbGxlY3Rpb24oKGNvbGxlY3Rpb24sIHdhc01haW4pID0+IHsKLSAgICAgICAgICAg
IGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFdJLnNldHRp
bmdzLmNsZWFyTmV0d29ya09uTmF2aWdhdGUudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAg
dGhpcy5fcmVzZXRDb2xsZWN0aW9uKGNvbGxlY3Rpb24pOwotCi0gICAgICAgICAgICAgICAgICAg
IGlmICh3YXNNYWluICYmICF0aGlzLl9uZWVkc0luaXRpYWxQb3B1bGF0ZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX2hpZGVEZXRhaWxWaWV3KCk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgY29sbGVjdGlvbi5l
bnRyaWVzKQotICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuY3VycmVudFNlc3Npb24gPSBm
YWxzZTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgZnJhbWUgPSBldmVudC50
YXJnZXQ7CisgICAgICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBXSS5zZXR0aW5n
cy5jbGVhck5ldHdvcmtPbk5hdmlnYXRlLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgdGhpcy5f
cmVzZXRDb2xsZWN0aW9uKGNvbGxlY3Rpb24pOworCisgICAgICAgICAgICAgICAgaWYgKHdhc01h
aW4gJiYgIXRoaXMuX25lZWRzSW5pdGlhbFBvcHVsYXRlKQorICAgICAgICAgICAgICAgICAgICB0
aGlzLl9oaWRlRGV0YWlsVmlldygpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
dGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQpIHsKICAgICAgICAgICAgICAgICB0aGlzLl90
cmFuc2l0aW9uaW5nUGFnZVRhcmdldCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHRoaXMuX25l
ZWRzSW5pdGlhbFBvcHVsYXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0
ZVdpdGhJbml0aWFsUmVzb3VyY2VzSWZOZWVkZWQoY29sbGVjdGlvbik7Ci0gICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLl9pbnNlcnRSZXNvdXJjZUFuZFJlbG9hZFRhYmxl
KGZyYW1lLm1haW5SZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAod2FzTWFpbikKLSAgICAgICAgICAgICAgICB0aGlzLl91
cGRhdGVTdGF0aXN0aWNzKCk7CisgICAgICAgICAgICB0aGlzLl9pbnNlcnRSZXNvdXJjZUFuZFJl
bG9hZFRhYmxlKGZyYW1lLm1haW5SZXNvdXJjZSk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAt
MTcwNiw0MSArMTY1NCw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0
d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIH0pOwog
ICAgIH0KIAotICAgIF9oYW5kbGVSZXNvdXJjZVNpemVEaWRDaGFuZ2UoZXZlbnQpCi0gICAgewot
ICAgICAgICBpZiAoIXRoaXMuX3RhYmxlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IHRoaXMuX3J1bkZvck1haW5Db2xsZWN0aW9uKChjb2xsZWN0aW9uLCB3YXNNYWluKSA9PiB7Ci0g
ICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSBldmVudC50YXJnZXQ7Ci0KLSAgICAgICAgICAgIC8v
IEluIHRoZSB1bmxpa2VseSBldmVudCB0aGF0IHRoaXMgaXMgdGhlIHNvcnQgY29sdW1uLCB3ZSBt
YXkgbmVlZCB0byByZXNvcnQuCi0gICAgICAgICAgICBpZiAodGhpcy5fdGFibGUuc29ydENvbHVt
bklkZW50aWZpZXIgPT09ICJyZXNvdXJjZVNpemUiKSB7Ci0gICAgICAgICAgICAgICAgY29sbGVj
dGlvbi5wZW5kaW5nVXBkYXRlcy5wdXNoKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICB0aGlz
Lm5lZWRzTGF5b3V0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBsZXQgaW5kZXggPSBjb2xsZWN0aW9uLmVudHJpZXMuZmluZEluZGV4KCh4
KSA9PiB4LnJlc291cmNlID09PSByZXNvdXJjZSk7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPT09
IC0xKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbGV0IGVudHJ5ID0g
Y29sbGVjdGlvbi5lbnRyaWVzW2luZGV4XTsKLSAgICAgICAgICAgIGVudHJ5LnJlc291cmNlU2l6
ZSA9IHJlc291cmNlLnNpemU7Ci0KLSAgICAgICAgICAgIGlmICghd2FzTWFpbikKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGxldCByb3dJbmRleCA9IHRoaXMuX3Jvd0lu
ZGV4Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVzb3VyY2UpOwotICAgICAgICAgICAgaWYgKHJvd0lu
ZGV4ID09PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHRoaXMu
X3RhYmxlLnJlbG9hZENlbGwocm93SW5kZXgsICJyZXNvdXJjZVNpemUiKTsKLQotICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwotICAgICAgICB9KTsKLSAgICB9Ci0KICAgICBf
cmVzb3VyY2VUcmFuc2ZlclNpemVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX3RhYmxlKQpAQCAtMTc3MSwxOCArMTY4NCwxMyBAQCBXSS5OZXR3b3JrVGFibGVDb250
ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgdGhpcy5fdGFibGUu
cmVsb2FkQ2VsbChyb3dJbmRleCwgInRyYW5zZmVyU2l6ZSIpOwotCi0gICAgICAgICAgICB0aGlz
Ll91cGRhdGVTdGF0aXN0aWNzKCk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIF9oYW5kbGVS
ZXNvdXJjZUFkZGVkKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5fcnVuRm9yTWFpbkNvbGxl
Y3Rpb24oKGNvbGxlY3Rpb24sIHdhc01haW4pID0+IHsKKyAgICAgICAgdGhpcy5fcnVuRm9yTWFp
bkNvbGxlY3Rpb24oKGNvbGxlY3Rpb24pID0+IHsKICAgICAgICAgICAgIHRoaXMuX2luc2VydFJl
c291cmNlQW5kUmVsb2FkVGFibGUoZXZlbnQuZGF0YS5yZXNvdXJjZSk7Ci0KLSAgICAgICAgICAg
IGlmICh3YXNNYWluKQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsK
ICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xNzkxLDE1ICsxNjk5LDEyIEBAIFdJLk5ldHdvcmtU
YWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VmllCiAgICAgICAgIGlmICh0aGlzLl9uZWVkc0luaXRpYWxQb3B1bGF0ZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9ydW5Gb3JNYWluQ29sbGVjdGlvbigo
Y29sbGVjdGlvbiwgd2FzTWFpbikgPT4geworICAgICAgICB0aGlzLl9ydW5Gb3JNYWluQ29sbGVj
dGlvbigoY29sbGVjdGlvbikgPT4gewogICAgICAgICAgICAgbGV0IGZyYW1lID0gZXZlbnQuZGF0
YS5jaGlsZEZyYW1lOwogICAgICAgICAgICAgbGV0IG1haW5SZXNvdXJjZSA9IGZyYW1lLnByb3Zp
c2lvbmFsTWFpblJlc291cmNlIHx8IGZyYW1lLm1haW5SZXNvdXJjZTsKICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KG1haW5SZXNvdXJjZSwgIkZyYW1lIHNob3VsZCBoYXZlIGEgbWFpbiByZXNv
dXJjZS4iKTsKICAgICAgICAgICAgIHRoaXMuX2luc2VydFJlc291cmNlQW5kUmVsb2FkVGFibGUo
bWFpblJlc291cmNlKTsKIAotICAgICAgICAgICAgaWYgKHdhc01haW4pCi0gICAgICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwotCiAgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dCghZnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uLnNpemUsICJOZXcgZnJhbWUgc2hvdWxkIGJlIGVt
cHR5LiIpOwogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWZyYW1lLmNoaWxkRnJhbWVDb2xs
ZWN0aW9uLnNpemUsICJOZXcgZnJhbWUgc2hvdWxkIGJlIGVtcHR5LiIpOwogICAgICAgICB9KTsK
QEAgLTE5MDMsNyArMTgwOCw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3Mg
TmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgICAg
ICByZW1vdGVBZGRyZXNzOiByZXNvdXJjZS5yZW1vdGVBZGRyZXNzLAogICAgICAgICAgICAgY29u
bmVjdGlvbklkZW50aWZpZXI6IHJlc291cmNlLmNvbm5lY3Rpb25JZGVudGlmaWVyLAogICAgICAg
ICAgICAgc3RhcnRUaW1lOiByZXNvdXJjZS5maXJzdFRpbWVzdGFtcCwKLSAgICAgICAgICAgIGN1
cnJlbnRTZXNzaW9uOiB0cnVlLAogICAgICAgICB9OwogICAgIH0KIApAQCAtMjA3MCwxMzEgKzE5
NzQsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICB0aGlzLl91cGRhdGVFbXB0
eUZpbHRlclJlc3VsdHNNZXNzYWdlKCk7CiAgICAgfQogCi0gICAgX3VwZGF0ZVN0YXRpc3RpY3Mo
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmRpZEluaXRpYWxMYXlvdXQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgbGV0IGVudHJpZXMgPSB0aGlzLl9hY3RpdmVDb2xsZWN0aW9u
LmVudHJpZXMuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkuY3VycmVudFNlc3Npb24pOwotCi0gICAg
ICAgIGxldCBkb21haW5zID0gbmV3IFNldDsKLSAgICAgICAgbGV0IHJlc291cmNlU2l6ZSA9IDA7
Ci0gICAgICAgIGxldCB0cmFuc2ZlclNpemUgPSAwOwotICAgICAgICBsZXQgcmVkaXJlY3RDb3Vu
dCA9IDA7Ci0gICAgICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHsKLSAgICAgICAgICAg
IGRvbWFpbnMuYWRkKGVudHJ5LmRvbWFpbik7Ci0gICAgICAgICAgICBpZiAoIWlzTmFOKGVudHJ5
LnJlc291cmNlU2l6ZSkpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VTaXplICs9IGVudHJ5LnJl
c291cmNlU2l6ZTsKLSAgICAgICAgICAgIGlmICghaXNOYU4oZW50cnkudHJhbnNmZXJTaXplKSkK
LSAgICAgICAgICAgICAgICB0cmFuc2ZlclNpemUgKz0gZW50cnkudHJhbnNmZXJTaXplOwotICAg
ICAgICAgICAgaWYgKGVudHJ5LnJlc291cmNlKQotICAgICAgICAgICAgICAgIHJlZGlyZWN0Q291
bnQgKz0gZW50cnkucmVzb3VyY2UucmVkaXJlY3RzLmxlbmd0aDsKLSAgICAgICAgfQotCi0gICAg
ICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpYygiZG9tYWluLWNvdW50IiwgZG9tYWlucy5zaXplID09
PSAxID8gV0kuVUlTdHJpbmcoIiVkIGRvbWFpbiIpIDogV0kuVUlTdHJpbmcoIiVkIGRvbWFpbnMi
KSwgZG9tYWlucy5zaXplKTsKLQotICAgICAgICBsZXQgcmVzb3VyY2VDb3VudCA9IGVudHJpZXMu
bGVuZ3RoOwotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWMoInJlc291cmNlLWNvdW50Iiwg
cmVzb3VyY2VDb3VudCA9PT0gMSA/IFdJLlVJU3RyaW5nKCIlZCByZXNvdXJjZSIpIDogV0kuVUlT
dHJpbmcoIiVkIHJlc291cmNlcyIpLCByZXNvdXJjZUNvdW50KTsKLQotICAgICAgICBjb25zdCBo
aWdoZXJSZXNvbHV0aW9uID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpYygi
cmVzb3VyY2Utc2l6ZSIsIFdJLlVJU3RyaW5nKCIlcyB0b3RhbCIpLCBOdW1iZXIuYnl0ZXNUb1N0
cmluZyhyZXNvdXJjZVNpemUsIGhpZ2hlclJlc29sdXRpb24pKTsKLSAgICAgICAgdGhpcy5fdXBk
YXRlU3RhdGlzdGljKCJ0cmFuc2Zlci1zaXplIiwgV0kuVUlTdHJpbmcoIiVzIHRyYW5zZmVycmVk
IiksIE51bWJlci5ieXRlc1RvU3RyaW5nKHRyYW5zZmVyU2l6ZSwgaGlnaGVyUmVzb2x1dGlvbikp
OwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpYygicmVkaXJlY3QtY291bnQiLCByZWRp
cmVjdENvdW50ID09PSAxID8gV0kuVUlTdHJpbmcoIiVkIHJlZGlyZWN0IikgOiBXSS5VSVN0cmlu
ZygiJWQgcmVkaXJlY3RzIiksIHJlZGlyZWN0Q291bnQpOwotCi0gICAgICAgIGxldCBsb2FkVGlt
ZVN0YXRpc3RpYyA9IHRoaXMuX3N0YXRpc3RpY3NbImxvYWQtdGltZSJdOwotICAgICAgICBpZiAo
bG9hZFRpbWVTdGF0aXN0aWMuZm9ybWF0ICYmIHRoaXMuX2lzU2hvd2luZ01haW5Db2xsZWN0aW9u
KCkpIHsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpYygibG9hZC10aW1lIik7Ci0g
ICAgICAgICAgICBsb2FkVGltZVN0YXRpc3RpYy5jb250YWluZXIuaGlkZGVuID0gZmFsc2U7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbG9hZFRpbWVTdGF0aXN0aWMuY29udGFpbmVyLmhp
ZGRlbiA9IHRydWU7Ci0gICAgfQotCi0gICAgX3VwZGF0ZVN0YXRpc3RpYyhuYW1lLCBmb3JtYXQs
IHZhbHVlKQotICAgIHsKLSAgICAgICAgbGV0IHN0YXRpc3RpYyA9IHRoaXMuX3N0YXRpc3RpY3Nb
bmFtZV07Ci0KLSAgICAgICAgaWYgKGZvcm1hdCkKLSAgICAgICAgICAgIHN0YXRpc3RpYy5mb3Jt
YXQgPSBmb3JtYXQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZvcm1hdCA9IHN0YXRpc3Rp
Yy5mb3JtYXQ7Ci0KLSAgICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKQotICAgICAgICAg
ICAgc3RhdGlzdGljLnZhbHVlID0gdmFsdWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZh
bHVlID0gc3RhdGlzdGljLnZhbHVlOwotCi0gICAgICAgIGlmIChzdGF0aXN0aWMuY29udGFpbmVy
KQotICAgICAgICAgICAgc3RhdGlzdGljLmNvbnRhaW5lci50aXRsZSA9IGZvcm1hdC5mb3JtYXQo
dmFsdWUpOwotCi0gICAgICAgIGlmIChzdGF0aXN0aWMuZWxlbWVudCkKLSAgICAgICAgICAgIHN0
YXRpc3RpYy5lbGVtZW50LnRleHRDb250ZW50ID0gdmFsdWU7Ci0gICAgfQotCi0gICAgX3N0YXJ0
VXBkYXRpbmdMb2FkVGltZVN0YXRpc3RpYygpCi0gICAgewotICAgICAgICB0aGlzLl9zdG9wVXBk
YXRpbmdMb2FkVGltZVN0YXRpc3RpYygpOwotCi0gICAgICAgIGxldCBsb2FkVGltZVN0YXRpc3Rp
YyA9IHRoaXMuX3N0YXRpc3RpY3NbImxvYWQtdGltZSJdOwotICAgICAgICBpZiAoIWxvYWRUaW1l
U3RhdGlzdGljKQotICAgICAgICAgICAgbG9hZFRpbWVTdGF0aXN0aWMgPSB0aGlzLl9zdGF0aXN0
aWNzWyJsb2FkLXRpbWUiXSA9IHt9OwotCi0gICAgICAgIGxvYWRUaW1lU3RhdGlzdGljLnN0YXJ0
ID0gRGF0ZS5ub3coKTsKLSAgICAgICAgbG9hZFRpbWVTdGF0aXN0aWMuZGVsYXkgPSA1MDsKLSAg
ICAgICAgbG9hZFRpbWVTdGF0aXN0aWMudGltZXIgPSBzZXRJbnRlcnZhbCh0aGlzLl91cGRhdGVM
b2FkVGltZVN0YXRpc3RpYy5iaW5kKHRoaXMpLCBsb2FkVGltZVN0YXRpc3RpYy5kZWxheSk7Ci0g
ICAgfQotCi0gICAgX3N0b3BVcGRhdGluZ0xvYWRUaW1lU3RhdGlzdGljKCkKLSAgICB7Ci0gICAg
ICAgIGxldCBsb2FkVGltZVN0YXRpc3RpYyA9IHRoaXMuX3N0YXRpc3RpY3NbImxvYWQtdGltZSJd
OwotICAgICAgICBpZiAoIWxvYWRUaW1lU3RhdGlzdGljKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGlmIChsb2FkVGltZVN0YXRpc3RpYy50aW1lcikgewotICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChsb2FkVGltZVN0YXRpc3RpYy50aW1lcik7Ci0gICAgICAgICAgICBsb2FkVGlt
ZVN0YXRpc3RpYy50aW1lciA9IHVuZGVmaW5lZDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIF91
cGRhdGVMb2FkVGltZVN0YXRpc3RpYygpCi0gICAgewotICAgICAgICBsZXQgbG9hZFRpbWVTdGF0
aXN0aWMgPSB0aGlzLl9zdGF0aXN0aWNzWyJsb2FkLXRpbWUiXTsKLSAgICAgICAgY29uc29sZS5h
c3NlcnQobG9hZFRpbWVTdGF0aXN0aWMpOwotCi0gICAgICAgIGxldCBkdXJhdGlvbiA9IERhdGUu
bm93KCkgLSBsb2FkVGltZVN0YXRpc3RpYy5zdGFydDsKLQotICAgICAgICBsZXQgZGVsYXkgPSBs
b2FkVGltZVN0YXRpc3RpYy5kZWxheTsKLSAgICAgICAgaWYgKGR1cmF0aW9uID49IDEwMDApIC8v
IDEgc2Vjb25kCi0gICAgICAgICAgICBkZWxheSA9IDEwMDsKLSAgICAgICAgZWxzZSBpZiAoZHVy
YXRpb24gPj0gNjAwMDApIC8vIDYwIHNlY29uZHMKLSAgICAgICAgICAgIGRlbGF5ID0gMTAwMDsK
LSAgICAgICAgZWxzZSBpZiAoZHVyYXRpb24gPj0gMzYwMDAwMCkgLy8gMSBtaW51dGUKLSAgICAg
ICAgICAgIGRlbGF5ID0gMTAwMDA7Ci0KLSAgICAgICAgaWYgKGRlbGF5ICE9PSBsb2FkVGltZVN0
YXRpc3RpYy5kZWxheSkgewotICAgICAgICAgICAgbG9hZFRpbWVTdGF0aXN0aWMuZGVsYXkgPSBk
ZWxheTsKLQotICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChsb2FkVGltZVN0YXRpc3RpYy50aW1l
cik7Ci0gICAgICAgICAgICBsb2FkVGltZVN0YXRpc3RpYy50aW1lciA9IHNldEludGVydmFsKHRo
aXMuX3VwZGF0ZUxvYWRUaW1lU3RhdGlzdGljLmJpbmQodGhpcyksIGxvYWRUaW1lU3RhdGlzdGlj
LmRlbGF5KTsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3Jr
TWFuYWdlci5tYWluRnJhbWU7Ci0gICAgICAgIGxldCBtYWluRnJhbWVTdGFydFRpbWUgPSBtYWlu
RnJhbWUubWFpblJlc291cmNlLmZpcnN0VGltZXN0YW1wOwotICAgICAgICBsZXQgbWFpbkZyYW1l
TG9hZEV2ZW50VGltZSA9IG1haW5GcmFtZS5sb2FkRXZlbnRUaW1lc3RhbXA7Ci0KLSAgICAgICAg
aWYgKGxvYWRUaW1lU3RhdGlzdGljLmNvbnRhaW5lcikKLSAgICAgICAgICAgIGxvYWRUaW1lU3Rh
dGlzdGljLmNvbnRhaW5lci5oaWRkZW4gPSAhdGhpcy5faXNTaG93aW5nTWFpbkNvbGxlY3Rpb24o
KTsKLQotICAgICAgICBpZiAoaXNOYU4obWFpbkZyYW1lU3RhcnRUaW1lKSB8fCBpc05hTihtYWlu
RnJhbWVMb2FkRXZlbnRUaW1lKSkgewotICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGlj
KCJsb2FkLXRpbWUiLCBXSS5VSVN0cmluZygiTG9hZGluZyBmb3IgJXMiKSwgTnVtYmVyLnNlY29u
ZHNUb1N0cmluZyhkdXJhdGlvbiAvIDEwMDApKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpYygibG9hZC10aW1lIiwgV0kuVUlT
dHJpbmcoIkxvYWRlZCBpbiAlcyIpLCBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKG1haW5GcmFtZUxv
YWRFdmVudFRpbWUgLSBtYWluRnJhbWVTdGFydFRpbWUpKTsKLQotICAgICAgICB0aGlzLl9zdG9w
VXBkYXRpbmdMb2FkVGltZVN0YXRpc3RpYygpOwotICAgIH0KLQogICAgIF9yZWxvYWRUYWJsZSgp
CiAgICAgewogICAgICAgICB0aGlzLl90YWJsZS5yZWxvYWREYXRhKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmll
dy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXdUYWJD
b250ZW50Vmlldy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIyOTliNWFmZjVkYjY5M2Q3NGExNWM3NmNmZTJh
NDRlNWNjZTA0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmNzcwpAQCAtMCwwICsxLDk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLm5ldy10YWIudGFiLmNvbnRlbnQtdmlldyB7CisgICAgZGlzcGxheTogZmxl
eDsKKyAgICBmbGV4LWZsb3c6IHJvdyB3cmFwOworICAgIGp1c3RpZnktY29udGVudDogY2VudGVy
OworICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOwor
CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCA5NiUpOworCisgICAgcGFkZGluZzog
MTBweDsKKworICAgIG92ZXJmbG93LXk6IGF1dG87Cit9CisKKy5uZXctdGFiLnRhYi5jb250ZW50
LXZpZXcgPiAudGFiLWl0ZW0geworICAgIGRpc3BsYXk6IGZsZXg7CisKKyAgICBtaW4td2lkdGg6
IDExMHB4OworICAgIG1pbi1oZWlnaHQ6IDExMHB4OworCisgICAgbWFyZ2luOiAxMHB4OworCisg
ICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworfQor
CisubmV3LXRhYi50YWIuY29udGVudC12aWV3ID4gLnRhYi1pdGVtLmRpc2FibGVkIHsKKyAgICBv
cGFjaXR5OiAwLjU7CisgICAgZmlsdGVyOiBicmlnaHRuZXNzKDkwJSk7Cit9CisKKy5uZXctdGFi
LnRhYi5jb250ZW50LXZpZXcgPiAudGFiLWl0ZW0gPiAuYm94IHsKKyAgICB3aWR0aDogOTRweDsK
KyAgICBoZWlnaHQ6IDk0cHg7CisKKyAgICBwYWRkaW5nOiAxNXB4OworICAgIGJvcmRlci1yYWRp
dXM6IDVweDsKKworICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgODIlKTsKKyAgICBi
b3gtc2hhZG93OiBoc2xhKDAsIDAlLCAwJSwgMC4zMykgMCAxcHggNnB4OworCisgICAgZGlzcGxh
eTogYmxvY2s7Cit9CisKKy5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcgPiAudGFiLWl0ZW06bm90
KC5kaXNhYmxlZCk6aG92ZXIgPiAuYm94IHsKKyAgICBmaWx0ZXI6IGJyaWdodG5lc3MoOTAlKTsK
K30KKworLm5ldy10YWIudGFiLmNvbnRlbnQtdmlldyA+IC50YWItaXRlbTpub3QoLmRpc2FibGVk
KTphY3RpdmUgPiAuYm94IHsKKyAgICBmaWx0ZXI6IGJyaWdodG5lc3MoNzUlKTsKK30KKworLm5l
dy10YWIudGFiLmNvbnRlbnQtdmlldyA+IC50YWItaXRlbSA+IC5ib3ggPiBpbWcgeworICAgIHdp
ZHRoOiA2NHB4OworICAgIGhlaWdodDogNjRweDsKKworICAgIG9wYWNpdHk6IDAuNTU7IC8qIEFz
c3VtZXMgYmxhY2sgZ2x5cGhzLiAqLworCisgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7Cit9
CisKKy5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcgPiAudGFiLWl0ZW0gPiBsYWJlbCB7CisgICAg
ZGlzcGxheTogYmxvY2s7CisgICAgbWFyZ2luLXRvcDogOHB4OworfQorCitAbWVkaWEgKHByZWZl
cnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CisgICAgLm5ldy10YWIudGFiLmNvbnRlbnQtdmlldyB7
CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3ItY29udGVu
dCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmlldy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWIy
MzVmZTBmMzRmNzAwNmE3MzRiNjZkZTg5OTFmZDllZTRhMmYzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZp
ZXcuanMKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5OZXdUYWJDb250ZW50Vmll
dyA9IGNsYXNzIE5ld1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpZXcKK3sK
KyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgbGV0IHRhYkJhckl0
ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhXSS5OZXdUYWJDb250ZW50Vmll
dy50YWJJbmZvKCkpOworICAgICAgICB0YWJCYXJJdGVtLmlzRGVmYXVsdFRhYiA9IHRydWU7CisK
KyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAibmV3LXRhYiIsICJuZXctdGFiIiwgdGFiQmFy
SXRlbSk7CisKKyAgICAgICAgdGhpcy5fdGFiRWxlbWVudHNCeVRhYkNsYXNzID0gbmV3IE1hcDsK
KworICAgICAgICBsZXQgYWxsVGFiQ2xhc3NlcyA9IEFycmF5LmZyb20oV0kua25vd25UYWJDbGFz
c2VzKCkpOworICAgICAgICB0aGlzLl9zaG93blRhYkNsYXNzZXMgPSBhbGxUYWJDbGFzc2VzLmZp
bHRlcigodGFiQ2xhc3MpID0+IHRhYkNsYXNzLmlzVGFiQWxsb3dlZCgpICYmICF0YWJDbGFzcy50
YWJJbmZvKCkuaXNFcGhlbWVyYWwpOworICAgICAgICB0aGlzLl9zaG93blRhYkNsYXNzZXMuc29y
dCgoYSwgYikgPT4gYS50YWJJbmZvKCkudGl0bGUuZXh0ZW5kZWRMb2NhbGVDb21wYXJlKGIudGFi
SW5mbygpLnRpdGxlKSk7CisgICAgfQorCisgICAgc3RhdGljIHRhYkluZm8oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL05ld1RhYi5zdmciLAor
ICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJOZXcgVGFiIiksCisgICAgICAgICAgICBp
c0VwaGVtZXJhbDogdHJ1ZSwKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2hvdWxk
U2F2ZVRhYigpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8g
UHVibGljCisKKyAgICBnZXQgdHlwZSgpCisgICAgeworICAgICAgICByZXR1cm4gV0kuTmV3VGFi
Q29udGVudFZpZXcuVHlwZTsKKyAgICB9CisKKyAgICBzaG93bigpCisgICAgeworICAgICAgICBX
SS50YWJCYXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYWJCYXIuRXZlbnQuVGFiQmFySXRlbUFkZGVk
LCB0aGlzLl91cGRhdGVUYWJJdGVtcywgdGhpcyk7CisgICAgICAgIFdJLnRhYkJhci5hZGRFdmVu
dExpc3RlbmVyKFdJLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtUmVtb3ZlZCwgdGhpcy5fdXBkYXRl
VGFiSXRlbXMsIHRoaXMpOworCisgICAgICAgIHRoaXMuX3VwZGF0ZVRhYkl0ZW1zKCk7CisgICAg
fQorCisgICAgaGlkZGVuKCkKKyAgICB7CisgICAgICAgIFdJLnRhYkJhci5yZW1vdmVFdmVudExp
c3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgIH0KKworICAgIGdldCBzdXBwb3J0c1NwbGl0
Q29udGVudEJyb3dzZXIoKQorICAgIHsKKyAgICAgICAgLy8gU2hvd2luZyB0aGUgc3BsaXQgY29u
c29sZSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIHNvbWUgbmV3IHRhYnMgd2lsbCBjYXVzZSBpdCB0
bworICAgICAgICAvLyBkaXNhcHBlYXIgYW5kIG5vdCByZWFwcGVhciwgYnV0IG90aGVycyB3b24n
dC4gSnVzdCBwcmV2ZW50IGl0IGZyb20gZXZlciBzaG93aW5nLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgbGF5b3V0KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RhYkVsZW1l
bnRzQnlUYWJDbGFzcy5jbGVhcigpOworICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKKworICAgICAgICBmb3IgKGxldCB0YWJDbGFzcyBvZiB0aGlzLl9zaG93blRhYkNsYXNz
ZXMpIHsKKyAgICAgICAgICAgIGxldCB0YWJJdGVtRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICAgICAgdGFiSXRlbUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
dGFiLWl0ZW0iKTsKKyAgICAgICAgICAgIHRhYkl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fY3JlYXRlTmV3VGFiV2l0aFR5cGUuYmluZCh0aGlzLCB0YWJDbGFzcy5U
eXBlKSk7CisgICAgICAgICAgICB0YWJJdGVtRWxlbWVudFtXSS5OZXdUYWJDb250ZW50Vmlldy5U
eXBlU3ltYm9sXSA9IHRhYkNsYXNzLlR5cGU7CisKKyAgICAgICAgICAgIGxldCBib3hFbGVtZW50
ID0gdGFiSXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
IikpOworICAgICAgICAgICAgYm94RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJib3giKTsKKworICAg
ICAgICAgICAgbGV0IGluZm8gPSB0YWJDbGFzcy50YWJJbmZvKCk7CisgICAgICAgICAgICBsZXQg
aW1hZ2VFbGVtZW50ID0gYm94RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbWciKSk7CisgICAgICAgICAgICBpbWFnZUVsZW1lbnQuc3JjID0gaW5mby5pbWFnZTsK
KworICAgICAgICAgICAgbGV0IGxhYmVsRWxlbWVudCA9IHRhYkl0ZW1FbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIikpOworICAgICAgICAgICAgbGFiZWxF
bGVtZW50LnRleHRDb250ZW50ID0gaW5mby50aXRsZTsKKworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRhYkl0ZW1FbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX3RhYkVs
ZW1lbnRzQnlUYWJDbGFzcy5zZXQodGFiQ2xhc3MsIHRhYkl0ZW1FbGVtZW50KTsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuX3VwZGF0ZVRhYkl0ZW1zKCk7CisgICAgfQorCisgICAgLy8gUHJp
dmF0ZQorCisgICAgX2NyZWF0ZU5ld1RhYldpdGhUeXBlKHRhYlR5cGUsIGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKCFXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZCh0YWJUeXBlKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zdCBjYW5DcmVhdGVBZGRpdGlvbmFsVGFicyA9
IHRoaXMuX2FsbG93YWJsZVRhYlR5cGVzKCkubGVuZ3RoID4gMTsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHJlZmVyZW5jZWRWaWV3OiB0aGlzLAorICAgICAgICAgICAg
c2hvdWxkUmVwbGFjZVRhYjogIWNhbkNyZWF0ZUFkZGl0aW9uYWxUYWJzIHx8ICFXSS5tb2RpZmll
cktleXMubWV0YUtleSwKKyAgICAgICAgICAgIHNob3VsZFNob3dOZXdUYWI6ICFXSS5tb2RpZmll
cktleXMubWV0YUtleSwKKyAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIu
VGFiTmF2aWdhdGlvbkluaXRpYXRvci5CdXR0b25DbGljaywKKyAgICAgICAgfTsKKyAgICAgICAg
V0kuY3JlYXRlTmV3VGFiV2l0aFR5cGUodGFiVHlwZSwgb3B0aW9ucyk7CisgICAgfQorCisgICAg
X2FsbG93YWJsZVRhYlR5cGVzKCkKKyAgICB7CisgICAgICAgIGxldCB0YWJUeXBlcyA9IHRoaXMu
X3Nob3duVGFiQ2xhc3Nlcy5tYXAoKHRhYkNsYXNzKSA9PiB0YWJDbGFzcy5UeXBlKTsKKyAgICAg
ICAgcmV0dXJuIHRhYlR5cGVzLmZpbHRlcigodHlwZSkgPT4gV0kuaXNOZXdUYWJXaXRoVHlwZUFs
bG93ZWQodHlwZSkpOworICAgIH0KKworICAgIF91cGRhdGVUYWJJdGVtcygpCisgICAgeworICAg
ICAgICBmb3IgKGxldCBbdGFiQ2xhc3MsIHRhYkl0ZW1FbGVtZW50XSBvZiB0aGlzLl90YWJFbGVt
ZW50c0J5VGFiQ2xhc3MuZW50cmllcygpKSB7CisgICAgICAgICAgICBsZXQgYWxsb3dlZCA9IFdJ
LmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKHRhYkNsYXNzLlR5cGUpOworICAgICAgICAgICAgdGFi
SXRlbUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXSS5OZXdUYWJDb250ZW50Vmlldy5EaXNhYmxl
ZFN0eWxlQ2xhc3NOYW1lLCAhYWxsb3dlZCk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitXSS5O
ZXdUYWJDb250ZW50Vmlldy5UeXBlID0gIm5ldy10YWIiOworV0kuTmV3VGFiQ29udGVudFZpZXcu
VHlwZVN5bWJvbCA9IFN5bWJvbCgidHlwZSIpOworCitXSS5OZXdUYWJDb250ZW50Vmlldy5UYWJJ
dGVtU3R5bGVDbGFzc05hbWUgPSAidGFiLWl0ZW0iOworV0kuTmV3VGFiQ29udGVudFZpZXcuRGlz
YWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJkaXNhYmxlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUGlubmVkVGFiQmFySXRlbS5q
cwppbmRleCBkNTgyMDNiNjEyOGJjMWQ0NzAyY2E2ZWNjMWE4ZGVhNmI4ODg5YmM0Li45YjBiY2M3
MTZkNGYzMmVkOWRlN2FjM2NmNmE1ZjY1Zjk2NTdmZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRhYkJhckl0
ZW0uanMKQEAgLTI1LDI3ICsyNSwzNyBAQAogCiBXSS5QaW5uZWRUYWJCYXJJdGVtID0gY2xhc3Mg
UGlubmVkVGFiQmFySXRlbSBleHRlbmRzIFdJLlRhYkJhckl0ZW0KIHsKLSAgICBjb25zdHJ1Y3Rv
cihyZXByZXNlbnRlZE9iamVjdCwgaW1hZ2UsIHRpdGxlKQorICAgIGNvbnN0cnVjdG9yKGltYWdl
LCB0aXRsZSkKICAgICB7Ci0gICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0LCBpbWFnZSwg
dGl0bGUpOworICAgICAgICBzdXBlcihpbWFnZSwgdGl0bGUpOwogCiAgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJwaW5uZWQiKTsKLSAgICB9CiAKLSAgICAvLyBTdGF0aWMKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5f
aGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpKTsKKyAgICB9CiAKLSAgICBzdGF0aWMg
ZnJvbVRhYkNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KQorICAgIHN0YXRpYyBmcm9tVGFiSW5m
byh7aW1hZ2UsIHRpdGxlfSkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhYkNvbnRl
bnRWaWV3IGluc3RhbmNlb2YgV0kuVGFiQ29udGVudFZpZXcpOwotCi0gICAgICAgIGxldCB7aW1h
Z2UsIHRpdGxlfSA9IHRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnRhYkluZm8oKTsKLSAgICAg
ICAgcmV0dXJuIG5ldyBXSS5QaW5uZWRUYWJCYXJJdGVtKHRhYkNvbnRlbnRWaWV3LCBpbWFnZSwg
dGl0bGUpOworICAgICAgICByZXR1cm4gbmV3IFdJLlBpbm5lZFRhYkJhckl0ZW0oaW1hZ2UsIHRp
dGxlKTsKICAgICB9CiAKLSAgICAvLyBQcm90ZWN0ZWQKLQogICAgIHRpdGxlRGlkQ2hhbmdlKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuZWxlbWVudC50aXRsZSA9IHRoaXMudGl0bGU7CiAgICAgfQor
CisgICAgLy8gUHJpdmF0ZQorCisgICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpCisg
ICAgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworCisgICAgICAgIGxldCBjb250
ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CisKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuUGlubmVkVGFiQmFySXRlbS5FdmVu
dC5Db250ZXh0TWVudSwge2NvbnRleHRNZW51fSk7CisgICAgfQorfTsKKworV0kuUGlubmVkVGFi
QmFySXRlbS5FdmVudCA9IHsKKyAgICBDb250ZXh0TWVudTogInBpbm5lZC10YWItYmFyLWl0ZW0t
Y29udGV4dC1tZW51IiwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKaW5kZXggMDZiYmM5NTE5NjM1OTA3
OWI4ODU2ZWNiZjRkNmIzOTNkNjUzMWIxOS4uOWQyMzRiMjJkMGIyYzBhZTZmNjFmM2E4ODk2ZGIw
ZTFlYmQ0NDIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwpAQCAtNTEsOCArNTEsNyBAQCBXSS5RdWlj
a0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIC8v
IHdvdWxkIGJlIGZvciBDb2RlTWlycm9yJ3MgZXZlbnQgaGFuZGxlciB0byBwYXNzIGlmIGl0IGRv
ZXNuJ3QgZG8gYW55dGhpbmcuCiAgICAgICAgIHRoaXMucHJvbXB0LmVzY2FwZUtleUhhbmRsZXJX
aGVuRW1wdHkgPSBmdW5jdGlvbigpIHsgV0kudG9nZ2xlU3BsaXRDb25zb2xlKCk7IH07CiAKLSAg
ICAgICAgY29uc3QgbmF2aWdhdGlvbmJhckVsZW1lbnQgPSBudWxsOwotICAgICAgICB0aGlzLl9u
YXZpZ2F0aW9uQmFyID0gbmV3IFdJLk5hdmlnYXRpb25CYXIobmF2aWdhdGlvbmJhckVsZW1lbnQs
IHtzaXplc1RvRml0OiB0cnVlfSk7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcg
V0kuU2l6ZXNUb0ZpdE5hdmlnYXRpb25CYXI7CiAgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlz
Ll9uYXZpZ2F0aW9uQmFyKTsKIAogICAgICAgICB0aGlzLl9hY3RpdmVFeGVjdXRpb25Db250ZXh0
TmF2aWdhdGlvbkl0ZW1EaXZpZGVyID0gbmV3IFdJLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRl
cmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBo
LmNzcwppbmRleCBjYzVjN2JkMjNhMDczYjRjNTgzYzMxYWI4MmMyZTZlY2NhYzA4OTFjLi5lZTFm
YWNhNDZkNjg0YmVjODUwYWI4MTlhY2UzY2Y0NzQwZjVlZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5l
T3ZlcnZpZXdHcmFwaC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGguY3NzCkBAIC01OCw2
ICs1OCw2IEBACiAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiB9CiAKLWJvZHk6bWF0Y2hlcygu
d2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRpbWVsaW5lLW92ZXJ2
aWV3LWdyYXBoLnJlbmRlcmluZy1mcmFtZSA+IC5mcmFtZS1tYXJrZXIgeworYm9keS53aW5kb3ct
aW5hY3RpdmUgLnRpbWVsaW5lLW92ZXJ2aWV3LWdyYXBoLnJlbmRlcmluZy1mcmFtZSA+IC5mcmFt
ZS1tYXJrZXIgewogICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdo
dCwgaHNsKDAsIDAlLCA2MCUpLCBoc2woMCwgMCUsIDYwJSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoVGFiQ29udGVudFZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hU
YWJDb250ZW50Vmlldy5qcwppbmRleCAwMDYxNjQwNjBlMGU1ZmUyYTZiNDRhYzA4NjBlN2Q1ZThm
YTAxNDAyLi4zNGIzMmM3OWEzZWVkM2NhMDZlZDQyMmRmM2Y1ZGQ2ZmI1NTk4MjhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hUYWJD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TZWFyY2hUYWJDb250ZW50Vmlldy5qcwpAQCAtMjUsNDUgKzI1LDM4IEBACiAKIFdJLlNl
YXJjaFRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2VhcmNoVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAg
IGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBsZXQgZGV0YWlsc1NpZGVi
YXJQYW5lbENvbnN0cnVjdG9ycyA9IFsKLSAgICAgICAgICAgIFdJLlJlc291cmNlRGV0YWlsc1Np
ZGViYXJQYW5lbCwKLSAgICAgICAgICAgIFdJLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAg
ICAgICAgICAgIFdJLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgV0ku
Q29tcHV0ZWRTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBXSS5SdWxlc1N0
eWxlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgXTsKKyAgICAgICAgbGV0IHRhYkJhckl0
ZW07CisgICAgICAgIGlmIChXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXIu
dmFsdWUpCisgICAgICAgICAgICB0YWJCYXJJdGVtID0gV0kuUGlubmVkVGFiQmFySXRlbS5mcm9t
VGFiSW5mbyhXSS5TZWFyY2hUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYklu
Zm8oV0kuU2VhcmNoVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKworICAgICAgICBsZXQgZGV0
YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyA9IFtXSS5SZXNvdXJjZURldGFpbHNTaWRlYmFy
UGFuZWwsIFdJLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCwKKyAgICAgICAgICAgIFdJLkRPTU5v
ZGVEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bCwgV0kuUnVsZXNTdHlsZURldGFpbHNTaWRlYmFyUGFuZWxdOworCiAgICAgICAgIGlmIChJbnNw
ZWN0b3JCYWNrZW5kLmhhc0RvbWFpbigiTGF5ZXJUcmVlIikpCiAgICAgICAgICAgICBkZXRhaWxz
U2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLnB1c2goV0kuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQ
YW5lbCk7CiAKLSAgICAgICAgc3VwZXIoU2VhcmNoVGFiQ29udGVudFZpZXcudGFiSW5mbygpLCB7
Ci0gICAgICAgICAgICBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3I6IFdJLlNlYXJj
aFNpZGViYXJQYW5lbCwKLSAgICAgICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3Rv
cnMsCi0gICAgICAgIH0pOworICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJzZWFyY2giLCAi
c2VhcmNoIiwgdGFiQmFySXRlbSwgV0kuU2VhcmNoU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJh
clBhbmVsQ29uc3RydWN0b3JzKTsKKworICAgICAgICAvLyBFbnN1cmVzIHRoYXQgdGhlIFNlYXJj
aCB0YWIgaXMgZGlzcGxheWFibGUgZnJvbSBhIHBpbm5lZCB0YWIgYmFyIGl0ZW0uCisgICAgICAg
IHRhYkJhckl0ZW0ucmVwcmVzZW50ZWRPYmplY3QgPSB0aGlzOwogCiAgICAgICAgIHRoaXMuX2Zv
cmNlUGVyZm9ybVNlYXJjaCA9IGZhbHNlOwogICAgIH0KIAogICAgIHN0YXRpYyB0YWJJbmZvKCkK
ICAgICB7CisgICAgICAgIGxldCBpbWFnZSA9IFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJs
ZU5ld1RhYkJhci52YWx1ZSA/ICJJbWFnZXMvU2VhcmNoLnN2ZyIgOiAiSW1hZ2VzL1NlYXJjaFJl
c3VsdHMuc3ZnIjsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50aWZpZXI6IFNl
YXJjaFRhYkNvbnRlbnRWaWV3LlR5cGUsCi0gICAgICAgICAgICBpbWFnZTogIkltYWdlcy9TZWFy
Y2guc3ZnIiwKKyAgICAgICAgICAgIGltYWdlLAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3Ry
aW5nKCJTZWFyY2giKSwKKyAgICAgICAgICAgIGlzRXBoZW1lcmFsOiB0cnVlLAogICAgICAgICB9
OwogICAgIH0KIAotICAgIHN0YXRpYyBzaG91bGRQaW5UYWIoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIHNob3VsZFNhdmVUYWIoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHR5
cGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKaW5kZXggOTRiNDdjOGYz
OGUzZjMyYjUxZTdkOTUwYTU2OTlkYTY3OTQ2ZTJmMi4uYTdkMzk0MGIxNzQ5Mjg1Y2U3MDlkOWM1
ZTRlMTcwN2MzOGE2M2E1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3Lmpz
CkBAIC0yNiw5ICsyNiwxNCBAQAogCiBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
U2V0dGluZ3NUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaWV3CiB7Ci0gICAg
Y29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCiAgICAgewotICAgICAg
ICBzdXBlcihTZXR0aW5nc1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisgICAgICAgIGxldCB0
YWJCYXJJdGVtID0gV0kuUGlubmVkVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhXSS5TZXR0aW5nc1Rh
YkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAi
c2V0dGluZ3MiLCAic2V0dGluZ3MiLCB0YWJCYXJJdGVtKTsKKworICAgICAgICAvLyBFbnN1cmVz
IHRoYXQgdGhlIFNldHRpbmdzIHRhYiBpcyBkaXNwbGF5YWJsZSBmcm9tIGEgcGlubmVkIHRhYiBi
YXIgaXRlbS4KKyAgICAgICAgdGFiQmFySXRlbS5yZXByZXNlbnRlZE9iamVjdCA9IHRoaXM7CiAK
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTZXR0aW5nc1ZpZXcgPSBudWxsOwogICAgICAgICB0aGlz
Ll9zZXR0aW5nc1ZpZXdzID0gW107CkBAIC0zNywxNyArNDIsMTIgQEAgV0kuU2V0dGluZ3NUYWJD
b250ZW50VmlldyA9IGNsYXNzIFNldHRpbmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJD
b250ZW50VmkKICAgICBzdGF0aWMgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gewot
ICAgICAgICAgICAgaWRlbnRpZmllcjogU2V0dGluZ3NUYWJDb250ZW50Vmlldy5UeXBlLAogICAg
ICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvR2Vhci5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJ
LlVJU3RyaW5nKCJTZXR0aW5ncyIpLAorICAgICAgICAgICAgaXNFcGhlbWVyYWw6IHRydWUsCiAg
ICAgICAgIH07CiAgICAgfQogCi0gICAgc3RhdGljIHNob3VsZFBpblRhYigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KICAgICBzdGF0aWMgc2hvdWxkU2F2ZVRhYigpCiAg
ICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNjAsNiArMzYwLDkgQEAgV0kuU2V0dGlu
Z3NUYWJDb250ZW50VmlldyA9IGNsYXNzIFNldHRpbmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5UYWJDb250ZW50VmkKICAgICAgICAgICAgIGV4cGVyaW1lbnRhbFNldHRpbmdzVmlldy5hZGRT
ZXBhcmF0b3IoKTsKICAgICAgICAgfQogCisgICAgICAgIGV4cGVyaW1lbnRhbFNldHRpbmdzVmll
dy5hZGRTZXR0aW5nKFdJLlVJU3RyaW5nKCJVc2VyIEludGVyZmFjZToiKSwgV0kuc2V0dGluZ3Mu
ZXhwZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFyLCBXSS5VSVN0cmluZygiRW5hYmxlIE5ldyBUYWIg
QmFyIikpOworICAgICAgICBleHBlcmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkU2VwYXJhdG9yKCk7
CisKICAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuaGFzRG9tYWluKCJDU1MiKSkgewogICAg
ICAgICAgICAgbGV0IHN0eWxlc0dyb3VwID0gZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZEdy
b3VwKFdJLlVJU3RyaW5nKCJTdHlsZXM6IikpOwogICAgICAgICAgICAgc3R5bGVzR3JvdXAuYWRk
U2V0dGluZyhXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVTdHlsZXNKdW1wVG9FZmZlY3Rp
dmUsIFdJLlVJU3RyaW5nKCJTaG93IEp1bXAgdG8gRWZmZWN0aXZlIFByb3BlcnR5IEJ1dHRvbiIp
KTsKQEAgLTM4Myw2ICszODYsNyBAQCBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
U2V0dGluZ3NUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaQogICAgICAgICB9
CiAKICAgICAgICAgbGlzdGVuRm9yQ2hhbmdlKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJs
ZVByZXZpZXdGZWF0dXJlcyk7CisgICAgICAgIGxpc3RlbkZvckNoYW5nZShXSS5zZXR0aW5ncy5l
eHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXIpOwogCiAgICAgICAgIGlmIChJbnNwZWN0b3JCYWNr
ZW5kLmhhc0RvbWFpbigiQ1NTIikpCiAgICAgICAgICAgICBsaXN0ZW5Gb3JDaGFuZ2UoV0kuc2V0
dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlU3R5bGVzSnVtcFRvRWZmZWN0aXZlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpzCmlu
ZGV4IDY0ZGM4OTUzMDU4YmY1MTM4NGM1ZTRhY2VmNWMwYmY1MGFhMzRlOTYuLjEwYTEzMTlmNTQ0
MDRjYmI2NzZmZTIwZWQ4MzI5ZjNlMzU2NThlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcwpAQCAtNDIsOCArNDIsNyBA
QCBXSS5TaWRlYmFyID0gY2xhc3MgU2lkZWJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYg
KGhhc05hdmlnYXRpb25CYXIpIHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJoYXMtbmF2aWdhdGlvbi1iYXIiKTsKIAotICAgICAgICAgICAgY29uc3QgbmF2aWdhdGlv
bkJhckVsZW1lbnQgPSBudWxsOwotICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5l
dyBXSS5OYXZpZ2F0aW9uQmFyKG5hdmlnYXRpb25CYXJFbGVtZW50LCB7cm9sZTogInRhYmxpc3Qi
fSk7CisgICAgICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdJLk5hdmlnYXRpb25C
YXIobnVsbCwgbnVsbCwgInRhYmxpc3QiKTsKICAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25C
YXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OYXZpZ2F0aW9uQmFyLkV2ZW50Lk5hdmlnYXRpb25JdGVt
U2VsZWN0ZWQsIHRoaXMuX25hdmlnYXRpb25JdGVtU2VsZWN0ZWQsIHRoaXMpOwogICAgICAgICAg
ICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX25hdmlnYXRpb25CYXIpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaXplc1Rv
Rml0TmF2aWdhdGlvbkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NpemVzVG9GaXROYXZpZ2F0aW9uQmFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YzlkOWU0NGM5
NjQ3MWRkMjQ4NDI4NmQ0ZTMzOGNjMmU3ZjdmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaXplc1RvRml0TmF2aWdhdGlvbkJh
ci5qcwpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuU2l6ZXNUb0ZpdE5hdmlnYXRp
b25CYXIgPSBjbGFzcyBTaXplc1RvRml0TmF2aWdhdGlvbkJhciBleHRlbmRzIFdJLk5hdmlnYXRp
b25CYXIKK3sKKyAgICBnZXQgc2l6ZXNUb0ZpdCgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU291cmNlc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDEz
YjFkNTVhODkyOGRkODJlZWIxNjFhMTIzOTk0ZGQ5MGJjN2I1MGQuLmM1YWQ3N2I0YjM2ZWY0MTQ2
ZDBlYzZkN2VkZTMwY2I2NTlkMjRhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzVGFiQ29udGVudFZp
ZXcuanMKQEAgLTI3LDI1ICsyNywxNiBAQCBXSS5Tb3VyY2VzVGFiQ29udGVudFZpZXcgPSBjbGFz
cyBTb3VyY2VzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlcgogewogICAg
IGNvbnN0cnVjdG9yKCkKICAgICB7Ci0gICAgICAgIHN1cGVyKFNvdXJjZXNUYWJDb250ZW50Vmll
dy50YWJJbmZvKCksIHsKLSAgICAgICAgICAgIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1
Y3RvcjogV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBkZXRh
aWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzOiBbCi0gICAgICAgICAgICAgICAgV0kuUmVzb3Vy
Y2VEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgICAgIFdJLlNjb3BlQ2hhaW5EZXRh
aWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgICAgIFdJLlByb2JlRGV0YWlsc1NpZGViYXJQ
YW5lbCwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0pOworICAgICAgICBsZXQgdGFiQmFySXRl
bSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLlNvdXJjZXNUYWJDb250ZW50
Vmlldy50YWJJbmZvKCkpOworICAgICAgICBjb25zdCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3Ry
dWN0b3JzID0gW1dJLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwgV0kuU2NvcGVDaGFpbkRl
dGFpbHNTaWRlYmFyUGFuZWwsIFdJLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbF07CisgICAgICAg
IHN1cGVyKCJzb3VyY2VzIiwgWyJzb3VyY2VzIl0sIHRhYkJhckl0ZW0sIFdJLlNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzKTsKIAog
ICAgICAgICB0aGlzLl9zaG93U2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwgPSBmYWxzZTsK
LQotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuUGF1c2VkLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlclBhdXNlZCwgdGhpcyk7
Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5SZXN1bWVkLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlclJlc3VtZWQsIHRoaXMp
OwogICAgIH0KIAogICAgIHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICBpZGVudGlmaWVyOiBTb3VyY2VzVGFiQ29udGVudFZpZXcuVHlwZSwKICAg
ICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL1NvdXJjZXMuc3ZnIiwKICAgICAgICAgICAgIHRpdGxl
OiBXSS5VSVN0cmluZygiU291cmNlcyIpLAogICAgICAgICB9OwpAQCAtMTA3LDE4ICs5OCw2IEBA
IFdJLlNvdXJjZXNUYWJDb250ZW50VmlldyA9IGNsYXNzIFNvdXJjZXNUYWJDb250ZW50VmlldyBl
eHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyCiAgICAgICAgIGlmICh0cmVlRWxlbWVudCkKICAgICAg
ICAgICAgIHRyZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdCgpOwogICAgIH0KLQotICAgIC8vIFBy
aXZhdGUKLQotICAgIF9oYW5kbGVEZWJ1Z2dlclBhdXNlZChldmVudCkKLSAgICB7Ci0gICAgICAg
IHRoaXMudGFiQmFySXRlbS5pbWFnZSA9ICJJbWFnZXMvU291cmNlc1BhdXNlZC5zdmciOwotICAg
IH0KLQotICAgIF9oYW5kbGVEZWJ1Z2dlclJlc3VtZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0
aGlzLnRhYkJhckl0ZW0uaW1hZ2UgPSAiSW1hZ2VzL1NvdXJjZXMuc3ZnIjsKLSAgICB9CiB9Owog
CiBXSS5Tb3VyY2VzVGFiQ29udGVudFZpZXcuVHlwZSA9ICJzb3VyY2VzIjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0
b3JhZ2VUYWJDb250ZW50Vmlldy5qcwppbmRleCA5NTQwYWI4Y2IxNmQ4MDA4NzFlNTc2NTJjOTRm
ZTkwNGFjZTBhNjBiLi4zZDFmMTU1ZjY0NTA3NWZmMGU2MWExNTZjNmQ5NTU2YTE3MDI0ODRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9y
YWdlVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNSwxNSArMjUsMTIgQEAK
IAogV0kuU3RvcmFnZVRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU3RvcmFnZVRhYkNvbnRlbnRWaWV3
IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldwogewotICAgIGNvbnN0cnVj
dG9yKCkKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc3VwZXIo
U3RvcmFnZVRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSwgewotICAgICAgICAgICAgbmF2aWdhdGlv
blNpZGViYXJQYW5lbENvbnN0cnVjdG9yOiBXSS5TdG9yYWdlU2lkZWJhclBhbmVsLAotICAgICAg
ICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9yczogWwotICAgICAgICAgICAgICAg
IFdJLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgICAg
IFdJLkluZGV4ZWREYXRhYmFzZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBdLAot
ICAgICAgICB9KTsKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRl
bS5mcm9tVGFiSW5mbyhXSS5TdG9yYWdlVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKyAgICAg
ICAgbGV0IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBbV0kuQXBwbGljYXRpb25D
YWNoZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLkluZGV4ZWREYXRhYmFzZURldGFpbHNTaWRlYmFy
UGFuZWxdOworCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgInN0b3JhZ2UiLCAic3RvcmFn
ZSIsIHRhYkJhckl0ZW0sIFdJLlN0b3JhZ2VTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvcnMpOwogCiAgICAgICAgIFdJLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmVu
YWJsZSgpOwogICAgICAgICBXSS5kYXRhYmFzZU1hbmFnZXIuZW5hYmxlKCk7CkBAIC00NCw3ICs0
MSw2IEBAIFdJLlN0b3JhZ2VUYWJDb250ZW50VmlldyA9IGNsYXNzIFN0b3JhZ2VUYWJDb250ZW50
VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyCiAgICAgc3RhdGljIHRhYkluZm8oKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50aWZpZXI6IFN0b3JhZ2VUYWJD
b250ZW50Vmlldy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvU3RvcmFnZS5zdmci
LAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJTdG9yYWdlIiksCiAgICAgICAgIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
YWJCYXIuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFi
QmFyLmNzcwppbmRleCBlZjUxY2FhZGNkZThhMmExMWE3Zjg2NjFlNzJiM2UxOGI3NTE2NzU4Li4z
ZDdjZDdhYjJmOWMzYWU4ODExMjNhZTBlNjA1ZTJiYzJmYmU0MWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuY3NzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3MKQEAgLTI1
LDE2ICsyNSwyNSBAQAogCiAudGFiLWJhciB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IHRvcDogdmFyKC0tdW5kb2NrZWQtdGl0bGUtYXJlYS1oZWlnaHQpOworICAgIHRvcDogdmFyKC0t
dG9vbGJhci1oZWlnaHQpOwogICAgIGxlZnQ6IDA7CiAgICAgcmlnaHQ6IDA7CiAgICAgaGVpZ2h0
OiB2YXIoLS10YWItYmFyLWhlaWdodCk7CiAKICAgICBkaXNwbGF5OiBmbGV4OworICAgIGp1c3Rp
ZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKKyAgICBmbGV4LXdyYXA6IHdyYXA7CisKKyAgICBi
b3JkZXItYm90dG9tOiB2YXIoLS10YWItaXRlbS1tZWRpdW0tYm9yZGVyLXN0eWxlKTsKIAogICAg
IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwg
NzglKSwgaHNsKDAsIDAlLCA3MiUpKTsKICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMjAwJTsK
IAorICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKworICAg
IG91dGxpbmU6IG5vbmU7CisKICAgICAtLXRhYi1pdGVtLWRhcmstYm9yZGVyLWNvbG9yOiBoc2wo
MCwgMCUsIDU5JSk7CiAgICAgLS10YWItaXRlbS1tZWRpdW0tYm9yZGVyLWNvbG9yOiBoc2woMCwg
MCUsIDY1JSk7CiAgICAgLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3I6IGhzbCgwLCAwJSwg
ODUlKTsKQEAgLTQ0LDg1ICs1MywzMCBAQAogICAgIC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLXN0
eWxlOiAxcHggc29saWQgdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKTsKIH0KIAot
Ym9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAu
dGFiLWJhciB7Citib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciB7CisgICAgYm9yZGVyLWJv
dHRvbS1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKTsKKwogICAgIGJh
Y2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2
YXIoLS10YWItaXRlbS1leHRyYS1saWdodC1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7CiB9CiAK
LS50YWItYmFyID4gLmJvcmRlciB7CisudGFiLWJhciA+IC50b3AtYm9yZGVyIHsKICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOwogICAgIGxlZnQ6IDA7CiAgICAgcmlnaHQ6IDA7
Ci0gICAgei1pbmRleDogMTA7CiAgICAgaGVpZ2h0OiAxcHg7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogdmFyKC0tdGFiLWl0ZW0tbWVkaXVtLWJvcmRlci1jb2xvcik7Ci19Ci0KLS50YWItYmFyID4g
LmJvcmRlci50b3AgewotICAgIHRvcDogMDsKLX0KLQotLnRhYi1iYXIgPiAuYm9yZGVyLmJvdHRv
bSB7Ci0gICAgYm90dG9tOiAwOwotfQotCi1ib2R5LmRvY2tlZC5ib3R0b20gLnRhYi1iYXIgPiAu
Ym9yZGVyLnRvcCB7Ci0gICAgZmlsdGVyOiBicmlnaHRuZXNzKDgwJSk7Ci19Ci0KLWJvZHk6bWF0
Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIg
PiAuYm9yZGVyIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YWItaXRlbS1saWdodC1i
b3JkZXItY29sb3IpOwotfQotCi1AbWVkaWEgKC13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRp
bzogMSkgewotICAgIGJvZHkuZG9ja2VkOm1hdGNoZXMoLnJpZ2h0LCAubGVmdCk6bm90KC53aW5k
b3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC5ib3JkZXIudG9wIHsKLSAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgfQotfQotCi1AbWVkaWEgKC13ZWJraXQt
bWluLWRldmljZS1waXhlbC1yYXRpbzogMikgewotICAgIGJvZHkuZG9ja2VkOm1hdGNoZXMoLnJp
Z2h0LCAubGVmdCk6bm90KC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC5ib3Jk
ZXIudG9wIHsKLSAgICAgICAgaGVpZ2h0OiAwLjVweCAhaW1wb3J0YW50OwotICAgIH0KLX0KLQot
LnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iYXIgewotICAgIGhlaWdodDogdmFyKC0tdGFiLWJhci1o
ZWlnaHQpOwotfQotCi0udGFiLWJhciA+IC5uYXZpZ2F0aW9uLWJhciA+IC5pdGVtLmdyb3VwID4g
Lml0ZW0gewotICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7Ci0gICAgbWFyZ2luOiAwIDRweCAh
aW1wb3J0YW50OwotICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKLX0KLQotLnRhYi1iYXIgPiAu
bmF2aWdhdGlvbi1iYXIgPiAuaXRlbS5ncm91cCA+IC5pdGVtOm50aC1jaGlsZCgxIG9mIDpub3Qo
LmhpZGRlbikpIHsKLSAgICAtd2Via2l0LW1hcmdpbi1zdGFydDogMTJweCAhaW1wb3J0YW50Owot
fQotCi0udGFiLWJhciA+IC5uYXZpZ2F0aW9uLWJhciA+IC5pdGVtLmdyb3VwID4gLml0ZW06bnRo
LWxhc3QtY2hpbGQoMSBvZiA6bm90KC5oaWRkZW4pKSB7Ci0gICAgLXdlYmtpdC1tYXJnaW4tZW5k
OiAxMnB4ICFpbXBvcnRhbnQ7Ci19CiAKLS50YWItYmFyID4gLm5hdmlnYXRpb24tYmFyIC5pdGVt
LmRpdmlkZXIgewotICAgIG1hcmdpbi10b3A6IDFweDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2
YXIoLS10YWItaXRlbS1tZWRpdW0tYm9yZGVyLWNvbG9yKTsKLX0KIAotYm9keTptYXRjaGVzKC53
aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC5uYXZp
Z2F0aW9uLWJhciA+IC5pdGVtLmRpdmlkZXIgewotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigt
LXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcik7CisgICAgei1pbmRleDogMDsKIH0KIAotLnRh
Yi1iYXIgPiAudGFicyB7Ci0gICAgZGlzcGxheTogZmxleDsKLSAgICBqdXN0aWZ5LWNvbnRlbnQ6
IHNwYWNlLWJldHdlZW47Ci0gICAgZmxleC13cmFwOiB3cmFwOwotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBoZWlnaHQ6IDEwMCU7Citib2R5LndpbmRvdy1p
bmFjdGl2ZSAudGFiLWJhciA+IC50b3AtYm9yZGVyIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2
YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3IpOwogfQogCi0udGFiLWJhciA+IC50YWJz
ID4gLml0ZW0geworLnRhYi1iYXIgPiAuaXRlbSB7CiAgICAgZGlzcGxheTogZmxleDsKICAgICBm
bGV4LWdyb3c6IDE7CiAKQEAgLTEzNCwxMiArODgsMTQgQEAgYm9keTptYXRjaGVzKC53aW5kb3ct
aW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC5uYXZpZ2F0aW9u
LWIKIAogICAgIHBhZGRpbmc6IDAgNnB4OwogCi0gICAgbWluLXdpZHRoOiBjYWxjKHZhcigtLXRh
Yi1iYXItaGVpZ2h0KSAtIDFweCk7IC8qIHN1YnRyYWN0IHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVy
ICovCisgICAgbWluLXdpZHRoOiAyNHB4OwogICAgIG92ZXJmbG93OiBoaWRkZW47CiAKICAgICBi
YWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDc4
JSksIGhzbCgwLCAwJSwgNzIlKSk7CiAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDIwMCU7CiAK
KyAgICBib3JkZXItdG9wOiB2YXIoLS10YWItaXRlbS1tZWRpdW0tYm9yZGVyLXN0eWxlKTsKKwog
ICAgIGhlaWdodDogMTAwJTsKICAgICBsaW5lLWhlaWdodDogMTVweDsKICAgICBvdXRsaW5lOiBu
b25lOwpAQCAtMTUwLDUzICsxMDYsNTQgQEAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUs
IC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC5uYXZpZ2F0aW9uLWIKICAgICAv
KiB0cmFuc2l0aW9uLWRlbGF5OiA1MG1zOyAqLwogfQogCi0udGFiLWJhciA+IC50YWJzLmNhbGN1
bGF0ZS13aWR0aCA+IC5pdGVtIHsKKy50YWItYmFyLmNhbGN1bGF0ZS13aWR0aCA+IC5pdGVtIHsK
ICAgICBmbGV4OiBpbml0aWFsOwogfQogCi1ib2R5W2Rpcj1sdHJdIC50YWItYmFyID4gLnRhYnMg
PiAuaXRlbTpub3QoOmZpcnN0LWNoaWxkKSwKLWJvZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiAudGFi
czpub3QoLmhpZGUtYm9yZGVyLXN0YXJ0KSA+IC5pdGVtOmZpcnN0LWNoaWxkLAotYm9keVtkaXI9
bHRyXSAudGFiLWJhciA+IC50YWJzLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkLAotYm9k
eVtkaXI9cnRsXSAudGFiLWJhciA+IC50YWJzOm5vdCguaGlkZS1ib3JkZXItZW5kKSA+IC5pdGVt
Omxhc3QtY2hpbGQgeworYm9keVtkaXI9bHRyXSAudGFiLWJhciA+IDpudGgtY2hpbGQobiArIDIg
b2YgLml0ZW0pLAorYm9keVtkaXI9bHRyXSAudGFiLWJhci5kcmFnZ2luZy10YWIgPiAuaXRlbS5z
ZWxlY3RlZCB7CiAgICAgYm9yZGVyLWxlZnQ6IHZhcigtLXRhYi1pdGVtLW1lZGl1bS1ib3JkZXIt
c3R5bGUpOwogfQogCi1ib2R5W2Rpcj1sdHJdIC50YWItYmFyID4gLnRhYnM6bm90KC5oaWRlLWJv
cmRlci1lbmQpID4gLml0ZW06bGFzdC1jaGlsZCwKLWJvZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiAu
dGFicyA+IC5pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpLAotYm9keVtkaXI9cnRsXSAudGFiLWJhciA+
IC50YWJzOm5vdCguaGlkZS1ib3JkZXItc3RhcnQpID4gLml0ZW06Zmlyc3QtY2hpbGQsCi1ib2R5
W2Rpcj1ydGxdIC50YWItYmFyID4gLnRhYnMuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQg
eworYm9keVtkaXI9cnRsXSAudGFiLWJhciA+IDpudGgtY2hpbGQobiArIDIgb2YgLml0ZW0pLAor
Ym9keVtkaXI9cnRsXSAudGFiLWJhci5kcmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCB7CiAg
ICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS10YWItaXRlbS1tZWRpdW0tYm9yZGVyLXN0eWxlKTsKIH0K
IAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtLnBpbm5lZCB7CisudGFiLWJhciA+IC5pdGVtLnBp
bm5lZCB7CisgICAgd2lkdGg6IDI0cHg7CiAgICAgZmxleDogbm9uZTsKICAgICBqdXN0aWZ5LWNv
bnRlbnQ6IGNlbnRlcjsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtOm5vdCguZGlzYWJs
ZWQpLnNlbGVjdGVkIHsKKy50YWItYmFyID4gLml0ZW0ucGlubmVkLnRhYi1waWNrZXIgeworICAg
IHdpZHRoOiAxOHB4OworICAgIG1pbi13aWR0aDogaW5pdGlhbDsKK30KKworLnRhYi1iYXIgPiAu
aXRlbTpub3QoLmRpc2FibGVkKS5zZWxlY3RlZCB7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogaHNs
KDAsIDAlLCA3NCUpOwogICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBi
b3R0b20sIGhzbCgwLCAwJSwgODclKSwgaHNsKDAsIDAlLCA4MiUpKTsKICAgICBiYWNrZ3JvdW5k
LXNpemU6IDEwMCUgMTAwJTsKIH0KIAotLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGluZykg
PiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyIHsKKy50YWItYmFyOm5vdCgu
YW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIgewogICAg
IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwg
NjclKSwgaHNsKDAsIDAlLCA2NCUpKTsKKyAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS10YWIt
aXRlbS1kYXJrLWJvcmRlci1jb2xvcik7CiB9CiAKLWJvZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiAu
dGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhv
dmVyLAotYm9keVtkaXI9bHRyXSAudGFiLWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5p
dGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIgKyAuaXRlbSwKLWJvZHlbZGlyPXJ0
bF0gLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpsYXN0LWNoaWxkOm5v
dCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIgeworYm9keVtkaXI9bHRyXSAudGFiLWJhcjpu
b3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyLAor
Ym9keVtkaXI9bHRyXSAudGFiLWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVj
dGVkLCAuZGlzYWJsZWQpOmhvdmVyICsgLml0ZW0gewogICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2
YXIoLS10YWItaXRlbS1kYXJrLWJvcmRlci1jb2xvcik7CiB9CiAKLWJvZHlbZGlyPWx0cl0gLnRh
Yi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpsYXN0LWNoaWxkOm5vdCguc2Vs
ZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIsCi1ib2R5W2Rpcj1ydGxdIC50YWItYmFyID4gLnRhYnM6
bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciwK
LWJvZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpu
b3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyICsgLml0ZW0geworYm9keVtkaXI9cnRsXSAu
dGFiLWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQp
OmhvdmVyLAorYm9keVtkaXI9cnRsXSAudGFiLWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpu
b3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyICsgLml0ZW0gewogICAgIGJvcmRlci1yaWdo
dC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tZGFyay1ib3JkZXItY29sb3IpOwogfQogCi1ib2R5Om1h
dGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFy
ID4gLnRhYnMgPiAuaXRlbSB7Ci0gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS10YWItaXRl
bS1saWdodC1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7Ci0gICAgYm9yZGVyLWxlZnQtY29sb3I6
IHZhcigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcikgIWltcG9ydGFudDsKK2JvZHkud2lu
ZG93LWluYWN0aXZlIC50YWItYmFyID4gLml0ZW0geworICAgIGJvcmRlci10b3AtY29sb3I6IHZh
cigtLXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1jb2xvcikgIWltcG9ydGFudDsKIAogICAgIGJhY2tn
cm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS10YWItaXRlbS1leHRyYS1saWdodC1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7CkBAIC0yMDQs
MTIgKzE2MSwyMCBAQCBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2Nr
ZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbQogICAgIHRyYW5zaXRpb246IG5v
bmU7CiB9CiAKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1p
bmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtLnNlbGVjdGVkIHsKK2JvZHlbZGlyPWx0
cl0ud2luZG93LWluYWN0aXZlIC50YWItYmFyID4gLml0ZW0geworICAgIGJvcmRlci1sZWZ0LWNv
bG9yOiB2YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7Cit9CisK
K2JvZHlbZGlyPXJ0bF0ud2luZG93LWluYWN0aXZlIC50YWItYmFyID4gLml0ZW0geworICAgIGJv
cmRlci1yaWdodC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKSAhaW1w
b3J0YW50OworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtLnNlbGVj
dGVkIHsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7CiAgICAgYmFja2dy
b3VuZC1jb2xvcjogaHNsKDAsIDAlLCA5NiUpICFpbXBvcnRhbnQ7CiB9CiAKLS50YWItYmFyID4g
LnRhYnMgPiAuaXRlbSA+IC5jbG9zZSB7CisudGFiLWJhciA+IC5pdGVtID4gLmNsb3NlIHsKICAg
ICB3aWR0aDogMTZweDsKICAgICBoZWlnaHQ6IDE2cHg7CiAKQEAgLTIzMCwyOCArMTk1LDM2IEBA
IGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkg
LnRhYi1iYXIgPiAudGFicyA+IC5pdGVtCiAgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiA0cHg7CiB9
CiAKLWJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbTpo
b3ZlciA+IC5jbG9zZSB7Citib2R5Om5vdCgud2luZG93LWluYWN0aXZlKSAudGFiLWJhciA+IC5p
dGVtOmhvdmVyID4gLmNsb3NlIHsKICAgICBvcGFjaXR5OiAwLjY7CiB9CiAKLS50YWItYmFyID4g
LnRhYnMgPiAuaXRlbSA+IC5jbG9zZTpob3ZlciB7Citib2R5Om5vdCgud2luZG93LWluYWN0aXZl
KSAudGFiLWJhci5zaW5nbGUtdGFiID4gLml0ZW0uZGVmYXVsdC10YWI6aG92ZXIgPiAuY2xvc2Ug
eworICAgIG9wYWNpdHk6IDA7Cit9CisKKy50YWItYmFyLnNpbmdsZS10YWIgPiAuaXRlbS5kZWZh
dWx0LXRhYiA+IC5jbG9zZSB7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CisKKy50YWIt
YmFyID4gLml0ZW0gPiAuY2xvc2U6aG92ZXIgewogICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEo
MCwgMCUsIDAlLCAwLjIpOwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0gPiAuY2xvc2U6
YWN0aXZlIHsKKy50YWItYmFyID4gLml0ZW0gPiAuY2xvc2U6YWN0aXZlIHsKICAgICBvcGFjaXR5
OiAwLjggIWltcG9ydGFudDsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLmZsZXgt
c3BhY2UgeworLnRhYi1iYXIgPiAuaXRlbSA+IC5mbGV4LXNwYWNlIHsKICAgICBkaXNwbGF5OiBm
bGV4OwogICAgIGZsZXg6IDE7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5lcGhlbWVy
YWwgPiAuZmxleC1zcGFjZTpsYXN0LWNoaWxkIHsKKy50YWItYmFyID4gLml0ZW0uZXBoZW1lcmFs
ID4gLmZsZXgtc3BhY2U6bGFzdC1jaGlsZCB7CiAgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiAxNnB4
OwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0gPiAuaWNvbiB7CisudGFiLWJhciA+IC5p
dGVtID4gLmljb24gewogICAgIHdpZHRoOiAxNnB4OwogICAgIGhlaWdodDogMTZweDsKIApAQCAt
MjYzLDI4ICsyMzYsMjggQEAgYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAu
dGFicyA+IC5pdGVtOmhvdmVyID4gLmNsb3NlIHsKICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9u
ZTsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtLnBpbm5lZCA+IC5pY29uIHsKKy50YWIt
YmFyID4gLml0ZW0ucGlubmVkID4gLmljb24gewogICAgIHdpZHRoOiAxNXB4OwogICAgIGhlaWdo
dDogMTVweDsKICAgICBtaW4td2lkdGg6IDE1cHg7CiAgICAgbWluLWhlaWdodDogMTVweDsKIH0K
IAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtLnNlbGVjdGVkID4gLmljb24geworLnRhYi1iYXIg
PiAuaXRlbS5zZWxlY3RlZCA+IC5pY29uIHsKICAgICBvcGFjaXR5OiAwLjc7CiB9CiAKLS50YWIt
YmFyID4gLnRhYnMgPiAuaXRlbS5kaXNhYmxlZCA+IC5pY29uIHsKKy50YWItYmFyID4gLml0ZW0u
ZGlzYWJsZWQgPiAuaWNvbiB7CiAgICAgb3BhY2l0eTogMC4zNTsKIH0KIAogQG1lZGlhIG5vdCAo
cHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgICAudGFiLWJhciA+IC50YWJzOm5vdCgu
YW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIgPiAuaWNv
biB7CisgICAgLnRhYi1iYXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwg
LmRpc2FibGVkKTpob3ZlciA+IC5pY29uIHsKICAgICAgICAgb3BhY2l0eTogMC42OwogICAgIH0K
IH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLnRpdGxlIHsKKy50YWItYmFyID4gLml0
ZW0gPiAudGl0bGUgewogICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC41NSk7CiAKICAgICBk
aXNwbGF5OiBmbGV4OwpAQCAtMjkzLDExICsyNjYsMTEgQEAgYm9keTpub3QoLndpbmRvdy1pbmFj
dGl2ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtOmhvdmVyID4gLmNsb3NlIHsKICAgICBtYXgt
d2lkdGg6IDQwMHB4OwogfQogCi0udGFiLWJhciA+IC50YWJzOm5vdCguY29sbGFwc2VkKSA+IC5p
dGVtID4gLnRpdGxlIHsKKy50YWItYmFyOm5vdCguY29sbGFwc2VkKSA+IC5pdGVtID4gLnRpdGxl
IHsKICAgICAtd2Via2l0LW1hcmdpbi1zdGFydDogNnB4OwogfQogCi0udGFiLWJhciA+IC50YWJz
ID4gLml0ZW0gPiAudGl0bGUgPiAuY29udGVudCB7CisudGFiLWJhciA+IC5pdGVtID4gLnRpdGxl
ID4gLmNvbnRlbnQgewogICAgIG1pbi13aWR0aDogMDsKICAgICB3aWR0aDogMTAwJTsKICAgICBv
dmVyZmxvdzogaGlkZGVuOwpAQCAtMzA1LDg0ICsyNzgsODQgQEAgYm9keTpub3QoLndpbmRvdy1p
bmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtOmhvdmVyID4gLmNsb3NlIHsKICAgICB3
aGl0ZS1zcGFjZTogbm93cmFwOwogfQogCi0udGFiLWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5n
KSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQpOmhvdmVyID4gLnRpdGxlIHsKKy50YWItYmFyOm5vdCgu
YW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQpOmhvdmVyID4gLnRpdGxlIHsKICAgICBj
b2xvcjogaHNsYSgwLCAwJSwgMCUsIDAuNik7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRl
bS5zZWxlY3RlZCA+IC50aXRsZSB7CisudGFiLWJhciA+IC5pdGVtLnNlbGVjdGVkID4gLnRpdGxl
IHsKICAgICBjb2xvcjogaHNsYSgwLCAwJSwgMCUsIDAuNyk7CiB9CiAKLS50YWItYmFyID4gLnRh
YnMuY29sbGFwc2VkID4gLml0ZW0geworLnRhYi1iYXIuY29sbGFwc2VkID4gLml0ZW0gewogICAg
IGp1c3RpZnktY29udGVudDogY2VudGVyOwogfQogCi0udGFiLWJhciA+IC50YWJzLmNvbGxhcHNl
ZCA+IC5pdGVtOm5vdCgucGlubmVkKSA+IC5pY29uIHsKKy50YWItYmFyLmNvbGxhcHNlZCA+IC5p
dGVtOm5vdCgucGlubmVkKSA+IC5pY29uIHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCi0udGFi
LWJhciA+IC50YWJzLmNvbGxhcHNlZCA+IC5pdGVtID4gLmZsZXgtc3BhY2UgeworLnRhYi1iYXIu
Y29sbGFwc2VkID4gLml0ZW0gPiAuZmxleC1zcGFjZSB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0K
IAotLnRhYi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAuaXRlbSA+IC5jbG9zZSB7CisudGFiLWJh
ci5jb2xsYXBzZWQgPiAuaXRlbSA+IC5jbG9zZSB7CiAgICAgZGlzcGxheTogbm9uZTsKICAgICAt
d2Via2l0LW1hcmdpbi1lbmQ6IDA7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuY29sbGFwc2VkID4g
Lml0ZW06aG92ZXIgPiAuY2xvc2UgeworLnRhYi1iYXIuY29sbGFwc2VkID4gLml0ZW06aG92ZXIg
PiAuY2xvc2UgewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuY29sbGFwc2VkID4gLml0ZW0uZXBoZW1lcmFs
OmhvdmVyID4gLmljb24geworLnRhYi1iYXIuY29sbGFwc2VkID4gLml0ZW0uZXBoZW1lcmFsOmhv
dmVyID4gLmljb24gewogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLS50YWItYmFyID4gLnRhYnMu
Y29sbGFwc2VkID4gLml0ZW0uZXBoZW1lcmFsOmhvdmVyID4gLnRpdGxlIHsKKy50YWItYmFyLmNv
bGxhcHNlZCA+IC5pdGVtLmVwaGVtZXJhbDpob3ZlciA+IC50aXRsZSB7CiAgICAgdmlzaWJpbGl0
eTogaGlkZGVuOwogfQogCi0udGFiLWJhciA+IC50YWJzLnN0YXRpYy1sYXlvdXQgeworLnRhYi1i
YXIuc3RhdGljLWxheW91dCB7CiAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogfQogCi0udGFiLWJh
ciA+IC50YWJzLnN0YXRpYy1sYXlvdXQgPiAuaXRlbSB7CisudGFiLWJhci5zdGF0aWMtbGF5b3V0
ID4gLml0ZW0gewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogICAgIHRvcDog
MDsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5hbmltYXRpbmcuY2xvc2luZy10YWIgPiAuaXRlbSB7
CisudGFiLWJhci5hbmltYXRpbmcuY2xvc2luZy10YWIgPiAuaXRlbSB7CiAgICAgdHJhbnNpdGlv
bi1wcm9wZXJ0eTogbGVmdDsKICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAyNTBtczsKICAgICB0
cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiB9CiAKLS50YWItYmFyID4g
LnRhYnMuYW5pbWF0aW5nOm1hdGNoZXMoLmV4cGFuZGluZy10YWJzLCAuaW5zZXJ0aW5nLXRhYikg
PiAuaXRlbSB7CisudGFiLWJhci5hbmltYXRpbmc6bWF0Y2hlcyguZXhwYW5kaW5nLXRhYnMsIC5p
bnNlcnRpbmctdGFiKSA+IC5pdGVtIHsKICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0LCB3
aWR0aDsKICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAyNTBtczsKICAgICB0cmFuc2l0aW9uLXRp
bWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuYW5pbWF0
aW5nLmluc2VydGluZy10YWIgPiAuaXRlbS5iZWluZy1pbnNlcnRlZCB7CisudGFiLWJhci5hbmlt
YXRpbmcuaW5zZXJ0aW5nLXRhYiA+IC5pdGVtLmJlaW5nLWluc2VydGVkIHsKICAgICB6LWluZGV4
OiAyOwogICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50OwogICAgIHBhZGRpbmc6IDAgIWltcG9y
dGFudDsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5kcmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3Rl
ZCwKLS50YWItYmFyID4gLnRhYnMuc3RhdGljLWxheW91dDpub3QoLmFuaW1hdGluZy5pbnNlcnRp
bmctdGFiKTpub3QoLmRyYWdnaW5nLXRhYikgPiAuaXRlbTpudGgtbGFzdC1jaGlsZCgxIG9mIDpu
b3QoLnBpbm5lZCkpLAotLnRhYi1iYXIgPiAudGFicy5hbmltYXRpbmcuY2xvc2luZy10YWIgPiAu
aXRlbS5zZWxlY3RlZCB7CisudGFiLWJhci5kcmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCwK
Ky50YWItYmFyLnN0YXRpYy1sYXlvdXQ6bm90KC5hbmltYXRpbmcuaW5zZXJ0aW5nLXRhYik6bm90
KC5kcmFnZ2luZy10YWIpID4gLml0ZW06bnRoLWxhc3QtY2hpbGQoMSBvZiA6bm90KC5waW5uZWQp
KSwKKy50YWItYmFyLmFuaW1hdGluZy5jbG9zaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkIHsKICAg
ICBib3JkZXItcmlnaHQ6IHZhcigtLXRhYi1pdGVtLW1lZGl1bS1ib3JkZXItc3R5bGUpOwogfQog
Ci1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUp
IC50YWItYmFyID4gLnRhYnMuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQsCi1ib2R5Om1h
dGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFy
ID4gLnRhYnMuc3RhdGljLWxheW91dDpub3QoLmFuaW1hdGluZy5pbnNlcnRpbmctdGFiKTpub3Qo
LmRyYWdnaW5nLXRhYikgPiAuaXRlbTpudGgtbGFzdC1jaGlsZCgxIG9mIDpub3QoLnBpbm5lZCkp
LAotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZl
KSAudGFiLWJhciA+IC50YWJzLmFuaW1hdGluZy5jbG9zaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVk
IHsKK2JvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNl
bGVjdGVkLAorYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIuc3RhdGljLWxheW91dDpub3Qo
LmFuaW1hdGluZy5pbnNlcnRpbmctdGFiKTpub3QoLmRyYWdnaW5nLXRhYikgPiAuaXRlbTpudGgt
bGFzdC1jaGlsZCgxIG9mIDpub3QoLnBpbm5lZCkpLAorYm9keS53aW5kb3ctaW5hY3RpdmUgLnRh
Yi1iYXIuYW5pbWF0aW5nLmNsb3NpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQgewogICAgIGJvcmRl
ci1yaWdodC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKSAhaW1wb3J0
YW50OwogfQogCi0udGFiLWJhciA+IC50YWJzLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVk
IHsKKy50YWItYmFyLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkIHsKICAgICB6LWluZGV4
OiAyOwogICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogfQpAQCAtNDAwLDQ4ICszNzMsNDYgQEAg
Ym9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAu
dGFiLWJhciA+IC50YWJzLmFuaW1hdGkKICAgICAgICAgLS10YWItaXRlbS1leHRyYS1saWdodC1i
b3JkZXItY29sb3I6IHZhcigtLXRhYi1pdGVtLWJvcmRlci1jb2xvcik7CiAgICAgfQogCi0gICAg
Ym9keS5kb2NrZWQuYm90dG9tIC50YWItYmFyID4gLmJvcmRlci50b3AgewotICAgICAgICBmaWx0
ZXI6IGJyaWdodG5lc3MoMTIwJSk7Ci0gICAgfQotCi0gICAgLnRhYi1iYXIgPiAudGFicyA+IC5p
dGVtIHsKKyAgICAudGFiLWJhciA+IC5pdGVtIHsKICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTog
bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCAxMiUpLCBoc2woMCwgMCUsIDEw
JSkpOwogICAgIH0KIAotICAgIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC50aXRsZSB7Cisg
ICAgLnRhYi1iYXIgPiAuaXRlbSA+IC50aXRsZSB7CiAgICAgICAgIGNvbG9yOiB3aGl0ZSAhaW1w
b3J0YW50OwogICAgIH0KIAotICAgIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbTpub3QoLmRpc2Fi
bGVkKS5zZWxlY3RlZCB7CisgICAgLnRhYi1iYXIgPiAuaXRlbTpub3QoLmRpc2FibGVkKS5zZWxl
Y3RlZCB7CiAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0
b20sIGhzbCgwLCAwJSwgMjMlKSwgaHNsKDAsIDAlLCAyMSUpKTsKKyAgICAgICAgYm9yZGVyLXRv
cC1jb2xvcjogaHNsKDAsIDAlLCAzNyUpOwogICAgIH0KIAotICAgIC50YWItYmFyID4gLnRhYnM6
bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCk6aG92ZXIgeworICAgIC50YWIt
YmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHsKICAgICAg
ICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAl
LCAxMSUpLCBoc2woMCwgMCUsIDklKSk7CiAgICAgfQogCi0gICAgLnRhYi1iYXIgPiAudGFicyA+
IC5pdGVtID4gLmNsb3NlLAotICAgIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC5pY29uIHsK
KyAgICAudGFiLWJhciA+IC5pdGVtID4gLmNsb3NlLAorICAgIC50YWItYmFyID4gLml0ZW0gPiAu
aWNvbiB7CiAgICAgICAgIGZpbHRlcjogdmFyKC0tZmlsdGVyLWludmVydCk7CiAgICAgfQogCi0g
ICAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZl
KSAudGFiLWJhciB7CisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgewogICAgICAg
ICAtLXRhYi1pdGVtLWJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCAzNCUpOworICAgICAgICBib3Jk
ZXItYm90dG9tLWNvbG9yOiB2YXIoLS10YWItaXRlbS1ib3JkZXItY29sb3IpOwogCiAgICAgICAg
IGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogaHNsKDAsIDAlLCAxMyUpICFpbXBvcnRhbnQ7CiAgICAgfQogCi0gICAgYm9keTptYXRj
aGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+
IC50YWJzID4gLml0ZW0geworICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyID4gLml0
ZW0gewogICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgMTMlKSAhaW1wb3J0YW50OwogICAgIH0KIAot
ICAgIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2
ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtLnNlbGVjdGVkIHsKKyAgICBib2R5LndpbmRvdy1p
bmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtLnNlbGVjdGVkIHsKICAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogaHNsKDAsIDAlLCAxOSUpICFpbXBvcnRhbnQ7CiAgICAgfQogCi0gICAgYm9keTptYXRj
aGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+
IC50YWJzID4gLml0ZW0gPiAudGl0bGUgeworICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50YWIt
YmFyID4gLml0ZW0gPiAudGl0bGUgewogICAgICAgICBjb2xvcjogaHNsKDAsIDAlLCA1OCUpICFp
bXBvcnRhbnQ7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCmluZGV4IDc4NGZjNjk1ZDc1YWZiZjNiMDVjZTg3OGJl
MzAyZWM1ZmE4MTY4MjkuLjgwMWIxN2Q3YzE1MDkyMzMwZDkyYmExYjc3MGY4ZDZmMGMwZTliNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
YWJCYXIuanMKQEAgLTI1LDU4ICsyNSwzNCBAQAogCiBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIg
ZXh0ZW5kcyBXSS5WaWV3CiB7Ci0gICAgY29uc3RydWN0b3IoZWxlbWVudCkKKyAgICBjb25zdHJ1
Y3RvcihlbGVtZW50LCB0YWJCYXJJdGVtcykKICAgICB7CiAgICAgICAgIHN1cGVyKGVsZW1lbnQp
OwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItYmFyIik7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFibGlzdCIpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxl
TW91c2VEb3duLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVDbGljay5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9oYW5kbGVNb3Vz
ZUxlYXZlLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudS5iaW5kKHRoaXMpKTsKIAot
ICAgICAgICB0aGlzLmVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJib3JkZXIgdG9wIik7Ci0K
LSAgICAgICAgY29uc3QgbmF2aWdhdGlvbkJhckJlZm9yZUVsZW1lbnQgPSBudWxsOwotICAgICAg
ICB0aGlzLl9uYXZpZ2F0aW9uQmFyQmVmb3JlID0gbmV3IFdJLk5hdmlnYXRpb25CYXIobmF2aWdh
dGlvbkJhckJlZm9yZUVsZW1lbnQsIHtzaXplc1RvRml0OiB0cnVlfSk7Ci0gICAgICAgIHRoaXMu
YWRkU3Vidmlldyh0aGlzLl9uYXZpZ2F0aW9uQmFyQmVmb3JlKTsKLQotICAgICAgICB0aGlzLl90
YWJDb250YWluZXIgPSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2IikpOwotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NOYW1lID0gInRh
YnMiOwotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRh
Ymxpc3QiKTsKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlZG93biIsIHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhp
cy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQ2xp
Y2suYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5faGFuZGxlTW91c2VMZWF2ZS5iaW5kKHRoaXMpKTsKLSAg
ICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iiwg
dGhpcy5faGFuZGxlQ29udGV4dE1lbnUuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgY29uc3QgbmF2
aWdhdGlvbkJhckFmdGVyRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25C
YXJBZnRlciA9IG5ldyBXSS5OYXZpZ2F0aW9uQmFyKG5hdmlnYXRpb25CYXJBZnRlckVsZW1lbnQs
IHtzaXplc1RvRml0OiB0cnVlfSk7Ci0gICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9uYXZp
Z2F0aW9uQmFyQWZ0ZXIpOwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2
IiwgImJvcmRlciBib3R0b20iKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJk
aXYiLCAidG9wLWJvcmRlciIpOwogCiAgICAgICAgIHRoaXMuX3RhYkJhckl0ZW1zID0gW107CiAg
ICAgICAgIHRoaXMuX2hpZGRlblRhYkJhckl0ZW1zID0gW107CiAKLSAgICAgICAgY29uc3QgdGFi
UGlja2VyUmVwcmVzZW50ZWRPYmplY3QgPSBudWxsOwotICAgICAgICB0aGlzLl90YWJQaWNrZXJU
YWJCYXJJdGVtID0gbmV3IFdJLlBpbm5lZFRhYkJhckl0ZW0odGFiUGlja2VyUmVwcmVzZW50ZWRP
YmplY3QsICJJbWFnZXMvVGFiUGlja2VyLnN2ZyIsIFdJLlVJU3RyaW5nKCJTaG93IGhpZGRlbiB0
YWJzIikpOwotICAgICAgICB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLmhpZGRlbiA9IHRydWU7
Ci0gICAgICAgIHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJ0YWItcGlja2VyIik7CisgICAgICAgIGlmICh0YWJCYXJJdGVtcykgeworICAgICAgICAgICAg
Zm9yIChsZXQgdGFiQmFySXRlbSBpbiB0YWJCYXJJdGVtcykKKyAgICAgICAgICAgICAgICB0aGlz
LmFkZFRhYkJhckl0ZW0odGFiQmFySXRlbSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl90
YWJQaWNrZXJUYWJCYXJJdGVtID0gbmV3IFdJLlBpbm5lZFRhYkJhckl0ZW0oIkltYWdlcy9UYWJQ
aWNrZXIuc3ZnIiwgV0kuVUlTdHJpbmcoIlNob3cgaGlkZGVuIHRhYnMiKSk7CisgICAgICAgIHRo
aXMuX3RhYlBpY2tlclRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItcGlja2Vy
IiwgImhpZGRlbiIpOwogICAgICAgICB0aGlzLmFkZFRhYkJhckl0ZW0odGhpcy5fdGFiUGlja2Vy
VGFiQmFySXRlbSwge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOwogICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCi0gICAgYWRkTmF2aWdhdGlvbkl0ZW1CZWZvcmUobmF2aWdhdGlvbkl0ZW0pCi0g
ICAgewotICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyQmVmb3JlLmFkZE5hdmlnYXRpb25JdGVt
KG5hdmlnYXRpb25JdGVtKTsKLQotICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAgfQot
Ci0gICAgYWRkTmF2aWdhdGlvbkl0ZW1BZnRlcihuYXZpZ2F0aW9uSXRlbSkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX25hdmlnYXRpb25CYXJBZnRlci5hZGROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9u
SXRlbSk7Ci0KLSAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0KLQogICAgIGFkZFRh
YkJhckl0ZW0odGFiQmFySXRlbSwgb3B0aW9ucyA9IHt9KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuaW5zZXJ0VGFiQmFySXRlbSh0YWJCYXJJdGVtLCB0aGlzLl90YWJCYXJJdGVtcy5sZW5n
dGgsIG9wdGlvbnMpOwpAQCAtMTA5LDcgKzg1LDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFy
IGV4dGVuZHMgV0kuVmlldwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbmRleCA9IE51bWJl
ci5jb25zdHJhaW4oaW5kZXgsIHRoaXMubm9ybWFsVGFiQ291bnQsIHRoaXMuX3RhYkJhckl0ZW1z
Lmxlbmd0aCk7CiAKLSAgICAgICAgaWYgKHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuY29u
dGFpbnMoImFuaW1hdGluZyIpKSB7CisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgewogICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpKTsKICAgICAgICAgICAgIG9wdGlvbnMuc3VwcHJl
c3NBbmltYXRpb25zID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTIzLDM3ICs5OSwzNyBAQCBXSS5U
YWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHZhciBuZXh0U2li
bGluZyA9IHRoaXMuX3RhYkJhckl0ZW1zW2luZGV4ICsgMV07CiAgICAgICAgIGxldCBuZXh0U2li
bGluZ0VsZW1lbnQgPSBuZXh0U2libGluZyA/IG5leHRTaWJsaW5nLmVsZW1lbnQgOiB0aGlzLl90
YWJCYXJJdGVtcy5sYXN0VmFsdWUuZWxlbWVudDsKIAotICAgICAgICBpZiAodGhpcy5fdGFiQ29u
dGFpbmVyLmNvbnRhaW5zKG5leHRTaWJsaW5nRWxlbWVudCkpCi0gICAgICAgICAgICB0aGlzLl90
YWJDb250YWluZXIuaW5zZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdF
bGVtZW50KTsKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jb250YWlucyhuZXh0U2libGluZ0Vs
ZW1lbnQpKQorICAgICAgICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0YWJCYXJJdGVt
LmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHRoaXMuX3RhYkNvbnRhaW5lci5hcHBlbmRDaGlsZCh0YWJCYXJJdGVtLmVsZW1lbnQpOworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRhYkJhckl0ZW0uZWxlbWVudCk7CiAK
LSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIi
LCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSk7CisgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwgIXRoaXMuX2hhc01vcmVUaGFuT25lTm9y
bWFsVGFiKCkpOwogCiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbnVs
bDsKICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gbnVsbDsKIAogICAg
ICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMu
X3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRo
aXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJpbnNlcnRpbmctdGFiIik7CisgICAgICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5zZXJ0aW5nLXRhYiIpOwogCiAgICAgICAg
ICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhhZnRlclRhYlNpemVz
QW5kUG9zaXRpb25zKTsKIAotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50
TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlv
bkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0
aW9uIHJlbW92ZVN0eWxlcygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRh
aW5lci5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAgICB0aGlz
Ll90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAg
ICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiaW5zZXJ0aW5nLXRhYiIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQi
KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmci
KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJpbnNlcnRpbmct
dGFiIik7CiAKICAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KCJiZWluZy1pbnNlcnRlZCIpOwogCiAgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucygpOwogCi0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIucmVt
b3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3Rl
bmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJr
aXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucykgewpAQCAtMTcwLDcgKzE0Niw3
IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucy5zZXQodGFi
QmFySXRlbSwge2xlZnQ6IDAsIHdpZHRoOiAwfSk7CiAKLSAgICAgICAgICAgIHRoaXMuX3RhYkNv
bnRhaW5lci5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwogICAgICAgICAgICAgdGFi
QmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImJlaW5nLWluc2VydGVkIik7CiAKICAgICAg
ICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNp
emVzQW5kUG9zaXRpb25zKTsKQEAgLTIwNiw3ICsxODIsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQmFySXRl
bSA9IG5leHRUYWJCYXJJdGVtOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMuX3RhYkNv
bnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CisgICAgICAgIGlmICh0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgewogICAgICAgICAg
ICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpKTsKICAgICAg
ICAgICAgIG9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zID0gdHJ1ZTsKICAgICAgICAgfQpAQCAt
MjIyLDcgKzE5OCw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcK
ICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnJlbW92ZSgpOwogCiAgICAgICAgIHZhciBoYXNN
b3JlVGhhbk9uZU5vcm1hbFRhYiA9IHRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCk7Ci0g
ICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwg
IWhhc01vcmVUaGFuT25lTm9ybWFsVGFiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC50b2dnbGUoInNpbmdsZS10YWIiLCAhaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOwogCiAgICAg
ICAgIGlmICghaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIgfHwgd2FzTGFzdE5vcm1hbFRhYiB8fCAh
b3B0aW9ucy5zdXBwcmVzc0V4cGFuc2lvbikgewogICAgICAgICAgICAgaWYgKCFvcHRpb25zLnN1
cHByZXNzQW5pbWF0aW9ucykgewpAQCAtMjM5LDE1ICsyMTUsMTUgQEAgV0kuVGFiQmFyID0gY2xh
c3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJz
KCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5h
ZGQoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlz
dC5hZGQoImNsb3NpbmctdGFiIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiY2xvc2luZy10YWIiKTsKIAogICAgICAgICAgICAgLy8gRm9yIFJUTCwgd2UgbmVlZCB0byBw
bGFjZSBleHRyYSBzcGFjZSBiZXR3ZWVuIHBpbm5lZCB0YWIgYW5kIGZpcnN0IG5vcm1hbCB0YWIu
CiAgICAgICAgICAgICAvLyBGcm9tIGxlZnQgdG8gcmlnaHQgdGhlcmUgaXMgcGlubmVkIHRhYnMs
IGV4dHJhIHNwYWNlLCB0aGVuIG5vcm1hbCB0YWJzLiBDb21wdXRlCiAgICAgICAgICAgICAvLyBo
b3cgbXVjaCBleHRyYSBzcGFjZSB3ZSBuZWVkIHRvIGFkZGl0aW9uYWxseSBhZGQgZm9yIG5vcm1h
bCB0YWIgaXRlbXMuCiAgICAgICAgICAgICBsZXQgZXh0cmFTcGFjZUJldHdlZW5Ob3JtYWxBbmRQ
aW5uZWRUYWJzID0gMDsKICAgICAgICAgICAgIGlmIChXSS5yZXNvbHZlZExheW91dERpcmVjdGlv
bigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRMKSB7Ci0gICAgICAgICAgICAgICAgZXh0cmFT
cGFjZUJldHdlZW5Ob3JtYWxBbmRQaW5uZWRUYWJzID0gdGhpcy5fdGFiQ29udGFpbmVyLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOworICAgICAgICAgICAgICAgIGV4dHJhU3BhY2VCZXR3
ZWVuTm9ybWFsQW5kUGlubmVkVGFicyA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKS53aWR0aDsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBjdXJyZW50VGFiQmFySXRlbSBv
ZiB0aGlzLl90YWJCYXJJdGVtc0Zyb21MZWZ0VG9SaWdodCgpKQogICAgICAgICAgICAgICAgICAg
ICBleHRyYVNwYWNlQmV0d2Vlbk5vcm1hbEFuZFBpbm5lZFRhYnMgLT0gY3VycmVudFRhYkJhckl0
ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsKICAgICAgICAgICAgIH0K
QEAgLTI3MSw3ICsyNDcsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5W
aWV3CiAgICAgICAgICAgICBpZiAobGFzdE5vcm1hbFRhYkJhckl0ZW0gIT09IHRoaXMuX3NlbGVj
dGVkVGFiQmFySXRlbSkKICAgICAgICAgICAgICAgICBsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVt
ZW50LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQobGFzdE5vcm1hbFRhYkJhckl0ZW0uZWxlbWVu
dC5zdHlsZS53aWR0aCkgKyAxKSArICJweCI7CiAKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRh
aW5lci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVz
TGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndl
YmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAgICAgICAgIH0KIAog
ICAgICAgICBmdW5jdGlvbiByZW1vdmVTdHlsZXMoKQpAQCAtMjgwLDE2ICsyNTYsMTYgQEAgV0ku
VGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgaWYgKHRo
aXMuX3NlbGVjdGVkVGFiQmFySXRlbSAmJiB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gIT09IGxh
c3ROb3JtYWxUYWJCYXJJdGVtKQogICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFy
SXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQodGhpcy5fc2VsZWN0ZWRUYWJC
YXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgpIC0gMSkgKyAicHgiOwogCi0gICAgICAgICAgICB0
aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAgICAg
ICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiY2xvc2luZy10YWIiKTsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjbG9zaW5nLXRhYiIp
OwogCiAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwogCi0gICAgICAgICAgICB0aGlz
Ll90YWJDb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIs
IHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVF
dmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucykg
ewotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInN0YXRpYy1s
YXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMt
bGF5b3V0Iik7CiAKICAgICAgICAgICAgIHRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3Vz
ZUVudGVyID0gdHJ1ZTsKIApAQCAtMzgyLDcgKzM1OCw3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRh
YkJhciBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJ
dGVtKSB7CiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uc2VsZWN0ZWQgPSB0
cnVlOwotICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5oaWRkZW4pCisg
ICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKCJoaWRkZW4iKSkKICAgICAgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7
CiAgICAgICAgIH0KIApAQCAtMzk1LDI4ICszNzEsMzIgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFi
QmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXM7CiAg
ICAgfQogCi0gICAgZ2V0IHRhYkNvdW50KCkKKyAgICBnZXQgbm9ybWFsVGFiQ291bnQoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRl
bS5yZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRWaWV3KS5sZW5ndGg7
CisgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtcy5maWx0ZXIoKGl0ZW0pID0+ICEoaXRl
bSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pKS5sZW5ndGg7CiAgICAgfQogCi0gICAg
Z2V0IG5vcm1hbFRhYkNvdW50KCkKKyAgICBnZXQgc2F2ZWFibGVUYWJDb3VudCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMuZmlsdGVyKChpdGVtKSA9PiAhKGl0ZW0g
aW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKSkubGVuZ3RoOworICAgICAgICByZXR1cm4g
dGhpcy5fdGFiQmFySXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnJlcHJlc2VudGVkT2JqZWN0
ICYmIGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QuY29uc3RydWN0b3Iuc2hvdWxkU2F2ZVRhYigpKS5s
ZW5ndGg7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBsYXlvdXQoKQogICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRp
Yy1sYXlvdXQiKSkKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMo
InN0YXRpYy1sYXlvdXQiKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl90
YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiY2FsY3VsYXRlLXdpZHRoIik7Ci0gICAgICAgIHRo
aXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJjb2xsYXBzZWQiKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNhbGN1bGF0ZS13aWR0aCIpOworICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY29sbGFwc2VkIik7CisKKyAgICAgICAgZnVu
Y3Rpb24gZm9yY2VJdGVtSGlkZGVuKGl0ZW0sIGhpZGRlbikgeworICAgICAgICAgICAgaXRlbS5l
bGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIsICEhaGlkZGVuKTsKKyAgICAgICAgfQog
CiAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpCi0gICAgICAgICAg
ICBpdGVtLmhpZGRlbiA9IGl0ZW0gPT09IHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW07CisgICAg
ICAgICAgICBmb3JjZUl0ZW1IaWRkZW4oaXRlbSwgaXRlbSA9PT0gdGhpcy5fdGFiUGlja2VyVGFi
QmFySXRlbSk7CiAKICAgICAgICAgZnVuY3Rpb24gbWVhc3VyZUl0ZW1XaWR0aChpdGVtKSB7CiAg
ICAgICAgICAgICBpZiAoIWl0ZW1bV0kuVGFiQmFyLkNhY2hlZFdpZHRoU3ltYm9sXSkKQEAgLTQz
NCwxMyArNDE0LDEzIEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcK
ICAgICAgICAgdGhpcy5faGlkZGVuVGFiQmFySXRlbXMgPSBbXTsKIAogICAgICAgICBsZXQgdG90
YWxJdGVtV2lkdGggPSByZWNhbGN1bGF0ZUl0ZW1XaWR0aHMoKTsKLSAgICAgICAgbGV0IGJhcldp
ZHRoID0gdGhpcy5fdGFiQ29udGFpbmVyLnJlYWxPZmZzZXRXaWR0aDsKKyAgICAgICAgbGV0IGJh
cldpZHRoID0gdGhpcy5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKIAogICAgICAgICBpZiAodG90
YWxJdGVtV2lkdGggPiBiYXJXaWR0aCkgewotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVy
LmNsYXNzTGlzdC5hZGQoImNvbGxhcHNlZCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoImNvbGxhcHNlZCIpOwogICAgICAgICAgICAgdG90YWxJdGVtV2lkdGggPSBy
ZWNhbGN1bGF0ZUl0ZW1XaWR0aHMoKTsKICAgICAgICAgICAgIGlmICh0b3RhbEl0ZW1XaWR0aCA+
IGJhcldpZHRoKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbS5o
aWRkZW4gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3JjZUl0ZW1IaWRkZW4odGhpcy5fdGFi
UGlja2VyVGFiQmFySXRlbSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHRvdGFsSXRlbVdpZHRo
ICs9IG1lYXN1cmVJdGVtV2lkdGgodGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSk7CiAgICAgICAg
ICAgICB9CiAKQEAgLTQ1MiwyMSArNDMyLDEzIEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBl
eHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgICAgICB0b3RhbEl0ZW1XaWR0aCAtPSBtZWFzdXJlSXRlbVdpZHRoKGl0ZW0pOwotICAgICAg
ICAgICAgICAgIGl0ZW0uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBmb3JjZUl0ZW1I
aWRkZW4oaXRlbSwgdHJ1ZSk7CiAKICAgICAgICAgICAgICAgICB0aGlzLl9oaWRkZW5UYWJCYXJJ
dGVtcy5wdXNoKGl0ZW0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdGhp
cy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoImNhbGN1bGF0ZS13aWR0aCIpOwotICAg
IH0KLQotICAgIGRpZExheW91dFN1YnRyZWUoKQotICAgIHsKLSAgICAgICAgc3VwZXIuZGlkTGF5
b3V0U3VidHJlZSgpOwotCi0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QudG9n
Z2xlKCJoaWRlLWJvcmRlci1zdGFydCIsIHRoaXMuX25hdmlnYXRpb25CYXJCZWZvcmUubmF2aWdh
dGlvbkl0ZW1zLmV2ZXJ5KChpdGVtKSA9PiBpdGVtLmhpZGRlbikpOwotICAgICAgICB0aGlzLl90
YWJDb250YWluZXIuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZS1ib3JkZXItZW5kIiwgdGhpcy5fbmF2
aWdhdGlvbkJhckFmdGVyLm5hdmlnYXRpb25JdGVtcy5ldmVyeSgoaXRlbSkgPT4gaXRlbS5oaWRk
ZW4pKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNhbGN1bGF0ZS13
aWR0aCIpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKQEAgLTUwOCw3ICs0ODAsNyBAQCBXSS5U
YWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgewogICAgICAgICB2YXIg
dGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zID0gbmV3IE1hcDsKIAotICAgICAgICBsZXQgYmFy
UmVjdCA9IHRoaXMuX3RhYkNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAg
ICAgY29uc3QgYmFyUmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsK
IAogICAgICAgICBmb3IgKHZhciB0YWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7CiAg
ICAgICAgICAgICB2YXIgYm91bmRpbmdSZWN0ID0gdGFiQmFySXRlbS5lbGVtZW50LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpOwpAQCAtNTQ3LDM2ICs1MTksMzYgQEAgV0kuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgaWYgKCFiZWZvcmVUYWJTaXplc0Fu
ZFBvc2l0aW9ucykKICAgICAgICAgICAgICAgICBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyA9
IHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwogCi0gICAgICAgICAg
ICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQi
KTsKICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7
CiAKICAgICAgICAgICAgIHZhciBhZnRlclRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVj
b3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAKICAgICAgICAgICAgIHRoaXMuX2Fw
cGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25z
KTsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJzdGF0aWMt
bGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGlj
LWxheW91dCIpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQo
InN0YXRpYy1sYXlvdXQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xh
c3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFp
bmVyLmNsYXNzTGlzdC5hZGQoImV4cGFuZGluZy10YWJzIik7CisgICAgICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImV4cGFuZGluZy10YWJzIik7CiAKICAgICAg
ICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhhZnRlclRh
YlNpemVzQW5kUG9zaXRpb25zKTsKIAotICAgICAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5l
ci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlz
dGVuZXIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3
ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBmdW5jdGlvbiByZW1vdmVTdHlsZXMoKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0
aWMtbGF5b3V0Iik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlz
dC5yZW1vdmUoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5l
ci5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRpbmctdGFicyIpOworICAgICAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAgICAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRpbmctdGFicyIp
OwogCiAgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlv
bnMoKTsKIAogICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKLSAgICAgICAg
ICAgICAgICB0aGlzLl90YWJDb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJh
bnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgICAgICB0aGlz
LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92
ZVN0eWxlc0xpc3RlbmVyKTsKIAogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAg
ICAgIH0KQEAgLTY4MSw3ICs2NTMsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5k
cyBXSS5WaWV3CiAgICAgICAgIHZhciBjbG9zZUJ1dHRvbkVsZW1lbnQgPSBldmVudC50YXJnZXQu
Y2xvc2VzdCgiLiIgKyBXSS5UYWJCYXJJdGVtLkNsb3NlQnV0dG9uU3R5bGVDbGFzc05hbWUpOwog
ICAgICAgICBpZiAoY2xvc2VCdXR0b25FbGVtZW50IHx8IGNsaWNrZWRNaWRkbGVCdXR0b24pIHsK
ICAgICAgICAgICAgIC8vIERpc2FsbG93IGNsb3NpbmcgdGhlIG9ubHkgdGFiLgotICAgICAgICAg
ICAgaWYgKHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoInNpbmdsZS10YWIi
KSkKKyAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaW5n
bGUtdGFiIikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBpZiAoIWV2
ZW50LmFsdEtleSkgewpAQCAtNzE2LDIzICs2ODgsMjEgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFi
QmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIAotICAgICAgICBpZiAoIXRoaXMuX3RhYkNv
bnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSkgeworICAgICAgICBp
ZiAoIXRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSkgewog
ICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnModGhpcy5f
cmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCkpOwotICAgICAgICAgICAgdGhpcy5f
dGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKLSAgICAgICAgICAg
IHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKKyAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmctdGFiIik7CiAgICAg
ICAgIH0KIAotICAgICAgICBsZXQgY29udGFpbmVyT2Zmc2V0ID0gdGhpcy5fdGFiQ29udGFpbmVy
LnRvdGFsT2Zmc2V0TGVmdDsKLQogICAgICAgICBpZiAodGhpcy5fbW91c2VPZmZzZXQgPT09IHVu
ZGVmaW5lZCkKICAgICAgICAgICAgIHRoaXMuX21vdXNlT2Zmc2V0ID0gZXZlbnQucGFnZVggLSB0
aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC50b3RhbE9mZnNldExlZnQ7CiAKLSAgICAg
ICAgbGV0IHRhYkJhck1vdXNlT2Zmc2V0ID0gZXZlbnQucGFnZVggLSBjb250YWluZXJPZmZzZXQ7
CisgICAgICAgIHZhciB0YWJCYXJNb3VzZU9mZnNldCA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5lbGVt
ZW50LnRvdGFsT2Zmc2V0TGVmdDsKICAgICAgICAgdmFyIG5ld0xlZnQgPSB0YWJCYXJNb3VzZU9m
ZnNldCAtIHRoaXMuX21vdXNlT2Zmc2V0OwogCiAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFy
SXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBuZXdMZWZ0ICsgInB4IjsKIAotICAgICAgICB2YXIg
c2VsZWN0ZWRUYWJNaWRYID0gY29udGFpbmVyT2Zmc2V0ICsgbmV3TGVmdCArICh0aGlzLl9zZWxl
Y3RlZFRhYkJhckl0ZW0uZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGggLyAyKTsKKyAgICAgICAgdmFy
IHNlbGVjdGVkVGFiTWlkWCA9IG5ld0xlZnQgKyAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVs
ZW1lbnQucmVhbE9mZnNldFdpZHRoIC8gMik7CiAKICAgICAgICAgdmFyIGN1cnJlbnRJbmRleCA9
IHRoaXMuX3RhYkJhckl0ZW1zLmluZGV4T2YodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKTsKICAg
ICAgICAgdmFyIG5ld0luZGV4ID0gY3VycmVudEluZGV4OwpAQCAtNzYyLDcgKzczMiw3IEBAIFdJ
LlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgbGV0IG5leHRT
aWJsaW5nID0gdGhpcy5fdGFiQmFySXRlbXNbbmV3SW5kZXggKyAxXTsKICAgICAgICAgbGV0IG5l
eHRTaWJsaW5nRWxlbWVudCA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6IG51
bGw7CiAKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmluc2VydEJlZm9yZSh0aGlzLl9zZWxl
Y3RlZFRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKKyAgICAgICAgdGhp
cy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudCwg
bmV4dFNpYmxpbmdFbGVtZW50KTsKIAogICAgICAgICAvLyBGSVhNRTogQW5pbWF0ZSB0aGUgdGFi
cyB0aGF0IG1vdmUgdG8gbWFrZSByb29tIGZvciB0aGUgc2VsZWN0ZWQgdGFiLiBUaGlzIHdhcyBj
YXVzaW5nIG1lIHRyb3VibGUgd2hlbiBJIHRyaWVkLgogCkBAIC03ODEsMTAgKzc1MSwxMCBAQCBX
SS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlmICghdGhp
cy5fbW91c2VJc0Rvd24pCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fdGFi
Q29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nLXRhYiIpOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmctdGFiIik7CiAKICAgICAgICAgaWYg
KCF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlcikgewotICAgICAgICAgICAg
dGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7
CiAgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGV0IGxlZnQgPSAwOwpAQCAtODEyLDEzICs3
ODIsMTMgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogCiAgICAg
X2hhbmRsZU1vdXNlTGVhdmUoZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fbW91c2VJ
c0Rvd24gfHwgIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyIHx8ICF0aGlz
Ll90YWJDb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikgfHwgdGhp
cy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpCisgICAgICAg
IGlmICh0aGlzLl9tb3VzZUlzRG93biB8fCAhdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1v
dXNlRW50ZXIgfHwgIXRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlv
dXQiKSB8fCB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBUaGlzIGV2ZW50IGNhbiBzdGlsbCBmaXJl
IHdoZW4gdGhlIG1vdXNlIGlzIGluc2lkZSB0aGUgZWxlbWVudCBpZiBET00gbm9kZXMgYXJlIGFk
ZGVkLCByZW1vdmVkIG9yIGdlbmVyYWxseSBjaGFuZ2UgaW5zaWRlLgogICAgICAgICAvLyBDaGVj
ayBpZiB0aGUgbW91c2UgcmVhbGx5IGRpZCBsZWF2ZSB0aGUgZWxlbWVudCBieSBjaGVja2luZyB0
aGUgYm91bmRzLgogICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBhIFdlYktpdCBidWcgb3IgY29y
cmVjdCBiZWhhdmlvcj8KLSAgICAgICAgbGV0IGJhclJlY3QgPSB0aGlzLl90YWJDb250YWluZXIu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGNvbnN0IGJhclJlY3QgPSB0aGlzLmVs
ZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgIGlmIChldmVudC5wYWdlWSA+
IGJhclJlY3QudG9wICYmIGV2ZW50LnBhZ2VZIDwgYmFyUmVjdC5ib3R0b20gJiYgZXZlbnQucGFn
ZVggPiBiYXJSZWN0LmxlZnQgJiYgZXZlbnQucGFnZVggPCBiYXJSZWN0LnJpZ2h0KQogICAgICAg
ICAgICAgcmV0dXJuOwogCkBAIC04MzAsNyArODAwLDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFi
QmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXSS5Db250ZXh0
TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOwogCiAgICAgICAgIGZvciAobGV0IHRhYkNsYXNz
IG9mIFdJLmtub3duVGFiQ2xhc3NlcygpKSB7Ci0gICAgICAgICAgICBpZiAoIXRhYkNsYXNzLmlz
VGFiQWxsb3dlZCgpIHx8ICF0YWJDbGFzcy5zaG91bGRTYXZlVGFiKCkpCisgICAgICAgICAgICBp
ZiAoIXRhYkNsYXNzLmlzVGFiQWxsb3dlZCgpIHx8IHRhYkNsYXNzLnRhYkluZm8oKS5pc0VwaGVt
ZXJhbCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgbGV0IG9wZW5U
YWJCYXJJdGVtID0gbnVsbDsKQEAgLTg2NCw0ICs4MzQsNSBAQCBXSS5UYWJCYXIuRXZlbnQgPSB7
CiAgICAgVGFiQmFySXRlbUFkZGVkOiAidGFiLWJhci10YWItYmFyLWl0ZW0tYWRkZWQiLAogICAg
IFRhYkJhckl0ZW1SZW1vdmVkOiAidGFiLWJhci10YWItYmFyLWl0ZW0tcmVtb3ZlZCIsCiAgICAg
VGFiQmFySXRlbXNSZW9yZGVyZWQ6ICJ0YWItYmFyLXRhYi1iYXItaXRlbXMtcmVvcmRlcmVkIiwK
KyAgICBPcGVuRGVmYXVsdFRhYjogInRhYi1iYXItb3Blbi1kZWZhdWx0LXRhYiIKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJ
dGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFy
SXRlbS5qcwppbmRleCBjZWY5ZDU2ODcwZmY1OTFkNWZkYzA3YzAyNGIxNzNmM2UzOGE0ZWFiLi5j
ODY3NmQwOWY3ZjVmNDgyOGY4NzRlMzliMTY5MjVhZTc2NTljOTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhckl0ZW0uanMK
QEAgLTI0LDExICsyNCwxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdJLlRhYkJhckl0ZW0gPSBjbGFzcyBUYWJCYXJJdGVtCitXSS5UYWJCYXJJdGVtID0g
Y2xhc3MgVGFiQmFySXRlbSBleHRlbmRzIFdJLk9iamVjdAogewotICAgIGNvbnN0cnVjdG9yKHJl
cHJlc2VudGVkT2JqZWN0LCBpbWFnZSwgdGl0bGUpCisgICAgY29uc3RydWN0b3IoaW1hZ2UsIHRp
dGxlLCByZXByZXNlbnRlZE9iamVjdCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3JlcHJlc2VudGVk
T2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3QgfHwgbnVsbDsKKyAgICAgICAgc3VwZXIoKTsKKwog
ICAgICAgICB0aGlzLl9wYXJlbnRUYWJCYXIgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX2VsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTQ3LDEyICs0OCwxNSBAQCBX
SS5UYWJCYXJJdGVtID0gY2xhc3MgVGFiQmFySXRlbQogCiAgICAgICAgIHRoaXMudGl0bGUgPSB0
aXRsZTsKICAgICAgICAgdGhpcy5pbWFnZSA9IGltYWdlOworICAgICAgICB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAK
ICAgICBnZXQgZWxlbWVudCgpIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7IH0KKwogICAgIGdldCBy
ZXByZXNlbnRlZE9iamVjdCgpIHsgcmV0dXJuIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0OyB9Cisg
ICAgc2V0IHJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KSB7IHRoaXMuX3JlcHJl
c2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3QgfHwgbnVsbDsgfQogCiAgICAgZ2V0IHBh
cmVudFRhYkJhcigpIHsgcmV0dXJuIHRoaXMuX3BhcmVudFRhYkJhcjsgfQogICAgIHNldCBwYXJl
bnRUYWJCYXIodGFiQmFyKXsgdGhpcy5fcGFyZW50VGFiQmFyID0gdGFiQmFyIHx8IG51bGw7IH0K
QEAgLTc5LDE3ICs4MywxNyBAQCBXSS5UYWJCYXJJdGVtID0gY2xhc3MgVGFiQmFySXRlbQogCiAg
ICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKQogICAgIHsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QudG9nZ2xlKCJkaXNhYmxlZCIsICEhZGlzYWJsZWQpOworICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImRpc2FibGVkIiwgZGlzYWJsZWQpOwogICAgIH0KIAot
ICAgIGdldCBoaWRkZW4oKQorICAgIGdldCBpc0RlZmF1bHRUYWIoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJoaWRkZW4iKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJkZWZhdWx0LXRhYiIp
OwogICAgIH0KIAotICAgIHNldCBoaWRkZW4oaGlkZGVuKQorICAgIHNldCBpc0RlZmF1bHRUYWIo
aXNEZWZhdWx0VGFiKQogICAgIHsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9n
Z2xlKCJoaWRkZW4iLCAhIWhpZGRlbik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LnRvZ2dsZSgiZGVmYXVsdC10YWIiLCBpc0RlZmF1bHRUYWIpOwogICAgIH0KIAogICAgIGdldCBp
bWFnZSgpIHsgcmV0dXJuIHRoaXMuX2ljb25FbGVtZW50LnNyYzsgfQpAQCAtMTEwLDggKzExNCw2
IEBAIFdJLlRhYkJhckl0ZW0gPSBjbGFzcyBUYWJCYXJJdGVtCiAgICAgICAgIHRoaXMudGl0bGVE
aWRDaGFuZ2UoKTsKICAgICB9CiAKLSAgICAvLyBQcm90ZWN0ZWQKLQogICAgIHRpdGxlRGlkQ2hh
bmdlKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93
c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJv
d3Nlci5qcwppbmRleCA1Y2U3NzEzZWQ3MWU3ZGUyNWM2Mzk1OTgwMzMyMGVlOWViMDQyNTM3Li43
NmUxN2YzOWMzMzlmMzAyNTJkY2ZjNGQxZTQ4Zjc3YzNjM2Y1OTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMK
QEAgLTE2OCw3ICsxNjgsNyBAQCBXSS5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRl
bmRzIFdJLlZpZXcKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fdGFiQmFyLmFkZFRh
YkJhckl0ZW0odGFiQmFySXRlbSwgb3B0aW9ucyk7CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzLmxlbmd0aCA9PT0gdGhpcy5fdGFiQmFyLnRhYkNv
dW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdz
Lmxlbmd0aCA9PT0gdGhpcy5fdGFiQmFyLnNhdmVhYmxlVGFiQ291bnQpOwogICAgICAgICBjb25z
b2xlLmFzc2VydCghdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3IHx8IHRoaXMuc2VsZWN0ZWRU
YWJDb250ZW50VmlldyA9PT0gdGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzWzBdKTsKIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBXSS5UYWJCcm93c2VyID0gY2xh
c3MgVGFiQnJvd3NlciBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICB0aGlzLl90YWJCYXIucmVt
b3ZlVGFiQmFySXRlbSh0YWJDb250ZW50Vmlldy50YWJCYXJJdGVtLCBvcHRpb25zKTsKIAotICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3RoID09
PSB0aGlzLl90YWJCYXIudGFiQ291bnQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9y
ZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3RoID09PSB0aGlzLl90YWJCYXIuc2F2ZWFibGVUYWJD
b3VudCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZp
ZXcgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNlbnRUYWJDb250
ZW50Vmlld3NbMF0pOwogCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjQxLDcgKzI0MSw3IEBA
IFdJLlRhYkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVuZHMgV0kuVmlldwogICAgICAg
ICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KHRhYkNvbnRl
bnRWaWV3KTsKIAogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5zZWxlY3RlZFRhYkNv
bnRlbnRWaWV3KTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY2VudFRhYkNv
bnRlbnRWaWV3cy5sZW5ndGggPT09IHRoaXMuX3RhYkJhci50YWJDb3VudCk7CisgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3RoID09PSB0
aGlzLl90YWJCYXIuc2F2ZWFibGVUYWJDb3VudCk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgPT09IHRoaXMuX3JlY2VudFRhYkNvbnRlbnRW
aWV3c1swXSB8fCAhc2hvdWxkU2F2ZVRhYik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3cygpOwpAQCAt
Mjg3LDEyICsyODcsMTIgQEAgV0kuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5k
cyBXSS5WaWV3CiAKICAgICAgICAgdGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzLnJlbW92ZSh0
YWJDb250ZW50Vmlldyk7CiAKLSAgICAgICAgaWYgKHRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9y
LnNob3VsZFNhdmVUYWIoKSkKKyAgICAgICAgaWYgKCF0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rv
ci50YWJJbmZvKCkuaXNFcGhlbWVyYWwpCiAgICAgICAgICAgICB0aGlzLl9jbG9zZWRUYWJDbGFz
c2VzLmFkZCh0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rvcik7CiAKICAgICAgICAgdGhpcy5fY29u
dGVudFZpZXdDb250YWluZXIuY2xvc2VDb250ZW50Vmlldyh0YWJDb250ZW50Vmlldyk7CiAKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzLmxlbmd0aCA9
PT0gdGhpcy5fdGFiQmFyLnRhYkNvdW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5f
cmVjZW50VGFiQ29udGVudFZpZXdzLmxlbmd0aCA9PT0gdGhpcy5fdGFiQmFyLnNhdmVhYmxlVGFi
Q291bnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRW
aWV3IHx8IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyA9PT0gdGhpcy5fcmVjZW50VGFiQ29u
dGVudFZpZXdzWzBdKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKaW5kZXggOWExYjYy
NmI0MDAyOWI0ODE1MDkyNjk3ZGNjNDAzZmEzY2JjZTJmNi4uYWU5MDY1ZjkyMTZmYWRkNWZiY2E1
MTk2Y2Q2NzA5ZDQwMzkzNTA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKQEAgLTI1LDMwICsy
NSwzOCBAQAogCiBXSS5UYWJDb250ZW50VmlldyA9IGNsYXNzIFRhYkNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFZpZXcKIHsKLSAgICBjb25zdHJ1Y3Rvcih0YWJJbmZvLCB7bmF2aWdhdGlv
blNpZGViYXJQYW5lbENvbnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3Jz
fSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIHN0eWxlQ2xhc3NOYW1lcywgdGFi
QmFySXRlbSwgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJh
clBhbmVsQ29uc3RydWN0b3JzKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIW5hdmln
YXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciB8fCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29u
c3RydWN0b3IucHJvdG90eXBlIGluc3RhbmNlb2YgV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbCk7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3Jz
IHx8IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMuZXZlcnkoKGRldGFpbHNTaWRlYmFy
UGFuZWxDb25zdHJ1Y3RvcikgPT4gZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9yLnByb3Rv
dHlwZSBpbnN0YW5jZW9mIFdJLkRldGFpbHNTaWRlYmFyUGFuZWwpKTsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodHlwZW9mIGlkZW50aWZpZXIgPT09ICJzdHJpbmciKTsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodHlwZW9mIHN0eWxlQ2xhc3NOYW1lcyA9PT0gInN0cmluZyIgfHwgc3R5bGVDbGFz
c05hbWVzLmV2ZXJ5KChjbGFzc05hbWUpID0+IHR5cGVvZiBjbGFzc05hbWUgPT09ICJzdHJpbmci
KSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhYkJhckl0ZW0gaW5zdGFuY2VvZiBXSS5UYWJC
YXJJdGVtKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIW5hdmlnYXRpb25TaWRlYmFyUGFuZWxD
b25zdHJ1Y3RvciB8fCB0eXBlb2YgbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yID09
PSAiZnVuY3Rpb24iKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWRldGFpbHNTaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvcnMgfHwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycy5ldmVyeSgo
ZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9yKSA9PiB0eXBlb2YgZGV0YWlsc1NpZGViYXJQ
YW5lbENvbnN0cnVjdG9yID09PSAiZnVuY3Rpb24iKSk7CiAKICAgICAgICAgc3VwZXIobnVsbCk7
CiAKLSAgICAgICAgdGhpcy5faWRlbnRpZmllciA9IHRhYkluZm8uaWRlbnRpZmllcjsKLSAgICAg
ICAgdGhpcy5fdGFiQmFySXRlbSA9IHRoaXMuY29uc3RydWN0b3Iuc2hvdWxkUGluVGFiKCkgPyBX
SS5QaW5uZWRUYWJCYXJJdGVtLmZyb21UYWJDb250ZW50Vmlldyh0aGlzKSA6IFdJLkdlbmVyYWxU
YWJCYXJJdGVtLmZyb21UYWJDb250ZW50Vmlldyh0aGlzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoInRhYiIpOworCisgICAgICAgIGlmICh0eXBlb2Ygc3R5bGVDbGFzc05h
bWVzID09PSAic3RyaW5nIikKKyAgICAgICAgICAgIHN0eWxlQ2xhc3NOYW1lcyA9IFtzdHlsZUNs
YXNzTmFtZXNdOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKC4uLnN0eWxl
Q2xhc3NOYW1lcyk7CisKKyAgICAgICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7Cisg
ICAgICAgIHRoaXMuX3RhYkJhckl0ZW0gPSB0YWJCYXJJdGVtOwogICAgICAgICB0aGlzLl9uYXZp
Z2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IgPSBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29u
c3RydWN0b3IgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0
cnVjdG9ycyA9IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgfHwgW107CiAKICAgICAg
ICAgY29uc3QgZGVmYXVsdFNpZGViYXJXaWR0aCA9IDMwMDsKIAotICAgICAgICB0aGlzLl9uYXZp
Z2F0aW9uU2lkZWJhckNvbGxhcHNlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyh0aGlzLl9pZGVu
dGlmaWVyICsgIi1uYXZpZ2F0aW9uLXNpZGViYXItY29sbGFwc2VkIiwgZmFsc2UpOwotICAgICAg
ICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhcldpZHRoU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKHRo
aXMuX2lkZW50aWZpZXIgKyAiLW5hdmlnYXRpb24tc2lkZWJhci13aWR0aCIsIGRlZmF1bHRTaWRl
YmFyV2lkdGgpOwotCi0gICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyQ29sbGFwc2VkU2V0dGlu
ZyA9IG5ldyBXSS5TZXR0aW5nKHRoaXMuX2lkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci1j
b2xsYXBzZWQiLCAhdGhpcy5kZXRhaWxzU2lkZWJhckV4cGFuZGVkQnlEZWZhdWx0KTsKLSAgICAg
ICAgdGhpcy5fZGV0YWlsc1NpZGViYXJTZWxlY3RlZFBhbmVsU2V0dGluZyA9IG5ldyBXSS5TZXR0
aW5nKHRoaXMuX2lkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci1zZWxlY3RlZC1wYW5lbCIs
IG51bGwpOwotICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZyA9IG5ldyBX
SS5TZXR0aW5nKHRoaXMuX2lkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci13aWR0aCIsIGRl
ZmF1bHRTaWRlYmFyV2lkdGgpOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhckNvbGxh
cHNlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhpZGVudGlmaWVyICsgIi1uYXZpZ2F0aW9uLXNp
ZGViYXItY29sbGFwc2VkIiwgZmFsc2UpOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJh
cldpZHRoU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLW5hdmlnYXRpb24t
c2lkZWJhci13aWR0aCIsIGRlZmF1bHRTaWRlYmFyV2lkdGgpOwogCi0gICAgICAgIHRoaXMuX2Nv
b2tpZVNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyh0aGlzLl9pZGVudGlmaWVyICsgIi10YWItY29v
a2llIiwge30pOworICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhckNvbGxhcHNlZFNldHRpbmcg
PSBuZXcgV0kuU2V0dGluZyhpZGVudGlmaWVyICsgIi1kZXRhaWxzLXNpZGViYXItY29sbGFwc2Vk
IiwgIXRoaXMuZGV0YWlsc1NpZGViYXJFeHBhbmRlZEJ5RGVmYXVsdCk7CisgICAgICAgIHRoaXMu
X2RldGFpbHNTaWRlYmFyU2VsZWN0ZWRQYW5lbFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhpZGVu
dGlmaWVyICsgIi1kZXRhaWxzLXNpZGViYXItc2VsZWN0ZWQtcGFuZWwiLCBudWxsKTsKKyAgICAg
ICAgdGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhpZGVu
dGlmaWVyICsgIi1kZXRhaWxzLXNpZGViYXItd2lkdGgiLCBkZWZhdWx0U2lkZWJhcldpZHRoKTsK
IAotICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiIiwgdGhpcy5faWRlbnRp
Zmllcik7CisgICAgICAgIHRoaXMuX2Nvb2tpZVNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhpZGVu
dGlmaWVyICsgIi10YWItY29va2llIiwge30pOwogICAgIH0KIAogICAgIHN0YXRpYyBpc1RhYkFs
bG93ZWQoKQpAQCAtNTcsMTIgKzY1LDYgQEAgV0kuVGFiQ29udGVudFZpZXcgPSBjbGFzcyBUYWJD
b250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIHN0YXRpYyBzaG91bGRQaW5UYWIoKQotICAgIHsKLSAgICAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSB0YWIgc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIGJlIGNsb3NlZC4K
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIHN0YXRpYyBzaG91bGRTYXZlVGFi
KCkKICAgICB7CiAgICAgICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIHRhYiBzaG91bGQgbm90
IGJlIHJlc3RvcmVkIHdoZW4gcmUtb3BlbmluZyB0aGUgSW5zcGVjdG9yLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmll
dy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGlu
ZU92ZXJ2aWV3LmNzcwppbmRleCA2NmU5MTdlNjUxY2Q1M2Q5YmU3NDM1YTk3NDY5MmUxYzU4YjE2
Zjg0Li45N2ZkODcxODcyMjEzZTVmMTI3ZmFkNjFhNDgxNTM2ZTdlYTQ3NjkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2
aWV3LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZU92ZXJ2aWV3LmNzcwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvZHlbZGlyPXJ0bF0gLnRp
bWVsaW5lLW92ZXJ2aWV3Om5vdCguZnJhbWVzKSA+IDptYXRjaGVzKC5zY3JvbGwtY29udGFpbmVy
LCAudGltCiB9CiAKIC50aW1lbGluZS1vdmVydmlldyA+IC50cmVlLW91dGxpbmUudGltZWxpbmVz
IC5pdGVtLnNlbGVjdGVkICsgLml0ZW0sCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwg
LndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50aW1lbGluZS1vdmVydmlldyA+IC50cmVlLW91dGxp
bmUudGltZWxpbmVzIC5pdGVtLnNlbGVjdGVkICsgLml0ZW0geworYm9keS53aW5kb3ctaW5hY3Rp
dmUgLnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRyZWUtb3V0bGluZS50aW1lbGluZXMgLml0ZW0uc2Vs
ZWN0ZWQgKyAuaXRlbSB7CiAgICAgYm9yZGVyLXRvcC1jb2xvcjogaHNsKDAsIDAlLCA4MyUpOwog
fQogCkBAIC0yNDYsNyArMjQ2LDcgQEAgYm9keVtkaXI9cnRsXSAudGltZWxpbmUtb3ZlcnZpZXcg
PiAuc2Nyb2xsLWNvbnRhaW5lciA+IC5zY3JvbGwtd2lkdGgtc2l6ZXIgewogICAgIH0KIAogICAg
IC50aW1lbGluZS1vdmVydmlldyA+IC50cmVlLW91dGxpbmUudGltZWxpbmVzIC5pdGVtLnNlbGVj
dGVkICsgLml0ZW0sCi0gICAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ct
ZG9ja2VkLWluYWN0aXZlKSAudGltZWxpbmUtb3ZlcnZpZXcgPiAudHJlZS1vdXRsaW5lLnRpbWVs
aW5lcyAuaXRlbS5zZWxlY3RlZCArIC5pdGVtIHsKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAu
dGltZWxpbmUtb3ZlcnZpZXcgPiAudHJlZS1vdXRsaW5lLnRpbWVsaW5lcyAuaXRlbS5zZWxlY3Rl
ZCArIC5pdGVtIHsKICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogaHNsYSgwLCAwJSwgdmFyKC0t
Zm9yZWdyb3VuZC1saWdodG5lc3MpLCAwLjA5KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEZyYW1l
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
UmVjb3JkRnJhbWUuY3NzCmluZGV4IGQ4M2VjZDM3NTRiMGQ1MmM1NjBhZDM1OGFhOWI1ZWE5ODBi
ZjU0MjIuLmY3M2U3ODhhYjAzODQyYzY3YTVjZmNiZTkwZTE4NGIwYzY0MWM4MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVj
b3JkRnJhbWUuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lUmVjb3JkRnJhbWUuY3NzCkBAIC01Myw3ICs1Myw3IEBACiAgICAgYmFja2dy
b3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB2YXIoLS1zZWxlY3RlZC10ZXh0LWJhY2tn
cm91bmQtY29sb3IpLCB2YXIoLS1zZWxlY3RlZC10ZXh0LWJhY2tncm91bmQtY29sb3IpKSBuby1y
ZXBlYXQgMXB4IC0xcHg7CiB9CiAKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2lu
ZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRpbWVsaW5lLXJlY29yZC1mcmFtZS5zZWxlY3RlZCB7Citi
b2R5LndpbmRvdy1pbmFjdGl2ZSAudGltZWxpbmUtcmVjb3JkLWZyYW1lLnNlbGVjdGVkIHsKICAg
ICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIGhzbCgwLCAwJSwgOTYlKSwg
aHNsKDAsIDAlLCA5NiUpKSBuby1yZXBlYXQgMXB4IC0xcHg7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuY3Nz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxl
ci5jc3MKaW5kZXggMzAwMmZiNDI4ZTU5YTZlMWQxNmM0MmNmZTY2MTU0NWJhOTg1YTg1NC4uYzhi
MDI0YTEzNjVhODFkOTZhYzJkZGY1NTE2ZDQzNDQwYTk4YWI2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5jc3MKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxl
ci5jc3MKQEAgLTc0LDcgKzc0LDcgQEAgYm9keVtkaXI9cnRsXSAudGltZWxpbmUtcnVsZXIgPiAu
bWFya2VycyA+IDptYXRjaGVzKC5kaXZpZGVyLCAubWFya2VyKSB7CiAgICAgYmFja2dyb3VuZC1p
bWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsYSgwLCAwJSwgNzAlLCAwKSwgaHNs
YSgwLCAwJSwgNzAlLCAyKSA4NSUpOwogfQogCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2
ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50aW1lbGluZS1ydWxlciA+IC5oZWFkZXIgPiAu
ZGl2aWRlciB7Citib2R5LndpbmRvdy1pbmFjdGl2ZSAudGltZWxpbmUtcnVsZXIgPiAuaGVhZGVy
ID4gLmRpdmlkZXIgewogICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBi
b3R0b20sIGhzbGEoMCwgMCUsIDg1JSwgMCksIGhzbGEoMCwgMCUsIDg1JSwgMSkgODUlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMKaW5kZXggMjYyZDRlZDMxODhi
MGE5NTIxZjExMWZlNmE4MDkyOWZmOWRkZjg3Ny4uYzczOTYyNTczYjYxMThmM2Q3ZTA0ZTc2NjI3
ZWY3MDgzYTI5NzMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzCkBA
IC0yNSw5ICsyNSwxMCBAQAogCiBXSS5UaW1lbGluZVRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgVGlt
ZWxpbmVUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZp
ZXcKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHN1cGVyKFRpbWVsaW5lVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKyAg
ICAgICAgbGV0IHRhYkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhX
SS5UaW1lbGluZVRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisgICAgICAgIHN1cGVyKGlkZW50
aWZpZXIgfHwgInRpbWVsaW5lIiwgInRpbWVsaW5lIiwgdGFiQmFySXRlbSk7CiAKICAgICAgICAg
Ly8gTWFpbnRhaW4gYW4gaW52aXNpYmxlIHRyZWUgb3V0bGluZSBjb250YWluaW5nIHRyZWUgZWxl
bWVudHMgZm9yIGFsbCByZWNvcmRpbmdzLgogICAgICAgICAvLyBUaGUgdmlzaWJsZSByZWNvcmRp
bmcncyB0cmVlIGVsZW1lbnQgaXMgc2VsZWN0ZWQgd2hlbiB0aGUgY29udGVudCB2aWV3IGNoYW5n
ZXMuCkBAIC0xMDEsNyArMTAyLDYgQEAgV0kuVGltZWxpbmVUYWJDb250ZW50VmlldyA9IGNsYXNz
IFRpbWVsaW5lVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3MKICAgICBzdGF0
aWMgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWRlbnRp
ZmllcjogVGltZWxpbmVUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJ
bWFnZXMvVGltZWxpbmUuc3ZnIiwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiVGlt
ZWxpbmVzIiksCiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MTJiYTM5ZWNiYTBm
NGFkMTQ1NDUwZTRhMjJhNDU0NGEwNjU5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmNzcwpAQCAtMCwwICsxLDI0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnRvb2xiYXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICByaWdodDogMDsKKyAgICBoZWlnaHQ6
IHZhcigtLXRvb2xiYXItaGVpZ2h0KTsKKworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgcGFkZGlu
Zy10b3A6IDNweDsKKyAgICBwYWRkaW5nLWJvdHRvbTogM3B4OworCisgICAgd2hpdGUtc3BhY2U6
IG5vd3JhcDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworCisgICAgb3V0bGluZTogbm9uZTsKKwor
ICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAw
JSwgOTIlKSwgaHNsKDAsIDAlLCA4NyUpKTsKKyAgICBib3gtc2hhZG93OiBpbnNldCBoc2xhKDAs
IDAlLCAxMDAlLCAwLjUpIDAgMXB4IDFweDsKK30KKworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRv
b2xiYXIgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogaHNsKDAsIDAlLCA5NiUpOworfQorCitib2R5Lm1hYy1wbGF0Zm9ybTpub3QoLmRvY2tlZCkg
LnRvb2xiYXIgeworICAgIHBhZGRpbmctdG9wOiAyMXB4OworfQorCitib2R5Lm1hYy1wbGF0Zm9y
bTpub3QoLmRvY2tlZCkgeworICAgIC0tdG9vbGJhci1oZWlnaHQ6IDU0cHg7Cit9CisKKy50b29s
YmFyIC5jb250cm9sLXNlY3Rpb24geworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleC1kaXJl
Y3Rpb246IHJvdzsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAgIGp1c3RpZnktY29udGVu
dDogY2VudGVyOworICAgIG1pbi13aWR0aDogbWluLWNvbnRlbnQ7CisgICAgLXdlYmtpdC1wYWRk
aW5nLXN0YXJ0OiA2cHg7CisgICAgLXdlYmtpdC1wYWRkaW5nLWVuZDogMnB4OworfQorCisudG9v
bGJhciAuaXRlbS1zZWN0aW9uIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGZsZXg6IDE7Cisg
ICAgbWluLXdpZHRoOiBtaW4tY29udGVudDsKK30KKworLnRvb2xiYXIgLml0ZW0tc2VjdGlvbi5s
ZWZ0IHsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cit9CisKKy50b29sYmFyIC5p
dGVtLXNlY3Rpb24uY2VudGVyLWxlZnQgeworICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFy
dDsKK30KKworLnRvb2xiYXIgLml0ZW0tc2VjdGlvbi5jZW50ZXItcmlnaHQgeworICAgIGp1c3Rp
ZnktY29udGVudDogY2VudGVyOworfQorCisudG9vbGJhciAuaXRlbS1zZWN0aW9uLmNlbnRlciB7
CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cit9CisKKy50b29sYmFyIC5pdGVtLXNlY3Rp
b24ucmlnaHQgeworICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CisgICAgcGFkZGluZy1y
aWdodDogNHB4OworfQorCisudG9vbGJhciAuaXRlbSB7CisgICAgZGlzcGxheTogZmxleDsKKyAg
ICBvdXRsaW5lOiBub25lOworfQorCisudG9vbGJhciAuc2VhcmNoLWJhciB7CisgICAgd2lkdGg6
IDEwMCU7CisgICAgbWluLXdpZHRoOiAxMjVweDsKK30KKworLnRvb2xiYXIgLnNlYXJjaC1iYXIg
PiBpbnB1dFt0eXBlPSJzZWFyY2giXSB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgZm9udC1zaXpl
OiAxMnB4OworICAgIGJhY2tncm91bmQtY2xpcDogaW5pdGlhbDsKKyAgICBtYXJnaW46IDRweDsK
K30KKworLnRvb2xiYXIgLml0ZW0uYnV0dG9uLAorLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1
dFt0eXBlPSJzZWFyY2giXSwKKy50b29sYmFyIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICBi
YWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoaHNsKDAsIDAlLCA5OSUpLCB2YXIoLS1w
YW5lbC1iYWNrZ3JvdW5kLWNvbG9yKSk7CisgICAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUs
IDAuMykgMCAxcHggMXB4IC0xcHg7CisKKyAgICBib3JkZXItcmFkaXVzOiA0cHg7CisgICAgYm9y
ZGVyOiAxcHggc29saWQgaHNsKDAsIDElLCA4MiUpOworICAgIGJvcmRlci10b3AtY29sb3I6IGhz
bCgwLCAwJSwgODMlKTsKKyAgICBib3JkZXItYm90dG9tLWNvbG9yOiBoc2woMCwgMCUsIDc2JSk7
Cit9CisKKy50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl0geworICAg
IGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDAlLCAwLjMpIDAgMXB4IDFweCAtMXB4LCAwIDAgMCA3
cHggaHNsYSgyMTEsIDk2JSwgNDglLCAwKTsKKyAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IC4y
NXMgY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0MCwgMC40NDAsIDEpIC8qIGVhc2VPdXRRdWFydCAq
LzsKK30KKworLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXTpmb2N1
cyB7CisgICAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUsIDAuMTUpIDAgMXB4IDAsIDAgMCAw
IDNweCBoc2xhKDIxMSwgOTYlLCA0OCUsIDAuNCk7Cit9CisKK0BtZWRpYSAoLXdlYmtpdC1taW4t
ZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSB7CisgICAgLnRvb2xiYXIgLml0ZW0uYnV0dG9uLAorICAg
IC50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl0sCisgICAgLnRvb2xi
YXIgLmRhc2hib2FyZC1jb250YWluZXIgeworICAgICAgICBib3JkZXI6IDAuNXB4IHNvbGlkIGhz
bCgwLCAwJSwgNzglKTsKKyAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogaHNsKDAsIDAlLCA4MCUp
OworICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiBoc2woMCwgMCUsIDY1JSk7CisgICAgfQor
fQorCisudG9vbGJhciAuaXRlbS5idXR0b246YWN0aXZlIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdl
OiBsaW5lYXItZ3JhZGllbnQoaHNsKDAsIDAlLCA4OSUpLCBoc2woMCwgMCUsIDg2JSkpOworICAg
IGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDAlLCAwLjMpIDAgMXB4IDFweCAtMXB4LCBpbnNldCAw
IDFweCAxcHggLTFweCB3aGl0ZTsKK30KKworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIg
Lml0ZW0uYnV0dG9uLAorYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLnNlYXJjaC1iYXIg
PiBpbnB1dFt0eXBlPSJzZWFyY2giXSwKK2JvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5k
YXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICBvcGFjaXR5OiAwLjY1OworICAgIGJvcmRlci1jb2xv
cjogaHNsYSgwLCAwJSwgMCUsIDAuMTUpOworICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFy
ZW50OworICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cit9CisKK0BtZWRpYSAoLXdlYmtpdC1t
aW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSB7CisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRv
b2xiYXIgLml0ZW0uYnV0dG9uLAorICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5z
ZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl0sCisgICAgYm9keS53aW5kb3ctaW5hY3Rp
dmUgLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIgeworICAgICAgICBib3gtc2hhZG93OiBp
bnNldCAwIDAgMXB4IDAgaHNsYSgwLCAwJSwgMCUsIDAuMSk7CisgICAgfQorfQorCitAbWVkaWEg
KG1heC13aWR0aDogNTM5cHgpIHsKKyAgICAudG9vbGJhciAuaXRlbS5kb3dubG9hZCB7CisgICAg
ICAgIGRpc3BsYXk6IG5vbmU7CisgICAgfQorfQorCitAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSB7CisgICAgLnRvb2xiYXIgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBs
aW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDI2JSksIGhzbCgwLCAwJSwgMjMl
KSk7CisgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CisgICAgfQorCisgICAgYm9keS53aW5kb3ct
aW5hY3RpdmUgLnRvb2xiYXIgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNr
Z3JvdW5kLWNvbG9yKTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuaXRlbS5idXR0b24sCisgICAg
LnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSB7CisgICAgICAgIGJh
Y2tncm91bmQtaW1hZ2U6IG5vbmU7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1
dHRvbi1iYWNrZ3JvdW5kLWNvbG9yKTsKKyAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1idXR0
b24tYmFja2dyb3VuZC1jb2xvcik7CisgICAgICAgIGJvcmRlci10b3AtY29sb3I6IGhzbGEoMCwg
MTAwJSwgMTAwJSwgMC4yKTsKKyAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKKyAgICB9CisKKyAg
ICAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdIHsKKyAgICAgICAg
Y29sb3I6IHZhcigtLXRleHQtY29sb3IpOworICAgIH0KKworICAgIC50b29sYmFyIC5zZWFyY2gt
YmFyID4gaW5wdXRbdHlwZT0ic2VhcmNoIl06Zm9jdXMgeworICAgICAgICBjb2xvcjogdmFyKC0t
dGV4dC1jb2xvci1hY3RpdmUpOworCisgICAgICAgIC8qIEZJWE1FOiBVc2UgbmF0aXZlIG91dGxp
bmUgZm9yIHRoZSBkZWZhdWx0IHRoZW1lIGFzIHdlbGwuICovCisgICAgICAgIGJveC1zaGFkb3c6
IHVuc2V0OworICAgICAgICB0cmFuc2l0aW9uOiB1bnNldDsKKyAgICAgICAgb3V0bGluZTogLXdl
YmtpdC1mb2N1cy1yaW5nLWNvbG9yIGF1dG8gNXB4OworICAgICAgICBvdXRsaW5lLW9mZnNldDog
LTNweDsKKyAgICB9CisKKyAgICAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNl
YXJjaCJdOjpwbGFjZWhvbGRlciB7CisgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLXNl
Y29uZGFyeSk7CisgICAgfQorCisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLnNl
YXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXTo6cGxhY2Vob2xkZXIgeworICAgICAgICBj
b2xvcjogdmFyKC0tdGV4dC1jb2xvci10ZXJ0aWFyeSk7CisgICAgfQorCisgICAgYm9keS53aW5k
b3ctaW5hY3RpdmUgLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXTo6
LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24geworICAgICAgICAvKiBTZXR0aW5nIGBjb2xv
cmAgaGFzIG5vIGVmZmVjdCBvbiB0aGUgbWFnbmlmeWluZyBnbGFzcyBpY29uLiAqLworICAgICAg
ICBvcGFjaXR5OiAwLjU7CisgICAgfQorCisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWlu
ZXIgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB2YXIoLS1kYXNoYm9hcmQtYmFja2dyb3VuZC1jb2xvcik7CisgICAgICAgIGJvcmRl
ci1jb2xvcjogdmFyKC0tZGFzaGJvYXJkLWJhY2tncm91bmQtY29sb3IpOworICAgICAgICBib3Jk
ZXItdG9wLWNvbG9yOiBoc2xhKDAsIDEwMCUsIDEwMCUsIDAuMSk7CisgICAgICAgIGJveC1zaGFk
b3c6IG5vbmU7CisgICAgfQorCisgICAgLnRvb2xiYXIgLml0ZW0uYnV0dG9uOmFjdGl2ZSB7Cisg
ICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CisgICAgICAgIGJvcmRlci10b3AtY29sb3I6
IGhzbGEoMCwgMTAwJSwgMTAwJSwgMC4yKTsKKyAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKKyAg
ICB9CisKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuaXRlbS5idXR0b24sCisg
ICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBl
PSJzZWFyY2giXSwKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuZGFzaGJvYXJk
LWNvbnRhaW5lciB7CisgICAgICAgIG9wYWNpdHk6IDE7CisgICAgICAgIGNvbG9yOiB2YXIoLS1n
bHlwaC1jb2xvcik7CisgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgICAg
IGJvcmRlci10b3AtY29sb3I6IGhzbGEoMCwgMTAwJSwgMTAwJSwgMC4xKTsKKyAgICAgICAgYmFj
a2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYnV0dG9uLWJh
Y2tncm91bmQtY29sb3ItaW5hY3RpdmUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNk
N2U3ZTEyMjAxZGZiN2NjNjJlZDkyN2RlNjk1MzM3ZGVkNTc0YTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCkBA
IC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5Ub29sYmFyID0gY2xhc3MgVG9v
bGJhciBleHRlbmRzIFdJLk5hdmlnYXRpb25CYXIKK3sKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50
KQorICAgIHsKKyAgICAgICAgc3VwZXIoZWxlbWVudCwgbnVsbCwgInRvb2xiYXIiKTsKKworICAg
ICAgICB0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9
IFdJLlRvb2xiYXIuQ29udHJvbFNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCk7CisKKyAgICAg
ICAgdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisgICAgICAgIHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXSS5Ub29s
YmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXSS5Ub29sYmFyLkxlZnRJdGVt
U2VjdGlvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50KTsKKworICAgICAgICB0aGlzLl9jZW50ZXJMZWZ0U2Vj
dGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhp
cy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdJLlRvb2xiYXIuSXRlbVNl
Y3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdJLlRvb2xiYXIuQ2VudGVyTGVmdEl0ZW1TZWN0
aW9uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2NlbnRlclNlY3Rp
b25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMu
X2NlbnRlclNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdJLlRvb2xiYXIuSXRlbVNlY3Rpb25T
dHlsZUNsYXNzTmFtZSArICIgIiArIFdJLlRvb2xiYXIuQ2VudGVySXRlbVNlY3Rpb25TdHlsZUNs
YXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlclNl
Y3Rpb25FbGVtZW50KTsKKworICAgICAgICB0aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25FbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2NlbnRlclJp
Z2h0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV0kuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxl
Q2xhc3NOYW1lICsgIiAiICsgV0kuVG9vbGJhci5DZW50ZXJSaWdodEl0ZW1TZWN0aW9uU3R5bGVD
bGFzc05hbWU7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJS
aWdodFNlY3Rpb25FbGVtZW50KTsKKworICAgICAgICB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3JpZ2h0U2Vj
dGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV0kuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NO
YW1lICsgIiAiICsgV0kuVG9vbGJhci5SaWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50
KTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGFkZFRvb2xiYXJJdGVtKHRvb2xiYXJJ
dGVtLCBzZWN0aW9uSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHZhciBzZWN0aW9uRWxlbWVu
dDsKKworICAgICAgICBzd2l0Y2ggKHNlY3Rpb25JZGVudGlmaWVyKSB7CisgICAgICAgIGNhc2Ug
V0kuVG9vbGJhci5TZWN0aW9uLkNvbnRyb2w6CisgICAgICAgICAgICBzZWN0aW9uRWxlbWVudCA9
IHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgV0kuVG9vbGJhci5TZWN0aW9uLkxlZnQ6CisgICAgICAgICAgICBzZWN0aW9uRWxl
bWVudCA9IHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgV0kuVG9vbGJhci5TZWN0aW9uLkNlbnRlckxlZnQ6CisgICAgICAgICAgICBz
ZWN0aW9uRWxlbWVudCA9IHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudDsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIGNhc2UgV0kuVG9vbGJhci5T
ZWN0aW9uLkNlbnRlcjoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fY2VudGVy
U2VjdGlvbkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLlRv
b2xiYXIuU2VjdGlvbi5DZW50ZXJSaWdodDoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0g
dGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgV0kuVG9vbGJhci5TZWN0aW9uLlJpZ2h0OgorICAgICAgICAgICAgc2VjdGlv
bkVsZW1lbnQgPSB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50OworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xlLmFzc2VydChzZWN0aW9uRWxlbWVudCk7CisK
KyAgICAgICAgdGhpcy5hZGROYXZpZ2F0aW9uSXRlbSh0b29sYmFySXRlbSwgc2VjdGlvbkVsZW1l
bnQpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAgbGF5b3V0KCkKKyAgICB7Cisg
ICAgICAgIC8vIEJhaWwgZWFybHkgaWYgb3VyIHNlY3Rpb25zIGFyZSBub3QgY3JlYXRlZCB5ZXQu
IFRoaXMgbWVhbnMgd2UgYXJlIGJlaW5nIGNhbGxlZCBkdXJpbmcgY29uc3RydWN0aW9uLgorICAg
ICAgICBpZiAoIXRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCB8fCAhdGhpcy5fY2VudGVyU2VjdGlv
bkVsZW1lbnQgfHwgIXRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgLy8gRm9yY2UgY29sbGFwc2VkIHN0eWxlIGZvciBub24tV2ViIGRlYnVn
Z2FibGVzLgorICAgICAgICBpZiAoIVdJLnNoYXJlZEFwcC5pc1dlYkRlYnVnZ2FibGUoKSkgewor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuTmF2aWdhdGlvbkJhci5D
b2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBzdHlsZSBjbGFzcyB0byB0ZXN0IGlm
IHRoZSBpdGVtcyBjYW4gZml0IGF0IGZ1bGwgd2lkdGguCisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKFdJLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUp
OworCisgICAgICAgIGZ1bmN0aW9uIGlzT3ZlcmZsb3dpbmdUb29sYmFyKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGNvbnRyb2xTZWN0aW9uV2lkdGggPSB0aGlzLl9jb250cm9sU2VjdGlv
bkVsZW1lbnQucmVhbE9mZnNldFdpZHRoOworICAgICAgICAgICAgdmFyIGxlZnRTZWN0aW9uV2lk
dGggPSB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQucmVhbE9mZnNldFdpZHRoOworICAgICAgICAg
ICAgdmFyIGNlbnRlckxlZnRTZWN0aW9uV2lkdGggPSB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVs
ZW1lbnQucmVhbE9mZnNldFdpZHRoOworICAgICAgICAgICAgdmFyIGNlbnRlclNlY3Rpb25XaWR0
aCA9IHRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBjZW50ZXJSaWdodFNlY3Rpb25XaWR0aCA9IHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlv
bkVsZW1lbnQucmVhbE9mZnNldFdpZHRoOworICAgICAgICAgICAgdmFyIHJpZ2h0U2VjdGlvbldp
ZHRoID0gdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisKKyAgICAg
ICAgICAgIHZhciB0b29sYmFyV2lkdGggPSBNYXRoLnJvdW5kKHRoaXMuZWxlbWVudC5yZWFsT2Zm
c2V0V2lkdGgpOworICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoY29udHJvbFNlY3Rpb25X
aWR0aCArIGxlZnRTZWN0aW9uV2lkdGggKyBjZW50ZXJMZWZ0U2VjdGlvbldpZHRoICsgY2VudGVy
U2VjdGlvbldpZHRoICsgY2VudGVyUmlnaHRTZWN0aW9uV2lkdGggKyByaWdodFNlY3Rpb25XaWR0
aCkgPiB0b29sYmFyV2lkdGg7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWlzT3ZlcmZsb3dp
bmdUb29sYmFyLmNhbGwodGhpcykpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNs
YXNzTmFtZSk7CisgICAgfQorfTsKKworV0kuVG9vbGJhci5TdHlsZUNsYXNzTmFtZSA9ICJ0b29s
YmFyIjsKK1dJLlRvb2xiYXIuQ29udHJvbFNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJjb250cm9s
LXNlY3Rpb24iOworV0kuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gIml0ZW0t
c2VjdGlvbiI7CitXSS5Ub29sYmFyLkxlZnRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImxl
ZnQiOworV0kuVG9vbGJhci5DZW50ZXJMZWZ0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJj
ZW50ZXItbGVmdCI7CitXSS5Ub29sYmFyLkNlbnRlckl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUg
PSAiY2VudGVyIjsKK1dJLlRvb2xiYXIuQ2VudGVyUmlnaHRJdGVtU2VjdGlvblN0eWxlQ2xhc3NO
YW1lID0gImNlbnRlci1yaWdodCI7CitXSS5Ub29sYmFyLlJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNs
YXNzTmFtZSA9ICJyaWdodCI7CisKK1dJLlRvb2xiYXIuU2VjdGlvbiA9IHsKKyAgICBDb250cm9s
OiAiY29udHJvbCIsCisgICAgTGVmdDogImxlZnQiLAorICAgIENlbnRlckxlZnQ6ICJjZW50ZXIt
bGVmdCIsCisgICAgQ2VudGVyOiAiY2VudGVyIiwKKyAgICBDZW50ZXJSaWdodDogImNlbnRlci1y
aWdodCIsCisgICAgUmlnaHQ6ICJyaWdodCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WYXJpYWJsZXMuY3NzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmFyaWFibGVzLmNzcwppbmRleCA0YTMwOGVl
ZTcyYzAxMzkzYzdkMjA2MTRhNzdmZDZmZmEyOTA1NGFlLi4yNTk3MjNkZjk3ZDVlNGZkNjVmZTc2
MzI0YmFlMDVlMzhkMDYxYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WYXJpYWJsZXMuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZhcmlhYmxlcy5jc3MKQEAgLTE2Miw4ICsxNjIsNiBAQAog
ICAgIC0tY3B1LW1lZGl1bS1jb2xvcjogaHNsKDQ2LCA5MSUsIDYyJSk7CiAgICAgLS1jcHUtaGln
aC1jb2xvcjogaHNsKDYsIDc5JSwgNTclKTsKIAotICAgIC0tbmV0d29yay1zdGF0aXN0aWNzLWhl
aWdodDogdmFyKC0tbmF2aWdhdGlvbi1iYXItaGVpZ2h0KTsKLQogICAgIC0tbmV0d29yay1oZWFk
ZXItY29sb3I6IGhzbCgyMDQsIDUyJSwgNTUlKTsKICAgICAtLW5ldHdvcmstc3lzdGVtLWNvbG9y
OiBoc2woNzksIDMyJSwgNTAlKTsKICAgICAtLW5ldHdvcmstcHNldWRvLWhlYWRlci1jb2xvcjog
aHNsKDMxMiwgMzUlLCA1MSUpOwpAQCAtMTgxLDkgKzE3OSw4IEBACiAgICAgLS1vZGQtemVicmEt
c3RyaXBlLXJvdy1iYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAtLXRyYW5zcGFyZW50LXN0
cmlwZS1iYWNrZ3JvdW5kLWdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFu
c3BhcmVudCwgdHJhbnNwYXJlbnQgNTAlLCBoc2xhKDAsIDAlLCAwJSwgMC4wMykgNTAlLCBoc2xh
KDAsIDAlLCAwJSwgMC4wMykpIHRvcCBsZWZ0IC8gMTAwJSA0MHB4OwogCi0gICAgLS11bmRvY2tl
ZC10aXRsZS1hcmVhLWhlaWdodDogMHB4OwotICAgIC0tdGFiLWJhci1oZWlnaHQ6IHZhcigtLW5h
dmlnYXRpb24tYmFyLWhlaWdodCk7Ci0KKyAgICAtLXRvb2xiYXItaGVpZ2h0OiAzNnB4OworICAg
IC0tdGFiLWJhci1oZWlnaHQ6IDI0cHg7CiAgICAgLS1uYXZpZ2F0aW9uLWJhci1oZWlnaHQ6IDI5
cHg7CiAKICAgICAtLXNsaWRlci13aWR0aDogMTFweDsKQEAgLTE5OCw3ICsxOTUsNyBAQAogICAg
IC0tZGlmZi1hZGRpdGlvbi1ib3JkZXItY29sb3I6IGhzbCg5MCwgMTAwJSwgNDAlKTsKIH0KIAot
Ym9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSB7
Citib2R5LndpbmRvdy1pbmFjdGl2ZSB7CiAgICAgLyogRklYTUU6IFVzZSBDU1M0IGNvbG9yIGJs
ZW5kIGZ1bmN0aW9ucyBvbmNlIHRoZXkncmUgYXZhaWxhYmxlLiAqLwogICAgIC0tc2VsZWN0ZWQt
YmFja2dyb3VuZC1jb2xvcjogaHNsYSgyMTIsIDkyJSwgNTQlLCAwLjUpOwogCkBAIC0yMDcsMTUg
KzIwNCwxMSBAQCBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQt
aW5hY3RpdmUpIHsKICAgICAtLWdseXBoLW9wYWNpdHk6IDAuNjsKIH0KIAotYm9keTptYXRjaGVz
KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAqIHsKK2JvZHkud2lu
ZG93LWluYWN0aXZlICogewogICAgIC0tYm9yZGVyLWNvbG9yOiBoc2woMCwgMCUsIDg1JSk7CiAg
ICAgLS1ib3JkZXItY29sb3ItZGFyazogaHNsKDAsIDAlLCA3MiUpOwogfQogCi1ib2R5Lm1hYy1w
bGF0Zm9ybTpub3QoLmRvY2tlZCkgewotICAgIC0tdW5kb2NrZWQtdGl0bGUtYXJlYS1oZWlnaHQ6
IGNhbGMoMjJweCAvIHZhcigtLXpvb20tZmFjdG9yKSk7Ci19Ci0KIEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIHsKICAgICA6cm9vdCB7CiAgICAgICAgIGNvbG9yOiB2YXIoLS10
ZXh0LWNvbG9yKTsKQEAgLTI3Nyw2ICsyNzAsOCBAQCBib2R5Lm1hYy1wbGF0Zm9ybTpub3QoLmRv
Y2tlZCkgewogICAgICAgICAtLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLXByZXNzZWQ6IGhzbCgw
LCAwJSwgNTUlKTsKICAgICAgICAgLS1idXR0b24tYmFja2dyb3VuZC1jb2xvci1pbmFjdGl2ZTog
aHNsKDAsIDAlLCAyOCUpOwogCisgICAgICAgIC0tZGFzaGJvYXJkLWJhY2tncm91bmQtY29sb3I6
IGhzbCgwLCAwJSwgMzYlKTsKKwogICAgICAgICAtLXBhbmVsLWJhY2tncm91bmQtY29sb3I6IGhz
bCgwLCAwJSwgMjQlKTsKICAgICAgICAgLS1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yLWxpZ2h0OiBo
c2woMCwgMCUsIDI5JSk7CiAKQEAgLTM0OSwxNiArMzQ0LDE2IEBAIGJvZHkubWFjLXBsYXRmb3Jt
Om5vdCguZG9ja2VkKSB7CiAgICAgICAgIC0tZGlmZi1kZWxldGlvbi1iYWNrZ3JvdW5kLWNvbG9y
OiBoc2woNSwgNDAlLCAyOCUpOwogICAgIH0KIAotICAgIGJvZHk6bWF0Y2hlcygud2luZG93LWlu
YWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgeworICAgIGJvZHkud2luZG93LWluYWN0
aXZlIHsKICAgICAgICAgLS1zZWxlY3RlZC1iYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIxMiwgOTIl
LCA2NCUsIDAuNSk7CiAKICAgICAgICAgLS1nbHlwaC1jb2xvcjogaHNsKDAsIDAlLCA1MiUpOwog
ICAgICAgICAtLWdseXBoLWNvbG9yLWRpc2FibGVkOiBoc2xhKDAsIDAlLCA1MiUsIDAuNCk7CiAg
ICAgfQogCi0gICAgYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2Vk
LWluYWN0aXZlKSAqIHsKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAqIHsKICAgICAgICAgLyog
VGhlc2UgcHJvcGVydGllcyBhcmUgZHVwbGljYXRlZCBzbyB0aGF0IHRoZXkgaGF2ZSBoaWdoZXIg
c3BlY2lmaWNpdHkgdGhhbiBXZWJLaXQncyBzdHlsZXNoZWV0LgotICAgICAgICBPdGhlcndpc2Us
IHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uIGluc2lkZSAnYm9keTptYXRjaGVzKC53aW5kb3ctaW5h
Y3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAqJyBpbiBPcGVuU291cmNlIG92ZXJyaWRl
cyB3aXRoIGEgbGlnaHRlciBjb2xvci4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgdmFyaWFibGUg
ZGVmaW5pdGlvbiBpbnNpZGUgJ2JvZHkud2luZG93LWluYWN0aXZlIConIGluIE9wZW5Tb3VyY2Ug
b3ZlcnJpZGVzIHdpdGggYSBsaWdodGVyIGNvbG9yLgogICAgICAgICBXaGVuIG1lcmdpbmcgdG8g
b3BlbiBzb3VyY2UsIHdlIHNob3VsZCBndWFyZCB0aGUgZXhpc3RpbmcgLndpbmRvdy1pbmFjdGl2
ZSBzdHlsZSB3aXRoCiAgICAgICAgICdAbWVkaWEgbm90IGFsbCcgdG8gYXZvaWQgYXBwbHlpbmcg
dGhlIGRlZmluaXRpb24gdG9vIGJyb2FkbHkuICovCiAgICAgICAgIC0tYm9yZGVyLWNvbG9yOiBo
c2woMCwgMCUsIDMzJSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBjMmRmNDE2ZjUx
OGU3ZjkzMGYxODNkNmEwNzgwYmYxOTJiZmE1N2M1Li4yMTkyYzI5ZjQxODFlMDBhMTUxMDZlYTFi
MjkwOTQwNTg3MmVjNDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEzOCw2ICsx
MzgsMTEgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6c2V0U2hlZXRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKICAgICBwbGF0Zm9ybVNldFNoZWV0UmVjdChyZWN0KTsKIH0KIAor
dm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBw
bGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpOworfQorCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgcGxhdGZvcm1PcGVu
SW5OZXdUYWIodXJsKTsKQEAgLTE5Myw2ICsxOTgsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUJyaW5nVG9Gcm9udCgpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2ws
IGJvb2wpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmKSB7IH0KK3ZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkgeyB9CiB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBT
dHJpbmcmKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2hvd0Nl
cnRpZmljYXRlKGNvbnN0IENlcnRpZmljYXRlSW5mbyYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1DbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuaAppbmRleCA0ZDg3Yjk4YjY5OTQ4NGJhMDcwNDc5MWE1MzQyMTJkYTg4
MjZiZTVhLi5mYWI1OGY4Y2UwNmVhMjFmYmVlOTEzODk0MzI0NmNhZThmNTRmM2E1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuaApAQCAtMTE4LDYgKzExOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
YXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBi
YXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogICAgIHZvaWQgc2V0U2hl
ZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZvaWQgc3RhcnRXaW5kb3dE
cmFnKCk7CiAgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZv
aWQgc2hvd0NlcnRpZmljYXRlKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYpOwogICAg
IHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKQEAgLTEz
Myw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TYXZlKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBi
b29sIGZvcmNlU2F2ZUFzKTsKICAgICB2b2lkIHBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNldFNo
ZWV0UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBsYXRmb3JtU3Rh
cnRXaW5kb3dEcmFnKCk7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJp
bmcmIHVybCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNob3dDZXJ0aWZpY2F0ZShjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDI4NTljNjBjZjQ2ZGQxNzg1N2MzNjYxZDgwYTY0MDQwZGE1YWQxMTkuLmJl
MDkxYjc4ZmI2YThkNWRmN2IyM2UwNTBmZmZmMWQ5MmE0YmQ0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDggQEAgbWVzc2FnZXMgLT4g
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgewogCiAgICAgU2V0U2hlZXRSZWN0KFdlYkNvcmU6OkZs
b2F0UmVjdCByZWN0KQogCisgICAgU3RhcnRXaW5kb3dEcmFnKCkKKwogICAgIE9wZW5Jbk5ld1Rh
YihTdHJpbmcgdXJsKQogICAgIFNob3dDZXJ0aWZpY2F0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8gY2VydGlmaWNhdGVJbmZvKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBmYzc2ODY2ZjdhMjk0ZGYx
YTFkNjlhZjQ0ZTgwYmUyMzg4M2ViZTAyLi40NzViYmM0MDFmNDQzNmQxZDI0YzYyM2QxYTNhODgx
MjhlYWQ1YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTM0Nyw2ICszNDcsMTEgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBw
bGF0Zm9ybVNldFNoZWV0UmVjdChyZWN0KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpOworfQor
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKIHsKICAgICBp
ZiAoIW1faW5zcGVjdGVkUGFnZSkKQEAgLTc1OSw2ICs3NjQsMTEgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JikKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0
V2luZG93RHJhZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYklu
c3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJveHkuaAppbmRleCA0OTZjMTdiOTQ3ODgzM2RhNzkzYTNkYTc2YTllMzZlZDlmY2M2Mzc5
Li4yYjFmZGZjYTFkZmI4ZTVjNTVmY2NkODAxNmY0MjFmNzE0MTYzY2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaApA
QCAtMTUwLDYgKzE1MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2hlZXRSZWN0KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogCisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsKKwog
ICAgIGJvb2wgaXNQcm9maWxpbmdQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb2ZpbGluZ1Bh
Z2U7IH0KICAgICB2b2lkIHRvZ2dsZVBhZ2VQcm9maWxpbmcoKTsKIApAQCAtMjA3LDYgKzIwOSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVu
c2lnbmVkKTsKICAgICB2b2lkIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25l
ZCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmKTsKKyAgICB2b2lkIHBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCk7CiAgICAgdm9pZCBwbGF0
Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBi
b29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwogICAgIHZvaWQgcGxhdGZvcm1B
cHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDVhZWY3YTdkZmZiZDcxMTU1NWJmZTI2
NTMzZmU0NmIwYmU3MTUzZTkuLmViYjc3NTUzYzZiMTEwOTcyNjJkNDdkNDFmMjZiMjRjMjE2MjBm
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTUzLDQgKzUzLDYgQEAgbWVz
c2FnZXMgLT4gV2ViSW5zcGVjdG9yUHJveHkgewogICAgIFNldEF0dGFjaGVkV2luZG93V2lkdGgo
dW5zaWduZWQgd2lkdGgpCiAKICAgICBTZXRTaGVldFJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJl
Y3QpCisKKyAgICBTdGFydFdpbmRvd0RyYWcoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5R3RrLmNwcAppbmRleCBhYzIwYjg0OTczMmZhMDlkNDBkOGZiYjQ5MzIxMTE4ZGRhMTU2
NGY5Li4xMTA4OGRkMDhiMDYwMmQyZTk0ZTg1Nzk0NjA0YTIyNjI4Y2I0MjA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3Rr
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtMTU3LDYgKzE1NywxMCBAQCB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9h
dFJlY3QmKQogewogfQogCit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0
YXJ0V2luZG93RHJhZygpCit7Cit9CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtT3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yUHJv
eHlHdGsuY3BwCmluZGV4IGM3ZmZmMzk0MTljNzI0MjA4YmU4ZmZlZjZiMjRmYzRhNTFhMWEyOWQu
LjgxN2MzOTg2ZDNjYWI0NTJmZWVhMzY5MTVjYWQxNThkNWVlOGQ1NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwCkBAIC00NjQsNiArNDY0LDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1T
dGFydFdpbmRvd0RyYWcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHN0YXRpYyB2
b2lkIGZpbGVSZXBsYWNlQ29udGVudHNDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2VPYmplY3QsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKIHsKICAgICBHRmlsZSogZmls
ZSA9IEdfRklMRShzb3VyY2VPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0KaW5kZXggODU0ZGE4ODY1ZmNlZjYwYzllYjIyMmFmMWE1MmIyMzM0NGQ5NjkyNC4uNGFi
ZGViNWY2ZDA2NGNlOTRmYTdhMmE1MzEzMThjNGY4YWY3ZjcwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdl
Ykluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0yMjUsNiArMjI1LDExIEBAIHZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICBtX3NoZWV0UmVjdCA9IHJlY3Q7CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICB3ZWJWaWV3KCktPl9wYWdl
LT5zdGFydFdpbmRvd0RyYWcoKTsKK30KKwogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1PcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgW1tOU1dvcmtz
cGFjZSBzaGFyZWRXb3Jrc3BhY2VdIG9wZW5VUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYklu
c3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAxN2JhNjc2NzgzYTllNzM5YTg2MzY5YTVk
YjJkNTg5MDE4MmYzZTU0Li5iYmU3MjhkNDM1Y2FmNzA1OTY1MmFkMmIzZDllMjE3MTQ2N2ViMGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYklu
c3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTczNCw2ICs3MzQsMTEgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgIG1fc2hlZXRSZWN0ID0gcmVjdDsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQoreworICAgIFttX2luc3BlY3RvclZpZXdDb250
cm9sbGVyIHdlYlZpZXddLT5fcGFnZS0+c3RhcnRXaW5kb3dEcmFnKCk7Cit9CisKIFN0cmluZyBX
ZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpCiB7CiAgICAgTlNCdW5kbGUgKmJ1
bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJJbnNw
ZWN0b3JVSSJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNwcAppbmRleCBh
ZDg0MjQ0YTMyMjdlNmFmMTFlMTMwMzk4OWVmMmMzNmQwYWE0ODU2Li4zOTBjMmI5NGYyZmY1NGE0
ZjBkYTllYWVlNDAxMDhjOTllYWEwYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5V2luLmNwcApAQCAtMTM0LDYgKzEzNCw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQnJpbmdUb0Zyb250KCkgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9v
bCkgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIHsgfQor
dm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKSB7
IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3BlbkluTmV3VGFiKGNv
bnN0IFN0cmluZyYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1T
aG93Q2VydGlmaWNhdGUoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJikgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVj
dG9yUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9X
ZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKaW5kZXggOTI5Y2I4YmRhM2MzZDMyZjM4Y2NhYmZkODM0
YzhiNWNlYTI0ZDQxMC4uMmRlYWM5NzMxNzk2ZjI1NWExMGJjZTg0N2Q2YjBiZjZhNzk3OTA3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNw
ZWN0b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKQEAgLTQ1MCw0ICs0NTAsOSBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFn
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3Bw
CmluZGV4IDY1NThhMjVhMWVhOWQxNWRjYmY4MmFmMWIxMzBjZmFjZTBiZmFjNGMuLjU1OGQ4ZjBj
MjQ2MjI4Njk4OTFkMTkyYWU5Y2Q3MWE4OTJlYWViYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3Bw
CkBAIC0xMTAsNiArMTEwLDE4IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmNoYW5nZVNo
ZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5z
cGVjdG9yUHJveHk6OlNldFNoZWV0UmVjdChyZWN0KSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9
CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnN0YXJ0V2luZG93RHJhZygpCit7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93RHJhZygpLCBtX3Bh
Z2UuaWRlbnRpZmllcigpKTsKK30KKwordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bW92ZVdp
bmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRmxvYXRSZWN0IGZyYW1lUmVjdCA9IG1f
cGFnZS5jb3JlUGFnZSgpLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CisgICAgZnJhbWVSZWN0Lm1v
dmUoeCwgeSk7CisgICAgbV9wYWdlLmNvcmVQYWdlKCktPmNocm9tZSgpLnNldFdpbmRvd1JlY3Qo
ZnJhbWVSZWN0KTsKK30KKwogV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBS
ZW1vdGVXZWJJbnNwZWN0b3JVSTo6dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5jb3JlUGFnZSgpLT51c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1JlbW90ZVdlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgKaW5kZXggNjNmNDMyZGY4YjM0MGMxNzY5MzY0MDZj
Y2ZmZTVhNzc1ZDBiNzlhOS4uYjRhZTFjMWRhYTE2NDdhMjExYmFmMGQ0MDA1OTliNzMxMTI4N2Ey
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkuaApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcm9udGVuZExvYWRl
ZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hhbmdlU2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGlzUmVtb3RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFN0cmlu
ZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IDkx
MGNiMzU5ZGM0MzQ2MDgzNjM3MGIxYzY1ZmJhNTUyYjIwMGQ2MDEuLjFmYWE2ZjZlZGU1ZGRkYTBh
MTRhYmRlMmVjMGMyYmJhYWZjNTVlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0xMzcsNiArMTM3LDE4IEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKCkKICAgICBicmluZ1RvRnJvbnQo
KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JVSTo6c3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5kb3dEcmFnKCksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93Qnko
ZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9hdFJlY3QgZnJhbWVSZWN0ID0gbV9wYWdlLmNv
cmVQYWdlKCktPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAgICBmcmFtZVJlY3QubW92ZSh4LCB5
KTsKKyAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+Y2hyb21lKCkuc2V0V2luZG93UmVjdChmcmFtZVJl
Y3QpOworfQorCiB2b2lkIFdlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQoKQogewogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJLmgKaW5kZXggOGJiYTdhNDg5M2M1YjE0N2UzMDA5MTYwN2E1OTMyMWQ2
NWU2MmI3NC4uNjM5ZjIxYzliNjIwYzNlZjZmMjUwN2RkMTYyMDYwZGE0OWI1NTM5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUku
aApAQCAtOTIsNiArOTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVk
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOwogCisgICAg
dm9pZCBzdGFydFdpbmRvd0RyYWcoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1vdmVXaW5kb3dCeShm
bG9hdCB4LCBmbG9hdCB5KSBvdmVycmlkZTsKKwogICAgIGJvb2wgaXNSZW1vdGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGJhY2tlbmRDb21tYW5kc1VSTCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIFN0cmluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KaW5k
ZXggZTM1ZjdhMDQ3ZWQ2NzlkYjBkZDIwZDc4YTg5NzA0Mjg0MmExYzUzMC4uMzZmZjEwMjY5ZDEz
OWUwNDNlNjk5ZjM3ZDU5YjcxNGRkNjZhMmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElP
Uy5tbQpAQCAtMTMzLDYgKzEzMyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OmRldGFjaFdpbmRvdygpIHsgfQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpIHsgfQogdm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkgeyB9CiB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0Jikg
eyB9Cit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzdGFydFdpbmRvd0RyYWcoKSB7
IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQo
Y29uc3QgU3RyaW5nJikgeyB9CiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzaG93
Q2VydGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJikgeyB9CiB2b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSgpIGNvbnN0IHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaAppbmRleCA3YzRjN2YyZWFlMDJjYTk0YTk3ZTEwMTFhMWRmYmRiOTJmNGZmZDU2
Li42NTNlOTEwYWQxNDE5NTk1N2JlMGNkNTg4ZDY4NzljZTkyMWYzYjRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaApAQCAtMTE2LDYgKzExNiw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZnJvbnRl
bmRMb2FkZWQoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCkgb3ZlcnJp
ZGU7CisKICAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIEluc3BlY3Rvcjo6RGVidWdnYWJsZVR5cGUgZGVidWdnYWJsZVR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlOjpQYWdlOyB9OwogICAgIFN0cmlu
ZyB0YXJnZXRQbGF0Zm9ybU5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAibWFjT1MiX3M7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggNDRmNjc3OGVmOWU3NmVlYTNkYTA0MjdhNTZj
NmQwMTk1ODNlNjQ4OC4uMGRiYjgyZmI3YjY5OTQ2NGY4ZTdlYzJlZjMwNjUxMWEwNzRlYzU1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMjE2LDYgKzIxNiwxMSBAQCB2b2lkIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50Ojpmcm9udGVuZExvYWRlZCgpCiAgICAgc2V0QXR0YWNoZWRX
aW5kb3coYXR0YWNoZWQgPyBEb2NrU2lkZTo6Qm90dG9tIDogRG9ja1NpZGU6OlVuZG9ja2VkKTsK
IH0KIAordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c3RhcnRXaW5kb3dEcmFnKCkK
K3sKKyAgICBbW21fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyIHdpbmRvd10gcGVyZm9ybVdpbmRv
d0RyYWdXaXRoRXZlbnQ6W05TQXBwIGN1cnJlbnRFdmVudF1dOworfQorCiBTdHJpbmcgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogewogICAg
IE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20u
YXBwbGUuV2ViSW5zcGVjdG9yVUkiXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390163</attachid>
            <date>2020-02-07 20:09:00 -0800</date>
            <delta_ts>2020-02-07 20:22:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207422-20200207200858.patch</filename>
            <type>text/plain</type>
            <size>350759</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IwYTRhNzQwNjk4YjZh
NWFhOTdkNzNhM2FiNWIzYTQ4MTM2NGNlNi4uMTc1OTExYjkyOThiZmU4OWY0YjQ0Nzg2NjlkNjA5
NmZhZWZlZDM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAyLTA3ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQg
c2xpbSB0b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgc2xpbSB0b29sYmFyIG5lZWRzIGEgbGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFu
ZGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJldmVydHMgcjI1NTU0NywgcjI1NTU1NywgcjI1
NTg5MCwgcjI1NTg5MiwgcjI1NTg5MywgcjI1NTkwMSwgcjI1NTk4MC4KKworICAgICAgICAqIGVu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorCiAyMDIwLTAyLTA3ICBK
YWNrIExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGxwdHIgY3Jh
c2ggaW4gV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOWFlNGNiNmU1ZWE4MjM5NDY3ZDI0MmRmMDQ5
ZDk5Y2RiNWNjN2I1Ni4uNzgzMTU2NWMyYzVkZjUzYmFiODc5YWI4NTcwMTg2Y2EzNWRkM2UwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMjAtMDItMDcgIEpv
biBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJldmVy
dCBzbGltIHRvb2xiYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBzbGltIHRvb2xiYXIgbmVlZHMgYSBsaXR0bGUgbW9yZSB3b3JrIGJlZm9yZSBs
YW5kaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0cyByMjU1NTQ3LCByMjU1NTU3LCBy
MjU1ODkwLCByMjU1ODkyLCByMjU1ODkzLCByMjU1OTAxLCByMjU1OTgwLgorCisgICAgICAgICog
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9T
ZXR0aW5nLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29uc29sZU1h
bmFnZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9EZWJ1Zy9Cb290c3RyYXAuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiLnN2ZzogQWRkZWQuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiUGx1cy5zdmc6IEFkZGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvSW1hZ2VzL09yaWdpbi5zdmc6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9JbWFnZXMvU2VhcmNoUmVzdWx0cy5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvSW1hZ2VzL1NvdXJjZXNQYXVzZWQuc3ZnOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2Vy
RGFzaGJvYXJkLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0uY3NzLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanM6IEFkZGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5qczogQ29waWVk
IGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmxleGlibGVT
cGFjZU5hdmlnYXRpb25JdGVtLmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0F1
ZGl0VGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9CdXR0
b25OYXZpZ2F0aW9uSXRlbS5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9CdXR0
b25OYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRv
blRvb2xiYXJJdGVtLmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNzcy4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlv
bkl0ZW0uY3NzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVRhYkNvbnRl
bnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJU
YWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRyb2xU
b29sYmFySXRlbS5jc3M6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRlbS5jc3MuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uanM6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRlbS5j
c3MuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuY3Nz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5j
c3M6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFp
bmVyVmlldy5qczogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9h
cmRWaWV3LmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmNzczogQWRkZWQuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanM6IEFkZGVkLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuY3NzOiBBZGRlZC4KKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzOiBBZGRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRlbS5jc3M6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3Lmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRmxleGlibGVTcGFjZU5hdmlnYXRpb25J
dGVtLmNzczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUYWJCYXJJdGVt
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhpY3NUYWJDb250ZW50Vmll
dy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0dyb3VwTmF2aWdhdGlvbkl0ZW0u
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnNUYWJDb250ZW50Vmlldy5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeVRhYkJhci5qczogQ29waWVk
IGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpz
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTWFpbi5jc3M6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvTmV0d29ya0RldGFpbFZpZXcuY3NzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuY3NzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmlldy5jc3M6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVy
dmlld0dyYXBoLmNzcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRl
bnRWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Bpbm5lZFRh
YkJhckl0ZW0uanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5l
T3ZlcnZpZXdHcmFwaC5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hU
YWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdz
VGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFy
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2l6ZXNUb0ZpdE5hdmlnYXRpb25C
YXIuanM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5jc3MuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9Tb3VyY2VzVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCYXIuY3NzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFi
QmFyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFySXRlbS5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuY3NzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5jc3M6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZVJ1bGVyLmNzczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9U
b29sYmFyLmNzczogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFy
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1ZhcmlhYmxlcy5jc3M6
CisKIDIwMjAtMDItMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBhbm90aGVyIFByb3RvY29sIFZlcnNpb24gKGlPUyAxMy40
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBiZTc0NTI4MDQ5MzhhN2VjN2Y0ZDljZjE0YjFkNzUxZmNhNWQxN2VkLi5h
ZWNmZWVlMWMxYmMwNjlkMTg0ZDNkMzljZjAxOGJjOGI0OTQwNjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDIwLTAyLTA3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQgc2xpbSB0b29sYmFyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0MjIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc2xpbSB0b29sYmFyIG5lZWRzIGEg
bGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFuZGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJl
dmVydHMgcjI1NTU0NywgcjI1NTU1NywgcjI1NTg5MCwgcjI1NTg5MiwgcjI1NTg5MywgcjI1NTkw
MSwgcjI1NTk4MC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdl
Ykluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
Z3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAg
ICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlXaW4u
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclByb3h5
V2luLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0
b3JVSS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKwog
MjAyMC0wMi0wNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OOiBBU1NFUlRJT04gRkFJTEVEOiByZXNldFJlc3VsdCA9PSAwIG9u
IHJlZ3Jlc3Npb24gdGVzdHMgaW4gSVRQIGNvZGUsIHJlc2V0dGluZyBTUUxpdGUgc3RhdGVtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggMGUwZGViN2MzYWI0ZmFmNTliYWVhOTgy
OGZmNWQyMjNlODQ4NzhlOS4uNmJmN2Q2NGM1MDIyYjI3NjBjZDY3NGM5OTA2ZGM1YTczMTFkNzZk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAy
LTA3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBSZXZlcnQgc2xpbSB0b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgc2xpbSB0b29sYmFyIG5lZWRzIGEgbGl0dGxlIG1vcmUgd29yayBi
ZWZvcmUgbGFuZGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJldmVydHMgcjI1NTU0NywgcjI1
NTU1NywgcjI1NTg5MCwgcjI1NTg5MiwgcjI1NTg5MywgcjI1NTkwMSwgcjI1NTk4MC4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbToKKwogMjAyMC0w
Mi0wMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogbW92ZSB0aGUgaXRlbXMgaW4gdGhlIHRvb2xiYXIgaW50byB0aGUgdGFiIGJhciB0
byBzYXZlIHZlcnRpY2FsIHNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggM2Vk
ZWVhMTY4NGExNzM0NGRiNzRkNWVkMGRmNGQ0YzVkOGY2YjM5YS4uZjEwNWQyMTYwZDZjZGI0YmYx
YzI5OTA1ZWE4MTkxMDg2ZmMzYjM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDIwLTAyLTA3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXZlcnQgc2xpbSB0b29sYmFyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc2xpbSB0b29sYmFyIG5lZWRz
IGEgbGl0dGxlIG1vcmUgd29yayBiZWZvcmUgbGFuZGluZy4KKworICAgICAgICBUaGlzIHBhdGNo
IHJldmVydHMgcjI1NTU0NywgcjI1NTU1NywgcjI1NTg5MCwgcjI1NTg5MiwgcjI1NTg5MywgcjI1
NTkwMSwgcjI1NTk4MC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToK
KwogMjAyMC0wMi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFtIYXJkZW5pbmddIFZhbGlkYXRlIEdlb2xvY2F0aW9uIGFjY2VzcyBwZXJtaXNzaW9uIG9uIFVJ
UHJvY2VzcyBzaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6
YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
cwppbmRleCBiMzliODhhNGU5MDJmMGNiNjE4OTA3NjMzZmZmN2Y4NzAxZjI1YjU0Li42ZDc5YzVj
MDJhMTljNjY5YzM3N2U2YzA2MGMzMmE1NDViY2VlZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTM0LDEyICszNCwxMiBAQAogLyogVGV4dCB0
cmFjayBjb250YWlucyBmb3JjZWQgc3VidGl0bGVzICovCiAiJUAgRm9yY2VkIiA9ICIlQCBGb3Jj
ZWQiOwogCi0vKiB2aXNpYmxlIG5hbWUgb2YgdGhlIG5ldHdvcmsgcHJvY2Vzcy4gVGhlIGFyZ3Vt
ZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiAqLwotIiVAIE5ldHdvcmtpbmciID0gIiVAIE5l
dHdvcmtpbmciOwotCiAvKiB2aXNpYmxlIG5hbWUgb2YgdGhlIEdQVSBwcm9jZXNzLiBUaGUgYXJn
dW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuICovCiAiJUAgR3JhcGhpY3MgYW5kIE1lZGlh
IiA9ICIlQCBHcmFwaGljcyBhbmQgTWVkaWEiOwogCisvKiB2aXNpYmxlIG5hbWUgb2YgdGhlIG5l
dHdvcmsgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiAqLwor
IiVAIE5ldHdvcmtpbmciID0gIiVAIE5ldHdvcmtpbmciOworCiAvKiBUZXh0IHRyYWNrIGNvbnRh
aW5zIHN1YnRpdGxlcyBmb3IgdGhlIGRlYWYgYW5kIGhhcmQgb2YgaGVhcmluZyAqLwogIiVAIFNE
SCIgPSAiJUAgU0RIIjsKIApAQCAtOTEsNiArOTEsOSBAQAogLyogTWVudSBpdGVtIHRpdGxlIGZv
ciBLRVlHRU4gcG9wLXVwIG1lbnUgKi8KICIyMDQ4IChIaWdoIEdyYWRlKSIgPSAiMjA0OCAoSGln
aCBHcmFkZSkiOwogCisvKiBOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBt
YXN0ZXIga2V5IGluIEtleWNoYWluICovCisiPGFwcGxpY2F0aW9uPiBXZWJDcnlwdG8gTWFzdGVy
IEtleSIgPSAiPGFwcGxpY2F0aW9uPiBXZWJDcnlwdG8gTWFzdGVyIEtleSI7CisKIC8qIHdpbmRv
dyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJv
bCwgbm90IHgpICovCiAiPGZpbGVuYW1lPiAlZMOXJWQgcGl4ZWxzIiA9ICI8ZmlsZW5hbWU+ICVk
w5clZCBwaXhlbHMiOwogCkBAIC0zNzYsOSArMzc5LDYgQEAKIC8qIEhpZGUgTWVkaWEgQ29udHJv
bHMgY29udGV4dCBtZW51IGl0ZW0gKi8KICJIaWRlIENvbnRyb2xzIiA9ICJIaWRlIENvbnRyb2xz
IjsKIAotLyogVGl0bGUgZm9yIEhpZGUgTGluayBQcmV2aWV3cyBhY3Rpb24gYnV0dG9uICovCi0i
SGlkZSBMaW5rIFByZXZpZXdzIiA9ICJIaWRlIExpbmsgUHJldmlld3MiOwotCiAvKiBtZW51IGl0
ZW0gdGl0bGUgKi8KICJIaWRlIFNwZWxsaW5nIGFuZCBHcmFtbWFyIiA9ICJIaWRlIFNwZWxsaW5n
IGFuZCBHcmFtbWFyIjsKIApAQCAtNzAzLDkgKzcwMyw2IEBACiAvKiBTaG93IGZvbnRzIGNvbnRl
eHQgbWVudSBpdGVtICovCiAiU2hvdyBGb250cyIgPSAiU2hvdyBGb250cyI7CiAKLS8qIFRpdGxl
IGZvciBTaG93IExpbmsgUHJldmlld3MgYWN0aW9uIGJ1dHRvbiAqLwotIlNob3cgTGluayBQcmV2
aWV3cyIgPSAiU2hvdyBMaW5rIFByZXZpZXdzIjsKLQogLyogbWVudSBpdGVtIHRpdGxlICovCiAi
U2hvdyBTcGVsbGluZyBhbmQgR3JhbW1hciIgPSAiU2hvdyBTcGVsbGluZyBhbmQgR3JhbW1hciI7
CiAKQEAgLTc2MCw2ICs3NTcsOSBAQAogLyogU3RvcCBzcGVha2luZyBjb250ZXh0IG1lbnUgaXRl
bSAqLwogIlN0b3AgU3BlYWtpbmciID0gIlN0b3AgU3BlYWtpbmciOwogCisvKiBVbmRvIGFjdGlv
biBuYW1lICovCisiU3RyaWtlVGhyb3VnaCAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIlN0cmlrZVRo
cm91Z2giOworCiAvKiBMYWJlbCBmb3Igc3Ryb25nIHBhc3N3b3JkLiAqLwogIlN0cm9uZyBQYXNz
d29yZCIgPSAiU3Ryb25nIFBhc3N3b3JkIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAppbmRleCA2ZTQ3N2U5ZTUwZjk3MTgyNjc1
MDAyYTViNGQzZjRmYmIwNWQ2ODljLi4xMzdkMGU2YzFkYWI0YmJmZWQ3MDY5NjNkNGU1MDZmZTdi
Y2M3M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaApAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIHdpbmRvd09iamVjdENsZWFyZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGZyb250ZW5kTG9hZGVkKCkgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0V2luZG93
RHJhZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0
IHkpID0gMDsKKwogICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IHRoZSBkZWJ1Z2dhYmxlLgogICAg
IHZpcnR1YWwgYm9vbCBpc1JlbW90ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBs
b2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDIw
NGY1MDU2OWZlOWM0YTgxYWEwNGNmOGNiYTVjMTViOTc4MzRjMjUuLjBkODMxOTI1Mjc4MmRhOTVh
NzJlZDM2Y2E1ZjA0OGM3Y2Q4Yzg0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTI3MCw2ICsy
NzAsMTMgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIo
Y29uc3QgU3RyaW5nJiB1cmwpCiAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFdU
Rk1vdmUoZnJhbWVMb2FkUmVxdWVzdDIpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9hdFJl
Y3QgZnJhbWVSZWN0ID0gbV9mcm9udGVuZFBhZ2UtPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAg
ICBmcmFtZVJlY3QubW92ZSh4LCB5KTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+Y2hyb21lKCkuc2V0
V2luZG93UmVjdChmcmFtZVJlY3QpOworfQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OnNldEF0dGFjaGVkV2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQogewogICAgIGNvbnN0
IGNoYXIqIHNpZGUgPSAidW5kb2NrZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggMDU1ZGY0MjA4OTIw
ZjY3ODcyMWJkNmUzZmY1MTcyMjNiNGEyZmZlMS4uMGVjMzIwZDg5Mzc4NDUxOWFjYWE1MGE4MmNl
MTZiZTYxOGFiMjg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC02Nyw2ICs2Nyw5IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbmRvd09iamVjdENsZWFyZWQoKSBmaW5hbDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CiAKKyAgICB2
b2lkIHN0YXJ0V2luZG93RHJhZygpIG92ZXJyaWRlIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGZpbmFsOworCiAgICAgV0VCQ09SRV9F
WFBPUlQgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKCkgY29uc3QgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RT
ZXREb2NrU2lkZShEb2NrU2lkZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDJmNmUxOTZkMWViOTc2ZTNjNjMy
NjUxODc1MDYxMWRkZDU5MzE0MDUuLjQxNjgzODllNDU0OTBjMjEzZWNkOWI2YTkzNjU0YjI0YTM0
Njk4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCkBAIC0yNTgsNiArMjU4LDE4IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpzZXRTaGVldFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgdW5zaWduZWQgd2lkdGgsIHVuc2ln
CiAgICAgICAgIG1fY2xpZW50LT5jaGFuZ2VTaGVldFJlY3QoRmxvYXRSZWN0KHgsIHksIHdpZHRo
LCBoZWlnaHQpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnN0YXJ0V2luZG93
RHJhZygpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c3RhcnRXaW5k
b3dEcmFnKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojptb3ZlV2luZG93Qnko
ZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5tb3ZlV2luZG93QnkoeCwgeSk7Cit9CisKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Ojppc1JlbW90ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50
LT5pc1JlbW90ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5oCmluZGV4IDVlMjdjYzY1OTQwOWFhOTIzZTdhZjQwOTdkZTg4OGQ2Yjc4M2Fl
YjUuLjk4MDY5ODQ1ODQ1MDMzZGRkNGQxZjk3Y2YzYzNlOTQwNDJhMjg4NTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKQEAgLTc3LDYg
Kzc3LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTaGVldFJlY3QoZmxvYXQgeCwgZmxvYXQg
eSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CiAKKyAgICB2b2lkIHN0YXJ0V2lu
ZG93RHJhZygpOworICAgIHZvaWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0
OworCiAgICAgYm9vbCBpc1JlbW90ZSgpIGNvbnN0OwogICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJp
bmdzVVJMKCkgY29uc3Q7CiAgICAgU3RyaW5nIGJhY2tlbmRDb21tYW5kc1VSTCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmlk
bAppbmRleCAzMWQ5ODE1MDQwNWRhNDUwYmVkOGI3YmM5MjMwMWE0Y2Q2ZWNmOGRkLi5kNmMwOGVl
MGYzNDJlMmE1ZmI0ZTJiYTJkNzgwYzdlMmU1NmNkOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApAQCAtNTcsNiArNTcsOSBA
QAogCiAgICAgdm9pZCBzZXRTaGVldFJlY3QodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJp
Y3RlZCBmbG9hdCB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7
CiAKKyAgICB2b2lkIHN0YXJ0V2luZG93RHJhZygpOworICAgIHZvaWQgbW92ZVdpbmRvd0J5KHVu
cmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7CisKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1JlbW90ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBiYWNrZW5kQ29tbWFuZHNVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpp
bmRleCBiMjk3OGUyOWRhZTM5YTg2N2ViYjQ0MjQ2MTBjOWU0NWI4NjM4Yzk5Li41ODM1NDY5YjZj
MGY3NWFhZWI0YzkxN2EyNmI1MzQ0YzBiZGQ4NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKQEAgLTQwLDE0ICs0MCw4IEBAIGxvY2FsaXplZFN0cmluZ3NbIiVkIFdhcm5pbmci
XSA9ICIlZCBXYXJuaW5nIjsKIGxvY2FsaXplZFN0cmluZ3NbIiVkIFdhcm5pbmdzIl0gPSAiJWQg
V2FybmluZ3MiOwogbG9jYWxpemVkU3RyaW5nc1siJWQgXHhkNyAlZCBwaXhlbHMiXSA9ICIlZCBc
eGQ3ICVkIHBpeGVscyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlZCBceGQ3ICVkIHBpeGVscyAoTmF0
dXJhbDogJWQgXHhkNyAlZCBwaXhlbHMpIl0gPSAiJWQgXHhkNyAlZCBwaXhlbHMgKE5hdHVyYWw6
ICVkIFx4ZDcgJWQgcGl4ZWxzKSI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyIlZCBkb21haW4iXSA9ICIl
ZCBkb21haW4iOwotbG9jYWxpemVkU3RyaW5nc1siJWQgZG9tYWlucyJdID0gIiVkIGRvbWFpbnMi
OwogbG9jYWxpemVkU3RyaW5nc1siJWQgbWF0Y2hlcyJdID0gIiVkIG1hdGNoZXMiOwogbG9jYWxp
emVkU3RyaW5nc1siJWQgb2YgJWQiXSA9ICIlZCBvZiAlZCI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyIl
ZCByZWRpcmVjdCJdID0gIiVkIHJlZGlyZWN0IjsKLWxvY2FsaXplZFN0cmluZ3NbIiVkIHJlZGly
ZWN0cyJdID0gIiVkIHJlZGlyZWN0cyI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyIlZCByZXNvdXJjZSJd
ID0gIiVkIHJlc291cmNlIjsKLWxvY2FsaXplZFN0cmluZ3NbIiVkIHJlc291cmNlcyJdID0gIiVk
IHJlc291cmNlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyIlZHB4Il0gPSAiJWRweCI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyIlZHB4XHUwMEIyIl0gPSAiJWRweFx1MDBCMiI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyIlcyAoJXMpIl0gPSAiJXMgKCVzKSI7CkBAIC02Nyw4ICs2MSw2IEBAIGxvY2FsaXplZFN0cmlu
Z3NbIiVzIGNhbm5vdCBiZSBtb2RpZmllZCJdID0gIiVzIGNhbm5vdCBiZSBtb2RpZmllZCI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyIlcyBkZWxheSJdID0gIiVzIGRlbGF5IjsKIGxvY2FsaXplZFN0cmlu
Z3NbIiVzIGV2YWxcbiVzIGFzeW5jIl0gPSAiJXMgZXZhbFxuJXMgYXN5bmMiOwogbG9jYWxpemVk
U3RyaW5nc1siJXMgaW50ZXJ2YWwiXSA9ICIlcyBpbnRlcnZhbCI7Ci1sb2NhbGl6ZWRTdHJpbmdz
WyIlcyB0b3RhbCJdID0gIiVzIHRvdGFsIjsKLWxvY2FsaXplZFN0cmluZ3NbIiVzIHRyYW5zZmVy
cmVkIl0gPSAiJXMgdHJhbnNmZXJyZWQiOwogbG9jYWxpemVkU3RyaW5nc1siJXM6Il0gPSAiJXM6
IjsKIGxvY2FsaXplZFN0cmluZ3NbIihBY3Rpb24gJXMpIl0gPSAiKEFjdGlvbiAlcykiOwogbG9j
YWxpemVkU3RyaW5nc1siKERpc2spIl0gPSAiKERpc2spIjsKQEAgLTg2LDE0ICs3OCwxMyBAQCBs
b2NhbGl6ZWRTdHJpbmdzWyIocHJvZ3JhbSkiXSA9ICIocHJvZ3JhbSkiOwogbG9jYWxpemVkU3Ry
aW5nc1siKHNlcnZpY2Ugd29ya2VyKSJdID0gIihzZXJ2aWNlIHdvcmtlcikiOwogbG9jYWxpemVk
U3RyaW5nc1siKHVuaW5pdGlhbGl6ZWQpIl0gPSAiKHVuaW5pdGlhbGl6ZWQpIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIiwgIl0gPSAiLCAiOwotbG9jYWxpemVkU3RyaW5nc1siMCBDb25zb2xlIGVycm9y
cyJdID0gIjAgQ29uc29sZSBlcnJvcnMiOwotbG9jYWxpemVkU3RyaW5nc1siMCBDb25zb2xlIHdh
cm5pbmdzIl0gPSAiMCBDb25zb2xlIHdhcm5pbmdzIjsKIGxvY2FsaXplZFN0cmluZ3NbIjEgbWF0
Y2giXSA9ICIxIG1hdGNoIjsKIGxvY2FsaXplZFN0cmluZ3NbIjJEIl0gPSAiMkQiOwogbG9jYWxp
emVkU3RyaW5nc1siQWNjZXNzaWJpbGl0eSJdID0gIkFjY2Vzc2liaWxpdHkiOwogbG9jYWxpemVk
U3RyaW5nc1siQWN0aW9uIl0gPSAiQWN0aW9uIjsKIC8qIFRvb2x0aXAgZm9yIGEgdGltZSByYW5n
ZSBiYXIgdGhhdCByZXByZXNlbnRzIHdoZW4gYSBDU1MgYW5pbWF0aW9uL3RyYW5zaXRpb24gaXMg
cnVubmluZyAqLwogbG9jYWxpemVkU3RyaW5nc1siQWN0aXZlIl0gPSAiQWN0aXZlIjsKK2xvY2Fs
aXplZFN0cmluZ3NbIkFjdGl2aXR5IFZpZXdlciJdID0gIkFjdGl2aXR5IFZpZXdlciI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJBZGQiXSA9ICJBZGQiOwogbG9jYWxpemVkU3RyaW5nc1siQWRkICVzIFJ1
bGUiXSA9ICJBZGQgJXMgUnVsZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJBZGQgQWN0aW9uIl0gPSAi
QWRkIEFjdGlvbiI7CkBAIC0yNzQsMTAgKzI2NSw2IEBAIGxvY2FsaXplZFN0cmluZ3NbIkNsaWNr
IHRvIGNyZWF0ZSBhIExvY2FsIE92ZXJyaWRlIGZyb20gdGhpcyBjb250ZW50Il0gPSAiQ2xpY2sK
IGxvY2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIGltcG9ydCBhIGZpbGUgYW5kIGNyZWF0ZSBhIExv
Y2FsIE92ZXJyaWRlXG5TaGlmdC1jbGljayB0byBjcmVhdGUgYSBMb2NhbCBPdmVycmlkZSBmcm9t
IHRoaXMgY29udGVudCJdID0gIkNsaWNrIHRvIGltcG9ydCBhIGZpbGUgYW5kIGNyZWF0ZSBhIExv
Y2FsIE92ZXJyaWRlXG5TaGlmdC1jbGljayB0byBjcmVhdGUgYSBMb2NhbCBPdmVycmlkZSBmcm9t
IHRoaXMgY29udGVudCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDbGljayB0byBzZWxlY3QgYSBjb2xv
ciJdID0gIkNsaWNrIHRvIHNlbGVjdCBhIGNvbG9yIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsaWNr
IHRvIHNlbGVjdCBhIGNvbG9yXG5TaGlmdC1jbGljayB0byBzd2l0Y2ggY29sb3IgZm9ybWF0cyJd
ID0gIkNsaWNrIHRvIHNlbGVjdCBhIGNvbG9yXG5TaGlmdC1jbGljayB0byBzd2l0Y2ggY29sb3Ig
Zm9ybWF0cyI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJDbGljayB0byBzaG93ICVkIGVycm9yIGluIHRo
ZSBDb25zb2xlIl0gPSAiQ2xpY2sgdG8gc2hvdyAlZCBlcnJvciBpbiB0aGUgQ29uc29sZSI7Ci1s
b2NhbGl6ZWRTdHJpbmdzWyJDbGljayB0byBzaG93ICVkIGVycm9ycyBpbiB0aGUgQ29uc29sZSJd
ID0gIkNsaWNrIHRvIHNob3cgJWQgZXJyb3JzIGluIHRoZSBDb25zb2xlIjsKLWxvY2FsaXplZFN0
cmluZ3NbIkNsaWNrIHRvIHNob3cgJWQgd2FybmluZyBpbiB0aGUgQ29uc29sZSJdID0gIkNsaWNr
IHRvIHNob3cgJWQgd2FybmluZyBpbiB0aGUgQ29uc29sZSI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJD
bGljayB0byBzaG93ICVkIHdhcm5pbmdzIGluIHRoZSBDb25zb2xlIl0gPSAiQ2xpY2sgdG8gc2hv
dyAlZCB3YXJuaW5ncyBpbiB0aGUgQ29uc29sZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDbGljayB0
byB2aWV3IHZhcmlhYmxlIHZhbHVlXG5TaGlmdC1jbGljayB0byByZXBsYWNlIHZhcmlhYmxlIHdp
dGggdmFsdWUiXSA9ICJDbGljayB0byB2aWV3IHZhcmlhYmxlIHZhbHVlXG5TaGlmdC1jbGljayB0
byByZXBsYWNlIHZhcmlhYmxlIHdpdGggdmFsdWUiOwogbG9jYWxpemVkU3RyaW5nc1siQ2xpY2th
YmxlIl0gPSAiQ2xpY2thYmxlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsaWVudHMiXSA9ICJDbGll
bnRzIjsKQEAgLTM0OCw2ICszMzUsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJDcmVhdGUgJXMgUnVs
ZSJdID0gIkNyZWF0ZSAlcyBSdWxlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNyZWF0ZSBCcmVha3Bv
aW50Il0gPSAiQ3JlYXRlIEJyZWFrcG9pbnQiOwogbG9jYWxpemVkU3RyaW5nc1siQ3JlYXRlIExv
Y2FsIE92ZXJyaWRlIl0gPSAiQ3JlYXRlIExvY2FsIE92ZXJyaWRlIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIkNyZWF0ZSBSZXNvdXJjZSJdID0gIkNyZWF0ZSBSZXNvdXJjZSI7Citsb2NhbGl6ZWRTdHJp
bmdzWyJDcmVhdGUgYSBuZXcgdGFiIl0gPSAiQ3JlYXRlIGEgbmV3IHRhYiI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJDcm9zcy1PcmlnaW4gUmVzdHJpY3Rpb25zIl0gPSAiQ3Jvc3MtT3JpZ2luIFJlc3Ry
aWN0aW9ucyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDdXJyZW50Il0gPSAiQ3VycmVudCI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJDdXJyZW50IFN0YXRlIl0gPSAiQ3VycmVudCBTdGF0ZSI7CkBAIC0zNjcs
NiArMzU1LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siRGF0YWJhc2Ugbm8gbG9uZ2VyIGhhcyBleHBl
Y3RlZCB2ZXJzaW9uLiJdID0gIkRhdGFiYXNlIG5vIGxvbmcKIGxvY2FsaXplZFN0cmluZ3NbIkRh
dGFiYXNlcyJdID0gIkRhdGFiYXNlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEYXRlIl0gPSAiRGF0
ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEZWJ1ZzogIl0gPSAiRGVidWc6ICI7Citsb2NhbGl6ZWRT
dHJpbmdzWyJEZWJ1Z2dlciBQYXVzZWQiXSA9ICJEZWJ1Z2dlciBQYXVzZWQiOwogbG9jYWxpemVk
U3RyaW5nc1siRGVidWdnZXIgU3RhdGVtZW50Il0gPSAiRGVidWdnZXIgU3RhdGVtZW50IjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkRlYnVnZ2VyIFN0YXRlbWVudHMiXSA9ICJEZWJ1Z2dlciBTdGF0ZW1l
bnRzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkRlYnVnZ2VyIGRpc2FibGVkIGR1cmluZyBBdWRpdCJd
ID0gIkRlYnVnZ2VyIGRpc2FibGVkIGR1cmluZyBBdWRpdCI7CkBAIC00ODcsNiArNDc2LDcgQEAg
bG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIEV2ZW50IExpc3RlbmVyIl0gPSAiRW5hYmxlIEV2ZW50
IExpc3RlbmVyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBFdmVudCBMaXN0ZW5lcnMiXSA9
ICJFbmFibGUgRXZlbnQgTGlzdGVuZXJzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBJbnNw
ZWN0b3IgQm9vdHN0cmFwIFNjcmlwdCJdID0gIkVuYWJsZSBJbnNwZWN0b3IgQm9vdHN0cmFwIFNj
cmlwdCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUgTG9jYWwgT3ZlcnJpZGUiXSA9ICJFbmFi
bGUgTG9jYWwgT3ZlcnJpZGUiOworbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIE5ldyBUYWIgQmFy
Il0gPSAiRW5hYmxlIE5ldyBUYWIgQmFyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBQcmV2
aWV3IEZlYXR1cmVzIl0gPSAiRW5hYmxlIFByZXZpZXcgRmVhdHVyZXMiOwogbG9jYWxpemVkU3Ry
aW5nc1siRW5hYmxlIFByb2dyYW0iXSA9ICJFbmFibGUgUHJvZ3JhbSI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJFbmFibGUgUnVsZSJdID0gIkVuYWJsZSBSdWxlIjsKQEAgLTcwOSw4ICs2OTksNiBAQCBs
b2NhbGl6ZWRTdHJpbmdzWyJMaXZlIEFjdGl2aXR5Il0gPSAiTGl2ZSBBY3Rpdml0eSI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJMaXZlIFNpemUiXSA9ICJMaXZlIFNpemUiOwogbG9jYWxpemVkU3RyaW5n
c1siTG9hZCBcdTIwMTQgJXMiXSA9ICJMb2FkIFx1MjAxNCAlcyI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJMb2FkIGNhbmNlbGxlZCJdID0gIkxvYWQgY2FuY2VsbGVkIjsKLWxvY2FsaXplZFN0cmluZ3Nb
IkxvYWRlZCBpbiAlcyJdID0gIkxvYWRlZCBpbiAlcyI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJMb2Fk
aW5nIGZvciAlcyJdID0gIkxvYWRpbmcgZm9yICVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkxvY2Fs
IEZpbGUiXSA9ICJMb2NhbCBGaWxlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkxvY2FsIE92ZXJyaWRl
Il0gPSAiTG9jYWwgT3ZlcnJpZGUiOwogbG9jYWxpemVkU3RyaW5nc1siTG9jYWwgT3ZlcnJpZGVc
dTIwMjYiXSA9ICJMb2NhbCBPdmVycmlkZVx1MjAyNiI7CkBAIC03NzQsNiArNzYyLDcgQEAgbG9j
YWxpemVkU3RyaW5nc1siTmV0d29yayJdID0gIk5ldHdvcmsiOwogbG9jYWxpemVkU3RyaW5nc1si
TmV0d29yayBJc3N1ZSJdID0gIk5ldHdvcmsgSXNzdWUiOwogbG9jYWxpemVkU3RyaW5nc1siTmV0
d29yayBSZXF1ZXN0cyJdID0gIk5ldHdvcmsgUmVxdWVzdHMiOwogbG9jYWxpemVkU3RyaW5nc1si
TmV0d29yayBSZXF1ZXN0czoiXSA9ICJOZXR3b3JrIFJlcXVlc3RzOiI7Citsb2NhbGl6ZWRTdHJp
bmdzWyJOZXcgVGFiIl0gPSAiTmV3IFRhYiI7CiAvKiBBIHN1Ym1lbnUgaXRlbSBvZiAnQWRkJyB0
byBhZGQgRE9NIG5vZGVzIGFmdGVyIHRoZSBzZWxlY3RlZCBET00gbm9kZSAqLwogbG9jYWxpemVk
U3RyaW5nc1siTmV4dCBTaWJsaW5nIl0gPSAiTmV4dCBTaWJsaW5nIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIk5vIl0gPSAiTm8iOwpAQCAtMTA5MiwxNSArMTA4MSwyMSBAQCBsb2NhbGl6ZWRTdHJpbmdz
WyJTaG93IFNjb3BlIENoYWluIG9uIHBhdXNlIl0gPSAiU2hvdyBTY29wZSBDaGFpbiBvbiBwYXVz
ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGFsbCBhY3Rpb25zIl0gPSAiU2hvdyBhbGwgYWN0
aW9ucyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGFsbCByZXNvdXJjZXMiXSA9ICJTaG93IGFs
bCByZXNvdXJjZXMiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBjb21wb3NpdGluZyBib3JkZXJz
Il0gPSAiU2hvdyBjb21wb3NpdGluZyBib3JkZXJzIjsKK2xvY2FsaXplZFN0cmluZ3NbIlNob3cg
ZXJyb3JzIGxvZ2dlZCB0byB0aGUgQ29uc29sZSJdID0gIlNob3cgZXJyb3JzIGxvZ2dlZCB0byB0
aGUgQ29uc29sZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGZ1bGwgY2VydGlmaWNhdGUiXSA9
ICJTaG93IGZ1bGwgY2VydGlmaWNhdGUiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBoaWRkZW4g
dGFicyJdID0gIlNob3cgaGlkZGVuIHRhYnMiOworbG9jYWxpemVkU3RyaW5nc1siU2hvdyBtZXNz
YWdlcyBsb2dnZWQgdG8gdGhlIENvbnNvbGUiXSA9ICJTaG93IG1lc3NhZ2VzIGxvZ2dlZCB0byB0
aGUgQ29uc29sZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IG5ldHdvcmsgaW5mb3JtYXRpb24i
XSA9ICJTaG93IG5ldHdvcmsgaW5mb3JtYXRpb24iOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBv
bmx5IGZvciBzZWxlY3RlZCBub2RlIl0gPSAiU2hvdyBvbmx5IGZvciBzZWxlY3RlZCBub2RlIjsK
K2xvY2FsaXplZFN0cmluZ3NbIlNob3cgcGFnZSBsb2FkIHRpbWluZyJdID0gIlNob3cgcGFnZSBs
b2FkIHRpbWluZyI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IHBhZ2UgcmVzb3VyY2VzIl0gPSAi
U2hvdyBwYWdlIHJlc291cmNlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IHBhZ2UgcnVsZXJz
IGFuZCBub2RlIGJvcmRlciBsaW5lcyJdID0gIlNob3cgcGFnZSBydWxlcnMgYW5kIG5vZGUgYm9y
ZGVyIGxpbmVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgcnVsZXJzIl0gPSAiU2hvdyBydWxl
cnMiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyB0aGUgZGV0YWlscyBzaWRlYmFyICglcykiXSA9
ICJTaG93IHRoZSBkZXRhaWxzIHNpZGViYXIgKCVzKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93
IHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSJdID0gIlNob3cgdGhlIG5hdmlnYXRpb24gc2lk
ZWJhciAoJXMpIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgdHJhbnNwYXJlbmN5IGdyaWQiXSA9
ICJTaG93IHRyYW5zcGFyZW5jeSBncmlkIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgdHlwZSBp
bmZvcm1hdGlvbiJdID0gIlNob3cgdHlwZSBpbmZvcm1hdGlvbiI7Citsb2NhbGl6ZWRTdHJpbmdz
WyJTaG93IHdhcm5pbmdzIGxvZ2dlZCB0byB0aGUgQ29uc29sZSJdID0gIlNob3cgd2FybmluZ3Mg
bG9nZ2VkIHRvIHRoZSBDb25zb2xlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3c6Il0gPSAiU2hv
dzoiOwogbG9jYWxpemVkU3RyaW5nc1siU2l0ZS1zcGVjaWZpYyBIYWNrcyJdID0gIlNpdGUtc3Bl
Y2lmaWMgSGFja3MiOwogbG9jYWxpemVkU3RyaW5nc1siU2l6ZSJdID0gIlNpemUiOwpAQCAtMTI5
NSw2ICsxMjkwLDcgQEAgbG9jYWxpemVkU3RyaW5nc1siVXNlIHRoZSByZXNvdXJjZSBjYWNoZSB3
aGVuIGxvYWRpbmcgcmVzb3VyY2VzIl0gPSAiVXNlIHRoZSByZXMKIGxvY2FsaXplZFN0cmluZ3Nb
IlVzZXIgQWdlbnQiXSA9ICJVc2VyIEFnZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIlVzZXIgQWdl
bnQgU3R5bGUgU2hlZXQiXSA9ICJVc2VyIEFnZW50IFN0eWxlIFNoZWV0IjsKIGxvY2FsaXplZFN0
cmluZ3NbIlVzZXIgQWdlbnQ6Il0gPSAiVXNlciBBZ2VudDoiOworbG9jYWxpemVkU3RyaW5nc1si
VXNlciBJbnRlcmZhY2U6Il0gPSAiVXNlciBJbnRlcmZhY2U6IjsKIGxvY2FsaXplZFN0cmluZ3Nb
IlVzZXIgU3R5bGUgU2hlZXQiXSA9ICJVc2VyIFN0eWxlIFNoZWV0IjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlZhbGlkIEZyb20iXSA9ICJWYWxpZCBGcm9tIjsKIGxvY2FsaXplZFN0cmluZ3NbIlZhbGlk
IFVudGlsIl0gPSAiVmFsaWQgVW50aWwiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDk5MzVlMGU2ZjE2OTlmYjUxMzZmOGNkMTQ4
NTEyYjQ4Nzk0NWFhYjUuLmVhY2UxMjY3Y2EwNjEwMGY2YzcwYWYzNTRkMjA0N2U4ZDA0ZmRlNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFp
bi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMKQEAgLTEyOCw2ICsxMjgsNyBAQCBXSS5sb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICAvLyBS
ZWdpc3RlciBmb3IgZXZlbnRzLgogICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIFdJLl9kZWJ1Z2dlckRpZFBhdXNl
KTsKKyAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1h
bmFnZXIuRXZlbnQuUmVzdW1lZCwgV0kuX2RlYnVnZ2VyRGlkUmVzdW1lKTsKICAgICBXSS5kb21N
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVudC5JbnNwZWN0TW9kZVN0
YXRlQ2hhbmdlZCwgV0kuX2luc3BlY3RNb2RlU3RhdGVDaGFuZ2VkKTsKICAgICBXSS5kb21NYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVudC5ET01Ob2RlV2FzSW5zcGVj
dGVkLCBXSS5fZG9tTm9kZVdhc0luc3BlY3RlZCk7CiAgICAgV0kuZG9tU3RvcmFnZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5ET01TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2Jq
ZWN0V2FzSW5zcGVjdGVkLCBXSS5fZG9tU3RvcmFnZVdhc0luc3BlY3RlZCk7CkBAIC0xNDgsNyAr
MTQ5LDYgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgICAgICBXSS5UaW1lbGluZVRhYkNv
bnRlbnRWaWV3LlR5cGUsCiAgICAgICAgIFdJLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5UeXBlLAog
ICAgICAgICBXSS5HcmFwaGljc1RhYkNvbnRlbnRWaWV3LlR5cGUsCi0gICAgICAgIFdJLkxheWVy
c1RhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgIFdJLkF1ZGl0VGFiQ29udGVudFZpZXcuVHlw
ZSwKICAgICAgICAgV0kuQ29uc29sZVRhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgXSk7CkBAIC0y
MzcsNiArMjM3LDcgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgV0kuX3dpbmRvd1Jlc2l6ZWQpOwogICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgV0kuX3dpbmRvd0tleURvd24pOwogICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIFdJLl93aW5kb3dLZXlVcCk7CisgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIFdJLl9tb3VzZURvd24sIHRydWUpOwog
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBXSS5fbW91c2VNb3ZlZCwg
dHJ1ZSk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwgV0kuX3BhZ2VI
aWRkZW4pOwogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIFdJLl9j
b250ZXh0TWVudVJlcXVlc3RlZCk7CkBAIC0yNzcsOCArMjc4LDE5IEBAIFdJLmNvbnRlbnRMb2Fk
ZWQgPSBmdW5jdGlvbigpCiAgICAgV0kuc2V0dGluZ3Muc2hvd1doaXRlc3BhY2VDaGFyYWN0ZXJz
LmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCBzZXRXaGl0ZXNwYWNl
Q2hhcmFjdGVyQ2xhc3NOYW1lKTsKICAgICBzZXRXaGl0ZXNwYWNlQ2hhcmFjdGVyQ2xhc3NOYW1l
KCk7CiAKKyAgICBXSS5zZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gbmV3IFdJLlNldHRpbmdzVGFi
Q29udGVudFZpZXc7CisKKyAgICBXSS5fc2V0dGluZ3NLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdJ
LktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JD
b250cm9sLCBXSS5LZXlib2FyZFNob3J0Y3V0LktleS5Db21tYSwgV0kuX2hhbmRsZVNldHRpbmdz
S2V5Ym9hcmRTaG9ydGN1dCk7CisKICAgICAvLyBDcmVhdGUgdGhlIHVzZXIgaW50ZXJmYWNlIGVs
ZW1lbnRzLgotICAgIFdJLnRhYkJhciA9IG5ldyBXSS5UYWJCYXIoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhYi1iYXIiKSk7CisgICAgV0kudG9vbGJhciA9IG5ldyBXSS5Ub29sYmFyKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyIikpOworCisgICAgaWYgKFdJLnNldHRpbmdzLmV4
cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhci52YWx1ZSkKKyAgICAgICAgV0kudGFiQmFyID0gbmV3
IFdJLlRhYkJhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFiLWJhciIpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgV0kudGFiQmFyID0gbmV3IFdJLkxlZ2FjeVRhYkJhcihkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGFiLWJhciIpKTsKKyAgICAgICAgV0kudGFiQmFyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuVGFiQmFyLkV2ZW50Lk9wZW5EZWZhdWx0VGFiLCBXSS5fb3BlbkRlZmF1bHRUYWIpOwor
ICAgIH0KIAogICAgIFdJLl9jb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb250ZW50Iik7CiAgICAgV0kuX2NvbnRlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIs
ICJtYWluIik7CkBAIC0zMzAsNiArMzQyLDcgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9u
KCkKICAgICBXSS5fcmVzZXRab29tS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNo
b3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIjAi
LCBXSS5fcmVzZXRab29tKTsKIAogICAgIFdJLl9zaG93VGFiQXRJbmRleEtleWJvYXJkU2hvcnRj
dXRzID0gWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLm1hcCgoaSkgPT4gbmV3IFdJLktleWJv
YXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9s
IHwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5PcHRpb24sIGAke2l9YCwgKGV2ZW50KSA9
PiB7IFdJLl9zaG93VGFiQXRJbmRleEZyb21TaG9ydGN1dChpKTsgfSkpOworICAgIFdJLl9vcGVu
TmV3VGFiS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJv
YXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdJLktleWJvYXJkU2hvcnRj
dXQuTW9kaWZpZXIuT3B0aW9uLCAiVCIsIFdJLl9zaG93TmV3VGFiRnJvbVNob3J0Y3V0KTsKIAog
ICAgIFdJLnRhYkJyb3dzZXIgPSBuZXcgV0kuVGFiQnJvd3Nlcihkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGFiLWJyb3dzZXIiKSwgV0kudGFiQmFyLCBXSS5uYXZpZ2F0aW9uU2lkZWJhciwgV0ku
ZGV0YWlsc1NpZGViYXIpOwogICAgIFdJLnRhYkJyb3dzZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5U
YWJCcm93c2VyLkV2ZW50LlNlbGVjdGVkVGFiQ29udGVudFZpZXdEaWRDaGFuZ2UsIFdJLl90YWJC
cm93c2VyU2VsZWN0ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSk7CkBAIC0zNTgsMTA4ICszNzEs
OTQgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBXSS5zdGVwSW50b0FsdGVy
bmF0ZUtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2Fy
ZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdJLktleWJvYXJkU2hvcnRjdXQu
S2V5LlNlbWljb2xvbiwgV0kuZGVidWdnZXJTdGVwSW50byk7CiAgICAgV0kuc3RlcE91dEFsdGVy
bmF0ZUtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2Fy
ZFNob3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0IHwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5D
b21tYW5kT3JDb250cm9sLCBXSS5LZXlib2FyZFNob3J0Y3V0LktleS5TZW1pY29sb24sIFdJLmRl
YnVnZ2VyU3RlcE91dCk7CiAKLSAgICBXSS5fc2V0dGluZ3NLZXlib2FyZFNob3J0Y3V0ID0gbmV3
IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5k
T3JDb250cm9sLCBXSS5LZXlib2FyZFNob3J0Y3V0LktleS5Db21tYSwgV0kuX2hhbmRsZVNldHRp
bmdzS2V5Ym9hcmRTaG9ydGN1dCk7CisgICAgV0kuX2Nsb3NlVG9vbGJhckJ1dHRvbiA9IG5ldyBX
SS5Db250cm9sVG9vbGJhckl0ZW0oImRvY2stY2xvc2UiLCBXSS5VSVN0cmluZygiQ2xvc2UiKSwg
IkltYWdlcy9DbG9zZS5zdmciLCAxNiwgMTQpOworICAgIFdJLl9jbG9zZVRvb2xiYXJCdXR0b24u
YWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCBX
SS5jbG9zZSk7CiAKLSAgICBXSS5fdG9nZ2xlUHJldmlvdXNEb2NrQ29uZmlndXJhdGlvbktleWJv
YXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVy
LlNoaWZ0LCAiRCIsIFdJLl90b2dnbGVQcmV2aW91c0RvY2tDb25maWd1cmF0aW9uKTsKKyAgICBX
SS5fdW5kb2NrVG9vbGJhckJ1dHRvbiA9IG5ldyBXSS5CdXR0b25Ub29sYmFySXRlbSgidW5kb2Nr
IiwgV0kuVUlTdHJpbmcoIkRldGFjaCBpbnRvIHNlcGFyYXRlIHdpbmRvdyIpLCAiSW1hZ2VzL1Vu
ZG9jay5zdmciKTsKKyAgICBXSS5fdW5kb2NrVG9vbGJhckJ1dHRvbi5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVBdXRvRGlzbWlzc0NsYXNzTmFtZSk7CisgICAgV0kuX3Vu
ZG9ja1Rvb2xiYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5FdmVudC5DbGlja2VkLCBXSS5fdW5kb2NrKTsKIAotICAgIFdJLl9jbG9zZVRhYkJhckJ1dHRv
biA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiZG9jay1jbG9zZSIsIFdJLlVJU3RyaW5n
KCJDbG9zZSIpLCAiSW1hZ2VzL0Nsb3NlTGFyZ2Uuc3ZnIik7Ci0gICAgV0kuX2Nsb3NlVGFiQmFy
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xp
Y2tlZCwgV0kuY2xvc2UpOworICAgIGxldCBkb2NrSW1hZ2UgPSBXSS5yZXNvbHZlZExheW91dERp
cmVjdGlvbigpID09PSBXSS5MYXlvdXREaXJlY3Rpb24uUlRMID8gIkltYWdlcy9Eb2NrTGVmdC5z
dmciIDogIkltYWdlcy9Eb2NrUmlnaHQuc3ZnIjsKKyAgICBXSS5fZG9ja1RvU2lkZVRvb2xiYXJC
dXR0b24gPSBuZXcgV0kuQnV0dG9uVG9vbGJhckl0ZW0oImRvY2stcmlnaHQiLCBXSS5VSVN0cmlu
ZygiRG9jayB0byBzaWRlIG9mIHdpbmRvdyIpLCBkb2NrSW1hZ2UpOworICAgIFdJLl9kb2NrVG9T
aWRlVG9vbGJhckJ1dHRvbi5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuUG9wb3Zlci5JZ25vcmVB
dXRvRGlzbWlzc0NsYXNzTmFtZSk7CiAKLSAgICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbiA9
IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiZG9jay1yaWdodCIsIFdJLlVJU3RyaW5nKCJE
b2NrIHRvIHNpZGUgb2Ygd2luZG93IiksIFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09
IFdJLkxheW91dERpcmVjdGlvbi5SVEwgPyAiSW1hZ2VzL0RvY2tMZWZ0LnN2ZyIgOiAiSW1hZ2Vz
L0RvY2tSaWdodC5zdmciLCAxOCwgMTYpOwotICAgIFdJLl9kb2NrVG9TaWRlVGFiQmFyQnV0dG9u
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVyLklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NO
YW1lKTsKLSAgICBXSS5fZG9ja1RvU2lkZVRhYkJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJ
LkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLnJlc29sdmVkTGF5b3V0RGly
ZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwgPyBXSS5fZG9ja0xlZnQgOiBXSS5f
ZG9ja1JpZ2h0KTsKKyAgICBsZXQgZG9ja1RvU2lkZUNhbGxiYWNrID0gV0kucmVzb2x2ZWRMYXlv
dXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/IFdJLl9kb2NrTGVmdCA6
IFdJLl9kb2NrUmlnaHQ7CisgICAgV0kuX2RvY2tUb1NpZGVUb29sYmFyQnV0dG9uLmFkZEV2ZW50
TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgZG9ja1RvU2lk
ZUNhbGxiYWNrKTsKIAotICAgIFdJLl9kb2NrQm90dG9tVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1
dHRvbk5hdmlnYXRpb25JdGVtKCJkb2NrLWJvdHRvbSIsIFdJLlVJU3RyaW5nKCJEb2NrIHRvIGJv
dHRvbSBvZiB3aW5kb3ciKSwgIkltYWdlcy9Eb2NrQm90dG9tLnN2ZyIsIDE4LCAxNik7Ci0gICAg
V0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBvcG92
ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFzc05hbWUpOwotICAgIFdJLl9kb2NrQm90dG9tVGFiQmFy
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xp
Y2tlZCwgV0kuX2RvY2tCb3R0b20pOworICAgIFdJLl9kb2NrQm90dG9tVG9vbGJhckJ1dHRvbiA9
IG5ldyBXSS5CdXR0b25Ub29sYmFySXRlbSgiZG9jay1ib3R0b20iLCBXSS5VSVN0cmluZygiRG9j
ayB0byBib3R0b20gb2Ygd2luZG93IiksICJJbWFnZXMvRG9ja0JvdHRvbS5zdmciKTsKKyAgICBX
SS5fZG9ja0JvdHRvbVRvb2xiYXJCdXR0b24uZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBvcG92
ZXIuSWdub3JlQXV0b0Rpc21pc3NDbGFzc05hbWUpOworICAgIFdJLl9kb2NrQm90dG9tVG9vbGJh
ckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNs
aWNrZWQsIFdJLl9kb2NrQm90dG9tKTsKIAotICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24gPSBu
ZXcgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInVuZG9jayIsIFdJLlVJU3RyaW5nKCJEZXRhY2gg
aW50byBzZXBhcmF0ZSB3aW5kb3ciKSwgIkltYWdlcy9VbmRvY2suc3ZnIiwgMTgsIDE2KTsKLSAg
ICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5Qb3BvdmVy
Lklnbm9yZUF1dG9EaXNtaXNzQ2xhc3NOYW1lKTsKLSAgICBXSS5fdW5kb2NrVGFiQmFyQnV0dG9u
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwg
V0kuX3VuZG9jayk7Ci0KLSAgICBXSS50YWJCYXIuYWRkTmF2aWdhdGlvbkl0ZW1CZWZvcmUobmV3
IFdJLkdyb3VwTmF2aWdhdGlvbkl0ZW0oWwotICAgICAgICBXSS5fY2xvc2VUYWJCYXJCdXR0b24s
Ci0gICAgICAgIFdJLl9kb2NrVG9TaWRlVGFiQmFyQnV0dG9uLAotICAgICAgICBXSS5fZG9ja0Jv
dHRvbVRhYkJhckJ1dHRvbiwKLSAgICAgICAgV0kuX3VuZG9ja1RhYkJhckJ1dHRvbiwKLSAgICBd
KSk7CisgICAgV0kuX3RvZ2dsZVByZXZpb3VzRG9ja0NvbmZpZ3VyYXRpb25LZXlib2FyZFNob3J0
Y3V0ID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
ci5Db21tYW5kT3JDb250cm9sIHwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCwg
IkQiLCBXSS5fdG9nZ2xlUHJldmlvdXNEb2NrQ29uZmlndXJhdGlvbik7CiAKLSAgICBXSS5fZG9j
a0RpdmlkZXJUYWJCYXJOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5EaXZpZGVyTmF2aWdhdGlvbkl0
ZW07Ci0gICAgV0kudGFiQmFyLmFkZE5hdmlnYXRpb25JdGVtQmVmb3JlKFdJLl9kb2NrRGl2aWRl
clRhYkJhck5hdmlnYXRpb25JdGVtKTsKKyAgICBsZXQgcmVsb2FkVG9vbFRpcDsKKyAgICBpZiAo
V0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2Ny
aXB0KQorICAgICAgICByZWxvYWRUb29sVGlwID0gV0kuVUlTdHJpbmcoIlJlc3RhcnQgKCVzKSIp
LmZvcm1hdChXSS5fcmVsb2FkUGFnZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOworICAg
IGVsc2UKKyAgICAgICAgcmVsb2FkVG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJSZWxvYWQgcGFnZSAo
JXMpXG5SZWxvYWQgcGFnZSBpZ25vcmluZyBjYWNoZSAoJXMpIikuZm9ybWF0KFdJLl9yZWxvYWRQ
YWdlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSwgV0kuX3JlbG9hZFBhZ2VGcm9tT3JpZ2lu
S2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgV0kuX3JlbG9hZFRvb2xiYXJCdXR0
b24gPSBuZXcgV0kuQnV0dG9uVG9vbGJhckl0ZW0oInJlbG9hZCIsIHJlbG9hZFRvb2xUaXAsICJJ
bWFnZXMvUmVsb2FkVG9vbGJhci5zdmciKTsKKyAgICBXSS5fcmVsb2FkVG9vbGJhckJ1dHRvbi5h
ZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJ
Ll9yZWxvYWRUb29sYmFyQnV0dG9uQ2xpY2tlZCk7CiAKLSAgICBsZXQgaW5zcGVjdGVkUGFnZUNv
bnRyb2xOYXZpZ2F0aW9uSXRlbXMgPSBbXTsKKyAgICBXSS5fZG93bmxvYWRUb29sYmFyQnV0dG9u
ID0gbmV3IFdJLkJ1dHRvblRvb2xiYXJJdGVtKCJkb3dubG9hZCIsIFdJLlVJU3RyaW5nKCJEb3du
bG9hZCBXZWIgQXJjaGl2ZSIpLCAiSW1hZ2VzL0Rvd25sb2FkQXJyb3cuc3ZnIik7CisgICAgV0ku
X2Rvd25sb2FkVG9vbGJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl9kb3dubG9hZFdlYkFyY2hpdmUpOwogCiAgICAgbGV0
IGVsZW1lbnRTZWxlY3Rpb25Ub29sVGlwID0gV0kuVUlTdHJpbmcoIlN0YXJ0IGVsZW1lbnQgc2Vs
ZWN0aW9uICglcykiKS5mb3JtYXQoV0kuX2luc3BlY3RNb2RlS2V5Ym9hcmRTaG9ydGN1dC5kaXNw
bGF5TmFtZSk7CiAgICAgbGV0IGFjdGl2YXRlZEVsZW1lbnRTZWxlY3Rpb25Ub29sVGlwID0gV0ku
VUlTdHJpbmcoIlN0b3AgZWxlbWVudCBzZWxlY3Rpb24gKCVzKSIpLmZvcm1hdChXSS5faW5zcGVj
dE1vZGVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKLSAgICBXSS5faW5zcGVjdE1vZGVU
YWJCYXJCdXR0b24gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiaW5zcGVj
dCIsIGVsZW1lbnRTZWxlY3Rpb25Ub29sVGlwLCBhY3RpdmF0ZWRFbGVtZW50U2VsZWN0aW9uVG9v
bFRpcCwgIkltYWdlcy9Dcm9zc2hhaXIuc3ZnIik7Ci0gICAgV0kuX2luc3BlY3RNb2RlVGFiQmFy
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xp
Y2tlZCwgV0kuX3RvZ2dsZUluc3BlY3RNb2RlKTsKLSAgICBpbnNwZWN0ZWRQYWdlQ29udHJvbE5h
dmlnYXRpb25JdGVtcy5wdXNoKFdJLl9pbnNwZWN0TW9kZVRhYkJhckJ1dHRvbik7CisgICAgV0ku
X2luc3BlY3RNb2RlVG9vbGJhckJ1dHRvbiA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJ
dGVtKCJpbnNwZWN0IiwgZWxlbWVudFNlbGVjdGlvblRvb2xUaXAsIGFjdGl2YXRlZEVsZW1lbnRT
ZWxlY3Rpb25Ub29sVGlwLCAiSW1hZ2VzL0Nyb3NzaGFpci5zdmciKTsKKyAgICBXSS5faW5zcGVj
dE1vZGVUb29sYmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX3RvZ2dsZUluc3BlY3RNb2RlKTsKIAotICAgIGlmIChJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaXNSZW1vdGUgfHwgV0kuaXNEZWJ1Z1VJRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMi4yKTogUGFnZS5vdmVycmlkZVNldHRpbmcg
ZGlkIG5vdCBleGlzdC4KLSAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgi
UGFnZS5vdmVycmlkZVVzZXJBZ2VudCIpICYmIEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgi
UGFnZS5vdmVycmlkZVNldHRpbmciKSkgewotICAgICAgICAgICAgY29uc3QgZGV2aWNlU2V0dGlu
Z3NUb29sdGlwID0gV0kuVUlTdHJpbmcoIkRldmljZSBTZXR0aW5ncyIpOwotICAgICAgICAgICAg
V0kuX2RldmljZVNldHRpbmdzVGFiQmFyQnV0dG9uID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uTmF2
aWdhdGlvbkl0ZW0oImRldmljZS1zZXR0aW5ncyIsIGRldmljZVNldHRpbmdzVG9vbHRpcCwgZGV2
aWNlU2V0dGluZ3NUb29sdGlwLCAiSW1hZ2VzL0RldmljZS5zdmciKTsKLSAgICAgICAgICAgIFdJ
Ll9kZXZpY2VTZXR0aW5nc1RhYkJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5h
dmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdJLl9oYW5kbGVEZXZpY2VTZXR0aW5nc1RhYkJh
ckJ1dHRvbkNsaWNrZWQpOwotICAgICAgICAgICAgaW5zcGVjdGVkUGFnZUNvbnRyb2xOYXZpZ2F0
aW9uSXRlbXMucHVzaChXSS5fZGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0b24pOworICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyAxMi4yKTogUGFnZS5vdmVycmlkZVNldHRpbmcgZGlkIG5vdCBleGlz
dC4KKyAgICBpZiAoKEluc3BlY3RvckZyb250ZW5kSG9zdC5pc1JlbW90ZSB8fCBXSS5pc0RlYnVn
VUlFbmFibGVkKCkpICYmIEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiUGFnZS5vdmVycmlk
ZVVzZXJBZ2VudCIpICYmIEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiUGFnZS5vdmVycmlk
ZVNldHRpbmciKSkgeworICAgICAgICBjb25zdCBkZXZpY2VTZXR0aW5nc1Rvb2x0aXAgPSBXSS5V
SVN0cmluZygiRGV2aWNlIFNldHRpbmdzIik7CisgICAgICAgIFdJLl9kZXZpY2VTZXR0aW5nc1Rv
b2xiYXJCdXR0b24gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbSgiZGV2aWNlLXNl
dHRpbmdzIiwgZGV2aWNlU2V0dGluZ3NUb29sdGlwLCBkZXZpY2VTZXR0aW5nc1Rvb2x0aXAsICJJ
bWFnZXMvRGV2aWNlLnN2ZyIpOworICAgICAgICBXSS5fZGV2aWNlU2V0dGluZ3NUb29sYmFyQnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tl
ZCwgV0kuX2hhbmRsZURldmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbkNsaWNrZWQpOwogCi0gICAg
ICAgICAgICBXSS5fZGV2aWNlU2V0dGluZ3NQb3BvdmVyID0gbnVsbDsKLSAgICAgICAgfQorICAg
ICAgICBXSS5fZGV2aWNlU2V0dGluZ3NQb3BvdmVyID0gbnVsbDsKKyAgICB9CiAKLSAgICAgICAg
bGV0IHJlbG9hZFRvb2xUaXA7Ci0gICAgICAgIGlmIChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5
cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCi0gICAgICAgICAgICByZWxvYWRU
b29sVGlwID0gV0kuVUlTdHJpbmcoIlJlc3RhcnQgKCVzKSIpLmZvcm1hdChXSS5fcmVsb2FkUGFn
ZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZWxvYWRUb29sVGlwID0gV0kuVUlTdHJpbmcoIlJlbG9hZCBwYWdlICglcylcblJlbG9hZCBw
YWdlIGlnbm9yaW5nIGNhY2hlICglcykiKS5mb3JtYXQoV0kuX3JlbG9hZFBhZ2VLZXlib2FyZFNo
b3J0Y3V0LmRpc3BsYXlOYW1lLCBXSS5fcmVsb2FkUGFnZUZyb21PcmlnaW5LZXlib2FyZFNob3J0
Y3V0LmRpc3BsYXlOYW1lKTsKLSAgICAgICAgV0kuX3JlbG9hZFRhYkJhckJ1dHRvbiA9IG5ldyBX
SS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgicmVsb2FkIiwgcmVsb2FkVG9vbFRpcCwgIkltYWdlcy9S
ZWxvYWRUb29sYmFyLnN2ZyIpOwotICAgICAgICBXSS5fcmVsb2FkVGFiQmFyQnV0dG9uLmFkZEV2
ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV0kuX3Jl
bG9hZFRhYkJhckJ1dHRvbkNsaWNrZWQpOwotICAgICAgICBpbnNwZWN0ZWRQYWdlQ29udHJvbE5h
dmlnYXRpb25JdGVtcy5wdXNoKFdJLl9yZWxvYWRUYWJCYXJCdXR0b24pOworICAgIFdJLl91cGRh
dGVSZWxvYWRUb29sYmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZURvd25sb2FkVG9vbGJhckJ1
dHRvbigpOworICAgIFdJLl91cGRhdGVJbnNwZWN0TW9kZVRvb2xiYXJCdXR0b24oKTsKIAotICAg
ICAgICBXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0oImRvd25sb2FkIiwgV0kuVUlTdHJpbmcoIkRvd25sb2FkIFdlYiBBcmNoaXZlIiksICJJbWFn
ZXMvRG93bmxvYWRBcnJvdy5zdmciKTsKLSAgICAgICAgV0kuX2Rvd25sb2FkVGFiQmFyQnV0dG9u
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwg
V0kuX2Rvd25sb2FkV2ViQXJjaGl2ZSk7Ci0gICAgICAgIGluc3BlY3RlZFBhZ2VDb250cm9sTmF2
aWdhdGlvbkl0ZW1zLnB1c2goV0kuX2Rvd25sb2FkVGFiQmFyQnV0dG9uKTsKLSAgICB9CisgICAg
V0kuX2Rhc2hib2FyZHMgPSB7CisgICAgICAgIGRlZmF1bHQ6IG5ldyBXSS5EZWZhdWx0RGFzaGJv
YXJkLAorICAgICAgICBkZWJ1Z2dlcjogbmV3IFdJLkRlYnVnZ2VyRGFzaGJvYXJkLAorICAgIH07
CiAKLSAgICBXSS50YWJCYXIuYWRkTmF2aWdhdGlvbkl0ZW1CZWZvcmUobmV3IFdJLkdyb3VwTmF2
aWdhdGlvbkl0ZW0oaW5zcGVjdGVkUGFnZUNvbnRyb2xOYXZpZ2F0aW9uSXRlbXMpKTsKKyAgICBX
SS5fZGFzaGJvYXJkQ29udGFpbmVyID0gbmV3IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXc7Cisg
ICAgV0kuX2Rhc2hib2FyZENvbnRhaW5lci5zaG93RGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVk
T2JqZWN0KFdJLl9kYXNoYm9hcmRzLmRlZmF1bHQpOwogCi0gICAgV0kuX2NvbnNvbGVEaXZpZGVy
TmF2aWdhdGlvbkl0ZW0gPSBuZXcgV0kuRGl2aWRlck5hdmlnYXRpb25JdGVtOwotICAgIFdJLnRh
YkJhci5hZGROYXZpZ2F0aW9uSXRlbUJlZm9yZShXSS5fY29uc29sZURpdmlkZXJOYXZpZ2F0aW9u
SXRlbSk7CisgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShXSS5fY2xvc2VUb29sYmFyQnV0
dG9uLCBXSS5Ub29sYmFyLlNlY3Rpb24uQ29udHJvbCk7CiAKLSAgICBXSS5fY29uc29sZVdhcm5p
bmdzVGFiQmFyQnV0dG9uID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjb25zb2xlLXdh
cm5pbmdzIiwgV0kuVUlTdHJpbmcoIjAgQ29uc29sZSB3YXJuaW5ncyIpLCAiSW1hZ2VzL0lzc3Vl
c0VuYWJsZWQuc3ZnIik7Ci0gICAgV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5pbWFn
ZVR5cGUgPSBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5JbWFnZVR5cGUuSU1HOwotICAgIFdJLl9j
b25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24uaGlkZGVuID0gZmFsc2U7Ci0gICAgV0kuX2NvbnNv
bGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLkV2ZW50LkNsaWNrZWQsICgpID0+IHsKLSAgICAgICAgV0kuc2hvd0NvbnNvbGVUYWIo
V0kuTG9nQ29udGVudFZpZXcuU2NvcGVzLldhcm5pbmdzLCB7Ci0gICAgICAgICAgICBpbml0aWF0
b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRGFzaGJvYXJkLAot
ICAgICAgICB9KTsKLSAgICB9LCBXSSk7Ci0KLSAgICBXSS5fY29uc29sZUVycm9yc1RhYkJhckJ1
dHRvbiA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiY29uc29sZS1lcnJvcnMiLCBXSS5V
SVN0cmluZygiMCBDb25zb2xlIGVycm9ycyIpLCAiSW1hZ2VzL0Vycm9yc0VuYWJsZWQuc3ZnIik7
Ci0gICAgV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0b24uaW1hZ2VUeXBlID0gV0kuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uSW1hZ2VUeXBlLklNRzsKLSAgICBXSS5fY29uc29sZUVycm9yc1RhYkJh
ckJ1dHRvbi5oaWRkZW4gPSBmYWxzZTsKLSAgICBXSS5fY29uc29sZUVycm9yc1RhYkJhckJ1dHRv
bi5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQs
ICgpID0+IHsKLSAgICAgICAgV0kuc2hvd0NvbnNvbGVUYWIoV0kuTG9nQ29udGVudFZpZXcuU2Nv
cGVzLkVycm9ycywgewotICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5U
YWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkRhc2hib2FyZCwKLSAgICAgICAgfSk7Ci0gICAgfSwgV0kp
OworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX3VuZG9ja1Rvb2xiYXJCdXR0b24s
IFdJLlRvb2xiYXIuU2VjdGlvbi5MZWZ0KTsKKyAgICBXSS50b29sYmFyLmFkZFRvb2xiYXJJdGVt
KFdJLl9kb2NrVG9TaWRlVG9vbGJhckJ1dHRvbiwgV0kuVG9vbGJhci5TZWN0aW9uLkxlZnQpOwor
ICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oV0kuX2RvY2tCb3R0b21Ub29sYmFyQnV0dG9u
LCBXSS5Ub29sYmFyLlNlY3Rpb24uTGVmdCk7CisKKyAgICBXSS50b29sYmFyLmFkZFRvb2xiYXJJ
dGVtKFdJLl9yZWxvYWRUb29sYmFyQnV0dG9uLCBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyTGVm
dCk7CisgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRlbShXSS5fZG93bmxvYWRUb29sYmFyQnV0
dG9uLCBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyTGVmdCk7CiAKLSAgICBXSS50YWJCYXIuYWRk
TmF2aWdhdGlvbkl0ZW1CZWZvcmUobmV3IFdJLkdyb3VwTmF2aWdhdGlvbkl0ZW0oWwotICAgICAg
ICBXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9uLAotICAgICAgICBXSS5fY29uc29sZUVy
cm9yc1RhYkJhckJ1dHRvbiwKLSAgICBdKSk7CisgICAgV0kudG9vbGJhci5hZGRUb29sYmFySXRl
bShXSS5fZGFzaGJvYXJkQ29udGFpbmVyLnRvb2xiYXJJdGVtLCBXSS5Ub29sYmFyLlNlY3Rpb24u
Q2VudGVyKTsKIAotICAgIFdJLl91cGRhdGVJbnNwZWN0TW9kZVRhYkJhckJ1dHRvbigpOwotICAg
IFdJLl91cGRhdGVEb3dubG9hZFRhYkJhckJ1dHRvbigpOwotICAgIFdJLl91cGRhdGVSZWxvYWRU
YWJCYXJCdXR0b24oKTsKKyAgICBXSS50b29sYmFyLmFkZFRvb2xiYXJJdGVtKFdJLl9pbnNwZWN0
TW9kZVRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXJSaWdodCk7CiAKLSAg
ICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2
ZW50Lk1lc3NhZ2VBZGRlZCwgV0kuX3VwZGF0ZUNvbnNvbGVUYWJCYXJCdXR0b25zLCBXSSk7Ci0g
ICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5F
dmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIFdJLl91cGRhdGVDb25zb2xl
VGFiQmFyQnV0dG9ucywgV0kpOwotICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgV0kuX3VwZGF0ZUNvbnNvbGVUYWJC
YXJCdXR0b25zLCBXSSk7Ci0gICAgV0kuX3VwZGF0ZUNvbnNvbGVUYWJCYXJCdXR0b25zKCk7Cisg
ICAgaWYgKFdJLl9kZXZpY2VTZXR0aW5nc1Rvb2xiYXJCdXR0b24pCisgICAgICAgIFdJLnRvb2xi
YXIuYWRkVG9vbGJhckl0ZW0oV0kuX2RldmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbiwgV0kuVG9v
bGJhci5TZWN0aW9uLkNlbnRlclJpZ2h0KTsKIAotICAgIFdJLl9kb2NrZWRSZXNpemVyRWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkb2NrZWQtcmVzaXplciIpOwotICAgIFdJLl9k
b2NrZWRSZXNpemVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBvcG92ZXIuSWdub3JlQXV0b0Rp
c21pc3NDbGFzc05hbWUpOwotICAgIFdJLl9kb2NrZWRSZXNpemVyRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZWRvd24iLCBXSS5fZG9ja2VkUmVzaXplck1vdXNlRG93bik7CisgICAgV0ku
X3NlYXJjaFRhYkNvbnRlbnRWaWV3ID0gbmV3IFdJLlNlYXJjaFRhYkNvbnRlbnRWaWV3OworCisg
ICAgaWYgKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhci52YWx1ZSkgewor
ICAgICAgICBXSS50YWJCcm93c2VyLmFkZFRhYkZvckNvbnRlbnRWaWV3KFdJLl9zZWFyY2hUYWJD
b250ZW50Vmlldywge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOworICAgICAgICBXSS50YWJC
YXIuYWRkVGFiQmFySXRlbShXSS5zZXR0aW5nc1RhYkNvbnRlbnRWaWV3LnRhYkJhckl0ZW0sIHtz
dXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBp
bmNyZW1lbnRhbCA9IGZhbHNlOworICAgICAgICBXSS5fc2VhcmNoVG9vbGJhckl0ZW0gPSBuZXcg
V0kuU2VhcmNoQmFyKCJpbnNwZWN0b3Itc2VhcmNoIiwgV0kuVUlTdHJpbmcoIlNlYXJjaCIpLCBp
bmNyZW1lbnRhbCk7CisgICAgICAgIFdJLl9zZWFyY2hUb29sYmFySXRlbS5hZGRFdmVudExpc3Rl
bmVyKFdJLlNlYXJjaEJhci5FdmVudC5UZXh0Q2hhbmdlZCwgV0kuX3NlYXJjaFRleHREaWRDaGFu
Z2UpOworICAgICAgICBXSS50b29sYmFyLmFkZFRvb2xiYXJJdGVtKFdJLl9zZWFyY2hUb29sYmFy
SXRlbSwgV0kuVG9vbGJhci5TZWN0aW9uLlJpZ2h0KTsKKyAgICB9CisKKyAgICBsZXQgZG9ja2Vk
UmVzaXplckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZG9ja2VkLXJlc2l6ZXIi
KTsKKyAgICBkb2NrZWRSZXNpemVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLlBvcG92ZXIuSWdu
b3JlQXV0b0Rpc21pc3NDbGFzc05hbWUpOworICAgIGRvY2tlZFJlc2l6ZXJFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIFdJLl9kb2NrZWRSZXNpemVyTW91c2VEb3duKTsKIAog
ICAgIFdJLl9kb2NraW5nQXZhaWxhYmxlID0gZmFsc2U7CiAKQEAgLTQ3OSw2ICs0NzgsNyBAQCBX
SS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgICAgICBXSS5BdWRpdFRhYkNvbnRlbnRW
aWV3LAogICAgICAgICBXSS5Db25zb2xlVGFiQ29udGVudFZpZXcsCiAgICAgICAgIFdJLlNlYXJj
aFRhYkNvbnRlbnRWaWV3LAorICAgICAgICBXSS5OZXdUYWJDb250ZW50VmlldywKICAgICAgICAg
V0kuU2V0dGluZ3NUYWJDb250ZW50VmlldywKICAgICBdOwogCkBAIC00OTAsMTIgKzQ5MCw2IEBA
IFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICBXSS5fcGVuZGluZ09wZW5UYWJz
ID0gW107CiAKLSAgICBXSS5fc2VhcmNoVGFiQ29udGVudFZpZXcgPSBuZXcgV0kuU2VhcmNoVGFi
Q29udGVudFZpZXc7Ci0gICAgV0kudGFiQnJvd3Nlci5hZGRUYWJGb3JDb250ZW50VmlldyhXSS5f
c2VhcmNoVGFiQ29udGVudFZpZXcsIHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKLQotICAg
IFdJLl9zZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gbmV3IFdJLlNldHRpbmdzVGFiQ29udGVudFZp
ZXc7Ci0gICAgV0kudGFiQnJvd3Nlci5hZGRUYWJGb3JDb250ZW50VmlldyhXSS5fc2V0dGluZ3NU
YWJDb250ZW50Vmlldywge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOwotCiAgICAgLy8gUHJl
dmlvdXNseSB3ZSBtYXkgaGF2ZSBzdG9yZWQgZHVwbGljYXRlcyBpbiBXSSBzZXR0aW5nLiBBdm9p
ZCBjcmVhdGluZyBkdXBsaWNhdGUgdGFicy4KICAgICBsZXQgb3BlblRhYlR5cGVzID0gV0kuX29w
ZW5UYWJzU2V0dGluZy52YWx1ZTsKICAgICBsZXQgc2VlblRhYlR5cGVzID0gbmV3IFNldDsKQEAg
LTUyMywxNiArNTE3LDEzIEBAIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICBX
SS5fcmVzdG9yZUNvb2tpZUZvck9wZW5UYWJzKFdJLlN0YXRlUmVzdG9yYXRpb25UeXBlLkxvYWQp
OwogCi0gICAgaWYgKFdJLnRhYkJhci5ub3JtYWxUYWJDb3VudCkKLSAgICAgICAgV0kudGFiQmFy
LnNlbGVjdGVkVGFiQmFySXRlbSA9IFdJLl9zZWxlY3RlZFRhYkluZGV4U2V0dGluZy52YWx1ZTsK
LSAgICBlbHNlIHsKLSAgICAgICAgLy8gSWYgbm8gdGFicyB3ZXJlIGFibGUgdG8gYmUgcmVzdG9y
ZWQsIHNob3cgYWxsIHRhYnMgdGhhdCBhcmUgYWxsb3dlZC4KLSAgICAgICAgZm9yIChsZXQgdGFi
VHlwZSBvZiBXSS5fb3BlblRhYnNTZXR0aW5nLmRlZmF1bHRWYWx1ZSkgewotICAgICAgICAgICAg
aWYgKFdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKHRhYlR5cGUpKQotICAgICAgICAgICAgICAg
IFdJLmNyZWF0ZU5ld1RhYldpdGhUeXBlKHRhYlR5cGUpCi0gICAgICAgIH0KKyAgICBXSS50YWJC
YXIuc2VsZWN0ZWRUYWJCYXJJdGVtID0gV0kuX3NlbGVjdGVkVGFiSW5kZXhTZXR0aW5nLnZhbHVl
OworCisgICAgaWYgKCFXSS50YWJCYXIuc2VsZWN0ZWRUYWJCYXJJdGVtKQogICAgICAgICBXSS50
YWJCYXIuc2VsZWN0ZWRUYWJCYXJJdGVtID0gMDsKLSAgICB9CisKKyAgICBpZiAoIVdJLnRhYkJh
ci5ub3JtYWxUYWJDb3VudCkKKyAgICAgICAgV0kuc2hvd05ld1RhYlRhYih7c3VwcHJlc3NBbmlt
YXRpb25zOiB0cnVlfSk7CiAKICAgICAvLyBMaXN0ZW4gdG8gdGhlIGV2ZW50cyBhZnRlciByZXN0
b3JpbmcgdGhlIHNhdmVkIHRhYnMgdG8gYXZvaWQgcmVjdXJzaW9uLgogICAgIFdJLnRhYkJhci5h
ZGRFdmVudExpc3RlbmVyKFdJLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtQWRkZWQsIFdJLl9yZW1l
bWJlck9wZW5UYWJzKTsKQEAgLTU0MiwxNyArNTMzLDkgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1
bmN0aW9uKCkKICAgICBmdW5jdGlvbiB1cGRhdGVDb25zb2xlU2F2ZWRSZXN1bHRQcmVmaXhDU1NW
YXJpYWJsZSgpIHsKICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1j
b25zb2xlLXNhdmVkLXJlc3VsdC1wcmVmaXgiLCAiXCIiICsgV0kuUnVudGltZU1hbmFnZXIucHJl
ZmVycmVkU2F2ZWRSZXN1bHRQcmVmaXgoKSArICJcIiIpOwogICAgIH0KLQotICAgIFdJLnNldHRp
bmdzLmNvbnNvbGVTYXZlZFJlc3VsdEFsaWFzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5F
dmVudC5DaGFuZ2VkLCB1cGRhdGVDb25zb2xlU2F2ZWRSZXN1bHRQcmVmaXhDU1NWYXJpYWJsZSwg
V0kuc2V0dGluZ3MpOworICAgIFdJLnNldHRpbmdzLmNvbnNvbGVTYXZlZFJlc3VsdEFsaWFzLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB1cGRhdGVDb25zb2xlU2F2
ZWRSZXN1bHRQcmVmaXhDU1NWYXJpYWJsZSk7CiAgICAgdXBkYXRlQ29uc29sZVNhdmVkUmVzdWx0
UHJlZml4Q1NTVmFyaWFibGUoKTsKIAotICAgIGZ1bmN0aW9uIHVwZGF0ZVpvb21GYWN0b3JDU1NW
YXJpYWJsZSgpIHsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS16
b29tLWZhY3RvciIsIFdJLnNldHRpbmdzLnpvb21GYWN0b3IudmFsdWUpOwotICAgIH0KLQotICAg
IFdJLnNldHRpbmdzLnpvb21GYWN0b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50
LkNoYW5nZWQsIHVwZGF0ZVpvb21GYWN0b3JDU1NWYXJpYWJsZSwgV0kuc2V0dGluZ3MpOwotICAg
IHVwZGF0ZVpvb21GYWN0b3JDU1NWYXJpYWJsZSgpOwotCiAgICAgLy8gU2lnbmFsIHRoYXQgdGhl
IGZyb250ZW5kIGlzIG5vdyByZWFkeSB0byByZWNlaXZlIG1lc3NhZ2VzLgogICAgIFdJLl9iYWNr
ZW5kVGFyZ2V0QXZhaWxhYmxlUHJvbWlzZS5wcm9taXNlLnRoZW4oKCkgPT4gewogICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CkBAIC02ODksMTAgKzY3MiwxNSBA
QCBXSS5fcmVtZW1iZXJPcGVuVGFicyA9IGZ1bmN0aW9uKCkKICAgICBXSS5fb3BlblRhYnNTZXR0
aW5nLnZhbHVlID0gb3BlblRhYnM7CiB9OwogCitXSS5fb3BlbkRlZmF1bHRUYWIgPSBmdW5jdGlv
bihldmVudCkKK3sKKyAgICBXSS5zaG93TmV3VGFiVGFiKHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRy
dWV9KTsKK307CisKIFdJLl9oYW5kbGVTZXR0aW5nc0tleWJvYXJkU2hvcnRjdXQgPSBmdW5jdGlv
bihldmVudCkKIHsKICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAyQyIpIHsg
Ly8gIiwiCi0gICAgICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KFdJLl9z
ZXR0aW5nc1RhYkNvbnRlbnRWaWV3LCB7CisgICAgICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZv
ckNvbnRlbnRWaWV3KFdJLnNldHRpbmdzVGFiQ29udGVudFZpZXcsIHsKICAgICAgICAgICAgIGlu
aXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5LZXlib2Fy
ZFNob3J0Y3V0LAogICAgICAgICB9KTsKICAgICB9CkBAIC03MjAsNiArNzA4LDIwIEBAIFdJLl90
cnlUb1Jlc3RvcmVQZW5kaW5nVGFicyA9IGZ1bmN0aW9uKCkKICAgICB9CiAKICAgICBXSS5fcGVu
ZGluZ09wZW5UYWJzID0gc3RpbGxQZW5kaW5nT3BlblRhYnM7CisKKyAgICBpZiAoIVdJLnNldHRp
bmdzLmV4cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhci52YWx1ZSkKKyAgICAgICAgV0kudGFiQmFy
LnVwZGF0ZU5ld1RhYlRhYkJhckl0ZW1TdGF0ZSgpOworfTsKKworV0kuc2hvd05ld1RhYlRhYiA9
IGZ1bmN0aW9uKG9wdGlvbnMpCit7CisgICAgaWYgKCFXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dl
ZChXSS5OZXdUYWJDb250ZW50Vmlldy5UeXBlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGV0
IHRhYkNvbnRlbnRWaWV3ID0gV0kudGFiQnJvd3Nlci5iZXN0VGFiQ29udGVudFZpZXdGb3JDbGFz
cyhXSS5OZXdUYWJDb250ZW50Vmlldyk7CisgICAgaWYgKCF0YWJDb250ZW50VmlldykKKyAgICAg
ICAgdGFiQ29udGVudFZpZXcgPSBuZXcgV0kuTmV3VGFiQ29udGVudFZpZXc7CisgICAgV0kudGFi
QnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcsIG9wdGlvbnMpOwog
fTsKIAogV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQgPSBmdW5jdGlvbih0YWJUeXBlKQpAQCAt
NzM3LDYgKzczOSwxMyBAQCBXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZCA9IGZ1bmN0aW9uKHRh
YlR5cGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKHRhYkNs
YXNzID09PSBXSS5OZXdUYWJDb250ZW50VmlldykgeworICAgICAgICBsZXQgYWxsVGFicyA9IEFy
cmF5LmZyb20oV0kua25vd25UYWJDbGFzc2VzKCkpOworICAgICAgICBsZXQgYWRkYWJsZVRhYnMg
PSBhbGxUYWJzLmZpbHRlcigodGFiQ2xhc3MpID0+ICF0YWJDbGFzcy50YWJJbmZvKCkuaXNFcGhl
bWVyYWwpOworICAgICAgICBsZXQgY2FuTWFrZU5ld1RhYiA9IGFkZGFibGVUYWJzLnNvbWUoKHRh
YkNsYXNzKSA9PiBXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZCh0YWJDbGFzcy5UeXBlKSk7Cisg
ICAgICAgIHJldHVybiBjYW5NYWtlTmV3VGFiOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwog
fTsKIApAQCAtNzgwLDkgKzc4OSw5IEBAIFdJLmFjdGl2YXRlRXh0cmFEb21haW5zID0gZnVuY3Rp
b24oZG9tYWlucykKICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmluaXRpYWxpemVUYXJn
ZXQoV0kubWFpblRhcmdldCk7CiAgICAgfQogCi0gICAgV0kuX3VwZGF0ZUluc3BlY3RNb2RlVGFi
QmFyQnV0dG9uKCk7Ci0gICAgV0kuX3VwZGF0ZURvd25sb2FkVGFiQmFyQnV0dG9uKCk7Ci0gICAg
V0kuX3VwZGF0ZVJlbG9hZFRhYkJhckJ1dHRvbigpOworICAgIFdJLl91cGRhdGVSZWxvYWRUb29s
YmFyQnV0dG9uKCk7CisgICAgV0kuX3VwZGF0ZURvd25sb2FkVG9vbGJhckJ1dHRvbigpOworICAg
IFdJLl91cGRhdGVJbnNwZWN0TW9kZVRvb2xiYXJCdXR0b24oKTsKIAogICAgIFdJLl90cnlUb1Jl
c3RvcmVQZW5kaW5nVGFicygpOwogfTsKQEAgLTg0Miw2ICs4NTEsOCBAQCBXSS51cGRhdGVEb2Nr
ZWRTdGF0ZSA9IGZ1bmN0aW9uKHNpZGUpCiAKICAgICBXSS5kb2NrZWQgPSBzaWRlICE9PSBXSS5E
b2NrQ29uZmlndXJhdGlvbi5VbmRvY2tlZDsKIAorICAgIFdJLl9pZ25vcmVUb29sYmFyTW9kZURp
ZENoYW5nZUV2ZW50cyA9IHRydWU7CisKICAgICBpZiAoc2lkZSA9PT0gV0kuRG9ja0NvbmZpZ3Vy
YXRpb24uQm90dG9tKSB7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgiZG9j
a2VkIiwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uQm90dG9tKTsKICAgICAgICAgZG9jdW1lbnQuYm9k
eS5jbGFzc0xpc3QucmVtb3ZlKCJ3aW5kb3ctaW5hY3RpdmUiLCBXSS5Eb2NrQ29uZmlndXJhdGlv
bi5SaWdodCwgV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdCk7CkBAIC04NTQsNiArODY1LDggQEAg
V0kudXBkYXRlRG9ja2VkU3RhdGUgPSBmdW5jdGlvbihzaWRlKQogICAgIH0gZWxzZQogICAgICAg
ICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoImRvY2tlZCIsIFdJLkRvY2tDb25maWd1
cmF0aW9uLlJpZ2h0LCBXSS5Eb2NrQ29uZmlndXJhdGlvbi5MZWZ0LCBXSS5Eb2NrQ29uZmlndXJh
dGlvbi5Cb3R0b20pOwogCisgICAgV0kuX2lnbm9yZVRvb2xiYXJNb2RlRGlkQ2hhbmdlRXZlbnRz
ID0gZmFsc2U7CisKICAgICBXSS5fdXBkYXRlRG9ja05hdmlnYXRpb25JdGVtcygpOwogCiAgICAg
aWYgKCFXSS5kb2NrZWRDb25maWd1cmF0aW9uU3VwcG9ydHNTcGxpdENvbnRlbnRCcm93c2VyKCkg
JiYgIVdJLmRvZXNDdXJyZW50VGFiU3VwcG9ydFNwbGl0Q29udGVudEJyb3dzZXIoKSkKQEAgLTEx
MTksMTAgKzExMzIsMTAgQEAgV0kuaXNTaG93aW5nTGF5ZXJzVGFiID0gZnVuY3Rpb24oKQogCiBX
SS5zaG93U2V0dGluZ3NUYWIgPSBmdW5jdGlvbihvcHRpb25zID0ge30pCiB7Ci0gICAgV0kudGFi
QnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcoV0kuX3NldHRpbmdzVGFiQ29udGVudFZpZXcs
IG9wdGlvbnMpOworICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KFdJLnNl
dHRpbmdzVGFiQ29udGVudFZpZXcsIG9wdGlvbnMpOwogCiAgICAgaWYgKG9wdGlvbnMuYmxhY2ti
b3hQYXR0ZXJuVG9TZWxlY3QpCi0gICAgICAgIFdJLl9zZXR0aW5nc1RhYkNvbnRlbnRWaWV3LnNl
bGVjdEJsYWNrYm94UGF0dGVybihvcHRpb25zLmJsYWNrYm94UGF0dGVyblRvU2VsZWN0KTsKKyAg
ICAgICAgV0kuc2V0dGluZ3NUYWJDb250ZW50Vmlldy5zZWxlY3RCbGFja2JveFBhdHRlcm4ob3B0
aW9ucy5ibGFja2JveFBhdHRlcm5Ub1NlbGVjdCk7CiB9OwogCiBXSS5pbmRlbnRTdHJpbmcgPSBm
dW5jdGlvbigpCkBAIC0xMzY3LDE0ICsxMzgwLDM1IEBAIFdJLmRlYnVnZ2VyU3RlcE91dCA9IGZ1
bmN0aW9uKGV2ZW50KQogICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zdGVwT3V0KCk7CiB9OwogCi1X
SS5fZm9jdXNTZWFyY2hGaWVsZCA9IGZ1bmN0aW9uKGV2ZW50KQorV0kuX3NlYXJjaFRleHREaWRD
aGFuZ2UgPSBmdW5jdGlvbihldmVudCkKIHsKLSAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JD
b250ZW50VmlldyhXSS5fc2VhcmNoVGFiQ29udGVudFZpZXcsIHsKKyAgICB2YXIgdGFiQ29udGVu
dFZpZXcgPSBXSS50YWJCcm93c2VyLmJlc3RUYWJDb250ZW50Vmlld0ZvckNsYXNzKFdJLlNlYXJj
aFRhYkNvbnRlbnRWaWV3KTsKKyAgICBpZiAoIXRhYkNvbnRlbnRWaWV3KQorICAgICAgICB0YWJD
b250ZW50VmlldyA9IG5ldyBXSS5TZWFyY2hUYWJDb250ZW50VmlldzsKKworICAgIHZhciBzZWFy
Y2hRdWVyeSA9IFdJLl9zZWFyY2hUb29sYmFySXRlbS50ZXh0OworICAgIFdJLl9zZWFyY2hUb29s
YmFySXRlbS50ZXh0ID0gIiI7CisKKyAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50
Vmlldyh0YWJDb250ZW50VmlldywgewogICAgICAgICAvLyBDbGFzc2lmeSB0aGlzIGFzIGEga2V5
Ym9hcmQgc2hvcnRjdXQsIGFzIHRoZSBvbmx5IG90aGVyIHdheSB0byBnZXQgdG8gU2VhcmNoIFRh
YiBpcyB2aWEgVGFiQmFyIGl0c2VsZi4KICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJv
d3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLktleWJvYXJkU2hvcnRjdXQsCiAgICAgfSk7CiAK
LSAgICBXSS5fc2VhcmNoVGFiQ29udGVudFZpZXcuZm9jdXNTZWFyY2hGaWVsZCgpOworICAgIHRh
YkNvbnRlbnRWaWV3LnBlcmZvcm1TZWFyY2goc2VhcmNoUXVlcnkpOworfTsKKworV0kuX2ZvY3Vz
U2VhcmNoRmllbGQgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBpZiAoV0kuc2V0dGluZ3MuZXhw
ZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFyLnZhbHVlKQorICAgICAgICBXSS50YWJCcm93c2VyLnNo
b3dUYWJGb3JDb250ZW50VmlldyhXSS5fc2VhcmNoVGFiQ29udGVudFZpZXcpOworCisgICAgaWYg
KFdJLnRhYkJyb3dzZXIuc2VsZWN0ZWRUYWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlNlYXJj
aFRhYkNvbnRlbnRWaWV3KSB7CisgICAgICAgIFdJLnRhYkJyb3dzZXIuc2VsZWN0ZWRUYWJDb250
ZW50Vmlldy5mb2N1c1NlYXJjaEZpZWxkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoV0kuX3NlYXJjaFRvb2xiYXJJdGVtKQorICAgICAgICBXSS5fc2VhcmNoVG9vbGJhckl0
ZW0uZm9jdXMoKTsKIH07CiAKIFdJLl9mb2N1c0NoYW5nZWQgPSBmdW5jdGlvbihldmVudCkKQEAg
LTE0ODMsOSArMTUxNywxNiBAQCBXSS5fZGVidWdnZXJEaWRQYXVzZSA9IGZ1bmN0aW9uKGV2ZW50
KQogewogICAgIFdJLnNob3dTb3VyY2VzVGFiKHtzaG93U2NvcGVDaGFpblNpZGViYXI6IFdJLnNl
dHRpbmdzLnNob3dTY29wZUNoYWluT25QYXVzZS52YWx1ZX0pOwogCisgICAgV0kuX2Rhc2hib2Fy
ZENvbnRhaW5lci5zaG93RGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KFdJLl9kYXNo
Ym9hcmRzLmRlYnVnZ2VyKTsKKwogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5icmluZ1RvRnJv
bnQoKTsKIH07CiAKK1dJLl9kZWJ1Z2dlckRpZFJlc3VtZSA9IGZ1bmN0aW9uKGV2ZW50KQorewor
ICAgIFdJLl9kYXNoYm9hcmRDb250YWluZXIuY2xvc2VEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50
ZWRPYmplY3QoV0kuX2Rhc2hib2FyZHMuZGVidWdnZXIpOworfTsKKwogV0kuX2ZyYW1lV2FzQWRk
ZWQgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBpZiAoIVdJLl9mcmFtZUlkZW50aWZpZXJUb1No
b3dTb3VyY2VDb2RlV2hlbkF2YWlsYWJsZSkKQEAgLTE1MTEsNyArMTU1Miw3IEBAIFdJLl9mcmFt
ZVdhc0FkZGVkID0gZnVuY3Rpb24oZXZlbnQpCiAKIFdJLl9tYWluRnJhbWVEaWRDaGFuZ2UgPSBm
dW5jdGlvbihldmVudCkKIHsKLSAgICBXSS5fdXBkYXRlRG93bmxvYWRUYWJCYXJCdXR0b24oKTsK
KyAgICBXSS5fdXBkYXRlRG93bmxvYWRUb29sYmFyQnV0dG9uKCk7CiAKICAgICBXSS51cGRhdGVX
aW5kb3dUaXRsZSgpOwogfTsKQEAgLTE1MjcsNyArMTU2OCw3IEBAIFdJLl9tYWluUmVzb3VyY2VE
aWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKICAgICAgICAgV0kuX3Jlc3RvcmVDb29raWVGb3JP
cGVuVGFicyhXSS5TdGF0ZVJlc3RvcmF0aW9uVHlwZS5OYXZpZ2F0aW9uKTsKICAgICB9KTsKIAot
ICAgIFdJLl91cGRhdGVEb3dubG9hZFRhYkJhckJ1dHRvbigpOworICAgIFdJLl91cGRhdGVEb3du
bG9hZFRvb2xiYXJCdXR0b24oKTsKIAogICAgIFdJLnVwZGF0ZVdpbmRvd1RpdGxlKCk7CiB9OwpA
QCAtMTU0Niw4ICsxNTg3LDYgQEAgV0kuX3Jlc3RvcmVDb29raWVGb3JPcGVuVGFicyA9IGZ1bmN0
aW9uKHJlc3RvcmF0aW9uVHlwZSkKICAgICAgICAgdmFyIHRhYkNvbnRlbnRWaWV3ID0gdGFiQmFy
SXRlbS5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCEodGFiQ29udGVudFZpZXcgaW5z
dGFuY2VvZiBXSS5UYWJDb250ZW50VmlldykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKCF0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rvci5zaG91bGRTYXZlVGFiKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgdGFiQ29udGVudFZpZXcucmVzdG9yZVN0YXRlRnJv
bUNvb2tpZShyZXN0b3JhdGlvblR5cGUpOwogICAgIH0KIApAQCAtMTU2OSw4ICsxNjA4LDYgQEAg
V0kuX3NhdmVDb29raWVGb3JPcGVuVGFicyA9IGZ1bmN0aW9uKCkKICAgICAgICAgdmFyIHRhYkNv
bnRlbnRWaWV3ID0gdGFiQmFySXRlbS5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCEo
dGFiQ29udGVudFZpZXcgaW5zdGFuY2VvZiBXSS5UYWJDb250ZW50VmlldykpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaWYgKCF0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rvci5zaG91
bGRTYXZlVGFiKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdGFiQ29udGVudFZp
ZXcuc2F2ZVN0YXRlVG9Db29raWUoKTsKICAgICB9CiB9OwpAQCAtMTU5NSw2ICsxNjMyLDcgQEAg
V0kuX3dpbmRvd0JsdXJyZWQgPSBmdW5jdGlvbihldmVudCkKIAogV0kuX3dpbmRvd1Jlc2l6ZWQg
PSBmdW5jdGlvbihldmVudCkKIHsKKyAgICBXSS50b29sYmFyLnVwZGF0ZUxheW91dChXSS5WaWV3
LkxheW91dFJlYXNvbi5SZXNpemUpOwogICAgIFdJLnRhYkJhci51cGRhdGVMYXlvdXQoV0kuVmll
dy5MYXlvdXRSZWFzb24uUmVzaXplKTsKICAgICBXSS5fdGFiQnJvd3NlclNpemVEaWRDaGFuZ2Uo
KTsKICAgICBXSS5fdXBkYXRlU2hlZXRSZWN0KCk7CkBAIC0xNjM4LDYgKzE2NzYsMTIgQEAgV0ku
X3dpbmRvd0tleVVwID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgV0kuX3VwZGF0ZU1vZGlmaWVyS2V5
cyhldmVudCk7CiB9OwogCitXSS5fbW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAg
aWYgKFdJLnRvb2xiYXIuZWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKQorICAgICAgICBX
SS5fdG9vbGJhck1vdXNlRG93bihldmVudCk7Cit9OworCiBXSS5fbW91c2VNb3ZlZCA9IGZ1bmN0
aW9uKGV2ZW50KQogewogICAgIFdJLl91cGRhdGVNb2RpZmllcktleXMoZXZlbnQpOwpAQCAtMTcy
MiwxOCArMTc2NiwxNiBAQCBXSS5fdG9nZ2xlUHJldmlvdXNEb2NrQ29uZmlndXJhdGlvbiA9IGZ1
bmN0aW9uKGV2ZW50KQogV0kuX3VwZGF0ZURvY2tOYXZpZ2F0aW9uSXRlbXMgPSBmdW5jdGlvbigp
CiB7CiAgICAgaWYgKFdJLl9kb2NraW5nQXZhaWxhYmxlIHx8IFdJLmRvY2tlZCkgewotICAgICAg
ICBXSS5fY2xvc2VUYWJCYXJCdXR0b24uaGlkZGVuID0gIVdJLmRvY2tlZDsKLSAgICAgICAgV0ku
X3VuZG9ja1RhYkJhckJ1dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJ
LkRvY2tDb25maWd1cmF0aW9uLlVuZG9ja2VkOwotICAgICAgICBXSS5fZG9ja0JvdHRvbVRhYkJh
ckJ1dHRvbi5oaWRkZW4gPSBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1
cmF0aW9uLkJvdHRvbTsKLSAgICAgICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24uaGlkZGVu
ID0gV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5SaWdodCB8
fCBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQ7Cisg
ICAgICAgIFdJLl9jbG9zZVRvb2xiYXJCdXR0b24uaGlkZGVuID0gIVdJLmRvY2tlZDsKKyAgICAg
ICAgV0kuX3VuZG9ja1Rvb2xiYXJCdXR0b24uaGlkZGVuID0gV0kuX2RvY2tDb25maWd1cmF0aW9u
ID09PSBXSS5Eb2NrQ29uZmlndXJhdGlvbi5VbmRvY2tlZDsKKyAgICAgICAgV0kuX2RvY2tCb3R0
b21Ub29sYmFyQnV0dG9uLmhpZGRlbiA9IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9j
a0NvbmZpZ3VyYXRpb24uQm90dG9tOworICAgICAgICBXSS5fZG9ja1RvU2lkZVRvb2xiYXJCdXR0
b24uaGlkZGVuID0gV0kuX2RvY2tDb25maWd1cmF0aW9uID09PSBXSS5Eb2NrQ29uZmlndXJhdGlv
bi5SaWdodCB8fCBXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9u
LkxlZnQ7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgV0kuX2Nsb3NlVGFiQmFyQnV0dG9uLmhpZGRl
biA9IHRydWU7Ci0gICAgICAgIFdJLl91bmRvY2tUYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsK
LSAgICAgICAgV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAgICAg
ICAgV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgV0ku
X2Nsb3NlVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOworICAgICAgICBXSS5fdW5kb2NrVG9v
bGJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOworICAgICAgICBXSS5fZG9ja0JvdHRvbVRvb2xiYXJC
dXR0b24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgV0kuX2RvY2tUb1NpZGVUb29sYmFyQnV0dG9u
LmhpZGRlbiA9IHRydWU7CiAgICAgfQotCi0gICAgV0kuX3VwZGF0ZVRhYkJhckRpdmlkZXJzKCk7
CiB9OwogCiBXSS5fdGFiQnJvd3NlclNpemVEaWRDaGFuZ2UgPSBmdW5jdGlvbigpCkBAIC0xNzYz
LDYgKzE4MDUsNyBAQCBXSS5fc2lkZWJhcldpZHRoRGlkQ2hhbmdlID0gZnVuY3Rpb24oZXZlbnQp
CiBXSS5fc2V0dXBWaWV3SGllcmFyY2h5ID0gZnVuY3Rpb24oKQogewogICAgIGxldCByb290Vmll
dyA9IFdJLlZpZXcucm9vdFZpZXcoKTsKKyAgICByb290Vmlldy5hZGRTdWJ2aWV3KFdJLnRvb2xi
YXIpOwogICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcoV0kudGFiQmFyKTsKICAgICByb290Vmlldy5h
ZGRTdWJ2aWV3KFdJLm5hdmlnYXRpb25TaWRlYmFyKTsKICAgICByb290Vmlldy5hZGRTdWJ2aWV3
KFdJLnRhYkJyb3dzZXIpOwpAQCAtMTc4OCw2ICsxODMxLDIwIEBAIFdJLl90YWJCcm93c2VyU2Vs
ZWN0ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIFdJLmhp
ZGVTcGxpdENvbnNvbGUoKTsKIH07CiAKK1dJLl90b29sYmFyTW91c2VEb3duID0gZnVuY3Rpb24o
ZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LmN0cmxLZXkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChXSS5fZG9ja0NvbmZpZ3VyYXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLlJpZ2h0
IHx8IFdJLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFdJLmRvY2tlZCkKKyAgICAgICAgV0kuX2RvY2tl
ZFJlc2l6ZXJNb3VzZURvd24oZXZlbnQpOworICAgIGVsc2UKKyAgICAgICAgV0kuX21vdmVXaW5k
b3dNb3VzZURvd24oZXZlbnQpOworfTsKKwogV0kuX2RvY2tlZFJlc2l6ZXJNb3VzZURvd24gPSBm
dW5jdGlvbihldmVudCkKIHsKICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8IGV2ZW50LmN0
cmxLZXkpCkBAIC0xNzk3LDcgKzE4NTQsOCBAQCBXSS5fZG9ja2VkUmVzaXplck1vdXNlRG93biA9
IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBPbmx5IHN0YXJ0IGRy
YWdnaW5nIGlmIHRoZSB0YXJnZXQgaXMgb25lIG9mIHRoZSBlbGVtZW50cyB0aGF0IHdlIGV4cGVj
dC4KLSAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBXSS5fZG9ja2VkUmVzaXplckVsZW1lbnQpCisg
ICAgaWYgKGV2ZW50LnRhcmdldC5pZCAhPT0gImRvY2tlZC1yZXNpemVyIiAmJiAhZXZlbnQudGFy
Z2V0LmNsYXNzTGlzdC5jb250YWlucygidG9vbGJhciIpICYmCisgICAgICAgICFldmVudC50YXJn
ZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGV4aWJsZS1zcGFjZSIpICYmICFldmVudC50YXJnZXQu
Y2xhc3NMaXN0LmNvbnRhaW5zKCJpdGVtLXNlY3Rpb24iKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZXZlbnRbV0kuUG9wb3Zlci5FdmVudFByZXZlbnREaXNtaXNzU3ltYm9sXSA9IHRydWU7CkBA
IC0xODY1LDYgKzE5MjMsNTQgQEAgV0kuX2RvY2tlZFJlc2l6ZXJNb3VzZURvd24gPSBmdW5jdGlv
bihldmVudCkKICAgICBXSS5lbGVtZW50RHJhZ1N0YXJ0KHJlc2l6ZXJFbGVtZW50LCBkb2NrZWRS
ZXNpemVyRHJhZywgZG9ja2VkUmVzaXplckRyYWdFbmQsIGV2ZW50LCBXSS5fZG9ja0NvbmZpZ3Vy
YXRpb24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkJvdHRvbSA/ICJyb3ctcmVzaXplIiA6ICJj
b2wtcmVzaXplIik7CiB9OwogCitXSS5fbW92ZVdpbmRvd01vdXNlRG93biA9IGZ1bmN0aW9uKGV2
ZW50KQoreworICAgIGNvbnNvbGUuYXNzZXJ0KCFXSS5kb2NrZWQpOworCisgICAgaWYgKGV2ZW50
LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBPbmx5IHN0YXJ0IGRyYWdnaW5nIGlmIHRoZSB0YXJnZXQgaXMgb25lIG9mIHRoZSBlbGVtZW50
cyB0aGF0IHdlIGV4cGVjdC4KKyAgICBpZiAoIWV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFp
bnMoInRvb2xiYXIiKSAmJiAhZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiZmxleGli
bGUtc3BhY2UiKSAmJgorICAgICAgICAhZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygi
aXRlbS1zZWN0aW9uIikpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50W1dJLlBvcG92ZXIu
RXZlbnRQcmV2ZW50RGlzbWlzc1N5bWJvbF0gPSB0cnVlOworCisgICAgaWYgKFdJLlBsYXRmb3Jt
Lm5hbWUgPT09ICJtYWMiKSB7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zdGFydFdp
bmRvd0RyYWcoKTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHZhciBsYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7CisgICAg
dmFyIGxhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKKworICAgIGZ1bmN0aW9uIHRvb2xiYXJE
cmFnKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgeCA9IGV2ZW50LnNjcmVlblggLSBsYXN0U2Ny
ZWVuWDsKKyAgICAgICAgdmFyIHkgPSBldmVudC5zY3JlZW5ZIC0gbGFzdFNjcmVlblk7CisKKyAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm1vdmVXaW5kb3dCeSh4LCB5KTsKKworICAgICAg
ICBsYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7CisgICAgICAgIGxhc3RTY3JlZW5ZID0gZXZl
bnQuc2NyZWVuWTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0b29sYmFyRHJhZ0VuZChldmVudCkK
KyAgICB7CisgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgV0kuZWxlbWVudERyYWdFbmQoZXZlbnQpOworICAgIH0KKworICAgIFdJ
LmVsZW1lbnREcmFnU3RhcnQoZXZlbnQudGFyZ2V0LCB0b29sYmFyRHJhZywgdG9vbGJhckRyYWdF
bmQsIGV2ZW50LCAiZGVmYXVsdCIpOworfTsKKwogV0kuX2RvbVN0b3JhZ2VXYXNJbnNwZWN0ZWQg
PSBmdW5jdGlvbihldmVudCkKIHsKICAgICBXSS5zaG93U3RvcmFnZVRhYih7aW5pdGlhdG9ySGlu
dDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkluc3BlY3R9KTsKQEAgLTE4
OTMsNyArMTk5OSw3IEBAIFdJLl9kb21Ob2RlV2FzSW5zcGVjdGVkID0gZnVuY3Rpb24oZXZlbnQp
CiAKIFdJLl9pbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50KQogewotICAg
IFdJLl9pbnNwZWN0TW9kZVRhYkJhckJ1dHRvbi5hY3RpdmF0ZWQgPSBXSS5kb21NYW5hZ2VyLmlu
c3BlY3RNb2RlRW5hYmxlZDsKKyAgICBXSS5faW5zcGVjdE1vZGVUb29sYmFyQnV0dG9uLmFjdGl2
YXRlZCA9IFdJLmRvbU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFibGVkOwogfTsKIAogV0kuX3RvZ2ds
ZUluc3BlY3RNb2RlID0gZnVuY3Rpb24oZXZlbnQpCkBAIC0xOTAxLDcgKzIwMDcsNyBAQCBXSS5f
dG9nZ2xlSW5zcGVjdE1vZGUgPSBmdW5jdGlvbihldmVudCkKICAgICBXSS5kb21NYW5hZ2VyLmlu
c3BlY3RNb2RlRW5hYmxlZCA9ICFXSS5kb21NYW5hZ2VyLmluc3BlY3RNb2RlRW5hYmxlZDsKIH07
CiAKLVdJLl9oYW5kbGVEZXZpY2VTZXR0aW5nc1RhYkJhckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlv
bihldmVudCkKK1dJLl9oYW5kbGVEZXZpY2VTZXR0aW5nc1Rvb2xiYXJCdXR0b25DbGlja2VkID0g
ZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgaWYgKFdJLl9kZXZpY2VTZXR0aW5nc1BvcG92ZXIpIHsK
ICAgICAgICAgV0kuX2RldmljZVNldHRpbmdzUG9wb3Zlci5kaXNtaXNzKCk7CkBAIC0xOTEyLDcg
KzIwMTgsNyBAQCBXSS5faGFuZGxlRGV2aWNlU2V0dGluZ3NUYWJCYXJCdXR0b25DbGlja2VkID0g
ZnVuY3Rpb24oZXZlbnQpCiAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgp
OwogCiAgICAgZnVuY3Rpb24gdXBkYXRlQWN0aXZhdGVkU3RhdGUoKSB7Ci0gICAgICAgIFdJLl9k
ZXZpY2VTZXR0aW5nc1RhYkJhckJ1dHRvbi5hY3RpdmF0ZWQgPSBXSS5fb3ZlcnJpZGVuRGV2aWNl
VXNlckFnZW50IHx8IFdJLl9vdmVycmlkZW5EZXZpY2VTZXR0aW5ncy5zaXplID4gMDsKKyAgICAg
ICAgV0kuX2RldmljZVNldHRpbmdzVG9vbGJhckJ1dHRvbi5hY3RpdmF0ZWQgPSBXSS5fb3ZlcnJp
ZGVuRGV2aWNlVXNlckFnZW50IHx8IFdJLl9vdmVycmlkZW5EZXZpY2VTZXR0aW5ncy5zaXplID4g
MDsKICAgICB9CiAKICAgICBmdW5jdGlvbiBhcHBseU92ZXJyaWRkZW5Vc2VyQWdlbnQodmFsdWUs
IGZvcmNlKSB7CkBAIC0xOTkwLDEwICsyMDk2LDEwIEBAIFdJLl9oYW5kbGVEZXZpY2VTZXR0aW5n
c1RhYkJhckJ1dHRvbkNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKICAgICB9CiAKICAgICBmdW5j
dGlvbiBjYWxjdWxhdGVUYXJnZXRGcmFtZSgpIHsKLSAgICAgICAgcmV0dXJuIFdJLlJlY3QucmVj
dEZyb21DbGllbnRSZWN0KFdJLl9kZXZpY2VTZXR0aW5nc1RhYkJhckJ1dHRvbi5lbGVtZW50Lmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpKS5wYWQoMik7CisgICAgICAgIHJldHVybiBXSS5SZWN0LnJl
Y3RGcm9tQ2xpZW50UmVjdChXSS5fZGV2aWNlU2V0dGluZ3NUb29sYmFyQnV0dG9uLmVsZW1lbnQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwogICAgIH0KIAotICAgIGNvbnN0IHByZWZlcnJlZEVk
Z2VzID0gW1dJLlJlY3RFZGdlLk1BWF9ZLCBXSS5SZWN0RWRnZS5NQVhfWF07CisgICAgY29uc3Qg
cHJlZmVycmVkRWRnZXMgPSBbV0kuUmVjdEVkZ2UuTUFYX1ksIFdJLlJlY3RFZGdlLk1JTl9YLCBX
SS5SZWN0RWRnZS5NQVhfWF07CiAKICAgICBXSS5fZGV2aWNlU2V0dGluZ3NQb3BvdmVyID0gbmV3
IFdJLlBvcG92ZXIoV0kpOwogICAgIFdJLl9kZXZpY2VTZXR0aW5nc1BvcG92ZXIud2luZG93UmVz
aXplSGFuZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CkBAIC0yMjAwLDcgKzIzMDYsNyBAQCBXSS5f
cmVsb2FkUGFnZUZyb21PcmlnaW4gPSBmdW5jdGlvbihldmVudCkKICAgICB0YXJnZXQuUGFnZUFn
ZW50LnJlbG9hZC5pbnZva2Uoe2lnbm9yZUNhY2hlOiB0cnVlfSk7CiB9OwogCi1XSS5fcmVsb2Fk
VGFiQmFyQnV0dG9uQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQorV0kuX3JlbG9hZFRvb2xiYXJC
dXR0b25DbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgaWYgKEluc3BlY3RvckZyb250
ZW5kSG9zdC5pbnNwZWN0aW9uTGV2ZWwgPiAxKSB7CiAgICAgICAgIFdJLl9yZWxvYWRJbnNwZWN0
ZWRJbnNwZWN0b3IoKTsKQEAgLTIyMTIsMTA2ICsyMzE4LDI5IEBAIFdJLl9yZWxvYWRUYWJCYXJC
dXR0b25DbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgdGFyZ2V0LlBhZ2VBZ2VudC5yZWxv
YWQuaW52b2tlKHtpZ25vcmVDYWNoZTogV0kubW9kaWZpZXJLZXlzLnNoaWZ0S2V5fSk7CiB9Owog
Ci1XSS5fdXBkYXRlUmVsb2FkVGFiQmFyQnV0dG9uID0gZnVuY3Rpb24oKQorV0kuX3VwZGF0ZVJl
bG9hZFRvb2xiYXJCdXR0b24gPSBmdW5jdGlvbigpCiB7Ci0gICAgaWYgKCFXSS5fcmVsb2FkVGFi
QmFyQnV0dG9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXSS5fcmVsb2FkVGFiQmFyQnV0dG9u
LmhpZGRlbiA9ICFJbnNwZWN0b3JCYWNrZW5kLmhhc0RvbWFpbigiUGFnZSIpOwotICAgIFdJLl91
cGRhdGVUYWJCYXJEaXZpZGVycygpOworICAgIFdJLl9yZWxvYWRUb29sYmFyQnV0dG9uLmhpZGRl
biA9ICFJbnNwZWN0b3JCYWNrZW5kLmhhc0RvbWFpbigiUGFnZSIpOwogfTsKIAotV0kuX3VwZGF0
ZURvd25sb2FkVGFiQmFyQnV0dG9uID0gZnVuY3Rpb24oKQorV0kuX3VwZGF0ZURvd25sb2FkVG9v
bGJhckJ1dHRvbiA9IGZ1bmN0aW9uKCkKIHsKLSAgICBpZiAoIVdJLl9kb3dubG9hZFRhYkJhckJ1
dHRvbikKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFJbnNwZWN0b3JCYWNrZW5kLmhhc0Rv
bWFpbigiUGFnZSIpKSB7Ci0gICAgICAgIFdJLl9kb3dubG9hZFRhYkJhckJ1dHRvbi5oaWRkZW4g
PSB0cnVlOwotICAgICAgICBXSS5fdXBkYXRlVGFiQmFyRGl2aWRlcnMoKTsKKyAgICAgICAgV0ku
X2Rvd25sb2FkVG9vbGJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKFdJLl9kb3dubG9hZGluZ1BhZ2UpIHsKLSAgICAgICAgV0kuX2Rvd25s
b2FkVGFiQmFyQnV0dG9uLmVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgV0kuX2Rvd25sb2FkVG9v
bGJhckJ1dHRvbi5lbmFibGVkID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBXSS5fZG93bmxvYWRUYWJCYXJCdXR0b24uZW5hYmxlZCA9IFdJLmNhbkFyY2hpdmVNYWluRnJh
bWUoKTsKLX07Ci0KLVdJLl91cGRhdGVJbnNwZWN0TW9kZVRhYkJhckJ1dHRvbiA9IGZ1bmN0aW9u
KCkKLXsKLSAgICBXSS5faW5zcGVjdE1vZGVUYWJCYXJCdXR0b24uaGlkZGVuID0gIUluc3BlY3Rv
ckJhY2tlbmQuaGFzRG9tYWluKCJET00iKTsKLSAgICBXSS5fdXBkYXRlVGFiQmFyRGl2aWRlcnMo
KTsKLX07Ci0KLVdJLl91cGRhdGVUYWJCYXJEaXZpZGVycyA9IGZ1bmN0aW9uKCkKLXsKLSAgICBs
ZXQgY2xvc2VIaWRkZW4gPSBXSS5fY2xvc2VUYWJCYXJCdXR0b24uaGlkZGVuOwotICAgIGxldCBk
b2NrVG9TaWRlSGlkZGVuID0gV0kuX2RvY2tUb1NpZGVUYWJCYXJCdXR0b24uaGlkZGVuOwotICAg
IGxldCBkb2NrQm90dG9tSGlkZGVuID0gV0kuX2RvY2tCb3R0b21UYWJCYXJCdXR0b24uaGlkZGVu
OwotICAgIGxldCB1bmRvY2tIaWRkZW4gPSBXSS5fdW5kb2NrVGFiQmFyQnV0dG9uLmhpZGRlbjsK
LQotICAgIGxldCBpbnNwZWN0TW9kZUhpZGRlbiA9IFdJLl9pbnNwZWN0TW9kZVRhYkJhckJ1dHRv
bi5oaWRkZW47Ci0gICAgbGV0IGRldmljZVNldHRpbmdzSGlkZGVuID0gV0kuX2RldmljZVNldHRp
bmdzVGFiQmFyQnV0dG9uICYmIFdJLl9kZXZpY2VTZXR0aW5nc1RhYkJhckJ1dHRvbi5oaWRkZW47
Ci0gICAgbGV0IHJlbG9hZEhpZGRlbiA9IFdJLl9yZWxvYWRUYWJCYXJCdXR0b24gJiYgV0kuX3Jl
bG9hZFRhYkJhckJ1dHRvbi5oaWRkZW47Ci0gICAgbGV0IGRvd25sb2FkSGlkZGVuID0gV0kuX2Rv
d25sb2FkVGFiQmFyQnV0dG9uICYmIFdJLl9kb3dubG9hZFRhYkJhckJ1dHRvbi5oaWRkZW47Ci0K
LSAgICBsZXQgd2FybmluZ3NIaWRkZW4gPSBXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9u
LmhpZGRlbjsKLSAgICBsZXQgZXJyb3JzSGlkZGVuID0gV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJC
dXR0b24uaGlkZGVuOwotCi0gICAgLy8gSGlkZSB0aGUgZGl2aWRlciBpZiBldmVyeXRoaW5nIHRv
IHRoZSBsZWZ0IGlzIGhpZGRlbiBPUiBpZiBldmVyeXRoaW5nIHRvIHRoZSByaWdodCBpcyBoaWRk
ZW4uCi0gICAgV0kuX2RvY2tEaXZpZGVyVGFiQmFyTmF2aWdhdGlvbkl0ZW0uaGlkZGVuID0gKGNs
b3NlSGlkZGVuICYmIGRvY2tUb1NpZGVIaWRkZW4gJiYgZG9ja0JvdHRvbUhpZGRlbiAmJiB1bmRv
Y2tIaWRkZW4pIHx8IChpbnNwZWN0TW9kZUhpZGRlbiAmJiBkZXZpY2VTZXR0aW5nc0hpZGRlbiAm
JiByZWxvYWRIaWRkZW4gJiYgZG93bmxvYWRIaWRkZW4gJiYgd2FybmluZ3NIaWRkZW4gJiYgZXJy
b3JzSGlkZGVuKTsKLSAgICBXSS5fY29uc29sZURpdmlkZXJOYXZpZ2F0aW9uSXRlbS5oaWRkZW4g
PSAoY2xvc2VIaWRkZW4gJiYgZG9ja1RvU2lkZUhpZGRlbiAmJiBkb2NrQm90dG9tSGlkZGVuICYm
IHVuZG9ja0hpZGRlbiAmJiBpbnNwZWN0TW9kZUhpZGRlbiAmJiBkZXZpY2VTZXR0aW5nc0hpZGRl
biAmJiByZWxvYWRIaWRkZW4gJiYgZG93bmxvYWRIaWRkZW4pIHx8ICh3YXJuaW5nc0hpZGRlbiAm
JiBlcnJvcnNIaWRkZW4pOwotCi0gICAgV0kudGFiQmFyLm5lZWRzTGF5b3V0KCk7CisgICAgV0ku
X2Rvd25sb2FkVG9vbGJhckJ1dHRvbi5lbmFibGVkID0gV0kuY2FuQXJjaGl2ZU1haW5GcmFtZSgp
OwogfTsKIAotV0kuX3VwZGF0ZUNvbnNvbGVUYWJCYXJCdXR0b25zID0gZnVuY3Rpb24oKQorV0ku
X3VwZGF0ZUluc3BlY3RNb2RlVG9vbGJhckJ1dHRvbiA9IGZ1bmN0aW9uKCkKIHsKLSAgICBmdW5j
dGlvbiBwdWxzZShlbGVtZW50KSB7Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gZm9yY2UgYSBzdHls
ZSBpbnZhbGlkYXRpb24gaW4gdGhlIGNhc2Ugd2hlcmUgd2UgYWxyZWFkeQotICAgICAgICAvLyB3
ZXJlIGFuaW1hdGluZyB0aGlzIGl0ZW0gYWZ0ZXIgd2UndmUgcmVtb3ZlZCB0aGUgcHVsc2luZyBD
U1MgY2xhc3MuCi0gICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygicHVsc2lu
ZyIpKSB7Ci0gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInB1bHNpbmciKTsK
LSAgICAgICAgICAgIGVsZW1lbnQucmVjYWxjdWxhdGVTdHlsZXMoKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIiwg
KCkgPT4gewotICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgicHVsc2lu
ZyIpOwotICAgICAgICAgICAgfSwge29uY2U6IHRydWV9KTsKLSAgICAgICAgfQotCi0gICAgICAg
IGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicHVsc2luZyIpOwotICAgIH0KLSAgICBsZXQgd2Fybmlu
Z0NvdW50ID0gV0kuY29uc29sZU1hbmFnZXIud2FybmluZ0NvdW50OwotICAgIGlmICh3YXJuaW5n
Q291bnQpIHsKLSAgICAgICAgbGV0IHdhcm5pbmdGb3JtYXQgPSAod2FybmluZ0NvdW50ID09PSAx
KSA/IFdJLlVJU3RyaW5nKCJDbGljayB0byBzaG93ICVkIHdhcm5pbmcgaW4gdGhlIENvbnNvbGUi
KSA6IFdJLlVJU3RyaW5nKCJDbGljayB0byBzaG93ICVkIHdhcm5pbmdzIGluIHRoZSBDb25zb2xl
Iik7Ci0gICAgICAgIFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJCdXR0b24udG9vbHRpcCA9IHdh
cm5pbmdGb3JtYXQuZm9ybWF0KHdhcm5pbmdDb3VudCk7Ci0gICAgICAgIFdJLl9jb25zb2xlV2Fy
bmluZ3NUYWJCYXJCdXR0b24uaGlkZGVuID0gZmFsc2U7Ci0KLSAgICAgICAgaWYgKHdhcm5pbmdD
b3VudCAhPT0gV0kuX2NvbnNvbGVXYXJuaW5nc1RhYkJhckJ1dHRvbi5fX2xhc3RXYXJuaW5nQ291
bnQpCi0gICAgICAgICAgICBwdWxzZShXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9uLmVs
ZW1lbnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFdJLl9jb25zb2xlV2FybmluZ3NUYWJCYXJC
dXR0b24uaGlkZGVuID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBsZXQgZXJyb3JDb3VudCA9IFdJLmNv
bnNvbGVNYW5hZ2VyLmVycm9yQ291bnQ7Ci0gICAgaWYgKGVycm9yQ291bnQpIHsKLSAgICAgICAg
bGV0IGVycm9yRm9ybWF0ID0gKGVycm9yQ291bnQgPT09IDEpID8gV0kuVUlTdHJpbmcoIkNsaWNr
IHRvIHNob3cgJWQgZXJyb3IgaW4gdGhlIENvbnNvbGUiKSA6IFdJLlVJU3RyaW5nKCJDbGljayB0
byBzaG93ICVkIGVycm9ycyBpbiB0aGUgQ29uc29sZSIpOwotICAgICAgICBXSS5fY29uc29sZUVy
cm9yc1RhYkJhckJ1dHRvbi50b29sdGlwID0gZXJyb3JGb3JtYXQuZm9ybWF0KGVycm9yQ291bnQp
OwotICAgICAgICBXSS5fY29uc29sZUVycm9yc1RhYkJhckJ1dHRvbi5oaWRkZW4gPSBmYWxzZTsK
LQotICAgICAgICBpZiAoZXJyb3JDb3VudCAhPT0gV0kuX2NvbnNvbGVFcnJvcnNUYWJCYXJCdXR0
b24uX19sYXN0RXJyb3JDb3VudCkKLSAgICAgICAgICAgIHB1bHNlKFdJLl9jb25zb2xlRXJyb3Jz
VGFiQmFyQnV0dG9uLmVsZW1lbnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFdJLl9jb25zb2xl
RXJyb3JzVGFiQmFyQnV0dG9uLmhpZGRlbiA9IHRydWU7Ci0gICAgfQotCi0gICAgV0kuX3VwZGF0
ZVRhYkJhckRpdmlkZXJzKCk7Ci0KLSAgICBXSS5fY29uc29sZVdhcm5pbmdzVGFiQmFyQnV0dG9u
Ll9fbGFzdFdhcm5pbmdDb3VudCA9IHdhcm5pbmdDb3VudDsKLSAgICBXSS5fY29uc29sZUVycm9y
c1RhYkJhckJ1dHRvbi5fX2xhc3RFcnJvckNvdW50ID0gZXJyb3JDb3VudDsKKyAgICBXSS5faW5z
cGVjdE1vZGVUb29sYmFyQnV0dG9uLmhpZGRlbiA9ICFJbnNwZWN0b3JCYWNrZW5kLmhhc0RvbWFp
bigiRE9NIik7CiB9OwogCiBXSS5fc2hvd0NvbnNvbGVUYWIgPSBmdW5jdGlvbihldmVudCkKQEAg
LTI2NjgsOSArMjY5NywxNCBAQCBXSS5zZXRMYXlvdXREaXJlY3Rpb24gPSBmdW5jdGlvbih2YWx1
ZSkKICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QucmVvcGVuKCk7CiB9OwogCitXSS5fc2hvd05l
d1RhYkZyb21TaG9ydGN1dCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXSS5zaG93TmV3VGFiVGFiKHtp
bml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuS2V5Ym9h
cmRTaG9ydGN1dH0pOworfQorCiBXSS5fc2hvd1RhYkF0SW5kZXhGcm9tU2hvcnRjdXQgPSBmdW5j
dGlvbihpKQogewotICAgIGlmIChpIDw9IFdJLnRhYkJhci50YWJDb3VudCkgeworICAgIGlmIChp
IDw9IFdJLnRhYkJhci50YWJCYXJJdGVtcy5sZW5ndGgpIHsKICAgICAgICAgV0kudGFiQmFyLnNl
bGVjdFRhYkJhckl0ZW0oaSAtIDEsIHsKICAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRh
YkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5LZXlib2FyZFNob3J0Y3V0LAogICAgICAg
ICB9KTsKQEAgLTMxMjAsMTIgKzMxNTQsMTIgQEAgV0kucmV2ZXJ0RE9NQ2hhbmdlcyA9IGZ1bmN0
aW9uKGRvbUNoYW5nZXMpCiBXSS5hcmNoaXZlTWFpbkZyYW1lID0gZnVuY3Rpb24oKQogewogICAg
IFdJLl9kb3dubG9hZGluZ1BhZ2UgPSB0cnVlOwotICAgIFdJLl91cGRhdGVEb3dubG9hZFRhYkJh
ckJ1dHRvbigpOworICAgIFdJLl91cGRhdGVEb3dubG9hZFRvb2xiYXJCdXR0b24oKTsKIAogICAg
IGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKICAgICB0YXJnZXQuUGFnZUFn
ZW50LmFyY2hpdmUoKGVycm9yLCBkYXRhKSA9PiB7CiAgICAgICAgIFdJLl9kb3dubG9hZGluZ1Bh
Z2UgPSBmYWxzZTsKLSAgICAgICAgV0kuX3VwZGF0ZURvd25sb2FkVGFiQmFyQnV0dG9uKCk7Cisg
ICAgICAgIFdJLl91cGRhdGVEb3dubG9hZFRvb2xiYXJCdXR0b24oKTsKIAogICAgICAgICBpZiAo
ZXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKaW5kZXggMWFmODdhODNjZThlNjU5MGNm
MjlmYWNkYzgzMTcyZGE1MzcxODZiOS4uZDRjMTU0ZDk3MzlmOGNkMmQ3ZThlMGY0ZTUxZWI4ZGQ4
Y2ZiNjlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9TZXR0aW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvU2V0dGluZy5qcwpAQCAtMjE3LDYgKzIxNyw3IEBAIFdJLnNldHRpbmdzID0gewogCiAg
ICAgLy8gRXhwZXJpbWVudGFsCiAgICAgZXhwZXJpbWVudGFsRW5hYmxlUHJldmlld0ZlYXR1cmVz
OiBuZXcgV0kuU2V0dGluZygiZXhwZXJpbWVudGFsLWVuYWJsZS1wcmV2aWV3LWZlYXR1cmVzIiwg
dHJ1ZSksCisgICAgZXhwZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFyOiBuZXcgV0kuU2V0dGluZygi
ZXhwZXJpbWVudGFsLWVuYWJsZS1uZXctdGFiLWJhciIsIGZhbHNlKSwKICAgICBleHBlcmltZW50
YWxFbmFibGVTdHlsZXNKdW1wVG9FZmZlY3RpdmU6IG5ldyBXSS5TZXR0aW5nKCJleHBlcmltZW50
YWwtc3R5bGVzLWp1bXAtdG8tZWZmZWN0aXZlIiwgZmFsc2UpLAogCiAgICAgLy8gUHJvdG9jb2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0NvbnNvbGVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQ29uc29sZU1hbmFnZXIuanMKaW5kZXggODJmYmJmMTU3MGM0OTlmYTNh
MjExMzIyZWI1N2U1M2NlZjZiYTVkNi4uZDkwZTlhYWYzNDQwNDFmY2IyOTRjNjcwZmQ2Mzg2ZTBl
ZTcxYzJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ29uc29sZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29uc29sZU1hbmFnZXIuanMKQEAgLTMwLDExICsz
MCw4IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29sZU1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fd2Fybmlu
Z0NvdW50ID0gMDsKLSAgICAgICAgdGhpcy5fZXJyb3JDb3VudCA9IDA7CiAgICAgICAgIHRoaXMu
X2lzc3VlcyA9IFtdOwogCi0gICAgICAgIHRoaXMuX2xhc3RNZXNzYWdlTGV2ZWwgPSBudWxsOwog
ICAgICAgICB0aGlzLl9jbGVhck1lc3NhZ2VzUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgICAgIHRo
aXMuX2lzTmV3UGFnZU9yUmVsb2FkID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3JlbW90ZU9iamVj
dHNUb1JlbGVhc2UgPSBudWxsOwpAQCAtNjUsOCArNjIsNiBAQCBXSS5Db25zb2xlTWFuYWdlciA9
IGNsYXNzIENvbnNvbGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAvLyBQdWJsaWMK
IAotICAgIGdldCB3YXJuaW5nQ291bnQoKSB7IHJldHVybiB0aGlzLl93YXJuaW5nQ291bnQ7IH0K
LSAgICBnZXQgZXJyb3JDb3VudCgpIHsgcmV0dXJuIHRoaXMuX2Vycm9yQ291bnQ7IH0KICAgICBn
ZXQgY3VzdG9tTG9nZ2luZ0NoYW5uZWxzKCkgeyByZXR1cm4gdGhpcy5fY3VzdG9tTG9nZ2luZ0No
YW5uZWxzOyB9CiAgICAgZ2V0IGxvZ0NoYW5uZWxTb3VyY2VzKCkgeyByZXR1cm4gdGhpcy5fbG9n
Z2luZ0NoYW5uZWxTb3VyY2VzOyB9CiAKQEAgLTEwMSwxMSArOTYsOSBAQCBXSS5Db25zb2xlTWFu
YWdlciA9IGNsYXNzIENvbnNvbGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAg
bGV0IG1lc3NhZ2UgPSBuZXcgV0kuQ29uc29sZU1lc3NhZ2UodGFyZ2V0LCBzb3VyY2UsIGxldmVs
LCB0ZXh0LCB0eXBlLCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291bnQsIHBhcmFtZXRlcnMs
IHN0YWNrVHJhY2UsIG51bGwpOwogCi0gICAgICAgIHRoaXMuX2luY3JlbWVudE1lc3NhZ2VMZXZl
bENvdW50KG1lc3NhZ2UubGV2ZWwsIG1lc3NhZ2UucmVwZWF0Q291bnQpOwotCiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3Nh
Z2VBZGRlZCwge21lc3NhZ2V9KTsKIAotICAgICAgICBpZiAobWVzc2FnZS5sZXZlbCA9PT0gV0ku
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcgfHwgbWVzc2FnZS5sZXZlbCA9PT0g
V0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yKSB7CisgICAgICAgIGlmIChtZXNz
YWdlLmxldmVsID09PSAid2FybmluZyIgfHwgbWVzc2FnZS5sZXZlbCA9PT0gImVycm9yIikgewog
ICAgICAgICAgICAgbGV0IGlzc3VlID0gbmV3IFdJLklzc3VlTWVzc2FnZShtZXNzYWdlKTsKICAg
ICAgICAgICAgIHRoaXMuX2lzc3Vlcy5wdXNoKGlzc3VlKTsKIApAQCAtMTI3LDEyICsxMjAsOCBA
QCBXSS5Db25zb2xlTWFuYWdlciA9IGNsYXNzIENvbnNvbGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgICAgICAvLyBGcm9udGVuZCByZXF1ZXN0ZWQgImNsZWFyIGNvbnNvbGUiIGFu
ZCBCYWNrZW5kIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgdGhlIHJlcXVlc3QuCiAgICAgICAgICAg
ICB0aGlzLl9jbGVhck1lc3NhZ2VzUmVxdWVzdGVkID0gZmFsc2U7CiAKLSAgICAgICAgICAgIHRo
aXMuX3dhcm5pbmdDb3VudCA9IDA7Ci0gICAgICAgICAgICB0aGlzLl9lcnJvckNvdW50ID0gMDsK
ICAgICAgICAgICAgIHRoaXMuX2lzc3VlcyA9IFtdOwogCi0gICAgICAgICAgICB0aGlzLl9sYXN0
TWVzc2FnZUxldmVsID0gbnVsbDsKLQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBSZWNlaXZlZCBhbiB1bnJlcXVlc3RlZCBjbGVhciBjb25zb2xl
IGV2ZW50LgpAQCAtMTQ1LDggKzEzNCw2IEBAIFdJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29u
c29sZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIG1lc3NhZ2VSZXBlYXRDb3VudFVw
ZGF0ZWQoY291bnQpCiAgICAgewotICAgICAgICB0aGlzLl9pbmNyZW1lbnRNZXNzYWdlTGV2ZWxD
b3VudCh0aGlzLl9sYXN0TWVzc2FnZUxldmVsLCAxKTsKLQogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5Db25zb2xlTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VS
ZXBlYXRDb3VudFVwZGF0ZWQsIHtjb3VudH0pOwogICAgIH0KIApAQCAtMTgyLDIwICsxNjksNiBA
QCBXSS5Db25zb2xlTWFuYWdlciA9IGNsYXNzIENvbnNvbGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaW5jcmVtZW50TWVzc2FnZUxldmVsQ291bnQo
bGV2ZWwsIGNvdW50KQotICAgIHsKLSAgICAgICAgc3dpdGNoIChsZXZlbCkgewotICAgICAgICBj
YXNlIFdJLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nOgotICAgICAgICAgICAg
dGhpcy5fd2FybmluZ0NvdW50ICs9IGNvdW50OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yOgotICAgICAgICAgICAg
dGhpcy5fZXJyb3JDb3VudCArPSBjb3VudDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0KLSAgICAgICAgdGhpcy5fbGFzdE1lc3NhZ2VMZXZlbCA9IGxldmVsOwotICAgIH0KLQogICAg
IF9kZWxheWVkTWVzc2FnZXNDbGVhcmVkKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9pc05l
d1BhZ2VPclJlbG9hZCkgewpAQCAtMjA1LDEyICsxNzgsOCBAQCBXSS5Db25zb2xlTWFuYWdlciA9
IGNsYXNzIENvbnNvbGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fd2FybmluZ0NvdW50ID0gMDsKLSAg
ICAgICAgdGhpcy5fZXJyb3JDb3VudCA9IDA7CiAgICAgICAgIHRoaXMuX2lzc3VlcyA9IFtdOwog
Ci0gICAgICAgIHRoaXMuX2xhc3RNZXNzYWdlTGV2ZWwgPSBudWxsOwotCiAgICAgICAgIC8vIEEg
Y29uc29sZS5jbGVhcigpIG9yIGNvbW1hbmQgbGluZSBjbGVhcigpIGhhcHBlbmVkLgogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db25zb2xlTWFuYWdlci5FdmVudC5D
bGVhcmVkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9EZWJ1Zy9Cb290c3RyYXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9EZWJ1Zy9Cb290c3RyYXAuanMKaW5kZXggNTA1M2E4Mjc2OWRjYmIxYWRiMDY0MGRk
NzVmYjE5YzhjOTdkMzBkOC4uNjM3NmUzNTEzYzgyOTg3OGQ5ZjllNDc4MDc2NjJlZGEyOGE5N2Zh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcv
Qm9vdHN0cmFwLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Rl
YnVnL0Jvb3RzdHJhcC5qcwpAQCAtNTYsNyArNTYsNyBAQCBXSS5ydW5Cb290c3RyYXBPcGVyYXRp
b25zID0gZnVuY3Rpb24oKSB7CiAgICAgY29uc3QgRHVtcE1lc3NhZ2VzU3RhdGUgPSB7T2ZmOiAi
b2ZmIiwgRmlsdGVyaW5nOiAiZmlsdGVyaW5nIiwgRXZlcnl0aGluZzogImV2ZXJ5dGhpbmcifTsK
ICAgICBjb25zdCBkdW1wTWVzc2FnZXNUb29sVGlwID0gV0kudW5sb2NhbGl6ZWRTdHJpbmcoIkVu
YWJsZSBkdW1wIGluc3BlY3RvciBtZXNzYWdlcyB0byBjb25zb2xlLlxuU2hpZnQtY2xpY2sgdG8g
ZHVtcCBhbGwgaW5zcGVjdG9yIG1lc3NhZ2VzIHdpdGggbm8gZmlsdGVyaW5nLiIpOwogICAgIGNv
bnN0IGR1bXBNZXNzYWdlc0FjdGl2YXRlZFRvb2xUaXAgPSBXSS51bmxvY2FsaXplZFN0cmluZygi
RGlzYWJsZSBkdW1wIGluc3BlY3RvciBtZXNzYWdlcyB0byBjb25zb2xlIik7Ci0gICAgbGV0IGR1
bXBNZXNzYWdlc1RhYkJhck5hdmlnYXRpb25JdGVtID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uTmF2
aWdhdGlvbkl0ZW0oImR1bXAtbWVzc2FnZXMiLCBkdW1wTWVzc2FnZXNUb29sVGlwLCBkdW1wTWVz
c2FnZXNBY3RpdmF0ZWRUb29sVGlwLCAiSW1hZ2VzL0NvbnNvbGUuc3ZnIik7CisgICAgbGV0IGR1
bXBNZXNzYWdlc1Rvb2xiYXJJdGVtID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0o
ImR1bXAtbWVzc2FnZXMiLCBkdW1wTWVzc2FnZXNUb29sVGlwLCBkdW1wTWVzc2FnZXNBY3RpdmF0
ZWRUb29sVGlwLCAiSW1hZ2VzL0NvbnNvbGUuc3ZnIik7CiAKICAgICBmdW5jdGlvbiBkdW1wTWVz
c2FnZXNDdXJyZW50U3RhdGUoKSB7CiAgICAgICAgIGlmICghSW5zcGVjdG9yQmFja2VuZC5kdW1w
SW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcykKQEAgLTcyLDI2ICs3MiwyNyBAQCBXSS5ydW5Cb290
c3RyYXBPcGVyYXRpb25zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIGNhc2UgRHVtcE1lc3NhZ2Vz
U3RhdGUuT2ZmOgogICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5kdW1wSW5zcGVjdG9yUHJv
dG9jb2xNZXNzYWdlcyA9IGZhbHNlOwogICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5maWx0
ZXJNdWx0aXBsZXhpbmdCYWNrZW5kSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IGZhbHNlOwot
ICAgICAgICAgICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0g
ZmFsc2U7Ci0gICAgICAgICAgICBkdW1wTWVzc2FnZXNUYWJCYXJOYXZpZ2F0aW9uSXRlbS5lbGVt
ZW50LmZpcnN0Q2hpbGQuc3R5bGUucmVtb3ZlUHJvcGVydHkoImNvbG9yIik7CisgICAgICAgICAg
ICBkdW1wTWVzc2FnZXNUb29sYmFySXRlbS5hY3RpdmF0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IGR1bXBNZXNzYWdlc1Rvb2xiYXJJdGVtLmVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoImNv
bG9yIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEdW1wTWVzc2FnZXNTdGF0
ZS5GaWx0ZXJpbmc6CiAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmR1bXBJbnNwZWN0b3JQ
cm90b2NvbE1lc3NhZ2VzID0gdHJ1ZTsKICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZmls
dGVyTXVsdGlwbGV4aW5nQmFja2VuZEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSB0cnVlOwot
ICAgICAgICAgICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIGR1bXBNZXNzYWdlc1RhYkJhck5hdmlnYXRpb25JdGVtLmVsZW1l
bnQuZmlyc3RDaGlsZC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiY29sb3IiKTsKKyAgICAgICAgICAg
IGR1bXBNZXNzYWdlc1Rvb2xiYXJJdGVtLmFjdGl2YXRlZCA9IHRydWU7CisgICAgICAgICAgICBk
dW1wTWVzc2FnZXNUb29sYmFySXRlbS5lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJjb2xv
ciIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRHVtcE1lc3NhZ2VzU3RhdGUu
RXZlcnl0aGluZzoKICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZHVtcEluc3BlY3RvclBy
b3RvY29sTWVzc2FnZXMgPSB0cnVlOwogICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5maWx0
ZXJNdWx0aXBsZXhpbmdCYWNrZW5kSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IGZhbHNlOwot
ICAgICAgICAgICAgZHVtcE1lc3NhZ2VzVGFiQmFyTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIGR1bXBNZXNzYWdlc1RhYkJhck5hdmlnYXRpb25JdGVtLmVsZW1l
bnQuZmlyc3RDaGlsZC5zdHlsZS5jb2xvciA9ICJyZ2IoMTY0LCA0MSwgMTU0KSI7CisgICAgICAg
ICAgICBkdW1wTWVzc2FnZXNUb29sYmFySXRlbS5hY3RpdmF0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgZHVtcE1lc3NhZ2VzVG9vbGJhckl0ZW0uZWxlbWVudC5zdHlsZS5jb2xvciA9ICJyZ2IoMTY0
LCA0MSwgMTU0KSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZ25v
cmVDaGFuZ2VzVG9TdGF0ZSA9IGZhbHNlOwogICAgIH0KIAotICAgIGR1bXBNZXNzYWdlc1RhYkJh
ck5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RXZlbnQuQ2xpY2tlZCwgKCkgPT4geworICAgIFdJLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0oZHVt
cE1lc3NhZ2VzVG9vbGJhckl0ZW0sIFdJLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXJSaWdodCk7Cisg
ICAgZHVtcE1lc3NhZ2VzVG9vbGJhckl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCAoKSA9PiB7CiAgICAgICAgIGxldCBuZXh0U3RhdGU7
CiAgICAgICAgIHN3aXRjaCAoZHVtcE1lc3NhZ2VzQ3VycmVudFN0YXRlKCkpIHsKICAgICAgICAg
Y2FzZSBEdW1wTWVzc2FnZXNTdGF0ZS5PZmY6CkBAIC0xMTYsMjEgKzExNywxNiBAQCBXSS5ydW5C
b290c3RyYXBPcGVyYXRpb25zID0gZnVuY3Rpb24oKSB7CiAgICAgLy8gTmV4dCBMZXZlbCBJbnNw
ZWN0b3IuCiAgICAgbGV0IGluc3BlY3Rpb25MZXZlbCA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5p
bnNwZWN0aW9uTGV2ZWw7CiAgICAgY29uc3QgaW5zcGVjdEluc3BlY3RvclRvb2xUaXAgPSBXSS51
bmxvY2FsaXplZFN0cmluZygiT3BlbiBXZWIgSW5zcGVjdG9yIFslZF0iKS5mb3JtYXQoaW5zcGVj
dGlvbkxldmVsICsgMSk7Ci0gICAgbGV0IGluc3BlY3RJbnNwZWN0b3JUYWJCYXJOYXZpZ2F0aW9u
SXRlbSA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiaW5zcGVjdC1pbnNwZWN0b3IiLCBp
bnNwZWN0SW5zcGVjdG9yVG9vbFRpcCk7Ci0gICAgaW5zcGVjdEluc3BlY3RvclRhYkJhck5hdmln
YXRpb25JdGVtLmVsZW1lbnQudGV4dENvbnRlbnQgPSBpbnNwZWN0aW9uTGV2ZWwgKyAxOwotICAg
IGluc3BlY3RJbnNwZWN0b3JUYWJCYXJOYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdJ
LkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsICgpID0+IHsKKyAgICBsZXQgaW5z
cGVjdEluc3BlY3RvclRvb2xiYXJJdGVtID0gbmV3IFdJLkJ1dHRvblRvb2xiYXJJdGVtKCJpbnNw
ZWN0LWluc3BlY3RvciIsIGluc3BlY3RJbnNwZWN0b3JUb29sVGlwKTsKKyAgICBXSS50b29sYmFy
LmFkZFRvb2xiYXJJdGVtKGluc3BlY3RJbnNwZWN0b3JUb29sYmFySXRlbSwgV0kuVG9vbGJhci5T
ZWN0aW9uLkNlbnRlclJpZ2h0KTsKKyAgICBpbnNwZWN0SW5zcGVjdG9yVG9vbGJhckl0ZW0uZWxl
bWVudC50ZXh0Q29udGVudCA9IGluc3BlY3Rpb25MZXZlbCArIDE7CisgICAgaW5zcGVjdEluc3Bl
Y3RvclRvb2xiYXJJdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RXZlbnQuQ2xpY2tlZCwgKCkgPT4gewogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaW5z
cGVjdEluc3BlY3RvcigpOwogICAgIH0pOwogCi0gICAgbGV0IGdyb3VwTmF2aWdhdGlvbkl0ZW0g
PSBuZXcgV0kuR3JvdXBOYXZpZ2F0aW9uSXRlbShbCi0gICAgICAgIGR1bXBNZXNzYWdlc1RhYkJh
ck5hdmlnYXRpb25JdGVtLAotICAgICAgICBpbnNwZWN0SW5zcGVjdG9yVGFiQmFyTmF2aWdhdGlv
bkl0ZW0sCi0gICAgXSk7Ci0gICAgV0kudGFiQmFyLmFkZE5hdmlnYXRpb25JdGVtQWZ0ZXIoZ3Jv
dXBOYXZpZ2F0aW9uSXRlbSk7Ci0KICAgICBmdW5jdGlvbiB1cGRhdGVEZWJ1Z1VJKCkgewotICAg
ICAgICBncm91cE5hdmlnYXRpb25JdGVtLmhpZGRlbiA9ICFXSS5zaG93RGVidWdVSVNldHRpbmcu
dmFsdWU7Ci0gICAgICAgIFdJLnRhYkJhci5uZWVkc0xheW91dCgpOworICAgICAgICBkdW1wTWVz
c2FnZXNUb29sYmFySXRlbS5oaWRkZW4gPSAhV0kuc2hvd0RlYnVnVUlTZXR0aW5nLnZhbHVlOwor
ICAgICAgICBpbnNwZWN0SW5zcGVjdG9yVG9vbGJhckl0ZW0uaGlkZGVuID0gIVdJLnNob3dEZWJ1
Z1VJU2V0dGluZy52YWx1ZTsKICAgICB9CiAKICAgICBXSS5zaG93RGVidWdVSVNldHRpbmcuYWRk
RXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsICgpID0+IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9OZXdUYWIuc3Zn
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDhjNmYyMjViYWEzZmQyMGUzYTg2YjQwNTQxYTIwNDVkMTg3NjdjZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdl
cy9OZXdUYWIuc3ZnCkBAIC0wLDAgKzEsNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAtLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBp
ZD0icm9vdCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgorICAgIDxyZWN0IGZp
bGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiB4PSIwLjUiIHk9IjAuNSIgd2lkdGg9IjE1
IiBoZWlnaHQ9IjE1IiByeD0iMiIvPgorICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3Vy
cmVudENvbG9yIiBkPSJNIDggMyBMIDggMTMgTSAzIDggTCAxMyA4Ii8+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9OZXdUYWJQ
bHVzLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9OZXdU
YWJQbHVzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjE2YThhNDIyNzMyYjQzYTg3NjVlMWFiMGFjYzk0YWQw
ZjZlZTJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL05ld1RhYlBsdXMuc3ZnCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiBpZD0icm9vdCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTUgMTUi
PgorICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJNIDcuNSAy
IFYgMTMgTSAyIDcuNSBIIDEzIi8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9PcmlnaW4uc3ZnIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL09yaWdpbi5zdmcKaW5kZXggZjY4NTNlYjU0ZTBi
YTU4NmQ2ZGRiMjRhY2ZlMDc4MmU2ZGY0ZWFmYi4uNTAzZGMyNWJlMTZhMWM1NjJiMTc1ZDg0ZDIz
ZWIyN2RhM2Q3N2U0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL09yaWdpbi5zdmcKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvSW1hZ2VzL09yaWdpbi5zdmcKQEAgLTEsNiArMSw2IEBACiA8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPCEtLSBDb3B5cmlnaHQgwqkgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgotPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIGlkPSJyb290IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2NCA2NCI+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB2
aWV3Qm94PSIwIDAgNjQgNjQiPgogICAgIDxkZWZzPgogICAgICAgICA8cmFkaWFsR3JhZGllbnQg
aWQ9ImdyYWRpZW50IiBjeD0iNTguNiUiIGN5PSIyNy43NCUiIGZ4PSI1OC42JSIgZnk9IjI3Ljc0
JSIgcj0iNTcuNSUiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC41OSwgMC4yOCksIHJv
dGF0ZSg5OC42MSksIHNjYWxlKDEsIDAuOTgpLCB0cmFuc2xhdGUoLTAuNTksIC0wLjI4KSI+CiAg
ICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSJyZ2IoMTY4LCAxNzEsIDE4MikiIG9mZnNldD0i
MCUiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9TZWFyY2hSZXN1bHRzLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0ltYWdlcy9TZWFyY2hSZXN1bHRzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDgyYzI0NmJmNzdlOWEw
NzdhNTg5NTU0ZTJjMjJjMDBlYjJlZThkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NlYXJjaFJlc3VsdHMuc3ZnCkBAIC0wLDAg
KzEsNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29w
eXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0icm9vdCIgdmVyc2lvbj0iMS4x
IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgorICAgIDxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iY3Vy
cmVudENvbG9yIiB4PSIwLjUiIHk9IjAuNSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiByeD0iMiIv
PgorICAgIDxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGN4PSI3IiBj
eT0iNyIgcj0iMyIvPgorICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9y
IiBkPSJNIDkuNSA5LjUgTCAxMi41IDEyLjUiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NvdXJjZXNQYXVzZWQuc3ZnIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NvdXJjZXNQYXVzZWQu
c3ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWJjNTQ3MmVjYWUxMGVkOTI2Mjgx
NzI1NWE3OGQ1MTllOGFiMjg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Tb3Vy
Y2VzUGF1c2VkLnN2ZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhLS0gQ29weXJpZ2h0IMKpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KLTxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiBpZD0icm9vdCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTYgMTYi
PgotICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJNIDcuNyAx
NC41IDIuNSAxNC41IDIuNSAxLjUgOS41IDEuNSAxMy41IDUuNSAxMy41IDguOCIvPgotICAgIDxw
YXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTSA5LjAgMy4wIEwgOS4wIDYuMCBMIDEyLjAgNi4w
IFoiLz4KLSAgICA8Y2lyY2xlIGZpbGw9Im5vbmUiIGN4PSIxMC41IiBjeT0iMTEuNSIgcj0iNCIg
c3Ryb2tlPSJjdXJyZW50Q29sb3IiLz4KLSAgICA8cGF0aCBzdHJva2U9ImN1cnJlbnRDb2xvciIg
ZD0iTSA5LjUgOS41IEwgOS41IDEzLjUgTSAxMS41IDkuNSBMIDExLjUgMTMuNSIvPgotPC9zdmc+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXgg
MTNmNDIzYWRmZjViNGNhYzZmYTM0NTNjNTZkZDFkZjhjNTBlNTNhZi4uNWI4NTY1MjIxNjQ0YmUx
YTVmMmU2ZmIxMzc0N2Y2NGM4ZWJiNGJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtNDcsNiArNDcsNyBAQAogICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmNzcyI+
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9CcmVha3BvaW50VHJlZUVs
ZW1lbnQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0J1dHRv
bk5hdmlnYXRpb25JdGVtLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9CdXR0b25Ub29sYmFySXRlbS5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvQ1BVVGltZWxpbmVPdmVydmlld0dyYXBoLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DUFVUaW1lbGluZVZpZXcuY3NzIj4KICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NQVVVzYWdlQ29tYmluZWRWaWV3LmNzcyI+
CkBAIC03OSw2ICs4MCw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3
cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9Db250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuY3NzIj4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5jc3MiPgog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ29va2llU3RvcmFnZUNvbnRl
bnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9ET01C
cmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9IlZpZXdzL0RPTUV2ZW50c0JyZWFrZG93blZpZXcuY3NzIj4KQEAgLTg4LDkgKzkwLDEyIEBA
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9ET01TdG9yYWdlQ29udGVu
dFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RPTVRy
ZWVDb250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmll
d3MvRE9NVHJlZU91dGxpbmUuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
IlZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IlZpZXdzL0RhdGFHcmlkLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJWaWV3cy9EYXRhYmFzZUNvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcuY3NzIj4K
KyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJk
Vmlldy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGVmYXVs
dERhc2hib2FyZFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL0RldGFpbHNTZWN0aW9uLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9EaXZpZGVyTmF2aWdhdGlvbkl0ZW0uY3NzIj4KICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IlZpZXdzL0Ryb3Bab25lVmlldy5jc3MiPgpAQCAtMTUxLDYgKzE1Niw3IEBA
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9OZXR3b3JrVGFibGVDb250
ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTmV0
d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5jc3MiPgorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTmV3VGFiQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL09iamVjdFByZXZpZXdWaWV3LmNzcyI+CiAg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9PYmplY3RUcmVlQXJyYXlJbmRl
eFRyZWVFbGVtZW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3
cy9PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5jc3MiPgpAQCAtMjMxLDYgKzIzNyw3IEBA
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UaW1lbGluZVRhYkNvbnRl
bnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UaW1l
bGluZVZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Rp
dGxlVmlldy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVG9v
bGJhci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHJlZUVs
ZW1lbnRTdGF0dXNCdXR0b24uY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
IlZpZXdzL1RyZWVPdXRsaW5lLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9UeXBlVG9rZW5WaWV3LmNzcyI+CkBAIC0zOTUsNyArNDAyLDkgQEAKICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0RPTVRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvRGF0YWJhc2VPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvRGF0YWJhc2VUYWJsZU9iamVjdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9EZWJ1Z2dlckRhc2hib2FyZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9EZWJ1Z2dlckRhdGEuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
RGVmYXVsdERhc2hib2FyZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9F
dmVudEJyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRXhl
Y3V0aW9uQ29udGV4dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9FeGVj
dXRpb25Db250ZXh0TGlzdC5qcyI+PC9zY3JpcHQ+CkBAIC01MjQsNiArNTMzLDggQEAKICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvVHJlZU91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9UcmVlT3V0bGluZUdyb3VwLmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9MZWdhY3lUYWJCYXIuanMiPjwvc2NyaXB0PgorCiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvRGF0YWJhc2VVc2VyUXVlcnlWaWV3QmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlVXNlclF1ZXJ5RXJyb3JWaWV3LmpzIj48L3NjcmlwdD4K
QEAgLTU0Niw2ICs1NTcsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Gb2xkZXJpemVkVHJl
ZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9OZXR3b3JrRGV0
YWlsVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL05ldHdvcmtUYWJD
b250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL05ld1RhYkNv
bnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvT2JqZWN0VHJl
ZUJhc2VUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Nv
dXJjZUNvZGVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1N0b3JhZ2VUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CkBAIC01ODcsNiArNTk5LDcgQEAKICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvTG9jYWxSZW1vdGVPYmplY3RDb250ZW50Vmlldy5qcyI+PC9z
Y3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9u
SXRlbS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0FjdGl2YXRlQnV0dG9u
VG9vbGJhckl0ZW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9BbmltYXRp
b25Db2xsZWN0aW9uQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9BbmltYXRpb25Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0FuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgpAQCAtNjA1
LDYgKzYxOCw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0JveE1vZGVsRGV0YWlsc1NlY3Rp
b25Sb3cuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9CcmVha3BvaW50QWN0
aW9uVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0JyZWFrcG9pbnRU
cmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0J1dHRvblRv
b2xiYXJJdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ1BVVGltZWxp
bmVPdmVydmlld0dyYXBoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ1BV
VGltZWxpbmVWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ1BVVXNh
Z2VDb21iaW5lZFZpZXcuanMiPjwvc2NyaXB0PgpAQCAtNjQwLDYgKzY1NCw3IEBACiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvQ29udGV4dE1lbnUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0Nvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyI+PC9z
Y3JpcHQ+CkBAIC02NTMsMTEgKzY2OCwxNSBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9ET01U
cmVlRWxlbWVudFBhdGhDb21wb25lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9ET01UcmVlT3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L0RPTVRyZWVVcGRhdGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGFz
aGJvYXJkQ29udGFpbmVyVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L0Rhc2hib2FyZFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXRh
YmFzZUNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGF0
YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9EYXRhYmFzZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9EaXZpZGVyTmF2aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Ecm9wWm9uZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9FZGl0YWJsZURhdGFHcmlkTm9kZS5qcyI+PC9zY3JpcHQ+CkBAIC03
OTcsNiArODE2LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU2hhZGVyUHJvZ3JhbUNvbnRl
bnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU2hhZGVyUHJvZ3Jh
bVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU2lkZWJh
ci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1NpemVzVG9GaXROYXZpZ2F0
aW9uQmFyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU2xpZGVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU29mdENvbnRleHRNZW51LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMiPjwv
c2NyaXB0PgpAQCAtODMxLDYgKzg1MSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RpbWVs
aW5lUnVsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UaXRsZVZpZXcu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Ub2dnbGVCdXR0b25OYXZpZ2F0
aW9uSXRlbS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Rvb2xiYXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRv
bi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1R5cGVUb2tlblZpZXcuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UeXBlVHJlZUVsZW1lbnQuanMiPjwv
c2NyaXB0PgpAQCAtOTExLDcgKzkzMiw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImRv
Y2tlZC1yZXNpemVyIj48L2Rpdj4KLTxkaXYgaWQ9InVuZG9ja2VkLXRpdGxlLWFyZWEiPjwvZGl2
PgorPGRpdiBpZD0idG9vbGJhciI+PC9kaXY+CiA8ZGl2IGlkPSJ0YWItYmFyIj48L2Rpdj4KIDxk
aXYgaWQ9Im1haW4iPgogICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFzaGJvYXJkLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFz
aGJvYXJkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTFiMTBmYmUzMTdkNWMzNjJlNzE1MTQwNzQxNDA2NjZl
NzY1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvRGVidWdnZXJEYXNoYm9hcmQuanMKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1dJLkRlYnVnZ2VyRGFzaGJvYXJkID0gY2xhc3MgRGVidWdnZXJEYXNoYm9hcmQKK3sK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvRGVmYXVsdERhc2hib2FyZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4Y2I5ZjU2MzZkNDBl
MzljN2UzOTJlYTczZmE1ZjUwMTVkMTI2NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcwpAQCAt
MCwwICsxLDI5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5EZWZhdWx0RGFz
aGJvYXJkID0gY2xhc3MgRGVmYXVsdERhc2hib2FyZCBleHRlbmRzIFdJLk9iamVjdAoreworICAg
IGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5f
d2FpdGluZ0ZvckZpcnN0TWFpblJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZSA9IHRydWU7CisK
KyAgICAgICAgLy8gTmVjZXNzYXJ5IGV2ZW50IHJlcXVpcmVkIHRvIHRyYWNrIHBhZ2UgbG9hZCB0
aW1lIGFuZCByZXNvdXJjZSBzaXplcy4KKyAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5l
cihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJj
ZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLlRpbWVsaW5lTWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdGF0ZUNoYW5nZWQsIHRo
aXMuX2hhbmRsZVRpbWVsaW5lQ2FwdHVyaW5nU3RhdGVDaGFuZ2VkLCB0aGlzKTsKKworICAgICAg
ICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJlcXVpcmVkIHRvIHRyYWNrIGxvYWQgb2YgcmVzb3VyY2Vz
LgorICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LlJlc291
cmNlV2FzQWRkZWQsIHRoaXMuX3Jlc291cmNlV2FzQWRkZWQsIHRoaXMpOworICAgICAgICBXSS5U
YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXQuRXZlbnQuUmVzb3VyY2VBZGRlZCwgdGhp
cy5fcmVzb3VyY2VXYXNBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuRnJhbWVXYXNBZGRlZCwgdGhp
cy5fZnJhbWVXYXNBZGRlZCwgdGhpcyk7CisKKyAgICAgICAgLy8gTmVjZXNzYXJ5IGV2ZW50cyBy
ZXF1aXJlZCB0byB0cmFjayBjb25zb2xlIG1lc3NhZ2VzLgorICAgICAgICBXSS5jb25zb2xlTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRo
aXMuX2NvbnNvbGVXYXNDbGVhcmVkLCB0aGlzKTsKKyAgICAgICAgV0kuY29uc29sZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIHRo
aXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRoaXMpOworICAgICAgICBXSS5jb25zb2xlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2Fn
ZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZCwgdGhp
cyk7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd29ya2luZyBhcm91bmQgdGhlIG9yZGVy
IG9mIGV2ZW50cy4gTm9ybWFsIHBhZ2UgbmF2aWdhdGlvbgorICAgICAgICAvLyB0cmlnZ2VycyBh
IE1haW5SZXNvdXJjZSBjaGFuZ2UgYW5kIHRoZW4gYSBNYWluRnJhbWUgY2hhbmdlLiBQYWdlIFRy
YW5zaXRpb24KKyAgICAgICAgLy8gdHJpZ2dlcnMgYSBNYWluRnJhbWUgY2hhbmdlIHRoZW4gYSBN
YWluUmVzb3VyY2UgY2hhbmdlLgorICAgICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdl
dCA9IGZhbHNlOworCisgICAgICAgIFdJLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihX
SS5Ob3RpZmljYXRpb24uVHJhbnNpdGlvblBhZ2VUYXJnZXQsIHRoaXMuX3RyYW5zaXRpb25QYWdl
VGFyZ2V0LCB0aGlzKTsKKworICAgICAgICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IDA7CisgICAg
ICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSAwOworICAgICAgICB0aGlzLl90aW1lID0gMDsKKyAg
ICAgICAgdGhpcy5fbG9ncyA9IDA7CisgICAgICAgIHRoaXMuX2Vycm9ycyA9IDA7CisgICAgICAg
IHRoaXMuX2lzc3VlcyA9IDA7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgcmVz
b3VyY2VzQ291bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc0NvdW50
OworICAgIH0KKworICAgIHNldCByZXNvdXJjZXNDb3VudCh2YWx1ZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX3Jlc291cmNlc0NvdW50ID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFu
Z2UoKTsKKyAgICB9CisKKyAgICBnZXQgcmVzb3VyY2VzU2l6ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVzb3VyY2VzU2l6ZTsKKyAgICB9CisKKyAgICBzZXQgcmVzb3VyY2VzU2l6
ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSB2YWx1ZTsKKyAg
ICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0KKworICAgIGdldCB0aW1lKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl90aW1lOworICAgIH0KKworICAgIHNldCB0aW1lKHZh
bHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fdGltZSA9IHZhbHVlOworICAgICAgICB0aGlzLl9k
YXRhRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgZ2V0IGxvZ3MoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2xvZ3M7CisgICAgfQorCisgICAgc2V0IGxvZ3ModmFsdWUpCisgICAgewor
ICAgICAgICB0aGlzLl9sb2dzID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2Uo
KTsKKyAgICB9CisKKyAgICBnZXQgZXJyb3JzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9lcnJvcnM7CisgICAgfQorCisgICAgc2V0IGVycm9ycyh2YWx1ZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX2Vycm9ycyA9IHZhbHVlOworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7Cisg
ICAgfQorCisgICAgZ2V0IGlzc3VlcygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faXNz
dWVzOworICAgIH0KKworICAgIHNldCBpc3N1ZXModmFsdWUpCisgICAgeworICAgICAgICB0aGlz
Ll9pc3N1ZXMgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0K
KworICAgIC8vIFByaXZhdGUKKworICAgIF9kYXRhRGlkQ2hhbmdlKCkKKyAgICB7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRlZmF1bHREYXNoYm9hcmQuRXZlbnQu
RGF0YURpZENoYW5nZSk7CisgICAgfQorCisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVu
dCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9m
IFdJLkZyYW1lKTsKKworICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghdGhpcy5fdHJhbnNpdGlvbmluZ1Bh
Z2VUYXJnZXQpIHsKKyAgICAgICAgICAgIHRoaXMuX3RpbWUgPSAwOworICAgICAgICAgICAgdGhp
cy5fcmVzb3VyY2VzQ291bnQgPSAxOworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzU2l6ZSA9
IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2Uuc2l6ZSB8fCAwOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgdHJhY2sgcmVzb3VyY2Ugc2l6ZXMg
b24gZnJlc2ggbG9hZHMuCisgICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yRmlyc3RNYWluUmVz
b3VyY2VUb1N0YXJ0VHJhY2tpbmdTaXplKSB7CisgICAgICAgICAgICB0aGlzLl93YWl0aW5nRm9y
Rmlyc3RNYWluUmVzb3VyY2VUb1N0YXJ0VHJhY2tpbmdTaXplID0gZmFsc2U7CisgICAgICAgICAg
ICBXSS5SZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LlNpemVEaWRD
aGFuZ2UsIHRoaXMuX3Jlc291cmNlU2l6ZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIH0KKwor
ICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7CisKKyAgICAgICAgaWYgKCF0aGlzLl90cmFu
c2l0aW9uaW5nUGFnZVRhcmdldCkKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0VXBkYXRpbmdUaW1l
KCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0KQorICAgICAg
ICAgICAgdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQgPSBmYWxzZTsKKyAgICB9CisKKyAg
ICBfaGFuZGxlVGltZWxpbmVDYXB0dXJpbmdTdGF0ZUNoYW5nZWQoZXZlbnQpCisgICAgeworICAg
ICAgICBpZiAoV0kudGltZWxpbmVNYW5hZ2VyLmlzQ2FwdHVyaW5nKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgLy8gSWYgcmVjb3JkaW5nIHN0b3BzLCB3ZSBzaG91bGQgc3RvcCB0
aGUgdGltZXIgaWYgaXQgaGFzbid0IHN0b3BwZWQgYWxyZWFkeS4KKyAgICAgICAgdGhpcy5fc3Rv
cFVwZGF0aW5nVGltZSgpOworICAgIH0KKworICAgIF9yZXNvdXJjZVdhc0FkZGVkKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgKyt0aGlzLnJlc291cmNlc0NvdW50OworICAgIH0KKworICAgIF9mcmFt
ZVdhc0FkZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgKyt0aGlzLnJlc291cmNlc0NvdW50Owor
ICAgIH0KKworICAgIF9yZXNvdXJjZVNpemVEaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAgICAg
ICBpZiAoZXZlbnQudGFyZ2V0LnVybENvbXBvbmVudHMuc2NoZW1lID09PSAiZGF0YSIpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGRlbHRhID0gZXZlbnQudGFyZ2V0LnNpemUg
LSBldmVudC5kYXRhLnByZXZpb3VzU2l6ZTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWlzTmFO
KGRlbHRhKSwgIlJlc291cmNlIHNpemUgY2hhbmdlIHNob3VsZCBuZXZlciBiZSBOYU4uIik7Cisg
ICAgICAgIHRoaXMucmVzb3VyY2VzU2l6ZSArPSBkZWx0YTsKKyAgICB9CisKKyAgICBfc3RhcnRV
cGRhdGluZ1RpbWUoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nVGltZSgpOwor
CisgICAgICAgIHRoaXMudGltZSA9IDA7CisKKyAgICAgICAgdGhpcy5fdGltZWxpbmVCYXNlVGlt
ZSA9IERhdGUubm93KCk7CisgICAgICAgIHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5ID0gNTA7Cisg
ICAgICAgIHRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZpZXIgPSBzZXRJbnRlcnZhbCh0aGlzLl91
cGRhdGVUaW1lLmJpbmQodGhpcyksIHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5KTsKKyAgICB9CisK
KyAgICBfc3RvcFVwZGF0aW5nVGltZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3RpbWVJ
bnRlcnZhbElkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2xlYXJJ
bnRlcnZhbCh0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5fdGlt
ZUludGVydmFsSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICB9CisKKyAgICBfdXBkYXRlVGlt
ZSgpCisgICAgeworICAgICAgICB2YXIgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gdGhpcy5fdGlt
ZWxpbmVCYXNlVGltZTsKKworICAgICAgICB2YXIgdGltZUludGVydmFsRGVsYXkgPSB0aGlzLl90
aW1lSW50ZXJ2YWxEZWxheTsKKyAgICAgICAgaWYgKGR1cmF0aW9uID49IDEwMDApIC8vIDEgc2Vj
b25kCisgICAgICAgICAgICB0aW1lSW50ZXJ2YWxEZWxheSA9IDEwMDsKKyAgICAgICAgZWxzZSBp
ZiAoZHVyYXRpb24gPj0gNjAwMDApIC8vIDYwIHNlY29uZHMKKyAgICAgICAgICAgIHRpbWVJbnRl
cnZhbERlbGF5ID0gMTAwMDsKKyAgICAgICAgZWxzZSBpZiAoZHVyYXRpb24gPj0gMzYwMDAwMCkg
Ly8gMSBtaW51dGUKKyAgICAgICAgICAgIHRpbWVJbnRlcnZhbERlbGF5ID0gMTAwMDA7CisKKyAg
ICAgICAgaWYgKHRpbWVJbnRlcnZhbERlbGF5ICE9PSB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheSkg
eworICAgICAgICAgICAgdGhpcy5fdGltZUludGVydmFsRGVsYXkgPSB0aW1lSW50ZXJ2YWxEZWxh
eTsKKworICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlm
aWVyKTsKKyAgICAgICAgICAgIHRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZpZXIgPSBzZXRJbnRl
cnZhbCh0aGlzLl91cGRhdGVUaW1lLmJpbmQodGhpcyksIHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdl
ci5tYWluRnJhbWU7CisgICAgICAgIHZhciBtYWluRnJhbWVTdGFydFRpbWUgPSBtYWluRnJhbWUu
bWFpblJlc291cmNlLmZpcnN0VGltZXN0YW1wOworICAgICAgICB2YXIgbWFpbkZyYW1lTG9hZEV2
ZW50VGltZSA9IG1haW5GcmFtZS5sb2FkRXZlbnRUaW1lc3RhbXA7CisKKyAgICAgICAgaWYgKGlz
TmFOKG1haW5GcmFtZVN0YXJ0VGltZSkgfHwgaXNOYU4obWFpbkZyYW1lTG9hZEV2ZW50VGltZSkp
IHsKKyAgICAgICAgICAgIHRoaXMudGltZSA9IGR1cmF0aW9uIC8gMTAwMDsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMudGltZSA9IG1haW5GcmFtZUxvYWRF
dmVudFRpbWUgLSBtYWluRnJhbWVTdGFydFRpbWU7CisKKyAgICAgICAgdGhpcy5fc3RvcFVwZGF0
aW5nVGltZSgpOworICAgIH0KKworICAgIF9jb25zb2xlTWVzc2FnZUFkZGVkKGV2ZW50KQorICAg
IHsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2U7CisgICAgICAgIHRo
aXMuX2xhc3RDb25zb2xlTWVzc2FnZVR5cGUgPSBtZXNzYWdlLmxldmVsOworICAgICAgICB0aGlz
Ll9pbmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGUobWVzc2FnZS5sZXZlbCwgbWVzc2FnZS5yZXBl
YXRDb3VudCk7CisgICAgfQorCisgICAgX2NvbnNvbGVNZXNzYWdlV2FzUmVwZWF0ZWQoZXZlbnQp
CisgICAgeworICAgICAgICB0aGlzLl9pbmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGUodGhpcy5f
bGFzdENvbnNvbGVNZXNzYWdlVHlwZSwgMSk7CisgICAgfQorCisgICAgX2luY3JlbWVudENvbnNv
bGVNZXNzYWdlVHlwZSh0eXBlLCBpbmNyZW1lbnQpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5
cGUpIHsKKyAgICAgICAgY2FzZSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOgor
ICAgICAgICBjYXNlIFdJLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5JbmZvOgorICAgICAg
ICBjYXNlIFdJLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5EZWJ1ZzoKKyAgICAgICAgICAg
IHRoaXMubG9ncyArPSBpbmNyZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZzoKKyAgICAgICAgICAgIHRo
aXMuaXNzdWVzICs9IGluY3JlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFdJLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcjoKKyAgICAgICAgICAgIHRoaXMu
ZXJyb3JzICs9IGluY3JlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgX2NvbnNvbGVXYXNDbGVhcmVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5f
bG9ncyA9IDA7CisgICAgICAgIHRoaXMuX2lzc3VlcyA9IDA7CisgICAgICAgIHRoaXMuX2Vycm9y
cyA9IDA7CisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBfdHJh
bnNpdGlvblBhZ2VUYXJnZXQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmluZ1Bh
Z2VUYXJnZXQgPSB0cnVlOworCisgICAgICAgIHRoaXMuX3RpbWUgPSAwOworICAgICAgICB0aGlz
Ll9yZXNvdXJjZXNDb3VudCA9IDA7CisgICAgICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSAwOwor
CisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKKyAgICB9Cit9OworCitXSS5EZWZhdWx0
RGFzaGJvYXJkLkV2ZW50ID0geworICAgIERhdGFEaWRDaGFuZ2U6ICJkZWZhdWx0LWRhc2hib2Fy
ZC1kYXRhLWRpZC1jaGFuZ2UiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9uVG9vbGJh
ckl0ZW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU3NTQyY2Y0ZTUyN2FmZTQwZjU0NTMzYWFjYTk5NzRhYzA0
NTYwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0uanMKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dJLkFjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0gPSBjbGFzcyBB
Y3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtIGV4dGVuZHMgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0
aW9uSXRlbQoreworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBh
Y3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwgcm9sZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGlkZW50
aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwgMTYsIDE2LCBy
b2xlKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQXVkaXRUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0F1ZGl0VGFiQ29udGVudFZpZXcuanMKaW5kZXggNTMy
ZDBjM2FlZmU3OWE3MzUyOGZiZmJjYmMyMTIxNmQ2NjI4ODBmMi4uMjE1ZGJhNTI3Njg2YWY3YjY1
ZTM3NWFkMzFmYjFlYTQ4MTI5NjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQXVkaXRUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BdWRpdFRhYkNvbnRlbnRWaWV3Lmpz
CkBAIC0yNyw5ICsyNyw3IEBAIFdJLkF1ZGl0VGFiQ29udGVudFZpZXcgPSBjbGFzcyBBdWRpdFRh
YkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXJUYWJDCiB7CiAgICAgY29uc3Ry
dWN0b3IoKQogICAgIHsKLSAgICAgICAgc3VwZXIoQXVkaXRUYWJDb250ZW50Vmlldy50YWJJbmZv
KCksIHsKLSAgICAgICAgICAgIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcjogV0ku
QXVkaXROYXZpZ2F0aW9uU2lkZWJhclBhbmVsLAotICAgICAgICB9KTsKKyAgICAgICAgc3VwZXIo
ImF1ZGl0IiwgWyJhdWRpdCJdLCBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFiSW5mbyhXSS5B
dWRpdFRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKSksIFdJLkF1ZGl0TmF2aWdhdGlvblNpZGViYXJQ
YW5lbCk7CiAKICAgICAgICAgdGhpcy5fc3RhcnRTdG9wU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9h
cmRTaG9ydGN1dChudWxsLCBXSS5LZXlib2FyZFNob3J0Y3V0LktleS5TcGFjZSwgdGhpcy5faGFu
ZGxlU3BhY2UuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX3N0YXJ0U3RvcFNob3J0Y3V0Lmlt
cGxpY2l0bHlQcmV2ZW50c0RlZmF1bHQgPSBmYWxzZTsKQEAgLTQxLDcgKzM5LDYgQEAgV0kuQXVk
aXRUYWJDb250ZW50VmlldyA9IGNsYXNzIEF1ZGl0VGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
b250ZW50QnJvd3NlclRhYkMKICAgICBzdGF0aWMgdGFiSW5mbygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgaWRlbnRpZmllcjogQXVkaXRUYWJDb250ZW50Vmlldy5UeXBl
LAogICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMvQXVkaXQuc3ZnIiwKICAgICAgICAgICAgIHRp
dGxlOiBXSS5VSVN0cmluZygiQXVkaXQiKSwKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRpb25JdGVt
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5h
dmlnYXRpb25JdGVtLmNzcwppbmRleCA4MTZjY2Q2YjQxYzdjNmVlYzgzNDY1N2FiOThkOWU2NjQ4
MzAxMDI4Li4xNDcwYmIyMDYxZDAwZTk3MzdhNzVlY2I0YzI4ZGU0MzQ1ZWRjYmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZp
Z2F0aW9uSXRlbS5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY3NzCkBAIC00MSwxMCArNDEsNiBAQAogICAgIC13
ZWJraXQtcGFkZGluZy1zdGFydDogNHB4OwogfQogCi0udGFiLWJhciA+IC5uYXZpZ2F0aW9uLWJh
ciAuaXRlbS5idXR0b24uaW1hZ2UtYW5kLXRleHQgPiBzcGFuIHsKLSAgICBwYWRkaW5nLWJvdHRv
bTogMDsKLX0KLQogLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbi50ZXh0LW9ubHkgewogICAg
IHBhZGRpbmc6IDFweCA4cHggM3B4OwogICAgIG1hcmdpbjogMCAycHg7IC8qIFdJLkJ1dHRvbk5h
dmlnYXRpb25JdGVtLnByb3RvdHlwZS5nZXQgdG90YWxNYXJnaW4gKi8KQEAgLTc4LDI5ICs3NCw4
IEBACiAgICAgY29sb3I6IHZhcigtLWdseXBoLWNvbG9yLWRpc2FibGVkKTsKIH0KIAotLm5hdmln
YXRpb24tYmFyIC5pdGVtLmJ1dHRvbiA+IGltZyB7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVp
Z2h0OiAxMDAlOwotfQotCi0ubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uLmRpc2FibGVkID4g
aW1nIHsKLSAgICBvcGFjaXR5OiAwLjM7Ci19Ci0KLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0
aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRv
biA+IGltZyB7Ci0gICAgb3BhY2l0eTogMC42OwotfQotCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1p
bmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5i
dXR0b24uZGlzYWJsZWQgPiBpbWcgewotICAgIG9wYWNpdHk6IDAuMTg7Ci19Ci0KIEBtZWRpYSAo
cHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAubmF2aWdhdGlvbi1iYXIgLml0ZW0u
YnV0dG9uIHsKICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3Itc2Vjb25kYXJ5KTsKICAg
ICB9Ci0KLSAgICAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uLmRpc2FibGVkID4gaW1nIHsK
LSAgICAgICAgZmlsdGVyOiBpbnZlcnQoKTsKLSAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmln
YXRpb25JdGVtLmpzCmluZGV4IDFiNzBkNDZmOTMzNTI2NjM4ZmM1NmNhYzQ1MWFkZTY5ODZlMmVi
MjYuLjBhNzM3MmNlNzhkM2UxZDM1MTE2MTkzOTQyY2FhNDJjZjU0NWZjNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvbk5hdmlnYXRp
b25JdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzCkBAIC00OCw4ICs0OCw2IEBAIFdJLkJ1dHRvbk5hdmln
YXRpb25JdGVtID0gY2xhc3MgQnV0dG9uTmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXSS5OYXZpZ2F0
aW9uSXRlbQogCiAgICAgICAgIHRoaXMuYnV0dG9uU3R5bGUgPSB0aGlzLl9pbWFnZSA/IFdJLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlLkltYWdlIDogV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
U3R5bGUuVGV4dDsKIAotICAgICAgICB0aGlzLmltYWdlVHlwZSA9IHRoaXMuX2ltYWdlID8gV0ku
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uSW1hZ2VUeXBlLlNWRyA6IG51bGw7Ci0KICAgICAgICAgaWYg
KHRoaXMuYnV0dG9uU3R5bGUgPT09IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlLkltYWdl
KQogICAgICAgICAgICAgdGhpcy50b29sdGlwID0gdG9vbFRpcE9yTGFiZWw7CiAgICAgfQpAQCAt
MTI1LDI3ICsxMjMsNiBAQCBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIEJ1dHRvbk5h
dmlnYXRpb25JdGVtIGV4dGVuZHMgV0kuTmF2aWdhdGlvbkl0ZW0KICAgICAgICAgICAgIHRoaXMu
cGFyZW50TmF2aWdhdGlvbkJhci5uZWVkc0xheW91dCgpOwogICAgIH0KIAotICAgIGdldCBpbWFn
ZVR5cGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlVHlwZTsKLSAgICB9Ci0K
LSAgICBzZXQgaW1hZ2VUeXBlKGltYWdlVHlwZSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFpbWFnZVR5cGUgfHwgT2JqZWN0LnZhbHVlcyhXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5J
bWFnZVR5cGUpLmluY2x1ZGVzKGltYWdlVHlwZSksIGltYWdlVHlwZSk7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCFpbWFnZVR5cGUgfHwgKHRoaXMuX2J1dHRvblN0eWxlID09PSBXSS5CdXR0b25O
YXZpZ2F0aW9uSXRlbS5TdHlsZS5JbWFnZSB8fCB0aGlzLl9idXR0b25TdHlsZSA9PT0gV0kuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGUuSW1hZ2VBbmRUZXh0KSk7Ci0KLSAgICAgICAgaWYgKHRo
aXMuX2ltYWdlVHlwZSA9PT0gaW1hZ2VUeXBlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHRoaXMuX2ltYWdlVHlwZSA9IGltYWdlVHlwZTsKLQotICAgICAgICB0aGlzLl91cGRhdGUo
KTsKLQotICAgICAgICBpZiAodGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyKQotICAgICAgICAgICAg
dGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyLm5lZWRzTGF5b3V0KCk7Ci0gICAgfQotCiAgICAgLy8g
UHJvdGVjdGVkCiAKICAgICBnZXQgdG90YWxNYXJnaW4oKQpAQCAtMTc3LDIyICsxNTQsMTAgQEAg
V0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBCdXR0b25OYXZpZ2F0aW9uSXRlbSBleHRl
bmRzIFdJLk5hdmlnYXRpb25JdGVtCiAgICAgICAgIGlmICh0aGlzLl9idXR0b25TdHlsZSA9PT0g
V0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGUuVGV4dCkKICAgICAgICAgICAgIHRoaXMuZWxl
bWVudC50ZXh0Q29udGVudCA9IHRoaXMuX2xhYmVsOwogICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAodGhpcy5faW1hZ2VUeXBlKSB7Ci0gICAgICAgICAgICBjYXNlIG51bGw6Ci0g
ICAgICAgICAgICBjYXNlIFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkltYWdlVHlwZS5TVkc6IHsK
LSAgICAgICAgICAgICAgICBsZXQgZ2x5cGhFbGVtZW50ID0gV0kuSW1hZ2VVdGlsaXRpZXMudXNl
U1ZHU3ltYm9sKHRoaXMuX2ltYWdlLCAiZ2x5cGgiKTsKLSAgICAgICAgICAgICAgICBnbHlwaEVs
ZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9pbWFnZVdpZHRoICsgInB4IjsKLSAgICAgICAgICAg
ICAgICBnbHlwaEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5faW1hZ2VIZWlnaHQgKyAicHgi
OwotICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChnbHlwaEVsZW1lbnQp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBj
YXNlIFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkltYWdlVHlwZS5JTUc6IHsKLSAgICAgICAgICAg
ICAgICBsZXQgaW1nID0gdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpKTsKLSAgICAgICAgICAgICAgICBpbWcuc3JjID0gdGhpcy5faW1hZ2U7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBsZXQgZ2x5cGhFbGVtZW50ID0gV0kuSW1hZ2VVdGlsaXRpZXMudXNlU1ZHU3ltYm9s
KHRoaXMuX2ltYWdlLCAiZ2x5cGgiKTsKKyAgICAgICAgICAgIGdseXBoRWxlbWVudC5zdHlsZS53
aWR0aCA9IHRoaXMuX2ltYWdlV2lkdGggKyAicHgiOworICAgICAgICAgICAgZ2x5cGhFbGVtZW50
LnN0eWxlLmhlaWdodCA9IHRoaXMuX2ltYWdlSGVpZ2h0ICsgInB4IjsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZChnbHlwaEVsZW1lbnQpOwogCiAgICAgICAgICAgICBpZiAo
dGhpcy5fYnV0dG9uU3R5bGUgPT09IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlLkltYWdl
QW5kVGV4dCkgewogICAgICAgICAgICAgICAgIGxldCBsYWJlbEVsZW1lbnQgPSB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKQEAgLTIxMSw4
ICsxNzYsMyBAQCBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZSA9IHsKICAgICBUZXh0OiAi
dGV4dC1vbmx5IiwKICAgICBJbWFnZUFuZFRleHQ6ICJpbWFnZS1hbmQtdGV4dCIsCiB9OwotCi1X
SS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5JbWFnZVR5cGUgPSB7Ci0gICAgU1ZHOiAiaW1hZ2UtdHlw
ZS1zdmciLAotICAgIElNRzogImltYWdlLXR5cGUtaW1nIiwKLX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25Ub29sYmFySXRlbS5j
c3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25Ub29s
YmFySXRlbS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2QxYzZkNjhjNDZiNzNhODNmYWNkNzI5NGI3ZmY0YTk0
Njc4ZmFmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmNzcwpAQCAtMCwwICsxLDc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisudG9vbGJhciAuaXRlbS5idXR0b24geworICAgIGFsaWduLWl0ZW1zOiBj
ZW50ZXI7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisKKyAgICBtYXJnaW46IDRweDsK
KyAgICBwYWRkaW5nOiAwIDEwcHg7CisKKyAgICBjb2xvcjogaHNsKDAsIDAlLCA0NSUpOworfQor
CisudG9vbGJhciAuaXRlbS5idXR0b246bm90KC5kaXNhYmxlZCk6YWN0aXZlIHsKKyAgICBjb2xv
cjogaHNsKDAsIDAlLCAzMCUpOworfQorCisudG9vbGJhciAuaXRlbS5idXR0b246bm90KC5kaXNh
YmxlZCk6bWF0Y2hlcyg6Zm9jdXMsIC5hY3RpdmF0ZS5hY3RpdmF0ZWQpIHsKKyAgICBjb2xvcjog
dmFyKC0tZ2x5cGgtY29sb3ItYWN0aXZlKTsKK30KKworLnRvb2xiYXIgLml0ZW0uYnV0dG9uID4g
LmdseXBoIHsKKyAgICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7Cit9CisKK2JvZHku
d2luZG93LWluYWN0aXZlIC50b29sYmFyIC5pdGVtLmJ1dHRvbiB7CisgICAgb3BhY2l0eTogMC42
NTsKK30KKworLnRvb2xiYXIgLml0ZW0uYnV0dG9uLmRpc2FibGVkIHsKKyAgICBvcGFjaXR5OiAw
LjU1ICFpbXBvcnRhbnQ7Cit9CisKK2JvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5pdGVt
LmJ1dHRvbi5kaXNhYmxlZCB7CisgICAgb3BhY2l0eTogMC4zNSAhaW1wb3J0YW50OworfQorCitA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CisgICAgLnRvb2xiYXIgLml0ZW0u
YnV0dG9uIHsKKyAgICAgICAgY29sb3I6IHZhcigtLWNvbG9yLWJ1dHRvbik7CisgICAgfQorCisg
ICAgLnRvb2xiYXIgLml0ZW0uYnV0dG9uOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSB7CisgICAgICAg
IGNvbG9yOiB2YXIoLS1jb2xvci1idXR0b24tYWN0aXZlKTsKKyAgICAgICAgYmFja2dyb3VuZC1p
bWFnZTogbm9uZTsKKyAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYnV0dG9uLWJhY2tncm91bmQt
Y29sb3ItcHJlc3NlZCk7CisgICAgfQorCisgICAgYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSkg
LnRvb2xiYXIgLml0ZW0uYnV0dG9uOm5vdCguZGlzYWJsZWQpOm1hdGNoZXMoOmZvY3VzLCAuYWN0
aXZhdGUuYWN0aXZhdGVkKSA+IC5nbHlwaCB7CisgICAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygx
LjM1KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9CdXR0b25Ub29sYmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjll
NGY2ZDBhMWJiNmZkNmY1NTNiNjRiYjY4NmMzNTViNTAyMDg3NTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25Ub29sYmFy
SXRlbS5qcwpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuQnV0dG9uVG9v
bGJhckl0ZW0gPSBjbGFzcyBCdXR0b25Ub29sYmFySXRlbSBleHRlbmRzIFdJLkJ1dHRvbk5hdmln
YXRpb25JdGVtCit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2Us
IHJvbGUpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwg
MTYsIDE2LCByb2xlKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVRhYkNvbnRlbnRWaWV3
LmpzCmluZGV4IGY2OGE5ZmFjMjdiYjU0ZjJkZWFhMjA1NTUzYzMyNGU5NWZkZjZiNWEuLjEyNTk4
NmE2NmJkMjFlMmEzN2FmNjZkZWM4YTA1MjcyNzZkYWJhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVUYWJDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xl
VGFiQ29udGVudFZpZXcuanMKQEAgLTI1LDE1ICsyNSwxNiBAQAogCiBXSS5Db25zb2xlVGFiQ29u
dGVudFZpZXcgPSBjbGFzcyBDb25zb2xlVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50
QnJvd3NlclRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVj
dG9yKGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBzdXBlcihDb25zb2xlVGFiQ29udGVudFZp
ZXcudGFiSW5mbygpLCB7ZGlzYWJsZUJhY2tGb3J3YXJkOiB0cnVlfSk7CisgICAgICAgIGxldCB0
YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuQ29uc29sZVRh
YkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7CisKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAi
Y29uc29sZSIsICJjb25zb2xlIiwgdGFiQmFySXRlbSwgbnVsbCwgbnVsbCwgdHJ1ZSk7CiAgICAg
fQogCiAgICAgc3RhdGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgIGlkZW50aWZpZXI6IENvbnNvbGVUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICAg
ICAgaW1hZ2U6ICJJbWFnZXMvQ29uc29sZS5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJ
U3RyaW5nKCJDb25zb2xlIiksCiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJy
b3dzZXJUYWJDb250ZW50Vmlldy5qcwppbmRleCBiYzNkNTE4YWZmOWU5MWJmNzFhYTVkYTUzYWVi
YzRiZjA1NDFiNDJmLi4yZDc1YzBkYTY2NDBiMzc1Yjg0YmI0MmYxMzY4MTkxYTQ4ZDk2NmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcuanMKQEAgLTI1
LDE5ICsyNSwyNSBAQAogCiBXSS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
Q29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaWV3CiB7
Ci0gICAgY29uc3RydWN0b3IodGFiSW5mbywge25hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1
Y3RvciwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycywgZGlzYWJsZUJhY2tGb3J3YXJk
LCBmbGV4aWJsZU5hdmlnYXRpb25JdGVtfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGlkZW50aWZp
ZXIsIHN0eWxlQ2xhc3NOYW1lcywgdGFiQmFySXRlbSwgbmF2aWdhdGlvblNpZGViYXJQYW5lbENv
bnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLCBkaXNhYmxlQmFja0Zv
cndhcmQsIGZsZXhpYmxlTmF2aWdhdGlvbkl0ZW0pCiAgICAgewotICAgICAgICBzdXBlcih0YWJJ
bmZvLCB7bmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJhclBh
bmVsQ29uc3RydWN0b3JzfSk7CisgICAgICAgIGlmICh0eXBlb2Ygc3R5bGVDbGFzc05hbWVzID09
PSAic3RyaW5nIikKKyAgICAgICAgICAgIHN0eWxlQ2xhc3NOYW1lcyA9IFtzdHlsZUNsYXNzTmFt
ZXNdOwogCi0gICAgICAgIGNvbnN0IGNvbnRlbnRCcm93c2VyRWxlbWVudCA9IG51bGw7Ci0gICAg
ICAgIGNvbnN0IGRpc2FibGVGaW5kQmFubmVyID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX2NvbnRl
bnRCcm93c2VyID0gbmV3IFdJLkNvbnRlbnRCcm93c2VyKGNvbnRlbnRCcm93c2VyRWxlbWVudCwg
dGhpcywgZGlzYWJsZUJhY2tGb3J3YXJkLCBkaXNhYmxlRmluZEJhbm5lciwgZmxleGlibGVOYXZp
Z2F0aW9uSXRlbSk7CisgICAgICAgIHN0eWxlQ2xhc3NOYW1lcy5wdXNoKCJjb250ZW50LWJyb3dz
ZXIiKTsKKworICAgICAgICB2YXIgY29udGVudEJyb3dzZXIgPSBuZXcgV0kuQ29udGVudEJyb3dz
ZXIobnVsbCwgbnVsbCwgZGlzYWJsZUJhY2tGb3J3YXJkLCBmYWxzZSwgZmxleGlibGVOYXZpZ2F0
aW9uSXRlbSk7CisKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwgc3R5bGVDbGFzc05hbWVzLCB0
YWJCYXJJdGVtLCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IsIGRldGFpbHNTaWRl
YmFyUGFuZWxDb25zdHJ1Y3RvcnMpOworCisgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyID0g
Y29udGVudEJyb3dzZXI7CisgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLmRlbGVnYXRlID0g
dGhpczsKIAogICAgICAgICB0aGlzLl9pZ25vcmVOYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29sbGFw
c2VkRXZlbnQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5faWdub3JlRGV0YWlsc1NpZGViYXJQYW5l
bENvbGxhcHNlZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX2lnbm9yZURldGFpbHNTaWRl
YmFyUGFuZWxTZWxlY3RlZEV2ZW50ID0gZmFsc2U7CiAKLSAgICAgICAgdGhpcy5fbGFzdFNlbGVj
dGVkRGV0YWlsc1NpZGViYXJQYW5lbFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyh0aGlzLl9pZGVu
dGlmaWVyICsgIi1sYXN0LXNlbGVjdGVkLWRldGFpbHMtc2lkZWJhci1wYW5lbCIsIG51bGwpOwor
ICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWREZXRhaWxzU2lkZWJhclBhbmVsU2V0dGluZyA9IG5l
dyBXSS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLWxhc3Qtc2VsZWN0ZWQtZGV0YWlscy1zaWRlYmFy
LXBhbmVsIiwgbnVsbCk7CiAKICAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50UmVwcmVzZW50ZWRPYmplY3Rz
RGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50QnJvd3NlckN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNE
aWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICB0aGlzLl9jb250ZW50QnJvd3Nlci5hZGRFdmVudExp
c3RlbmVyKFdJLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5n
ZSwgdGhpcy5fY29udGVudEJyb3dzZXJDdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMp
OwpAQCAtNDYsNyArNTIsNyBAQCBXSS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3ID0gY2xh
c3MgQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLgogICAgICAgICAvLyBF
eHBsaWNpdGx5IHVwZGF0ZSB0aGUgcGF0aCBmb3IgdGhlIG5hdmlnYXRpb24gYmFyIHRvIHByZXZl
bnQgaXQgZnJvbSBzaG93aW5nIHVwIGFzIGJsYW5rLgogICAgICAgICB0aGlzLl9jb250ZW50QnJv
d3Nlci51cGRhdGVIaWVyYXJjaGljYWxQYXRoRm9yQ3VycmVudENvbnRlbnRWaWV3KCk7CiAKLSAg
ICAgICAgaWYgKHRoaXMuX25hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcikgeworICAg
ICAgICBpZiAobmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yKSB7CiAgICAgICAgICAg
ICBsZXQgc2hvd1Rvb2xUaXAgPSBXSS5VSVN0cmluZygiU2hvdyB0aGUgbmF2aWdhdGlvbiBzaWRl
YmFyICglcykiKS5mb3JtYXQoV0kubmF2aWdhdGlvblNpZGViYXJLZXlib2FyZFNob3J0Y3V0LmRp
c3BsYXlOYW1lKTsKICAgICAgICAgICAgIGxldCBoaWRlVG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJI
aWRlIHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSIpLmZvcm1hdChXSS5uYXZpZ2F0aW9uU2lk
ZWJhcktleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwogICAgICAgICAgICAgbGV0IGltYWdl
ID0gV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJU
TCA/ICJJbWFnZXMvVG9nZ2xlUmlnaHRTaWRlYmFyLnN2ZyIgOiAiSW1hZ2VzL1RvZ2dsZUxlZnRT
aWRlYmFyLnN2ZyI7CkBAIC02Miw3ICs2OCw3IEBAIFdJLkNvbnRlbnRCcm93c2VyVGFiQ29udGVu
dFZpZXcgPSBjbGFzcyBDb250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuCiAg
ICAgICAgICAgICBXSS5uYXZpZ2F0aW9uU2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdJLlNpZGVi
YXIuRXZlbnQuQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX25hdmlnYXRpb25TaWRlYmFy
Q29sbGFwc2VkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KHRoaXMuX2RldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMubGVuZ3RoKSB7CisgICAgICAg
IGlmIChkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzICYmIGRldGFpbHNTaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvcnMubGVuZ3RoKSB7CiAgICAgICAgICAgICBsZXQgc2hvd1Rvb2xUaXAgPSBX
SS5VSVN0cmluZygiU2hvdyB0aGUgZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQoV0kuZGV0
YWlsc1NpZGViYXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKICAgICAgICAgICAgIGxl
dCBoaWRlVG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJIaWRlIHRoZSBkZXRhaWxzIHNpZGViYXIgKCVz
KSIpLmZvcm1hdChXSS5kZXRhaWxzU2lkZWJhcktleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUp
OwogICAgICAgICAgICAgbGV0IGltYWdlID0gV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9
PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCA/ICJJbWFnZXMvVG9nZ2xlTGVmdFNpZGViYXIuc3Zn
IiA6ICJJbWFnZXMvVG9nZ2xlUmlnaHRTaWRlYmFyLnN2ZyI7CkBAIC04MCw4ICs4Niw2IEBAIFdJ
LkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50QnJvd3NlclRhYkNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuCiAgICAgICAgICAgICBXSS5kZXRhaWxzU2lkZWJhci5hZGRF
dmVudExpc3RlbmVyKFdJLlNpZGViYXIuRXZlbnQuU2lkZWJhclBhbmVsU2VsZWN0ZWQsIHRoaXMu
X2RldGFpbHNTaWRlYmFyUGFuZWxTZWxlY3RlZCwgdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC1icm93c2VyIik7Ci0KICAgICAg
ICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRCcm93c2VyKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRyb2xU
b29sYmFySXRlbS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250cm9sVG9vbGJhckl0ZW0uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMjM5YTE2NmIyZGNlMGY5NmEw
ZTJlMDVjMDM2YWYxODExYjIyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uY3NzCkBAIC0wLDAg
KzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy50b29sYmFyIC5pdGVtLmNvbnRyb2wgeworICAg
IGFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisKKyAg
ICBwYWRkaW5nOiAwIDJweDsKKworICAgIG9wYWNpdHk6IDAuNTsKK30KKworLnRvb2xiYXIuc21h
bGwtc2l6ZSAuaXRlbS5jb250cm9sIHsKKyAgICBwYWRkaW5nOiAycHg7Cit9CisKKy50b29sYmFy
IC5pdGVtLmNvbnRyb2w6aG92ZXIgeworICAgIG9wYWNpdHk6IDAuNzU7Cit9CisKKy50b29sYmFy
IC5pdGVtLmNvbnRyb2w6YWN0aXZlIHsKKyAgICBvcGFjaXR5OiAxOworfQorCisudG9vbGJhciAu
aXRlbS5jb250cm9sID4gLmdseXBoIHsKKyAgICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2
cHg7CisKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIGJhY2tncm91bmQt
cG9zaXRpb246IGNlbnRlciBjZW50ZXI7Cit9CisKK2JvZHkud2luZG93LWluYWN0aXZlIC50b29s
YmFyIC5pdGVtLmNvbnRyb2wgeworICAgIG9wYWNpdHk6IDAuMzU7Cit9CisKKy50b29sYmFyIC5p
dGVtLmNvbnRyb2wuZGlzYWJsZWQgeworICAgIG9wYWNpdHk6IDAuMzUgIWltcG9ydGFudDsKK30K
KworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLml0ZW0uY29udHJvbC5kaXNhYmxlZCB7
CisgICAgb3BhY2l0eTogMC4yICFpbXBvcnRhbnQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0
ZW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2M0MjhjOGFiMTNkMmE1ZWRjYjFkMGQxODFlNGI5YWVkZGI3OGI4
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5qcwpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV0kuQ29udHJvbFRvb2xiYXJJdGVtID0gY2xhc3MgQ29udHJvbFRvb2xiYXJJdGVt
IGV4dGVuZHMgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0KK3sKKyAgICBjb25zdHJ1Y3RvcihpZGVu
dGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpCisgICAgewor
ICAgICAgICBzdXBlcihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1h
Z2VIZWlnaHQsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGdldCBh
ZGRpdGlvbmFsQ2xhc3NOYW1lcygpCisgICAgeworICAgICAgICByZXR1cm4gWyJjb250cm9sIl07
CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuY3NzCmluZGV4IGM4OWU5ZDBm
MzlmMWViMWJmOWMyYzZiMTkzZWZmNDRlNDNjODg2ZTcuLjQxM2QwNmQyM2QxYjIxNWI4NmQzYzRi
ZTVlMTFjOTUwNDg1MjdlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5jc3MKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmNzcwpAQCAt
NTksNyArNTksNyBAQCBib2R5W2Rpcj1ydGxdIC5jb250ZW50LXZpZXcuZG9tLXRyZWUgLnRyZWUt
b3V0bGluZS5kb20gbGkgLnN0YXR1cy1pbWFnZSB7CiAgICAgZmlsbDogdmFyKC0tYnJlYWtwb2lu
dC1jb2xvcik7CiB9CiAKLWJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2Vk
LWluYWN0aXZlKSAuY29udGVudC12aWV3LmRvbS10cmVlIC50cmVlLW91dGxpbmUuZG9tOmZvY3Vz
IGxpOm1hdGNoZXMoLnNlbGVjdGVkLCAuaG92ZXJlZCkgLnN0YXR1cy1pbWFnZS5icmVha3BvaW50
IHsKK2JvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC5jb250ZW50LXZpZXcuZG9tLXRyZWUgLnRy
ZWUtb3V0bGluZS5kb206Zm9jdXMgbGk6bWF0Y2hlcyguc2VsZWN0ZWQsIC5ob3ZlcmVkKSAuc3Rh
dHVzLWltYWdlLmJyZWFrcG9pbnQgewogICAgIHN0cm9rZTogdmFyKC0tc2VsZWN0ZWQtZm9yZWdy
b3VuZC1jb2xvcik7CiB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgYm9keTpub3QoLndpbmRvdy1pbmFj
dGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC5jb250ZW50LXZpZXcuZG9tLXRyZWUgLnRy
ZWUKICAgICBzdHJva2U6IHZhcigtLWJyZWFrcG9pbnQtY29sb3IpOwogfQogCi1ib2R5Om5vdCgu
d2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLmNvbnRlbnQtdmlldy5k
b20tdHJlZSAudHJlZS1vdXRsaW5lLmRvbTpmb2N1cyBsaTptYXRjaGVzKC5zZWxlY3RlZCwgLmhv
dmVyZWQpIC5zdGF0dXMtaW1hZ2UuYnJlYWtwb2ludC5zdWJ0cmVlIHsKK2JvZHk6bm90KC53aW5k
b3ctaW5hY3RpdmUpIC5jb250ZW50LXZpZXcuZG9tLXRyZWUgLnRyZWUtb3V0bGluZS5kb206Zm9j
dXMgbGk6bWF0Y2hlcyguc2VsZWN0ZWQsIC5ob3ZlcmVkKSAuc3RhdHVzLWltYWdlLmJyZWFrcG9p
bnQuc3VidHJlZSB7CiAgICAgc3Ryb2tlOiB2YXIoLS1zZWxlY3RlZC1mb3JlZ3JvdW5kLWNvbG9y
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmNzcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jM2NiYTdmYjhlODU4NzFlODJkOGFiNzlkNDM4MDk3MWY4OGRjZGQ5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJk
Q29udGFpbmVyVmlldy5jc3MKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy50
b29sYmFyIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgbWFyZ2luOiA0cHg7CisgICAgaGVpZ2h0OiAyMnB4OworCisgICAgYm9yZGVyLXJhZGl1czog
NHB4OworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CisKK2JvZHk6bWF0Y2hlcygucGFnZSwgLndl
Yi1wYWdlKSAudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgd2lkdGg6IDM2dnc7
CisgICAgbWluLXdpZHRoOiAzNTBweDsKK30KKworYm9keTpub3QoLnBhZ2UsIC53ZWItcGFnZSkg
LnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIgeworICAgIHdpZHRoOiAyNXZ3OworICAgIG1p
bi13aWR0aDogMTc1cHg7Cit9CisKKy50b29sYmFyLmNvbGxhcHNlZCAuZGFzaGJvYXJkLWNvbnRh
aW5lciB7CisgICAgbWluLXdpZHRoOiAxNzVweCAhaW1wb3J0YW50OworICAgIHdpZHRoOiAxNzVw
eCAhaW1wb3J0YW50OworfQorCisvKiBEZWZhdWx0IHN0eWxlcyBmb3IgZGFzaGJvYXJkcyAqLwor
LnRvb2xiYXIgLmRhc2hib2FyZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDog
MDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogMDsKKyAgICByaWdodDogMDsKKyAgICAtd2Vi
a2l0LXBhZGRpbmctc3RhcnQ6IDEwcHg7CisgICAgLXdlYmtpdC1wYWRkaW5nLWVuZDogNXB4Owor
ICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMC40czsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC52
aXNpYmxlIHsKKyAgICB6LWluZGV4OiAxOyAvKiBFc3RhYmxpc2ggYSBzdGFja2luZyBjb250ZXh0
LiAqLworfQorCisudG9vbGJhciAuZGFzaGJvYXJkOm5vdCgudmlzaWJsZSkgeworICAgIGRpc3Bs
YXk6IG5vbmUgIWltcG9ydGFudDsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1vdXQt
dXAgeworICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZS10b3AtZWRnZTsKKyAgICBhbmltYXRpb24t
ZGlyZWN0aW9uOiByZXZlcnNlOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLnNsaWRlLW91dC1k
b3duIHsKKyAgICBhbmltYXRpb24tbmFtZTogc2xpZGUtYm90dG9tLWVkZ2U7Cit9CisKKy50b29s
YmFyIC5kYXNoYm9hcmQuc2xpZGUtaW4tdXAgeworICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZS1i
b3R0b20tZWRnZTsKKyAgICBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOworfQorCisudG9v
bGJhciAuZGFzaGJvYXJkLnNsaWRlLWluLWRvd24geworICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlk
ZS10b3AtZWRnZTsKK30KKworQGtleWZyYW1lcyBzbGlkZS10b3AtZWRnZSB7CisgICAgZnJvbSB7
CisgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCk7CisgICAgfQorICAgIHRvIHsK
KyAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOworICAgIH0KK30KKworQGtleWZyYW1l
cyBzbGlkZS1ib3R0b20tZWRnZSB7CisgICAgZnJvbSB7CisgICAgICAgIHRyYW5zZm9ybTogdHJh
bnNsYXRlWSgwKTsKKyAgICB9CisgICAgdG8geworICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0
ZVkoMzBweCk7CisgICAgfQorfQorCisuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJv
dyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdpZHRoOiAxOXB4OworICAgIHRvcDog
MDsKKyAgICBib3R0b206IDA7CisgICAgcGFkZGluZzogNHB4IDA7CisgICAgb3BhY2l0eTogMC42
OworCisgICAgei1pbmRleDogMjsKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owor
ICAgIGJhY2tncm91bmQtc2l6ZTogOHB4OworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9J
bWFnZXMvVXBEb3duQXJyb3dzLnN2Zyk7CisKKyAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFj
aXR5OworICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7CisgICAgYmFja2dyb3VuZC1jbGlw
OiBjb250ZW50LWJveDsKKworICAgIC0tZGFzaGJvYXJkLWFkdmFuY2UtYXJyb3ctb2Zmc2V0LWVu
ZDogMHB4OworfQorCitib2R5W2Rpcj1sdHJdIC5kYXNoYm9hcmQtY29udGFpbmVyIC5hZHZhbmNl
LWFycm93IHsKKyAgICByaWdodDogdmFyKC0tZGFzaGJvYXJkLWFkdmFuY2UtYXJyb3ctb2Zmc2V0
LWVuZCk7Cit9CisKK2JvZHlbZGlyPXJ0bF0gLmRhc2hib2FyZC1jb250YWluZXIgLmFkdmFuY2Ut
YXJyb3cgeworICAgIGxlZnQ6IHZhcigtLWRhc2hib2FyZC1hZHZhbmNlLWFycm93LW9mZnNldC1l
bmQpOworfQorCisuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdzpob3ZlciB7Cisg
ICAgb3BhY2l0eTogMC44OworfQorCisuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJv
dzphY3RpdmUgeworICAgIG9wYWNpdHk6IDE7Cit9CisKKy5kYXNoYm9hcmQtY29udGFpbmVyIC5h
ZHZhbmNlLWFycm93LmluYWN0aXZlIHsKKyAgICBvcGFjaXR5OiAwOworICAgIHBvaW50ZXItZXZl
bnRzOiBub25lOworfQorCisuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdy5hZHZh
bmNlLWZvcndhcmQgeworICAgIHRvcDogMDsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUg
NHB4OworfQorCisuZGFzaGJvYXJkLWNvbnRhaW5lciAuYWR2YW5jZS1hcnJvdy5hZHZhbmNlLWJh
Y2t3YXJkIHsKKyAgICBib3R0b206IDA7CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC00
cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OTczMDcwMWM2Y2E0OTBjZDUzMTA0YjViMmZjMzQ4MWE4OWIyMDg0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29u
dGFpbmVyVmlldy5qcwpAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuRGFz
aGJvYXJkQ29udGFpbmVyVmlldyA9IGNsYXNzIERhc2hib2FyZENvbnRhaW5lclZpZXcgZXh0ZW5k
cyBXSS5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigp
OworCisgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtID0gbmV3IFdJLk5hdmlnYXRpb25JdGVtKCJk
YXNoYm9hcmQtY29udGFpbmVyIiwgImdyb3VwIiwgV0kuVUlTdHJpbmcoIkFjdGl2aXR5IFZpZXdl
ciIpKTsKKworICAgICAgICB0aGlzLl9hZHZhbmNlRm9yd2FyZEFycm93RWxlbWVudCA9IHRoaXMu
X3Rvb2xiYXJJdGVtLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpOworICAgICAgICB0aGlzLl9hZHZhbmNlRm9yd2FyZEFycm93RWxlbWVudC5jbGFzc05h
bWUgPSAiYWR2YW5jZS1hcnJvdyBhZHZhbmNlLWZvcndhcmQiOworICAgICAgICB0aGlzLl9hZHZh
bmNlQmFja3dhcmRBcnJvd0VsZW1lbnQgPSB0aGlzLl90b29sYmFySXRlbS5lbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICAgICAgdGhpcy5fYWR2
YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50LmNsYXNzTmFtZSA9ICJhZHZhbmNlLWFycm93IGFkdmFu
Y2UtYmFja3dhcmQiOworCisgICAgICAgIHRoaXMuX2FkdmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYWR2YW5jZUZvcndhcmRBcnJvd0NsaWNr
ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93Q2xp
Y2tlZC5iaW5kKHRoaXMpKTsKKworICAgICAgICAvLyBSZXByZXNlbnRzIGN1cnJlbnRseSBvcGVu
IGRhc2hib2FyZHMsIHdpdGggdGhlIG1vc3QgcmVjZW50IGVudHJpZXMgYXBwZW5kZWQgdG8gdGhl
IGVuZC4KKyAgICAgICAgdGhpcy5fZGFzaGJvYXJkU3RhY2sgPSBbXTsKKyAgICAgICAgdGhpcy5f
Y3VycmVudEluZGV4ID0gLTE7CisKKyAgICAgICAgdGhpcy5fdXBkYXRlQWR2YW5jZUFycm93Vmlz
aWJpbGl0eSgpOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHRvb2xiYXJJdGVt
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90b29sYmFySXRlbTsKKyAgICB9CisKKyAg
ICBnZXQgY3VycmVudERhc2hib2FyZFZpZXcoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2N1
cnJlbnRJbmRleCA9PT0gLTEpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBy
ZXR1cm4gdGhpcy5fZGFzaGJvYXJkU3RhY2tbdGhpcy5fY3VycmVudEluZGV4XTsKKyAgICB9CisK
KyAgICBzaG93RGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2Jq
ZWN0KQorICAgIHsKKyAgICAgICAgdmFyIGRhc2hib2FyZFZpZXcgPSB0aGlzLl9kYXNoYm9hcmRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICBpZiAo
IWRhc2hib2FyZFZpZXcpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBpZiAo
dGhpcy5jdXJyZW50RGFzaGJvYXJkVmlldyA9PT0gZGFzaGJvYXJkVmlldykKKyAgICAgICAgICAg
IHJldHVybiBkYXNoYm9hcmRWaWV3OworCisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2Rhc2hi
b2FyZFN0YWNrLmluZGV4T2YoZGFzaGJvYXJkVmlldyk7CisgICAgICAgIHRoaXMuX3Nob3dEYXNo
Ym9hcmRBdEluZGV4KGluZGV4KTsKKyAgICAgICAgcmV0dXJuIGRhc2hib2FyZFZpZXc7CisgICAg
fQorCisgICAgaGlkZURhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRl
ZE9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyA9IHRy
dWU7CisgICAgICAgIHZhciBkYXNoYm9hcmRWaWV3ID0gdGhpcy5fZGFzaGJvYXJkVmlld0ZvclJl
cHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3
cyk7CisKKyAgICAgICAgaWYgKHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcgIT09IGRhc2hib2Fy
ZFZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fY3VycmVudEluZGV4ID4gMCk7CisgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRBdEluZGV4
KHRoaXMuX2N1cnJlbnRJbmRleCAtIDEpOworICAgIH0KKworICAgIGNsb3NlRGFzaGJvYXJkVmll
d0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAg
dmFyIG9ubHlSZXR1cm5FeGlzdGluZ1ZpZXdzID0gdHJ1ZTsKKyAgICAgICAgdmFyIGRhc2hib2Fy
ZFZpZXcgPSB0aGlzLl9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50
ZWRPYmplY3QsIG9ubHlSZXR1cm5FeGlzdGluZ1ZpZXdzKTsKKyAgICAgICAgaWYgKCFkYXNoYm9h
cmRWaWV3KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2Nsb3NlRGFzaGJv
YXJkVmlldyhkYXNoYm9hcmRWaWV3KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBf
YWR2YW5jZUZvcndhcmRBcnJvd0NsaWNrZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd0Rh
c2hib2FyZEF0SW5kZXgodGhpcy5fY3VycmVudEluZGV4ICsgMSk7CisgICAgfQorCisgICAgX2Fk
dmFuY2VCYWNrd2FyZEFycm93Q2xpY2tlZCgpCisgICAgeworICAgICAgICB0aGlzLl9zaG93RGFz
aGJvYXJkQXRJbmRleCh0aGlzLl9jdXJyZW50SW5kZXggLSAxKTsKKyAgICB9CisKKyAgICBfZGlz
bWlzc0FkdmFuY2VBcnJvd3MoKQorICAgIHsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUZvcndhcmRB
cnJvd0VsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkluYWN0
aXZlU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkluYWN0aXZlU3R5
bGVDbGFzc05hbWUpOworICAgIH0KKworICAgIF91cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5
KCkKKyAgICB7CisgICAgICAgIHZhciBjYW5BZHZhbmNlRm9yd2FyZCA9IHRoaXMuX2N1cnJlbnRJ
bmRleCA8IHRoaXMuX2Rhc2hib2FyZFN0YWNrLmxlbmd0aCAtIDE7CisgICAgICAgIHZhciBjYW5B
ZHZhbmNlQmFja3dhcmQgPSB0aGlzLl9jdXJyZW50SW5kZXggPiAwOworICAgICAgICB0aGlzLl9h
ZHZhbmNlRm9yd2FyZEFycm93RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdJLkRhc2hib2FyZENv
bnRhaW5lclZpZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSwgIWNhbkFkdmFuY2VGb3J3YXJkKTsK
KyAgICAgICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50LmNsYXNzTGlzdC50b2dn
bGUoV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lLCAhY2Fu
QWR2YW5jZUJhY2t3YXJkKTsKKyAgICB9CisKKyAgICBfZGFzaGJvYXJkVmlld0ZvclJlcHJlc2Vu
dGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cykKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAg
ICAvLyBJdGVyYXRlIG92ZXIgYWxsIGtub3duIGRhc2hib2FyZCB2aWV3cyBhbmQgc2VlIGlmIGFu
eSBhcmUgZm9yIHRoaXMgb2JqZWN0LgorICAgICAgICBmb3IgKHZhciBkYXNoYm9hcmRWaWV3IG9m
IHRoaXMuX2Rhc2hib2FyZFN0YWNrKSB7CisgICAgICAgICAgICBpZiAoZGFzaGJvYXJkVmlldy5y
ZXByZXNlbnRlZE9iamVjdCA9PT0gcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGRhc2hib2FyZFZpZXc7CisgICAgICAgIH0KKworICAgICAgICBpZiAob25seVJldHVy
bkV4aXN0aW5nVmlld3MpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICAvLyBO
byBleGlzdGluZyBjb250ZW50IHZpZXcgZm91bmQsIG1ha2UgYSBuZXcgb25lLgorICAgICAgICBk
YXNoYm9hcmRWaWV3ID0gV0kuRGFzaGJvYXJkVmlldy5jcmVhdGUocmVwcmVzZW50ZWRPYmplY3Qp
OworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhc2hib2FyZFZpZXcsICJVbmtub3duIHJlcHJl
c2VudGVkT2JqZWN0IiwgcmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICBpZiAoIWRhc2hib2Fy
ZFZpZXcpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICB0aGlzLl9kYXNoYm9h
cmRTdGFjay5wdXNoKGRhc2hib2FyZFZpZXcpOworICAgICAgICB0aGlzLl90b29sYmFySXRlbS5l
bGVtZW50LmFwcGVuZENoaWxkKGRhc2hib2FyZFZpZXcuZWxlbWVudCk7CisKKyAgICAgICAgcmV0
dXJuIGRhc2hib2FyZFZpZXc7CisgICAgfQorCisgICAgX3Nob3dEYXNoYm9hcmRBdEluZGV4KGlu
ZGV4KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggPj0gMCAmJiBpbmRleCA8
PSB0aGlzLl9kYXNoYm9hcmRTdGFjay5sZW5ndGggLSAxKTsKKworICAgICAgICBpZiAodGhpcy5f
Y3VycmVudEluZGV4ID09PSBpbmRleCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
YXIgYWR2YW5jZURpcmVjdGlvbiA9IG51bGw7CisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5k
ZXggPCBpbmRleCkKKyAgICAgICAgICAgIGFkdmFuY2VEaXJlY3Rpb24gPSBXSS5EYXNoYm9hcmRD
b250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24uRm9yd2FyZDsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgYWR2YW5jZURpcmVjdGlvbiA9IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2
YW5jZURpcmVjdGlvbi5CYWNrd2FyZDsKKyAgICAgICAgdmFyIGluaXRpYWxEaXJlY3Rpb24gPSBX
SS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24uTm9uZTsKKyAgICAgICAg
dmFyIGlzSW5pdGlhbERhc2hib2FyZCA9IHRoaXMuX2N1cnJlbnRJbmRleCA9PT0gLTE7CisgICAg
ICAgIGlmICghaXNJbml0aWFsRGFzaGJvYXJkKQorICAgICAgICAgICAgdGhpcy5faGlkZURhc2hi
b2FyZFZpZXcodGhpcy5jdXJyZW50RGFzaGJvYXJkVmlldywgYWR2YW5jZURpcmVjdGlvbik7CisK
KyAgICAgICAgdGhpcy5fY3VycmVudEluZGV4ID0gaW5kZXg7CisgICAgICAgIHRoaXMuX3Nob3dE
YXNoYm9hcmRWaWV3KHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcsIGlzSW5pdGlhbERhc2hib2Fy
ZCA/IGluaXRpYWxEaXJlY3Rpb24gOiBhZHZhbmNlRGlyZWN0aW9uKTsKKyAgICB9CisKKyAgICBf
c2hvd0Rhc2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldywgYWR2YW5jZURpcmVjdGlvbikKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhc2hib2FyZFZpZXcgaW5zdGFuY2VvZiBXSS5EYXNo
Ym9hcmRWaWV3KTsKKworICAgICAgICBkYXNoYm9hcmRWaWV3LnNob3duKCk7CisgICAgICAgIHRo
aXMuX2Rpc21pc3NBZHZhbmNlQXJyb3dzKCk7CisKKyAgICAgICAgdmFyIGFuaW1hdGlvbkNsYXNz
ID0gbnVsbDsKKyAgICAgICAgaWYgKGFkdmFuY2VEaXJlY3Rpb24gPT09IFdJLkRhc2hib2FyZENv
bnRhaW5lclZpZXcuQWR2YW5jZURpcmVjdGlvbi5Gb3J3YXJkKQorICAgICAgICAgICAgYW5pbWF0
aW9uQ2xhc3MgPSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkZvcndhcmRJbmNvbWluZ0Rhc2hi
b2FyZFN0eWxlQ2xhc3NOYW1lOworICAgICAgICBpZiAoYWR2YW5jZURpcmVjdGlvbiA9PT0gV0ku
RGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0aW9uLkJhY2t3YXJkKQorICAgICAg
ICAgICAgYW5pbWF0aW9uQ2xhc3MgPSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkJhY2t3YXJk
SW5jb21pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZTsKKworICAgICAgICB2YXIgY29udGFpbmVy
ID0gdGhpczsKKyAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0ku
RGFzaGJvYXJkQ29udGFpbmVyVmlldy5WaXNpYmxlRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUpOwor
CisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZGVkKGV2ZW50KSB7CisgICAgICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0ICE9PSBkYXNoYm9hcmRWaWV3LmVsZW1lbnQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQucmVtb3ZlRXZl
bnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIiwgYW5pbWF0aW9uRW5kZWQpOworICAgICAgICAgICAg
ZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYW5pbWF0aW9uQ2xhc3MpOwor
ICAgICAgICAgICAgY29udGFpbmVyLl91cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoYW5pbWF0aW9uQ2xhc3MpIHsKKyAgICAgICAgICAgIGRh
c2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKGFuaW1hdGlvbkNsYXNzKTsKKyAgICAg
ICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25l
bmQiLCBhbmltYXRpb25FbmRlZCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGFzaGJv
YXJkVmlldzsKKyAgICB9CisKKyAgICBfaGlkZURhc2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldywg
YWR2YW5jZURpcmVjdGlvbiwgY2FsbGJhY2spCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dChkYXNoYm9hcmRWaWV3IGluc3RhbmNlb2YgV0kuRGFzaGJvYXJkVmlldyk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcgPT09IGRhc2hib2FyZFZpZXcp
OworCisgICAgICAgIGRhc2hib2FyZFZpZXcuaGlkZGVuKCk7CisgICAgICAgIHRoaXMuX2Rpc21p
c3NBZHZhbmNlQXJyb3dzKCk7CisKKyAgICAgICAgdmFyIGFuaW1hdGlvbkNsYXNzID0gbnVsbDsK
KyAgICAgICAgaWYgKGFkdmFuY2VEaXJlY3Rpb24gPT09IFdJLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuQWR2YW5jZURpcmVjdGlvbi5Gb3J3YXJkKQorICAgICAgICAgICAgYW5pbWF0aW9uQ2xhc3Mg
PSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkZvcndhcmRPdXRnb2luZ0Rhc2hib2FyZFN0eWxl
Q2xhc3NOYW1lOworICAgICAgICBpZiAoYWR2YW5jZURpcmVjdGlvbiA9PT0gV0kuRGFzaGJvYXJk
Q29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0aW9uLkJhY2t3YXJkKQorICAgICAgICAgICAgYW5p
bWF0aW9uQ2xhc3MgPSBXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkJhY2t3YXJkT3V0Z29pbmdE
YXNoYm9hcmRTdHlsZUNsYXNzTmFtZTsKKworICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpczsK
KworICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25FbmRlZChldmVudCkgeworICAgICAgICAgICAg
aWYgKGV2ZW50LnRhcmdldCAhPT0gZGFzaGJvYXJkVmlldy5lbGVtZW50KQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsIGFuaW1hdGlvbkVuZGVkKTsKKyAgICAgICAgICAg
IGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGFuaW1hdGlvbkNsYXNzKTsK
KyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdJLkRh
c2hib2FyZENvbnRhaW5lclZpZXcuVmlzaWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lKTsKKyAg
ICAgICAgICAgIGNvbnRhaW5lci5fdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpOworCisg
ICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYW5pbWF0aW9uQ2xh
c3MpIHsKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKGFu
aW1hdGlvbkNsYXNzKTsKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJhbmltYXRpb25lbmQiLCBhbmltYXRpb25FbmRlZCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV0ku
RGFzaGJvYXJkQ29udGFpbmVyVmlldy5WaXNpYmxlRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUpOwor
ICAgIH0KKworICAgIF9jbG9zZURhc2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldykKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhc2hib2FyZFZpZXcgaW5zdGFuY2VvZiBXSS5EYXNoYm9h
cmRWaWV3KTsKKworICAgICAgICBmdW5jdGlvbiBkaXNzb2NpYXRlRGFzaGJvYXJkVmlldygpIHsK
KyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuY2xvc2VkKCk7CisgICAgICAgICAgICBkYXNoYm9h
cmRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkYXNoYm9hcmRWaWV3LmVsZW1l
bnQpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZGFzaGJvYXJkU3Rh
Y2suaW5kZXhPZihkYXNoYm9hcmRWaWV3KTsKKworICAgICAgICBpZiAodGhpcy5jdXJyZW50RGFz
aGJvYXJkVmlldyA9PT0gZGFzaGJvYXJkVmlldykgeworICAgICAgICAgICAgdmFyIGRpcmVjdGlv
biA9IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVjdGlvbi5CYWNrd2FyZDsK
KyAgICAgICAgICAgIHRoaXMuX2hpZGVEYXNoYm9hcmRWaWV3KHRoaXMuY3VycmVudERhc2hib2Fy
ZFZpZXcsIGRpcmVjdGlvbiwgZGlzc29jaWF0ZURhc2hib2FyZFZpZXcpOworICAgICAgICAgICAg
dGhpcy5fZGFzaGJvYXJkU3RhY2suc3BsaWNlKGluZGV4LCAxKTsKKyAgICAgICAgICAgIC0tdGhp
cy5fY3VycmVudEluZGV4OworICAgICAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZFZpZXcodGhp
cy5jdXJyZW50RGFzaGJvYXJkVmlldywgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2Rhc2hib2FyZFN0YWNrLnNwbGljZShpbmRleCwg
MSk7CisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPiBpbmRleCkKKyAgICAgICAgICAg
IC0tdGhpcy5fY3VycmVudEluZGV4OworICAgICAgICBkaXNzb2NpYXRlRGFzaGJvYXJkVmlldy5j
YWxsKHRoaXMpOworCisgICAgICAgIHRoaXMuX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHko
KTsKKyAgICB9Cit9OworCitXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZpc2libGVEYXNoYm9h
cmRTdHlsZUNsYXNzTmFtZSA9ICJ2aXNpYmxlIjsKK1dJLkRhc2hib2FyZENvbnRhaW5lclZpZXcu
SW5hY3RpdmVTdHlsZUNsYXNzTmFtZSA9ICJpbmFjdGl2ZSI7CisKK1dJLkRhc2hib2FyZENvbnRh
aW5lclZpZXcuQWR2YW5jZURpcmVjdGlvbiA9IHsKKyAgICBGb3J3YXJkOiBTeW1ib2woImRhc2hi
b2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1mb3J3YXJkIiksCisgICAgQmFj
a3dhcmQ6IFN5bWJvbCgiZGFzaGJvYXJkLWNvbnRhaW5lci12aWV3LWFkdmFuY2UtZGlyZWN0aW9u
LWJhY2t3YXJkIiksCisgICAgTm9uZTogU3ltYm9sKCJkYXNoYm9hcmQtY29udGFpbmVyLXZpZXct
YWR2YW5jZS1kaXJlY3Rpb24tbm9uZSIpCit9OworCitXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3
LkZvcndhcmRJbmNvbWluZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLWluLWRvd24i
OworV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5CYWNrd2FyZEluY29taW5nRGFzaGJvYXJkU3R5
bGVDbGFzc05hbWUgPSAic2xpZGUtaW4tdXAiOworV0kuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5G
b3J3YXJkT3V0Z29pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSA9ICJzbGlkZS1vdXQtZG93biI7
CitXSS5EYXNoYm9hcmRDb250YWluZXJWaWV3LkJhY2t3YXJkT3V0Z29pbmdEYXNoYm9hcmRTdHls
ZUNsYXNzTmFtZSA9ICJzbGlkZS1vdXQtdXAiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGY0NWNiYTJjYzNhZmMwNzRiZmJlNjY0YzI5NTRlZTY1ZDVlMmJiOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2Fy
ZFZpZXcuanMKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuRGFzaGJvYXJk
VmlldyA9IGNsYXNzIERhc2hib2FyZFZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25z
dHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCwgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGlkZW50aWZpZXIpOworCisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAg
dGhpcy5fcmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdDsKKworICAgICAgICB0
aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZGFzaGJvYXJkIik7CisgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZChpZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMK
KworICAgIHN0YXRpYyBjcmVhdGUocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAgICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRGVmYXVsdERhc2hib2FyZCkKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgV0kuRGVmYXVsdERhc2hib2FyZFZpZXcocmVwcmVzZW50ZWRPYmplY3QpOworCisg
ICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkRlYnVnZ2VyRGFzaGJv
YXJkKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5EZWJ1Z2dlckRhc2hib2FyZFZpZXcocmVw
cmVzZW50ZWRPYmplY3QpOworCisgICAgICAgIHRocm93ICJDYW4ndCBtYWtlIGEgRGFzaGJvYXJk
VmlldyBmb3IgYW4gdW5rbm93biByZXByZXNlbnRlZE9iamVjdC4iOworICAgIH0KKworICAgIC8v
IFB1YmxpYworCisgICAgZ2V0IGVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2VsZW1lbnQ7CisgICAgfQorCisgICAgZ2V0IHJlcHJlc2VudGVkT2JqZWN0KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9yZXByZXNlbnRlZE9iamVjdDsKKyAgICB9CisKKyAgICBzaG93
bigpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgIH0K
KworICAgIGhpZGRlbigpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzLgorICAgIH0KKworICAgIGNsb3NlZCgpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRl
ZCBieSBzdWJjbGFzc2VzLgorICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuY3NzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJEYXNoYm9hcmRW
aWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZjdhNjhhMDY0ZWQxY2ZmNjg0OWRlY2Q2YmMxYjAyZjE0MTI0
ODU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmNzcwpAQCAtMCwwICsxLDE5MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWJ1Z2dlciB7CisgICAgZGlzcGxh
eTogZmxleDsKKyAgICBmbGV4LXdyYXA6IG5vd3JhcDsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNl
bnRlcjsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAgIC13ZWJraXQtcGFkZGluZy1zdGFy
dDogNXB4OworICAgIC13ZWJraXQtcGFkZGluZy1lbmQ6IDEycHg7CisgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworICAgIGNvbG9yOiBoc2woMCwgMCUsIDIzJSk7Cit9CisKKy5kYXNoYm9hcmQuZGVi
dWdnZXIgPiAubWVzc2FnZSB7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy5kYXNoYm9h
cmQuZGVidWdnZXIgLm5hdmlnYXRpb24tYmFyIHsKKyAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDRw
eDsKKyAgICBib3JkZXI6IDA7Cit9CisKKy50b29sYmFyOm5vdCguc21hbGwtc2l6ZSkgLmRhc2hi
b2FyZC5kZWJ1Z2dlciAubmF2aWdhdGlvbi1iYXIgeworICAgIG1hcmdpbi10b3A6IDFweDsKK30K
KworLmRhc2hib2FyZC5kZWJ1Z2dlciAubmF2aWdhdGlvbi1iYXIgLml0ZW0uYnV0dG9uIHsKKyAg
ICBmbGV4LWRpcmVjdGlvbjogcm93OworICAgIHdpZHRoOiAxNnB4OworICAgIGhlaWdodDogMTZw
eDsKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgcGFkZGluZzogMDsKKyAgICBib3JkZXI6IG5v
bmUgIWltcG9ydGFudDsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7Cisg
ICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2Vy
IC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24gPiAuZ2x5cGggeworICAgIHdpZHRoOiAxNnB4
OworICAgIGhlaWdodDogMTZweDsKKyAgICBhbmltYXRpb24tbmFtZTogcHVsc2UtcGF1c2UtYnV0
dG9uOworICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CisgICAgYW5pbWF0aW9uLXRpbWluZy1m
dW5jdGlvbjogZWFzZS1vdXQ7CisgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5p
dGU7CisgICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogYWx0ZXJuYXRlOworICAgIGNvbG9yOiBoc2wo
MjA3LCA0NiUsIDU5JSk7Cit9CisKK2JvZHkud2luZG93LWluYWN0aXZlIC5kYXNoYm9hcmQuZGVi
dWdnZXIgLm5hdmlnYXRpb24tYmFyIC5pdGVtLmJ1dHRvbiA+IC5nbHlwaCB7CisgICAgYW5pbWF0
aW9uLW5hbWU6IG5vbmU7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgLm5hdmlnYXRpb24tYmFy
IC5pdGVtLmRlYnVnZ2VyLWRhc2hib2FyZC1wYXVzZS5hY3RpdmF0ZWQgeworICAgIGZpbGw6IG5v
bmU7CisgICAgc3Ryb2tlOiB2YXIoLS1nbHlwaC1jb2xvci1hY3RpdmUpOworfQorCitAa2V5ZnJh
bWVzIHB1bHNlLXBhdXNlLWJ1dHRvbiB7CisgICAgZnJvbSB7IG9wYWNpdHk6IDAuNzsgdHJhbnNm
b3JtOiBzY2FsZSgxKTsgfQorICAgIHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiBzY2FsZSgx
LjEpOyB9Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAuZGl2aWRlciB7CisgICAgd2lkdGg6
IDFweDsKKyAgICBoZWlnaHQ6IDEwMCU7CisKKyAgICBtYXJnaW46IDAgMTBweDsKKworICAgIGJh
Y2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChoc2woMCwgMCUsIDc0JSksIGhzbCgwLCAw
JSwgNzQlKSk7CisgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDY2JTsKKyAgICBiYWNrZ3JvdW5k
LXJlcGVhdDogbm8tcmVwZWF0OworICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKK30K
KworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IGRpdiB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBh
bGlnbi1pdGVtczogY2VudGVyOworICAgIGZsZXg6IG5vbmU7Cit9CisKKy5kYXNoYm9hcmQuZGVi
dWdnZXIgPiAubG9jYXRpb24geworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgZmxleDogaW5p
dGlhbDsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiA+ICogeworICAgIGZs
ZXg6IG5vbmU7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRpb24gPiA6Zmlyc3Qt
Y2hpbGQgeworICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKKyAgICB3aWR0aDogMTZweDsKKyAgICBo
ZWlnaHQ6IDE2cHg7Cit9CisKKy8qIEFkZCBzcGFjaW5nIGJldHdlZW4gdGhlIGVsbGlwc2lzJ2Qg
bG9jYXRpb24gYW5kIHRoZSB1cC9kb3duIGFycm93cy4gKi8KKy5kYXNoYm9hcmQuZGVidWdnZXIg
PiAubG9jYXRpb24gPiA6bGFzdC1jaGlsZCB7CisgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiA1cHg7
Cit9CisKKy50b29sYmFyOm5vdCguc21hbGwtc2l6ZSkgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5s
b2NhdGlvbiA6bm90KDpmaXJzdC1jaGlsZCkgeworICAgIG1hcmdpbi10b3A6IDFweDsKK30KKwor
LmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiBpbWcuaWNvbiB7CisgICAgd2lkdGg6IDE2
cHg7CisgICAgaGVpZ2h0OiAxNnB4OworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxvY2F0
aW9uIDptYXRjaGVzKC5mdW5jdGlvbi1pY29uLCAuZXZlbnQtbGlzdGVuZXItaWNvbikgeworICAg
IC13ZWJraXQtbWFyZ2luLWVuZDogNXB4OworfQorCisuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxv
Y2F0aW9uIC5mdW5jdGlvbi1uYW1lIHsKKyAgICBjb2xvcjogaHNsKDAsIDAlLCAxMSUpOworICAg
IHBhZGRpbmctYm90dG9tOiAxcHg7Cit9CisKKy5kYXNoYm9hcmQuZGVidWdnZXIgPiAubG9jYXRp
b24gLmZ1bmN0aW9uLW5hbWU6OmFmdGVyIHsKKyAgICBjb250ZW50OiAiXDAwQTBcMjAxNFwwMEEw
IjsgLyogJm5ic3A7Jm1kYXNoOyZuYnNwOyAqLzsKK30KKworLmRhc2hib2FyZC5kZWJ1Z2dlciA+
IC5sb2NhdGlvbiAuZ28tdG8tbGluayB7CisgICAgcGFkZGluZy1ib3R0b206IDFweDsKKyAgICAt
d2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjogaHNsKDAsIDAlLCA2NiUpOworCisgICAgZmxl
eDogaW5pdGlhbDsKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKKyAgICBvdmVyZmxvdzog
aGlkZGVuOworfQorCisudG9vbGJhci5jb2xsYXBzZWQgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IDpu
b3QoLm1lc3NhZ2UsIC5uYXZpZ2F0aW9uLWJhcikgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisK
Ky50b29sYmFyLnNtYWxsLXNpemUgLmRhc2hib2FyZC5kZWJ1Z2dlciA+IC5tZXNzYWdlIHsKKyAg
ICBmb250LXNpemU6IDEwcHg7Cit9CisKKy50b29sYmFyLnNtYWxsLXNpemUgLmRhc2hib2FyZC5k
ZWJ1Z2dlciA+IC5sb2NhdGlvbiBpbWcuaWNvbiwKKy50b29sYmFyLnNtYWxsLXNpemUgLmRhc2hi
b2FyZC5kZWJ1Z2dlciA+IC5sb2NhdGlvbiA+IDpmaXJzdC1jaGlsZCB7CisgICAgd2lkdGg6IDE0
cHg7CisgICAgaGVpZ2h0OiAxNHB4OworfQorCitAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1l
OiBkYXJrKSB7CisgICAgLnRvb2xiYXIgLmRhc2hib2FyZC5kZWJ1Z2dlciB7CisgICAgICAgIGNv
bG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKKyAgICB9CisKKyAgICAuZGFzaGJvYXJkLmRlYnVnZ2Vy
IC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5idXR0b24gPiAuZ2x5cGggeworICAgICAgICBjb2xvcjog
dmFyKC0tZ2x5cGgtY29sb3ItYWN0aXZlKTsKKyAgICB9CisKKyAgICAuZGFzaGJvYXJkLmRlYnVn
Z2VyID4gLmxvY2F0aW9uIC5mdW5jdGlvbi1uYW1lIHsKKyAgICAgICAgY29sb3I6IHZhcigtLXRl
eHQtY29sb3ItYWN0aXZlKTsKKyAgICB9CisKKyAgICAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmxv
Y2F0aW9uIC5nby10by1saW5rIHsKKyAgICAgICAgcGFkZGluZy1ib3R0b206IDFweDsKKyAgICAg
ICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6IHZhcigtLXRleHQtY29sb3Itc2Vjb25k
YXJ5KTsKKyAgICB9CisKKyAgICAuZGFzaGJvYXJkLmRlYnVnZ2VyID4gLmRpdmlkZXIgeworICAg
ICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tdGV4dC1jb2xvci10
ZXJ0aWFyeSksIHZhcigtLXRleHQtY29sb3ItdGVydGlhcnkpKTsKKyAgICB9Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlckRh
c2hib2FyZFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEwMzI2Nzc5ZGYzNDNlMTg1
YmRjY2RjYzZjZTM2Mjc0ZTcyYTBhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5qcwpAQCAt
MCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuRGVidWdnZXJEYXNoYm9hcmRWaWV3
ID0gY2xhc3MgRGVidWdnZXJEYXNoYm9hcmRWaWV3IGV4dGVuZHMgV0kuRGFzaGJvYXJkVmlldwor
eworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgc3Vw
ZXIocmVwcmVzZW50ZWRPYmplY3QsICJkZWJ1Z2dlciIpOworCisgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3RpdmVD
YWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX3JlYnVpbGRMb2NhdGlvbiwgdGhpcyk7CisKKyAgICAg
ICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXSS5OYXZpZ2F0aW9uQmFyOworICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKKwor
ICAgICAgICB2YXIgdG9vbHRpcCA9IFdJLlVJU3RyaW5nKCJDb250aW51ZSBzY3JpcHQgZXhlY3V0
aW9uICglcyBvciAlcykiKS5mb3JtYXQoV0kucGF1c2VPclJlc3VtZUtleWJvYXJkU2hvcnRjdXQu
ZGlzcGxheU5hbWUsIFdJLnBhdXNlT3JSZXN1bWVBbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0LmRp
c3BsYXlOYW1lKTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJSZXN1bWVCdXR0b25JdGVtID0gbmV3
IFdJLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRlYnVnZ2VyLWRhc2hib2FyZC1wYXVz
ZSIsIHRvb2x0aXAsIHRvb2x0aXAsICJJbWFnZXMvUmVzdW1lLnN2ZyIsIDE1LCAxNSk7CisgICAg
ICAgIHRoaXMuX2RlYnVnZ2VyUmVzdW1lQnV0dG9uSXRlbS5hY3RpdmF0ZWQgPSB0cnVlOworICAg
ICAgICB0aGlzLl9kZWJ1Z2dlclJlc3VtZUJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9yZXN1bWVCdXR0b25DbGlj
a2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRl
bSh0aGlzLl9kZWJ1Z2dlclJlc3VtZUJ1dHRvbkl0ZW0pOworCisgICAgICAgIHZhciBtZXNzYWdl
ID0gdGhpcy5fbWVzc2FnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgbWVzc2FnZS5jbGFzc0xpc3QuYWRkKCJtZXNzYWdlIik7CisgICAgICAgIG1lc3Nh
Z2UudGl0bGUgPSBtZXNzYWdlLnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmcoIkRlYnVnZ2VyIFBh
dXNlZCIpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobWVzc2FnZSk7CisKKyAg
ICAgICAgdmFyIGRpdmlkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgICAgIGRpdmlkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoImRpdmlkZXIiKTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRpdmlkZXJFbGVtZW50KTsKKworICAgICAgICB2
YXIgbG9jYXRpb25FbGVtZW50ID0gdGhpcy5fbG9jYXRpb25FbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGxvY2F0aW9uRWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJsb2NhdGlvbiIpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobG9jYXRpb25F
bGVtZW50KTsKKworICAgICAgICB0aGlzLl9yZWJ1aWxkTG9jYXRpb24oKTsKKyAgICB9CisKKyAg
ICAvLyBQdWJsaWMKKworICAgIGNsb3NlZCgpCisgICAgeworICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKworICAgICAgICBz
dXBlci5jbG9zZWQoKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfcmVidWlsZExv
Y2F0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghV0kuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNh
bGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9sb2NhdGlvbkVs
ZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICB2YXIgY2FsbEZyYW1lID0gV0kuZGVi
dWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZTsKKyAgICAgICAgdmFyIGZ1bmN0aW9uTmFtZSA9
IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWUgfHwgV0kuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rp
b24pIik7CisKKyAgICAgICAgdmFyIGljb25DbGFzc05hbWUgPSBXSS5EZWJ1Z2dlckRhc2hib2Fy
ZFZpZXcuRnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWU7CisKKyAgICAgICAgLy8gVGhpcyBpcyBt
b3JlIHRoYW4gbGlrZWx5IGFuIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9uIHdpdGggYW4gIm9uIiBw
cmVmaXggYW5kIGl0IGlzCisgICAgICAgIC8vIGFzIGxvbmcgb3IgbG9uZ2VyIHRoYW4gdGhlIHNo
b3J0ZXN0IGV2ZW50IGxpc3RlbmVyIG5hbWUgLS0gIm9uY3V0Ii4KKyAgICAgICAgaWYgKGNhbGxG
cmFtZS5mdW5jdGlvbk5hbWUgJiYgY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZS5zdGFydHNXaXRoKCJv
biIpICYmIGNhbGxGcmFtZS5mdW5jdGlvbk5hbWUubGVuZ3RoID49IDUpCisgICAgICAgICAgICBp
Y29uQ2xhc3NOYW1lID0gV0kuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkV2ZW50TGlzdGVuZXJJY29u
U3R5bGVDbGFzc05hbWU7CisKKyAgICAgICAgdmFyIGljb25FbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGljb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoaWNv
bkNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2xvY2F0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChp
Y29uRWxlbWVudCk7CisKKyAgICAgICAgdmFyIGljb25JbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgaWNvbkltYWdlRWxlbWVudC5jbGFzc05hbWUg
PSAiaWNvbiI7CisgICAgICAgIGljb25FbGVtZW50LmFwcGVuZENoaWxkKGljb25JbWFnZUVsZW1l
bnQpOworCisgICAgICAgIHZhciBuYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICAgICBuYW1lRWxlbWVudC5hcHBlbmQoZnVuY3Rpb25OYW1lKTsKKyAgICAg
ICAgbmFtZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZnVuY3Rpb24tbmFtZSIpOworICAgICAgICB0
aGlzLl9sb2NhdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQobmFtZUVsZW1lbnQpOworCisgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBkb250RmxvYXQ6IHRydWUsCisgICAgICAg
ICAgICBpZ25vcmVOZXR3b3JrVGFiOiB0cnVlLAorICAgICAgICAgICAgaWdub3JlU2VhcmNoVGFi
OiB0cnVlLAorICAgICAgICB9OworICAgICAgICBsZXQgbGlua0VsZW1lbnQgPSBXSS5jcmVhdGVT
b3VyY2VDb2RlTG9jYXRpb25MaW5rKFdJLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUu
c291cmNlQ29kZUxvY2F0aW9uLCBvcHRpb25zKTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25FbGVt
ZW50LmFwcGVuZENoaWxkKGxpbmtFbGVtZW50KTsKKyAgICB9CisKKyAgICBfcmVzdW1lQnV0dG9u
Q2xpY2tlZCgpCisgICAgeworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7Cisg
ICAgfQorfTsKKworV0kuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkZ1bmN0aW9uSWNvblN0eWxlQ2xh
c3NOYW1lID0gV0kuQ2FsbEZyYW1lVmlldy5GdW5jdGlvbkljb25TdHlsZUNsYXNzTmFtZTsKK1dJ
LkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5FdmVudExpc3RlbmVySWNvblN0eWxlQ2xhc3NOYW1lID0g
V0kuQ2FsbEZyYW1lVmlldy5FdmVudExpc3RlbmVySWNvblN0eWxlQ2xhc3NOYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERh
c2hib2FyZFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGVmYXVsdERhc2hib2FyZFZpZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlOTQzZmVjOGI4ODc2MGY4
ZjE4M2EyMmMxOTViOWE3MDAyN2VmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5jc3MKQEAg
LTAsMCArMSwyMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2JvZHk6bWF0Y2hlcygucGFnZSwgLndl
Yi1wYWdlKSAudG9vbGJhci5jb2xsYXBzZWQgLmRhc2hib2FyZC5kZWZhdWx0ID4gOm1hdGNoZXMo
LnJlc291cmNlc1NpemUsIC50aW1lLCAubG9ncykgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisK
K2JvZHk6bm90KC5wYWdlLCAud2ViLXBhZ2UpIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+
IDptYXRjaGVzKC5yZXNvdXJjZXNDb3VudCwgLnJlc291cmNlc1NpemUsIC50aW1lKSB7CisgICAg
ZGlzcGxheTogbm9uZTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0IHsKKyAgICBk
aXNwbGF5OiBmbGV4OworICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDsKKyAgICBqdXN0aWZ5LWNv
bnRlbnQ6IGNlbnRlcjsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0g
eworICAgIGxpbmUtaGVpZ2h0OiAxM3B4OworCisgICAgbWFyZ2luOiAxcHggMDsKKyAgICBwYWRk
aW5nOiAwIDVweDsKKworICAgIGRpc3BsYXk6IGZsZXg7CisKKyAgICBtaW4td2lkdGg6IDQ1cHg7
CisKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKKyAgICBhbGlnbi1pdGVtczogY2VudGVy
OworCisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5z
cGFyZW50OworCisgICAgZm9udC1mYW1pbHk6IC13ZWJraXQtc3lzdGVtLWZvbnQsIHNhbnMtc2Vy
aWY7CisgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKK30KKworLnRvb2xi
YXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gOm1hdGNoZXMoLnRpbWUsIC5yZXNvdXJjZXNTaXplKSB7
CisgICAgbWluLXdpZHRoOiA3MHB4OworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQg
PiAuaXRlbS5lbmFibGVkOmhvdmVyIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBoc2xhKDAsIDAl
LCAwJSwgMC4xKTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5h
YmxlZDphY3RpdmUgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGhzbGEoMCwgMCUsIDAlLCAwLjIp
OworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbSA+ICogeworICAgIGRp
c3BsYXk6IGZsZXg7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKK30KKworLnRvb2xiYXIgLmRh
c2hib2FyZC5kZWZhdWx0ID4gLml0ZW0gPiBpbWcgeworICAgIG9wYWNpdHk6IDAuMjsKKyAgICB3
aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7
Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQgPiBpbWcg
eworICAgIG9wYWNpdHk6IDAuNTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4g
Lml0ZW0uZW5hYmxlZDpob3ZlciA+IGltZyB7CisgICAgb3BhY2l0eTogMC42NTsKK30KKworLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0gPiBkaXYgeworICAgIGRpc3BsYXk6IGZs
ZXg7CisgICAgZmxleDogMTsKKyAgICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDJweDsKKyAgICBj
b2xvcjogaHNsYSgwLCAwJSwgMCUsIDAuMik7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVm
YXVsdCA+IC5pdGVtLmVuYWJsZWQgPiBkaXYgeworICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAwJSwg
MC43KTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDpo
b3ZlciA+IGRpdiB7CisgICAgY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjg1KTsKK30KKworLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc0NvdW50ID4gaW1nIHsKKyAgICBj
b250ZW50OiB1cmwoLi4vSW1hZ2VzL1Jlc291cmNlcy5zdmcpOworfQorCisudG9vbGJhciAuZGFz
aGJvYXJkLmRlZmF1bHQgPiAudGltZSA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdl
cy9UaW1lLnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5sb2dzID4g
aW1nIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0xvZ3Muc3ZnKTsKK30KKworLnRvb2xi
YXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc1NpemUgPiBpbWcgeworICAgIGNvbnRl
bnQ6IHVybCguLi9JbWFnZXMvV2VpZ2h0LnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQu
ZGVmYXVsdCA+IC5lcnJvcnMgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvRXJy
b3JzLnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMuZW5h
YmxlZCA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9FcnJvcnNFbmFibGVkLnN2
Zyk7CisgICAgb3BhY2l0eTogMC45OworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQg
PiAuZXJyb3JzLmVuYWJsZWQ6aG92ZXIgPiBpbWcgeworICAgIG9wYWNpdHk6IDE7Cit9CisKKy50
b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMuZW5hYmxlZCA+IGRpdiB7CisgICAg
Y29sb3I6IGhzbGEoMzU5LCA1NyUsIDUwJSwgMC45KTsKK30KKworLnRvb2xiYXIgLmRhc2hib2Fy
ZC5kZWZhdWx0ID4gLmVycm9ycy5lbmFibGVkOmhvdmVyID4gZGl2IHsKKyAgICBjb2xvcjogaHNs
KDM1OSwgNTclLCA1MCUpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNz
dWVzID4gaW1nIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0lzc3Vlcy5zdmcpOworfQor
CisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzLmVuYWJsZWQgPiBpbWcgewor
ICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvSXNzdWVzRW5hYmxlZC5zdmcpOworICAgIG9wYWNp
dHk6IDAuOTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmlzc3Vlcy5lbmFi
bGVkOmhvdmVyID4gaW1nIHsKKyAgICBvcGFjaXR5OiAxOworfQorCisudG9vbGJhciAuZGFzaGJv
YXJkLmRlZmF1bHQgPiAuaXNzdWVzLmVuYWJsZWQgPiBkaXYgeworICAgIGNvbG9yOiBoc2xhKDQz
LCA5NiUsIDQ0JSwgMC45KTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmlz
c3Vlcy5lbmFibGVkOmhvdmVyID4gZGl2IHsKKyAgICBjb2xvcjogaHNsKDQzLCA5NiUsIDQ0JSk7
Cit9CisKKy8qIFN0eWxlcyBmb3IgdGhlIHB1bHNpbmcgYW5pbWF0ZWQgc3RhdGUgb2YgY29uc29s
ZSBpdGVtcyAqLworCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5wdWxzaW5n
IHsKKyAgICBhbmltYXRpb24tbmFtZTogY29uc29sZS1pdGVtLXB1bHNlOworICAgIGFuaW1hdGlv
bi1kdXJhdGlvbjogMC43NXM7Cit9CisKK0BrZXlmcmFtZXMgY29uc29sZS1pdGVtLXB1bHNlIHsK
KyAgICA1MCUgeyBvcGFjaXR5OiAwLjY7IH0KK30KKworQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNj
aGVtZTogZGFyaykgeworICAgIC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtID4g
ZGl2IHsKKyAgICAgICAgLyogRklYTUU6IGludHJvZHVjZSBhIHZhcmlhYmxlIGZvciBvcGFjaXR5
IGFuZCB1c2UgaXQgZm9yIGJvdGggdGV4dCBhbmQgaWNvbnMgKi8KKyAgICAgICAgY29sb3I6IGhz
bGEoMCwgMTAwJSwgMTAwJSwgMC4yKTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuZGFzaGJvYXJk
LmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkID4gZGl2IHsKKyAgICAgICAgY29sb3I6IHZhcigtLWds
eXBoLWNvbG9yKTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAu
aXRlbS5lbmFibGVkOmhvdmVyIHsKKyAgICAgICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsIDAlLCB2
YXIoLS1mb3JlZ3JvdW5kLWxpZ2h0bmVzcyksIDAuMSk7CisgICAgfQorCisgICAgLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDpob3ZlciA+IGRpdiB7CisgICAgICAg
IGNvbG9yOiBoc2xhKDAsIDEwMCUsIDEwMCUsIDAuODUpOworICAgIH0KKworICAgIC50b29sYmFy
IC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5yZXNvdXJjZXNDb3VudCA+IGltZywKKyAgICAudG9vbGJh
ciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAucmVzb3VyY2VzU2l6ZSA+IGltZywKKyAgICAudG9vbGJh
ciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAudGltZSA+IGltZywKKyAgICAudG9vbGJhciAuZGFzaGJv
YXJkLmRlZmF1bHQgPiAubG9ncyA+IGltZywKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1
bHQgPiAuZXJyb3JzOm5vdCguZW5hYmxlZCkgPiBpbWcsCisgICAgLnRvb2xiYXIgLmRhc2hib2Fy
ZC5kZWZhdWx0ID4gLmlzc3Vlczpub3QoLmVuYWJsZWQpID4gaW1nIHsKKyAgICAgICAgZmlsdGVy
OiB2YXIoLS1maWx0ZXItaW52ZXJ0KTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuZGFzaGJvYXJk
IC5pdGVtLmJ1dHRvbiwKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkIC5pdGVtLmJ1dHRvbjphY3Rp
dmUgeworICAgICAgICBiYWNrZ3JvdW5kOiBub25lOworICAgIH0KKworICAgIC5kYXNoYm9hcmQt
Y29udGFpbmVyIC5hZHZhbmNlLWFycm93IHsKKyAgICAgICAgZmlsdGVyOiB2YXIoLS1maWx0ZXIt
aW52ZXJ0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ2MjQ5MzI4OTMzN2Q5YjRkMmJiNTc4NjIyNDYzZGE4NzQ3OGI0NWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZh
dWx0RGFzaGJvYXJkVmlldy5qcwpAQCAtMCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dJLkRlZmF1bHREYXNoYm9hcmRWaWV3ID0gY2xhc3MgRGVmYXVsdERhc2hib2Fy
ZFZpZXcgZXh0ZW5kcyBXSS5EYXNoYm9hcmRWaWV3Cit7CisgICAgY29uc3RydWN0b3IocmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCwgImRl
ZmF1bHQiKTsKKworICAgICAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJ
LkRlZmF1bHREYXNoYm9hcmQuRXZlbnQuRGF0YURpZENoYW5nZSwgKCkgPT4geyB0aGlzLl91cGRh
dGVEaXNwbGF5U29vbigpOyB9KTsKKyAgICAgICAgdGhpcy5fc2NoZWR1bGVkVXBkYXRlSWRlbnRp
ZmllciA9IHVuZGVmaW5lZDsKKworICAgICAgICB0aGlzLl9pdGVtcyA9IHsKKyAgICAgICAgICAg
IHJlc291cmNlc0NvdW50OiB7CisgICAgICAgICAgICAgICAgdG9vbHRpcDogV0kuVUlTdHJpbmco
IlNob3cgcGFnZSByZXNvdXJjZXMiKSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9y
ZXNvdXJjZXNJdGVtV2FzQ2xpY2tlZAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHJlc291
cmNlc1NpemU6IHsKKyAgICAgICAgICAgICAgICB0b29sdGlwOiBXSS5VSVN0cmluZygiU2hvdyBu
ZXR3b3JrIGluZm9ybWF0aW9uIiksCisgICAgICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fbmV0
d29ya0l0ZW1XYXNDbGlja2VkCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdGltZTogewor
ICAgICAgICAgICAgICAgIHRvb2x0aXA6IFdJLlVJU3RyaW5nKCJTaG93IHBhZ2UgbG9hZCB0aW1p
bmciKSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl90aW1lbGluZUl0ZW1XYXNDbGlj
a2VkCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgbG9nczogeworICAgICAgICAgICAgICAg
IHRvb2x0aXA6IFdJLlVJU3RyaW5nKCJTaG93IG1lc3NhZ2VzIGxvZ2dlZCB0byB0aGUgQ29uc29s
ZSIpLAorICAgICAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX2NvbnNvbGVJdGVtV2FzQ2xpY2tl
ZC5iaW5kKHRoaXMsIFdJLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5Mb2dzKQorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIGVycm9yczogeworICAgICAgICAgICAgICAgIHRvb2x0aXA6IFdJLlVJ
U3RyaW5nKCJTaG93IGVycm9ycyBsb2dnZWQgdG8gdGhlIENvbnNvbGUiKSwKKyAgICAgICAgICAg
ICAgICBoYW5kbGVyOiB0aGlzLl9jb25zb2xlSXRlbVdhc0NsaWNrZWQuYmluZCh0aGlzLCBXSS5M
b2dDb250ZW50Vmlldy5TY29wZXMuRXJyb3JzKQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IGlzc3VlczogeworICAgICAgICAgICAgICAgIHRvb2x0aXA6IFdJLlVJU3RyaW5nKCJTaG93IHdh
cm5pbmdzIGxvZ2dlZCB0byB0aGUgQ29uc29sZSIpLAorICAgICAgICAgICAgICAgIGhhbmRsZXI6
IHRoaXMuX2NvbnNvbGVJdGVtV2FzQ2xpY2tlZC5iaW5kKHRoaXMsIFdJLkxvZ0NvbnRlbnRWaWV3
LlNjb3Blcy5XYXJuaW5ncykKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBm
b3IgKHZhciBuYW1lIGluIHRoaXMuX2l0ZW1zKQorICAgICAgICAgICAgdGhpcy5fYXBwZW5kRWxl
bWVudEZvck5hbWVkSXRlbShuYW1lKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBf
dXBkYXRlRGlzcGxheVNvb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFVw
ZGF0ZUlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc2No
ZWR1bGVkVXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl91cGRh
dGVEaXNwbGF5LmJpbmQodGhpcykpOworICAgIH0KKworICAgIF91cGRhdGVEaXNwbGF5KCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX3NjaGVkdWxlZFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7
CisKKyAgICAgICAgdmFyIGRhc2hib2FyZCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisKKyAg
ICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgb2YgWyJsb2dzIiwgImlzc3VlcyIsICJlcnJvcnMiXSkK
KyAgICAgICAgICAgIHRoaXMuX3NldENvbnNvbGVJdGVtVmFsdWUoY2F0ZWdvcnksIGRhc2hib2Fy
ZFtjYXRlZ29yeV0pOworCisgICAgICAgIHZhciB0aW1lSXRlbSA9IHRoaXMuX2l0ZW1zLnRpbWU7
CisgICAgICAgIHRpbWVJdGVtLnRleHQgPSBkYXNoYm9hcmQudGltZSA/IE51bWJlci5zZWNvbmRz
VG9TdHJpbmcoZGFzaGJvYXJkLnRpbWUpIDogZW1EYXNoOworICAgICAgICB0aGlzLl9zZXRJdGVt
RW5hYmxlZCh0aW1lSXRlbSwgZGFzaGJvYXJkLnRpbWUgPiAwKTsKKworICAgICAgICB2YXIgY291
bnRJdGVtID0gdGhpcy5faXRlbXMucmVzb3VyY2VzQ291bnQ7CisgICAgICAgIGNvdW50SXRlbS50
ZXh0ID0gTnVtYmVyLmFiYnJldmlhdGUoZGFzaGJvYXJkLnJlc291cmNlc0NvdW50KTsKKyAgICAg
ICAgdGhpcy5fc2V0SXRlbUVuYWJsZWQoY291bnRJdGVtLCBkYXNoYm9hcmQucmVzb3VyY2VzQ291
bnQgPiAwKTsKKworICAgICAgICB2YXIgc2l6ZUl0ZW0gPSB0aGlzLl9pdGVtcy5yZXNvdXJjZXNT
aXplOworICAgICAgICBzaXplSXRlbS50ZXh0ID0gZGFzaGJvYXJkLnJlc291cmNlc1NpemUgPyBO
dW1iZXIuYnl0ZXNUb1N0cmluZyhkYXNoYm9hcmQucmVzb3VyY2VzU2l6ZSwgZmFsc2UpIDogZW1E
YXNoOworICAgICAgICB0aGlzLl9zZXRJdGVtRW5hYmxlZChzaXplSXRlbSwgZGFzaGJvYXJkLnJl
c291cmNlc1NpemUgPiAwKTsKKyAgICB9CisKKyAgICBfYXBwZW5kRWxlbWVudEZvck5hbWVkSXRl
bShuYW1lKQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1tuYW1lXTsKKwor
ICAgICAgICBpdGVtLmNvbnRhaW5lciA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgICAgICBpdGVtLmNvbnRhaW5lci5jbGFzc05h
bWUgPSAiaXRlbSAiICsgbmFtZTsKKworICAgICAgICBpdGVtLmNvbnRhaW5lci5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CisKKyAgICAgICAgaXRlbS5vdXRsZXQg
PSBpdGVtLmNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KSk7CisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0ZW0sICJ0ZXh0IiwgeworICAg
ICAgICAgICAgc2V0OiBmdW5jdGlvbihuZXdUZXh0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG5ld1RleHQgPSBuZXdUZXh0LnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgaWYg
KG5ld1RleHQgPT09IGl0ZW0ub3V0bGV0LnRleHRDb250ZW50KQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgaXRlbS5vdXRsZXQudGV4dENvbnRlbnQgPSBuZXdU
ZXh0OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICBpdGVtLmNvbnRhaW5l
ci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChldmVudCkgPT4geworICAgICAgICAgICAgdGhp
cy5faXRlbVdhc0NsaWNrZWQobmFtZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIF9pdGVt
V2FzQ2xpY2tlZChuYW1lKQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1tu
YW1lXTsKKyAgICAgICAgaWYgKCFpdGVtLmNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoV0ku
RGVmYXVsdERhc2hib2FyZFZpZXcuRW5hYmxlZEl0ZW1TdHlsZUNsYXNzTmFtZSkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGl0ZW0uaGFuZGxlcikKKyAgICAgICAgICAgIGl0
ZW0uaGFuZGxlci5jYWxsKHRoaXMpOworICAgIH0KKworICAgIF9yZXNvdXJjZXNJdGVtV2FzQ2xp
Y2tlZCgpCisgICAgeworICAgICAgICBXSS5zaG93U291cmNlc1RhYih7aW5pdGlhdG9ySGludDog
V0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkRhc2hib2FyZH0pOworICAgIH0K
KworICAgIF9uZXR3b3JrSXRlbVdhc0NsaWNrZWQoKQorICAgIHsKKyAgICAgICAgV0kuc2hvd05l
dHdvcmtUYWIoe2luaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRp
YXRvci5EYXNoYm9hcmR9KTsKKyAgICB9CisKKyAgICBfdGltZWxpbmVJdGVtV2FzQ2xpY2tlZCgp
CisgICAgeworICAgICAgICBXSS5zaG93VGltZWxpbmVUYWIoe2luaXRpYXRvckhpbnQ6IFdJLlRh
YkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5EYXNoYm9hcmR9KTsKKyAgICB9CisKKyAg
ICBfY29uc29sZUl0ZW1XYXNDbGlja2VkKHNjb3BlKQorICAgIHsKKyAgICAgICAgV0kuc2hvd0Nv
bnNvbGVUYWIoc2NvcGUsIHsKKyAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dz
ZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5EYXNoYm9hcmQsCisgICAgICAgIH0pOworICAgIH0K
KworICAgIF9zZXRDb25zb2xlSXRlbVZhbHVlKGl0ZW1OYW1lLCBuZXdWYWx1ZSkKKyAgICB7Cisg
ICAgICAgIHZhciBpVmFyTmFtZSA9ICJfIiArIGl0ZW1OYW1lOworICAgICAgICB2YXIgcHJldmlv
dXNWYWx1ZSA9IHRoaXNbaVZhck5hbWVdOworICAgICAgICB0aGlzW2lWYXJOYW1lXSA9IG5ld1Zh
bHVlOworCisgICAgICAgIHZhciBpdGVtID0gdGhpcy5faXRlbXNbaXRlbU5hbWVdOworICAgICAg
ICBpdGVtLnRleHQgPSBOdW1iZXIuYWJicmV2aWF0ZShuZXdWYWx1ZSk7CisgICAgICAgIHRoaXMu
X3NldEl0ZW1FbmFibGVkKGl0ZW0sIG5ld1ZhbHVlID4gMCk7CisKKyAgICAgICAgaWYgKG5ld1Zh
bHVlIDw9IHByZXZpb3VzVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFy
IGNvbnRhaW5lciA9IGl0ZW0uY29udGFpbmVyOworCisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlv
bkVuZGVkKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09
PSBjb250YWluZXIpIHsKKyAgICAgICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92
ZSgicHVsc2luZyIpOworICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3Rl
bmVyKCJhbmltYXRpb25lbmQiLCBhbmltYXRpb25FbmRlZCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvLyBXZSBuZWVkIHRvIGZvcmNlIGEgc3R5bGUgaW52YWxpZGF0aW9u
IGluIHRoZSBjYXNlIHdoZXJlIHdlIGFscmVhZHkKKyAgICAgICAgLy8gd2VyZSBhbmltYXRpbmcg
dGhpcyBpdGVtIGFmdGVyIHdlJ3ZlIHJlbW92ZWQgdGhlIHB1bHNpbmcgQ1NTIGNsYXNzLgorICAg
ICAgICBpZiAoY29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygicHVsc2luZyIpKSB7CisgICAg
ICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgicHVsc2luZyIpOworICAgICAgICAg
ICAgY29udGFpbmVyLnJlY2FsY3VsYXRlU3R5bGVzKCk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsIGFuaW1hdGlv
bkVuZGVkKTsKKworICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgicHVsc2luZyIpOwor
ICAgIH0KKworICAgIF9zZXRJdGVtRW5hYmxlZChpdGVtLCBlbmFibGVkKQorICAgIHsKKyAgICAg
ICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgICAgIGl0ZW0uY29udGFpbmVyLnRpdGxlID0gaXRl
bS50b29sdGlwOworICAgICAgICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmFkZChXSS5E
ZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGl0ZW0uY29udGFpbmVyLnRpdGxlID0gIiI7CisgICAgICAg
ICAgICBpdGVtLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFdJLkRlZmF1bHREYXNoYm9hcmRW
aWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFzc05hbWUpOworICAgICAgICB9CisgICAgfQorfTsKKwor
V0kuRGVmYXVsdERhc2hib2FyZFZpZXcuRW5hYmxlZEl0ZW1TdHlsZUNsYXNzTmFtZSA9ICJlbmFi
bGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRlbS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9EaXZpZGVyTmF2aWdhdGlvbkl0ZW0uY3NzCmluZGV4IDBjNzc2Njgw
NmVjMTJlYjVkODAzYjFiMDBmM2I4NjEwMGYwNTk4NGYuLjIzNzkyZDI4OTNiODNhNWExZDgzYmFk
Zjg5MWY0MDI2NTJiM2Q2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRlbS5jc3MKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmNz
cwpAQCAtMjUsOCArMjUsMTEgQEAKIAogLm5hdmlnYXRpb24tYmFyIC5pdGVtLmRpdmlkZXIgewog
ICAgIHdpZHRoOiAxcHg7Ci0gICAgaGVpZ2h0OiAxNnB4OwotICAgIGJhY2tncm91bmQtY29sb3I6
IGhzbCgwLCAwJSwgNzQlKTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgYmFja2dyb3VuZC1pbWFn
ZTogbGluZWFyLWdyYWRpZW50KGhzbCgwLCAwJSwgNzQlKSwgaHNsKDAsIDAlLCA3NCUpKTsKKyAg
ICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTZweDsKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8t
cmVwZWF0OworICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKIH0KIAogQG1lZGlhICgt
d2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHsKQEAgLTM3LDYgKzQwLDcgQEAKIAog
QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgIC5uYXZpZ2F0aW9uLWJh
ciAuaXRlbS5kaXZpZGVyIHsKLSAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCA0
MCUpOworICAgICAgICAtLWRpdmlkZXItYmFja2dyb3VuZDogaHNsKDAsIDAlLCA0MCUpOworICAg
ICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tZGl2aWRlci1iYWNr
Z3JvdW5kKSwgdmFyKC0tZGl2aWRlci1iYWNrZ3JvdW5kKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNUYWJD
b250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0VsZW1lbnRzVGFiQ29udGVudFZpZXcuanMKaW5kZXggZmYyMWNmMDI1ZjJlNTQxMmYwOWRiZTdk
ZjVkNjUyNGFhODdmODVjNC4uNjI3Mjk3ZmM3N2RhNzJmOGJjNmNiZmQ1M2FkNWQwMzM1MWU5MDg3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RWxlbWVudHNUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNSwxOCArMjUs
MTUgQEAKIAogV0kuRWxlbWVudHNUYWJDb250ZW50VmlldyA9IGNsYXNzIEVsZW1lbnRzVGFiQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3CiB7Ci0gICAg
Y29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCiAgICAgewotICAgICAg
ICBsZXQgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyA9IFsKLSAgICAgICAgICAgIFdJ
LlJ1bGVzU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAgV0kuQ29tcHV0ZWRT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBXSS5DaGFuZ2VzRGV0YWlsc1Np
ZGViYXJQYW5lbCwKLSAgICAgICAgICAgIFdJLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLAot
ICAgICAgICBdOworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVt
LmZyb21UYWJJbmZvKFdJLkVsZW1lbnRzVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKworICAg
ICAgICBsZXQgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyA9IFtXSS5SdWxlc1N0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbCwgV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNTaWRlYmFyUGFuZWws
IFdJLkNoYW5nZXNEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5ET01Ob2RlRGV0YWlsc1NpZGViYXJQ
YW5lbF07CiAgICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLmhhc0RvbWFpbigiTGF5ZXJUcmVl
IikpCiAgICAgICAgICAgICBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLnB1c2goV0ku
TGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCk7CiAKLSAgICAgICAgc3VwZXIoRWxlbWVudHNU
YWJDb250ZW50Vmlldy50YWJJbmZvKCksIHtkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3Jz
LCBkaXNhYmxlQmFja0ZvcndhcmQ6IHRydWV9KTsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8
fCAiZWxlbWVudHMiLCAiZWxlbWVudHMiLCB0YWJCYXJJdGVtLCBudWxsLCBkZXRhaWxzU2lkZWJh
clBhbmVsQ29uc3RydWN0b3JzLCB0cnVlKTsKIAogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5n
ZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgV0kuRnJhbWUuYWRk
RXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMu
X21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CkBAIC00NSw3ICs0Miw2IEBAIFdJLkVsZW1l
bnRzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBFbGVtZW50c1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudEJyb3dzCiAgICAgc3RhdGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgIGlkZW50aWZpZXI6IEVsZW1lbnRzVGFiQ29udGVudFZpZXcuVHlw
ZSwKICAgICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL0VsZW1lbnRzLnN2ZyIsCiAgICAgICAgICAg
ICB0aXRsZTogV0kuVUlTdHJpbmcoIkVsZW1lbnRzIiksCiAgICAgICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNl
TmF2aWdhdGlvbkl0ZW0uY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLmNzcwppbmRleCA1ZmE5MjJlMDEwNTIx
OGRmYzU4ZTZlNmVmODU3Y2I3ZWM4MmY0YjE3Li4wMzQ0MDVlNWY0MmM3MzRjMjc2M2I0ZWZkYzcz
YzI5MTcyYjcyNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0uY3NzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9u
SXRlbS5jc3MKQEAgLTIzLDE0ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLS5uYXZpZ2F0aW9uLWJhciAuaXRlbS5mbGV4aWJsZS1zcGFjZSB7Cis6
bWF0Y2hlcygubmF2aWdhdGlvbi1iYXIsIC50b29sYmFyKSAuaXRlbS5mbGV4aWJsZS1zcGFjZSB7
CiAgICAgZmxleDogMTsKIH0KIAotLm5hdmlnYXRpb24tYmFyIC5pdGVtLmZsZXhpYmxlLXNwYWNl
LmFsaWduLXN0YXJ0ID4gLml0ZW0geworOm1hdGNoZXMoLm5hdmlnYXRpb24tYmFyLCAudG9vbGJh
cikgLml0ZW0uZmxleGlibGUtc3BhY2UuYWxpZ24tc3RhcnQgPiAuaXRlbSB7CiAgICAgLXdlYmtp
dC1tYXJnaW4tZW5kOiBhdXRvOwogfQogCi0ubmF2aWdhdGlvbi1iYXIgLml0ZW0uZmxleGlibGUt
c3BhY2UuYWxpZ24tZW5kID4gLml0ZW0geworOm1hdGNoZXMoLm5hdmlnYXRpb24tYmFyLCAudG9v
bGJhcikgLml0ZW0uZmxleGlibGUtc3BhY2UuYWxpZ24tZW5kID4gLml0ZW0gewogICAgIC13ZWJr
aXQtbWFyZ2luLXN0YXJ0OiBhdXRvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRhYkJhckl0ZW0uanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVGFiQmFySXRlbS5qcwppbmRl
eCA3N2Y1YzRmMTg1OTU5ZjM2Y2M2OWFiZmJjNDY4OTliMjdjNWIzYzJkLi42ZDNhYzA3ODYwNDY4
OTEyMTFkZDljN2IxODYyNGY3OGYzZjdkNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVGFiQmFySXRlbS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVGFiQmFySXRlbS5q
cwpAQCAtMjYsMTEgKzI2LDEyIEBACiAKIFdJLkdlbmVyYWxUYWJCYXJJdGVtID0gY2xhc3MgR2Vu
ZXJhbFRhYkJhckl0ZW0gZXh0ZW5kcyBXSS5UYWJCYXJJdGVtCiB7Ci0gICAgY29uc3RydWN0b3Io
cmVwcmVzZW50ZWRPYmplY3QsIGltYWdlLCB0aXRsZSwge2lzRXBoZW1lcmFsfSA9IHt9KQorICAg
IGNvbnN0cnVjdG9yKGltYWdlLCB0aXRsZSwgaXNFcGhlbWVyYWwgPSBmYWxzZSkKICAgICB7Ci0g
ICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0LCBpbWFnZSwgdGl0bGUpOworICAgICAgICBz
dXBlcihpbWFnZSwgdGl0bGUpOwogCiAgICAgICAgIHRoaXMuX2lzRXBoZW1lcmFsID0gaXNFcGhl
bWVyYWw7CisKICAgICAgICAgaWYgKHRoaXMuX2lzRXBoZW1lcmFsKSB7CiAgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXBoZW1lcmFsIik7CiAKQEAgLTQzLDE2ICs0NCw5
IEBAIFdJLkdlbmVyYWxUYWJCYXJJdGVtID0gY2xhc3MgR2VuZXJhbFRhYkJhckl0ZW0gZXh0ZW5k
cyBXSS5UYWJCYXJJdGVtCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBTdGF0aWMKLQotICAg
IHN0YXRpYyBmcm9tVGFiQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcpCisgICAgc3RhdGljIGZy
b21UYWJJbmZvKHtpbWFnZSwgdGl0bGUsIGlzRXBoZW1lcmFsfSkKICAgICB7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRhYkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0kuVGFiQ29udGVudFZpZXcp
OwotCi0gICAgICAgIGxldCB7aW1hZ2UsIHRpdGxlfSA9IHRhYkNvbnRlbnRWaWV3LmNvbnN0cnVj
dG9yLnRhYkluZm8oKTsKLSAgICAgICAgcmV0dXJuIG5ldyBXSS5HZW5lcmFsVGFiQmFySXRlbSh0
YWJDb250ZW50VmlldywgaW1hZ2UsIHRpdGxlLCB7Ci0gICAgICAgICAgICBpc0VwaGVtZXJhbDog
IXRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnNob3VsZFNhdmVUYWIoKSwKLSAgICAgICAgfSk7
CisgICAgICAgIHJldHVybiBuZXcgV0kuR2VuZXJhbFRhYkJhckl0ZW0oaW1hZ2UsIHRpdGxlLCBp
c0VwaGVtZXJhbCk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFwaGljc1RhYkNvbnRlbnRWaWV3
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhcGhpY3NU
YWJDb250ZW50Vmlldy5qcwppbmRleCBjYzAyOWUzOGUwM2ZhYjA2MTljMWY2MDVjNGI1ODViMTE1
NWFlZTc4Li4yZTZkODU3MjI2Nzk4MzBlNGE2NTc3MTk3ZDlhOTI4NTM4MjcwM2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFwaGljc1Rh
YkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0dyYXBoaWNzVGFiQ29udGVudFZpZXcuanMKQEAgLTI3LDE2ICsyNywxNyBAQCBXSS5H
cmFwaGljc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgR3JhcGhpY3NUYWJDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRCcm93cwogewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7Ci0gICAgICAg
IHN1cGVyKEdyYXBoaWNzVGFiQ29udGVudFZpZXcudGFiSW5mbygpLCB7Ci0gICAgICAgICAgICBu
YXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3I6IFdJLkNhbnZhc1NpZGViYXJQYW5lbCwK
LSAgICAgICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnM6IFsKLSAgICAgICAg
ICAgICAgICBXSS5SZWNvcmRpbmdTdGF0ZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAg
ICAgICAgV0kuUmVjb3JkaW5nVHJhY2VEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgICAgICAgICAg
ICAgIFdJLkNhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICAgICAgV0kuQW5p
bWF0aW9uRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBk
aXNhYmxlQmFja0ZvcndhcmQ6IHRydWUsCi0gICAgICAgIH0pOworICAgICAgICBsZXQgdGFiQmFy
SXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLkdyYXBoaWNzVGFiQ29u
dGVudFZpZXcudGFiSW5mbygpKTsKKworICAgICAgICBjb25zdCBuYXZpZ2F0aW9uU2lkZWJhclBh
bmVsQ29uc3RydWN0b3IgPSBXSS5DYW52YXNTaWRlYmFyUGFuZWw7CisgICAgICAgIGNvbnN0IGRl
dGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBbCisgICAgICAgICAgICBXSS5SZWNvcmRp
bmdTdGF0ZURldGFpbHNTaWRlYmFyUGFuZWwsCisgICAgICAgICAgICBXSS5SZWNvcmRpbmdUcmFj
ZURldGFpbHNTaWRlYmFyUGFuZWwsCisgICAgICAgICAgICBXSS5DYW52YXNEZXRhaWxzU2lkZWJh
clBhbmVsLAorICAgICAgICAgICAgV0kuQW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQYW5lbCwKKyAg
ICAgICAgXTsKKyAgICAgICAgY29uc3QgZGlzYWJsZUJhY2tGb3J3YXJkID0gdHJ1ZTsKKyAgICAg
ICAgc3VwZXIoImdyYXBoaWNzIiwgWyJncmFwaGljcyJdLCB0YWJCYXJJdGVtLCBuYXZpZ2F0aW9u
U2lkZWJhclBhbmVsQ29uc3RydWN0b3IsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMs
IGRpc2FibGVCYWNrRm9yd2FyZCk7CiAKICAgICAgICAgdGhpcy5fY2FudmFzZXNUcmVlT3V0bGlu
ZSA9IG5ldyBXSS5UcmVlT3V0bGluZTsKICAgICAgICAgdGhpcy5fY2FudmFzZXNUcmVlT3V0bGlu
ZS5hbGxvd3NSZXBlYXRTZWxlY3Rpb24gPSB0cnVlOwpAQCAtNjQsNyArNjUsNiBAQCBXSS5HcmFw
aGljc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgR3JhcGhpY3NUYWJDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRCcm93cwogICAgIHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB7Ci0gICAgICAgICAgICBpZGVudGlmaWVyOiBHcmFwaGljc1RhYkNvbnRlbnRWaWV3LlR5
cGUsCiAgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9HcmFwaGljcy5zdmciLAogICAgICAgICAg
ICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJHcmFwaGljcyIpLAogICAgICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JvdXBOYXZpZ2F0
aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dy
b3VwTmF2aWdhdGlvbkl0ZW0uanMKaW5kZXggNWM2MDRkOWZmMWQ4M2U5MjExMjFiOWY5OGE5YjA5
MjNmMzE5MDk0YS4uZWJiODhkODYxZTJlNGM1NWU3ZGZiNTFmMTAzNTljMWY2YTU3MWExMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JvdXBO
YXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Hcm91cE5hdmlnYXRpb25JdGVtLmpzCkBAIC01MSwxNiArNTEsNiBAQCBXSS5Hcm91
cE5hdmlnYXRpb25JdGVtID0gY2xhc3MgR3JvdXBOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdJLk5h
dmlnYXRpb25JdGVtCiAgICAgICAgIHRoaXMuX25lZWRzVXBkYXRlID0gdHJ1ZTsKICAgICB9CiAK
LSAgICBnZXQgaGlkZGVuKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdXBlci5oaWRkZW4gfHwg
dGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmV2ZXJ5KChpdGVtKSA9PiBpdGVtLmhpZGRlbik7Ci0gICAg
fQotCi0gICAgc2V0IGhpZGRlbihmbGFnKQotICAgIHsKLSAgICAgICAgc3VwZXIuaGlkZGVuID0g
ZmxhZzsKLSAgICB9Ci0KICAgICBnZXQgd2lkdGgoKQogICAgIHsKICAgICAgICAgdGhpcy5fdXBk
YXRlSXRlbXMoKTsKQEAgLTc3LDExICs2Nyw2IEBAIFdJLkdyb3VwTmF2aWdhdGlvbkl0ZW0gPSBj
bGFzcyBHcm91cE5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV0kuTmF2aWdhdGlvbkl0ZW0KIAogICAg
IC8vIFByb3RlY3RlZAogCi0gICAgZ2V0IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBbImdyb3VwIl07Ci0gICAgfQotCiAgICAgdXBkYXRlKG9wdGlvbnMgPSB7
fSkKICAgICB7CiAgICAgICAgIHN1cGVyLnVwZGF0ZShvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJz
VGFiQ29udGVudFZpZXcuanMKaW5kZXggMmJjMGM5YjQzNTBjYzcxYjM0Yzg3MDMzMGI4ZGQ2MjI2
NDkzMDM3MS4uMmVhZmY1ZDk1MDU3YTQ4OGUwYjllMDhkNjQ0N2ZmN2VlMjE4YjFiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzVGFi
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTGF5ZXJzVGFiQ29udGVudFZpZXcuanMKQEAgLTI3LDkgKzI3LDEyIEBAIFdJLkxheWVy
c1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
b250ZW50QnJvd3NlclRhCiB7CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgc3Vw
ZXIoTGF5ZXJzVGFiQ29udGVudFZpZXcudGFiSW5mbygpLCB7Ci0gICAgICAgICAgICBkZXRhaWxz
U2lkZWJhclBhbmVsQ29uc3RydWN0b3JzOiBbV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsXSwK
LSAgICAgICAgfSk7CisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0
ZW0uZnJvbVRhYkluZm8oV0kuTGF5ZXJzVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKworICAg
ICAgICBjb25zdCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IgPSBudWxsOworICAg
ICAgICBjb25zdCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzID0gW1dJLkxheWVyRGV0
YWlsc1NpZGViYXJQYW5lbF07CisgICAgICAgIGNvbnN0IGRpc2FibGVCYWNrRm9yd2FyZCA9IHRy
dWU7CisgICAgICAgIHN1cGVyKCJsYXllcnMiLCAibGF5ZXJzIiwgdGFiQmFySXRlbSwgbmF2aWdh
dGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0
b3JzLCBkaXNhYmxlQmFja0ZvcndhcmQpOwogCiAgICAgICAgIHRoaXMuX2xheWVyRGV0YWlsc1Np
ZGViYXJQYW5lbCA9IHRoaXMuZGV0YWlsc1NpZGViYXJQYW5lbHNbMF07CiAgICAgICAgIHRoaXMu
X2xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5hZGRFdmVudExpc3RlbmVyKFdJLkxheWVyRGV0YWls
c1NpZGViYXJQYW5lbC5FdmVudC5TZWxlY3RlZExheWVyQ2hhbmdlZCwgdGhpcy5fZGV0YWlsc1Np
ZGViYXJTZWxlY3RlZExheWVyQ2hhbmdlZCwgdGhpcyk7CkBAIC00Myw3ICs0Niw2IEBAIFdJLkxh
eWVyc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50QnJvd3NlclRhCiAgICAgc3RhdGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50aWZpZXI6IExheWVyc1RhYkNvbnRlbnRWaWV3LlR5
cGUsCiAgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9MYXllcnMuc3ZnIiwKICAgICAgICAgICAg
IHRpdGxlOiBXSS5VSVN0cmluZygiTGF5ZXJzIiksCiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lUYWJCYXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lUYWJCYXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGQxYmJkZDlkMjJmZDgwMjRiMmZmMjg5ZjAzMzU5Y2YwZjI4Yjg5YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0xlZ2FjeVRhYkJhci5qcwpAQCAtMCwwICsxLDg3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkxl
Z2FjeVRhYkJhciA9IGNsYXNzIExlZ2FjeVRhYkJhciBleHRlbmRzIFdJLlZpZXcKK3sKKyAgICBj
b25zdHJ1Y3RvcihlbGVtZW50LCB0YWJCYXJJdGVtcykKKyAgICB7CisgICAgICAgIHN1cGVyKGVs
ZW1lbnQpOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItYmFyIik7
CisgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFibGlzdCIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5f
aGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVDbGljay5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9oYW5k
bGVNb3VzZUxlYXZlLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudS5iaW5kKHRoaXMp
KTsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJ0b3AtYm9yZGVy
Iik7CisKKyAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMgPSBbXTsKKyAgICAgICAgdGhpcy5faGlk
ZGVuVGFiQmFySXRlbXMgPSBbXTsKKworICAgICAgICBpZiAodGFiQmFySXRlbXMpIHsKKyAgICAg
ICAgICAgIGZvciAobGV0IHRhYkJhckl0ZW0gaW4gdGFiQmFySXRlbXMpCisgICAgICAgICAgICAg
ICAgdGhpcy5hZGRUYWJCYXJJdGVtKHRhYkJhckl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5hZGRUYWJCYXJJdGVtKFdJLnNldHRpbmdzVGFiQ29udGVudFZpZXcudGFiQmFySXRlbSwg
e3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOworCisgICAgICAgIHRoaXMuX25ld1RhYlRhYkJh
ckl0ZW0gPSBuZXcgV0kuUGlubmVkVGFiQmFySXRlbSgiSW1hZ2VzL05ld1RhYlBsdXMuc3ZnIiwg
V0kuVUlTdHJpbmcoIkNyZWF0ZSBhIG5ldyB0YWIiKSk7CisgICAgICAgIHRoaXMuX25ld1RhYlRh
YkJhckl0ZW0uZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIiwgdGhpcy5faGFu
ZGxlTmV3VGFiTW91c2VFbnRlci5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fbmV3VGFiVGFi
QmFySXRlbS5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlTmV3
VGFiQ2xpY2suYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuYWRkVGFiQmFySXRlbSh0aGlzLl9u
ZXdUYWJUYWJCYXJJdGVtLCB7c3VwcHJlc3NBbmltYXRpb25zOiB0cnVlfSk7CisKKyAgICAgICAg
dGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSA9IG5ldyBXSS5QaW5uZWRUYWJCYXJJdGVtKCJJbWFn
ZXMvVGFiUGlja2VyLnN2ZyIsIFdJLlVJU3RyaW5nKCJTaG93IGhpZGRlbiB0YWJzIikpOworICAg
ICAgICB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFi
LXBpY2tlciIpOworICAgICAgICB0aGlzLmFkZFRhYkJhckl0ZW0odGhpcy5fdGFiUGlja2VyVGFi
QmFySXRlbSwge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOworICAgIH0KKworICAgIC8vIFB1
YmxpYworCisgICAgZ2V0IG5ld1RhYlRhYkJhckl0ZW0oKSB7IHJldHVybiB0aGlzLl9uZXdUYWJU
YWJCYXJJdGVtOyB9CisKKyAgICB1cGRhdGVOZXdUYWJUYWJCYXJJdGVtU3RhdGUoKQorICAgIHsK
KyAgICAgICAgbGV0IG5ld1RhYkV4aXN0cyA9ICFXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZChX
SS5OZXdUYWJDb250ZW50Vmlldy5UeXBlKTsKKyAgICAgICAgdGhpcy5fbmV3VGFiVGFiQmFySXRl
bS5kaXNhYmxlZCA9IG5ld1RhYkV4aXN0czsKKyAgICB9CisKKyAgICBhZGRUYWJCYXJJdGVtKHRh
YkJhckl0ZW0sIG9wdGlvbnMgPSB7fSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmluc2Vy
dFRhYkJhckl0ZW0odGFiQmFySXRlbSwgdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoLCBvcHRpb25z
KTsKKyAgICB9CisKKyAgICBpbnNlcnRUYWJCYXJJdGVtKHRhYkJhckl0ZW0sIGluZGV4LCBvcHRp
b25zID0ge30pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJCYXJJdGVtIGluc3Rh
bmNlb2YgV0kuVGFiQmFySXRlbSk7CisgICAgICAgIGlmICghKHRhYkJhckl0ZW0gaW5zdGFuY2Vv
ZiBXSS5UYWJCYXJJdGVtKSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGlm
ICh0YWJCYXJJdGVtLnBhcmVudFRhYkJhciA9PT0gdGhpcykKKyAgICAgICAgICAgIHJldHVybiBu
dWxsOworCisgICAgICAgIGlmICh0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRl
cikgeworICAgICAgICAgICAgLy8gRGVsYXkgYWRkaW5nIHRoZSBuZXcgdGFiIHVudGlsIHdlIGNh
biBleHBhbmQgdGhlIHRhYnMgYWZ0ZXIgYSBjbG9zZWQgdGFiLgorICAgICAgICAgICAgdGhpcy5f
ZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICB0aGlzLmluc2VydFRhYkJhckl0ZW0odGFiQmFySXRlbSwgaW5kZXgsIG9wdGlvbnMpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh0YWJCYXJJdGVtLnBhcmVudFRhYkJhcikKKyAgICAgICAgICAgIHRhYkJhckl0
ZW0ucGFyZW50VGFiQmFyLnJlbW92ZVRhYkJhckl0ZW0odGFiQmFySXRlbSk7CisKKyAgICAgICAg
dGFiQmFySXRlbS5wYXJlbnRUYWJCYXIgPSB0aGlzOworCisgICAgICAgIGluZGV4ID0gTnVtYmVy
LmNvbnN0cmFpbihpbmRleCwgMCwgdGhpcy5ub3JtYWxUYWJDb3VudCk7CisKKyAgICAgICAgaWYg
KHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CisgICAgICAg
ICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykpOworICAg
ICAgICAgICAgb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMgPSB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zOworICAgICAgICBpZiAoIW9w
dGlvbnMuc3VwcHJlc3NBbmltYXRpb25zKQorICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNBbmRQ
b3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKwor
ICAgICAgICB0aGlzLl90YWJCYXJJdGVtcy5zcGxpY2UoaW5kZXgsIDAsIHRhYkJhckl0ZW0pOwor
CisgICAgICAgIHZhciBuZXh0U2libGluZyA9IHRoaXMuX3RhYkJhckl0ZW1zW2luZGV4ICsgMV07
CisgICAgICAgIGxldCBuZXh0U2libGluZ0VsZW1lbnQgPSBuZXh0U2libGluZyA/IG5leHRTaWJs
aW5nLmVsZW1lbnQgOiB0aGlzLl90YWJCYXJJdGVtcy5sYXN0VmFsdWUuZWxlbWVudDsKKworICAg
ICAgICBpZiAodGhpcy5lbGVtZW50LmNvbnRhaW5zKG5leHRTaWJsaW5nRWxlbWVudCkpCisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxlbWVudCwgbmV4
dFNpYmxpbmdFbGVtZW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHRhYkJhckl0ZW0uZWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3Jt
YWxUYWIoKSk7CisKKyAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxs
OworICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSBudWxsOworCisgICAg
ICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImluc2VydGluZy10YWIiKTsKKworICAgICAgICAgICAgdGhpcy5f
YXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9u
cyk7CisKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRU
cmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJpbnNlcnRpbmctdGFiIik7CisKKyAgICAgICAg
ICAgIHRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJiZWluZy1pbnNlcnRlZCIp
OworCisgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygp
OworCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0
VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMpIHsKKyAgICAgICAgICAgIHZhciBh
ZnRlclRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5k
UG9zaXRpb25zKCk7CisKKyAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CisKKyAgICAg
ICAgICAgIGxldCB0YWJCYXJJdGVtcyA9IHRoaXMuX3RhYkJhckl0ZW1zRnJvbUxlZnRUb1JpZ2h0
KCk7CisgICAgICAgICAgICBsZXQgcHJldmlvdXNUYWJCYXJJdGVtID0gdGFiQmFySXRlbXNbdGFi
QmFySXRlbXMuaW5kZXhPZih0YWJCYXJJdGVtKSAtIDFdIHx8IG51bGw7CisgICAgICAgICAgICBs
ZXQgcHJldmlvdXNUYWJCYXJJdGVtU2l6ZUFuZFBvc2l0aW9uID0gcHJldmlvdXNUYWJCYXJJdGVt
ID8gYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMuZ2V0KHByZXZpb3VzVGFiQmFySXRlbSkgOiBu
dWxsOworCisgICAgICAgICAgICBpZiAocHJldmlvdXNUYWJCYXJJdGVtU2l6ZUFuZFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJCYXJJ
dGVtLCB7bGVmdDogcHJldmlvdXNUYWJCYXJJdGVtU2l6ZUFuZFBvc2l0aW9uLmxlZnQgKyBwcmV2
aW91c1RhYkJhckl0ZW1TaXplQW5kUG9zaXRpb24ud2lkdGgsIHdpZHRoOiAwfSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMuc2V0
KHRhYkJhckl0ZW0sIHtsZWZ0OiAwLCB3aWR0aDogMH0pOworCisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGFiQmFy
SXRlbS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImJlaW5nLWluc2VydGVkIik7CisKKyAgICAgICAg
ICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVz
QW5kUG9zaXRpb25zKTsKKworICAgICAgICAgICAgdmFyIHJlbW92ZVN0eWxlc0xpc3RlbmVyID0g
cmVtb3ZlU3R5bGVzLmJpbmQodGhpcyk7CisKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25G
cmFtZShhbmltYXRlVGFicy5iaW5kKHRoaXMpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICB0aGlzLm5lZWRzTGF5b3V0KCk7CisKKyAgICAgICAgaWYgKCEodGFiQmFySXRlbSBpbnN0YW5j
ZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pKQorICAgICAgICAgICAgdGhpcy51cGRhdGVOZXdUYWJU
YWJCYXJJdGVtU3RhdGUoKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5UYWJCYXIuRXZlbnQuVGFiQmFySXRlbUFkZGVkLCB7dGFiQmFySXRlbX0pOworCisgICAg
ICAgIHJldHVybiB0YWJCYXJJdGVtOworICAgIH0KKworICAgIHJlbW92ZVRhYkJhckl0ZW0odGFi
QmFySXRlbU9ySW5kZXgsIG9wdGlvbnMgPSB7fSkKKyAgICB7CisgICAgICAgIGxldCB0YWJCYXJJ
dGVtID0gdGhpcy5fZmluZFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5kZXgpOworICAgICAgICBp
ZiAoIXRhYkJhckl0ZW0gfHwgdGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0
ZW0pCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICB0YWJCYXJJdGVtLnBhcmVu
dFRhYkJhciA9IG51bGw7CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSA9
PT0gdGFiQmFySXRlbSkgeworICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fdGFiQmFySXRl
bXMuaW5kZXhPZih0YWJCYXJJdGVtKTsKKyAgICAgICAgICAgIHZhciBuZXh0VGFiQmFySXRlbSA9
IHRoaXMuX3RhYkJhckl0ZW1zW2luZGV4ICsgMV07CisgICAgICAgICAgICBpZiAoIW5leHRUYWJC
YXJJdGVtIHx8IG5leHRUYWJCYXJJdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkK
KyAgICAgICAgICAgICAgICBuZXh0VGFiQmFySXRlbSA9IHRoaXMuX3RhYkJhckl0ZW1zW2luZGV4
IC0gMV07CisKKyAgICAgICAgICAgIGxldCBpbml0aWF0b3JIaW50ID0gb3B0aW9ucy5pbml0aWF0
b3JIaW50IHx8IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5Vbmtub3duOwor
ICAgICAgICAgICAgdGhpcy5zZWxlY3RUYWJCYXJJdGVtKG5leHRUYWJCYXJJdGVtLCB7aW5pdGlh
dG9ySGludH0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykpOworICAgICAgICAgICAgb3B0aW9ucy5zdXBw
cmVzc0FuaW1hdGlvbnMgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGJlZm9yZVRh
YlNpemVzQW5kUG9zaXRpb25zOworICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NBbmltYXRp
b25zKQorICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNv
cmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKKworICAgICAgICAvLyBTdWJ0cmFjdCAx
IGZyb20gbm9ybWFsVGFiQ291bnQgc2luY2UgYXJyYXlzIGJlZ2luIGluZGV4aW5nIGF0IDAuCisg
ICAgICAgIGxldCB3YXNMYXN0Tm9ybWFsVGFiID0gdGhpcy5fdGFiQmFySXRlbXMuaW5kZXhPZih0
YWJCYXJJdGVtKSA9PT0gdGhpcy5ub3JtYWxUYWJDb3VudCAtIDE7CisKKyAgICAgICAgdGhpcy5f
dGFiQmFySXRlbXMucmVtb3ZlKHRhYkJhckl0ZW0pOworICAgICAgICB0YWJCYXJJdGVtLmVsZW1l
bnQucmVtb3ZlKCk7CisKKyAgICAgICAgdmFyIGhhc01vcmVUaGFuT25lTm9ybWFsVGFiID0gdGhp
cy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOworCisg
ICAgICAgIGNvbnN0IHNob3VsZE9wZW5EZWZhdWx0VGFiID0gIXRhYkJhckl0ZW0uaXNEZWZhdWx0
VGFiICYmICF0aGlzLm5vcm1hbFRhYkNvdW50OworICAgICAgICBpZiAoc2hvdWxkT3BlbkRlZmF1
bHRUYWIpCisgICAgICAgICAgICBvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucyA9IHRydWU7CisK
KyAgICAgICAgaWYgKCFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYiB8fCB3YXNMYXN0Tm9ybWFsVGFi
IHx8ICFvcHRpb25zLnN1cHByZXNzRXhwYW5zaW9uKSB7CisgICAgICAgICAgICBpZiAoIW9wdGlv
bnMuc3VwcHJlc3NBbmltYXRpb25zKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fdGFiQW5pbWF0
ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMuX2Zp
bmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsK
KworICAgICAgICAgICAgdGhpcy51cGRhdGVOZXdUYWJUYWJCYXJJdGVtU3RhdGUoKTsKKworICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFyLkV2ZW50LlRh
YkJhckl0ZW1SZW1vdmVkLCB7dGFiQmFySXRlbX0pOworCisgICAgICAgICAgICBpZiAoc2hvdWxk
T3BlbkRlZmF1bHRUYWIpCisgICAgICAgICAgICAgICAgdGhpcy5fb3BlbkRlZmF1bHRUYWIoKTsK
KworICAgICAgICAgICAgcmV0dXJuIHRhYkJhckl0ZW07CisgICAgICAgIH0KKworICAgICAgICB2
YXIgbGFzdE5vcm1hbFRhYkJhckl0ZW07CisKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMo
KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5p
bWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2xvc2lu
Zy10YWIiKTsKKworICAgICAgICAgICAgLy8gRm9yIFJUTCwgd2UgbmVlZCB0byBwbGFjZSBleHRy
YSBzcGFjZSBiZXR3ZWVuIHBpbm5lZCB0YWIgYW5kIGZpcnN0IG5vcm1hbCB0YWIuCisgICAgICAg
ICAgICAvLyBGcm9tIGxlZnQgdG8gcmlnaHQgdGhlcmUgaXMgcGlubmVkIHRhYnMsIGV4dHJhIHNw
YWNlLCB0aGVuIG5vcm1hbCB0YWJzLiBDb21wdXRlCisgICAgICAgICAgICAvLyBob3cgbXVjaCBl
eHRyYSBzcGFjZSB3ZSBuZWVkIHRvIGFkZGl0aW9uYWxseSBhZGQgZm9yIG5vcm1hbCB0YWIgaXRl
bXMuCisgICAgICAgICAgICBsZXQgZXh0cmFTcGFjZUJldHdlZW5Ob3JtYWxBbmRQaW5uZWRUYWJz
ID0gMDsKKyAgICAgICAgICAgIGlmIChXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBX
SS5MYXlvdXREaXJlY3Rpb24uUlRMKSB7CisgICAgICAgICAgICAgICAgZXh0cmFTcGFjZUJldHdl
ZW5Ob3JtYWxBbmRQaW5uZWRUYWJzID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpLndpZHRoOworICAgICAgICAgICAgICAgIGZvciAobGV0IGN1cnJlbnRUYWJCYXJJdGVtIG9m
IHRoaXMuX3RhYkJhckl0ZW1zRnJvbUxlZnRUb1JpZ2h0KCkpCisgICAgICAgICAgICAgICAgICAg
IGV4dHJhU3BhY2VCZXR3ZWVuTm9ybWFsQW5kUGlubmVkVGFicyAtPSBjdXJyZW50VGFiQmFySXRl
bS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBsZXQgbGVmdCA9IDA7CisgICAgICAgICAgICBmb3IgKGxldCBjdXJyZW50
VGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtc0Zyb21MZWZ0VG9SaWdodCgpKSB7CisgICAg
ICAgICAgICAgICAgbGV0IHNpemVBbmRQb3NpdGlvbiA9IGJlZm9yZVRhYlNpemVzQW5kUG9zaXRp
b25zLmdldChjdXJyZW50VGFiQmFySXRlbSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIShjdXJy
ZW50VGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pKSB7CisgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IGV4dHJh
U3BhY2VCZXR3ZWVuTm9ybWFsQW5kUGlubmVkVGFicyArIGxlZnQgKyAicHgiOworICAgICAgICAg
ICAgICAgICAgICBsZWZ0ICs9IHNpemVBbmRQb3NpdGlvbi53aWR0aDsKKyAgICAgICAgICAgICAg
ICAgICAgbGFzdE5vcm1hbFRhYkJhckl0ZW0gPSBjdXJyZW50VGFiQmFySXRlbTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHNpemVBbmRQb3NpdGlv
bi5sZWZ0ICsgc2l6ZUFuZFBvc2l0aW9uLndpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgc2VsZWN0ZWQgdGFiIGFuZCBsYXN0IHRhYiBuZWVkIHRvIGRyYXcgYSByaWdo
dCBib3JkZXIgYXMgd2VsbCwgc28gbWFrZSB0aGVtIDFweCB3aWRlci4KKyAgICAgICAgICAgIGlm
ICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0
ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9hdCh0aGlzLl9zZWxl
Y3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgKyAxKSArICJweCI7CisKKyAgICAg
ICAgICAgIGlmIChsYXN0Tm9ybWFsVGFiQmFySXRlbSAhPT0gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJ
dGVtKQorICAgICAgICAgICAgICAgIGxhc3ROb3JtYWxUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUu
d2lkdGggPSAocGFyc2VGbG9hdChsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndp
ZHRoKSArIDEpICsgInB4IjsKKworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiByZW1vdmVTdHlsZXMoKQorICAgICAgICB7CisgICAg
ICAgICAgICAvLyBUaGUgc2VsZWN0ZWQgdGFiIG5lZWRzIHRvIHN0b3AgZHJhd2luZyB0aGUgcmln
aHQgYm9yZGVyLCBzbyBtYWtlIGl0IDFweCBzbWFsbGVyLiBPbmx5IGlmIGl0IGlzbid0IHRoZSBs
YXN0LgorICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSAmJiB0aGlzLl9z
ZWxlY3RlZFRhYkJhckl0ZW0gIT09IGxhc3ROb3JtYWxUYWJCYXJJdGVtKQorICAgICAgICAgICAg
ICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gKHBhcnNl
RmxvYXQodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgpIC0gMSkg
KyAicHgiOworCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5p
bWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY2xv
c2luZy10YWIiKTsKKworICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKKworICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25F
bmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW9w
dGlvbnMuc3VwcHJlc3NBbmltYXRpb25zKSB7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworCisgICAgICAgICAgICB0aGlzLl90YWJBbmlt
YXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciA9IHRydWU7CisKKyAgICAgICAgICAgIHRoaXMuX2Fw
cGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25z
KTsKKworICAgICAgICAgICAgdmFyIHJlbW92ZVN0eWxlc0xpc3RlbmVyID0gcmVtb3ZlU3R5bGVz
LmJpbmQodGhpcyk7CisKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRl
VGFicy5iaW5kKHRoaXMpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLm5lZWRz
TGF5b3V0KCk7CisKKyAgICAgICAgdGhpcy51cGRhdGVOZXdUYWJUYWJCYXJJdGVtU3RhdGUoKTsK
KworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYWJCYXIuRXZlbnQu
VGFiQmFySXRlbVJlbW92ZWQsIHt0YWJCYXJJdGVtfSk7CisKKyAgICAgICAgaWYgKHNob3VsZE9w
ZW5EZWZhdWx0VGFiKQorICAgICAgICAgICAgdGhpcy5fb3BlbkRlZmF1bHRUYWIoKTsKKworICAg
ICAgICByZXR1cm4gdGFiQmFySXRlbTsKKyAgICB9CisKKyAgICBzZWxlY3RQcmV2aW91c1RhYigp
CisgICAgeworICAgICAgICBpZiAodGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIDw9IDEpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLl90YWJCYXJJ
dGVtcy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSk7CisgICAgICAgIHZhciBuZXdJ
bmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChuZXdJbmRl
eCA9PT0gMCkKKyAgICAgICAgICAgICAgICBuZXdJbmRleCA9IHRoaXMuX3RhYkJhckl0ZW1zLmxl
bmd0aCAtIDE7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3SW5kZXgtLTsK
KworICAgICAgICAgICAgaWYgKCEodGhpcy5fdGFiQmFySXRlbXNbbmV3SW5kZXhdIGluc3RhbmNl
b2YgV0kuUGlubmVkVGFiQmFySXRlbSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0gd2hpbGUgKG5ld0luZGV4ICE9PSBzdGFydEluZGV4KTsKKworICAgICAgICBpZiAobmV3SW5k
ZXggPT09IHN0YXJ0SW5kZXgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5z
ZWxlY3RlZFRhYkJhckl0ZW0gPSB0aGlzLl90YWJCYXJJdGVtc1tuZXdJbmRleF07CisgICAgfQor
CisgICAgc2VsZWN0TmV4dFRhYigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fdGFiQmFySXRl
bXMubGVuZ3RoIDw9IDEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHN0YXJ0
SW5kZXggPSB0aGlzLl90YWJCYXJJdGVtcy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRl
bSk7CisgICAgICAgIHZhciBuZXdJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgIGRvIHsKKyAg
ICAgICAgICAgIGlmIChuZXdJbmRleCA9PT0gdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIC0gMSkK
KyAgICAgICAgICAgICAgICBuZXdJbmRleCA9IDA7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgbmV3SW5kZXgrKzsKKworICAgICAgICAgICAgaWYgKCEodGhpcy5fdGFiQmFySXRl
bXNbbmV3SW5kZXhdIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0gd2hpbGUgKG5ld0luZGV4ICE9PSBzdGFydEluZGV4KTsK
KworICAgICAgICBpZiAobmV3SW5kZXggPT09IHN0YXJ0SW5kZXgpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSB0aGlzLl90YWJCYXJJdGVt
c1tuZXdJbmRleF07CisgICAgfQorCisgICAgZ2V0IHNlbGVjdGVkVGFiQmFySXRlbSgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtOworICAgIH0KKworICAg
IHNldCBzZWxlY3RlZFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5kZXgpCisgICAgeworICAgICAg
ICB0aGlzLnNlbGVjdFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5kZXgpOworICAgIH0KKworICAg
IHNlbGVjdFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5kZXgsIG9wdGlvbnMgPSB7fSkKKyAgICB7
CisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gdGhpcy5fZmluZFRhYkJhckl0ZW0odGFiQmFySXRl
bU9ySW5kZXgpOworICAgICAgICBpZiAodGFiQmFySXRlbSA9PT0gdGhpcy5fbmV3VGFiVGFiQmFy
SXRlbSB8fCB0YWJCYXJJdGVtID09PSB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtKSB7CisgICAg
ICAgICAgICAvLyBHZXQgdGhlIGxhc3Qgbm9ybWFsIHRhYiBpdGVtIGlmIHRoZSBpdGVtIGlzIG5v
dCBzZWxlY3RhYmxlLgorICAgICAgICAgICAgdGFiQmFySXRlbSA9IHRoaXMuX3RhYkJhckl0ZW1z
W3RoaXMubm9ybWFsVGFiQ291bnQgLSAxXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlz
Ll9zZWxlY3RlZFRhYkJhckl0ZW0gPT09IHRhYkJhckl0ZW0pCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgbGV0IHByZXZpb3VzVGFiQmFySXRlbSA9IHRoaXMuX3NlbGVjdGVkVGFiQmFy
SXRlbTsKKworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQorICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLnNlbGVjdGVkID0gZmFsc2U7CisKKyAgICAgICAg
dGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtID0gdGFiQmFySXRlbSB8fCBudWxsOworCisgICAgICAg
IGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pIHsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVj
dGVkVGFiQmFySXRlbS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICBpZiAodGhpcy5fc2Vs
ZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJoaWRkZW4iKSkKKyAg
ICAgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CisgICAgICAgIH0KKworICAgICAgICBs
ZXQgaW5pdGlhdG9ySGludCA9IG9wdGlvbnMuaW5pdGlhdG9ySGludCB8fCBXSS5UYWJCcm93c2Vy
LlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuVW5rbm93bjsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1TZWxlY3RlZCwge3ByZXZp
b3VzVGFiQmFySXRlbSwgaW5pdGlhdG9ySGludH0pOworICAgIH0KKworICAgIGdldCB0YWJCYXJJ
dGVtcygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXM7CisgICAgfQor
CisgICAgZ2V0IG5vcm1hbFRhYkNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90
YWJCYXJJdGVtcy5maWx0ZXIoKGl0ZW0pID0+ICEoaXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRh
YkJhckl0ZW0pKS5sZW5ndGg7CisgICAgfQorCisgICAgZ2V0IHNhdmVhYmxlVGFiQ291bnQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zLmZpbHRlcigoaXRlbSkgPT4g
aXRlbS5yZXByZXNlbnRlZE9iamVjdCAmJiBpdGVtLnJlcHJlc2VudGVkT2JqZWN0LmNvbnN0cnVj
dG9yLnNob3VsZFNhdmVUYWIoKSkubGVuZ3RoOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAor
CisgICAgbGF5b3V0KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNhbGN1bGF0ZS13aWR0aCIpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY29sbGFwc2VkIik7CisKKyAgICAgICAg
ZnVuY3Rpb24gZm9yY2VJdGVtSGlkZGVuKGl0ZW0sIGhpZGRlbikgeworICAgICAgICAgICAgaXRl
bS5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIsICEhaGlkZGVuKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpCisgICAgICAg
ICAgICBmb3JjZUl0ZW1IaWRkZW4oaXRlbSwgaXRlbSA9PT0gdGhpcy5fdGFiUGlja2VyVGFiQmFy
SXRlbSk7CisKKyAgICAgICAgZnVuY3Rpb24gbWVhc3VyZUl0ZW1XaWR0aChpdGVtKSB7CisgICAg
ICAgICAgICBpZiAoIWl0ZW1bV0kuVGFiQmFyLkNhY2hlZFdpZHRoU3ltYm9sXSkKKyAgICAgICAg
ICAgICAgICBpdGVtW1dJLlRhYkJhci5DYWNoZWRXaWR0aFN5bWJvbF0gPSBpdGVtLmVsZW1lbnQu
cmVhbE9mZnNldFdpZHRoOworICAgICAgICAgICAgcmV0dXJuIGl0ZW1bV0kuVGFiQmFyLkNhY2hl
ZFdpZHRoU3ltYm9sXTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCByZWNhbGN1bGF0ZUl0ZW1X
aWR0aHMgPSAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMucmVk
dWNlKCh0b3RhbCwgaXRlbSkgPT4geworICAgICAgICAgICAgICAgIGl0ZW1bV0kuVGFiQmFyLkNh
Y2hlZFdpZHRoU3ltYm9sXSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90
YWwgKyBtZWFzdXJlSXRlbVdpZHRoKGl0ZW0pOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAg
IH07CisKKyAgICAgICAgdGhpcy5faGlkZGVuVGFiQmFySXRlbXMgPSBbXTsKKworICAgICAgICBs
ZXQgdG90YWxJdGVtV2lkdGggPSByZWNhbGN1bGF0ZUl0ZW1XaWR0aHMoKTsKKyAgICAgICAgbGV0
IGJhcldpZHRoID0gdGhpcy5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKworICAgICAgICBpZiAo
dG90YWxJdGVtV2lkdGggPiBiYXJXaWR0aCkgeworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoImNvbGxhcHNlZCIpOworICAgICAgICAgICAgdG90YWxJdGVtV2lkdGggPSBy
ZWNhbGN1bGF0ZUl0ZW1XaWR0aHMoKTsKKyAgICAgICAgICAgIGlmICh0b3RhbEl0ZW1XaWR0aCA+
IGJhcldpZHRoKSB7CisgICAgICAgICAgICAgICAgZm9yY2VJdGVtSGlkZGVuKHRoaXMuX3RhYlBp
Y2tlclRhYkJhckl0ZW0sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCAr
PSBtZWFzdXJlSXRlbVdpZHRoKHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBsZXQgdGFiQmFySXRlbXMgPSB0aGlzLl90YWJCYXJJdGVtc0Zy
b21MZWZ0VG9SaWdodCgpOworICAgICAgICAgICAgbGV0IGluZGV4ID0gdGFiQmFySXRlbXMubGVu
Z3RoOworICAgICAgICAgICAgd2hpbGUgKHRvdGFsSXRlbVdpZHRoID4gYmFyV2lkdGggJiYgLS1p
bmRleCA+PSAwKSB7CisgICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSB0YWJCYXJJdGVtc1tpbmRl
eF07CisgICAgICAgICAgICAgICAgaWYgKGl0ZW0gPT09IHRoaXMuc2VsZWN0ZWRUYWJCYXJJdGVt
IHx8IGl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHRvdGFsSXRlbVdpZHRoIC09IG1lYXN1
cmVJdGVtV2lkdGgoaXRlbSk7CisgICAgICAgICAgICAgICAgZm9yY2VJdGVtSGlkZGVuKGl0ZW0s
IHRydWUpOworCisgICAgICAgICAgICAgICAgdGhpcy5faGlkZGVuVGFiQmFySXRlbXMucHVzaChp
dGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJjYWxjdWxhdGUtd2lkdGgiKTsKKyAgICB9CisKKyAgICAvLyBQcml2
YXRlCisKKyAgICBfdGFiQmFySXRlbXNGcm9tTGVmdFRvUmlnaHQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlv
bi5MVFIgPyB0aGlzLl90YWJCYXJJdGVtcyA6IHRoaXMuX3RhYkJhckl0ZW1zLnNsaWNlKCkucmV2
ZXJzZSgpOworICAgIH0KKworICAgIF9maW5kVGFiQmFySXRlbSh0YWJCYXJJdGVtT3JJbmRleCkK
KyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgdGFiQmFySXRlbU9ySW5kZXggPT09ICJudW1iZXIi
KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zW3RhYkJhckl0ZW1PckluZGV4
XSB8fCBudWxsOworCisgICAgICAgIGlmICh0YWJCYXJJdGVtT3JJbmRleCBpbnN0YW5jZW9mIFdJ
LlRhYkJhckl0ZW0pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl90YWJCYXJJdGVtcy5pbmNsdWRl
cyh0YWJCYXJJdGVtT3JJbmRleCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRhYkJhckl0ZW1P
ckluZGV4OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAg
X2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCkKKyAgICB7CisgICAgICAgIGxldCBub3JtYWxUYWJD
b3VudCA9IDA7CisgICAgICAgIGZvciAobGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRl
bXMpIHsKKyAgICAgICAgICAgIGlmICh0YWJCYXJJdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFi
QmFySXRlbSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgKytub3Jt
YWxUYWJDb3VudDsKKyAgICAgICAgICAgIGlmIChub3JtYWxUYWJDb3VudCA+PSAyKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIF9vcGVuRGVmYXVsdFRhYigpCisgICAgeworICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYWJCYXIuRXZlbnQuT3BlbkRlZmF1bHRUYWIpOwor
ICAgIH0KKworICAgIF9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKQorICAgIHsK
KyAgICAgICAgdmFyIHRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyA9IG5ldyBNYXA7CisKKyAg
ICAgICAgY29uc3QgYmFyUmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKKworICAgICAgICBmb3IgKHZhciB0YWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7
CisgICAgICAgICAgICB2YXIgYm91bmRpbmdSZWN0ID0gdGFiQmFySXRlbS5lbGVtZW50LmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgICAgdGFiQmFySXRlbVNpemVzQW5kUG9zaXRp
b25zLnNldCh0YWJCYXJJdGVtLCB7bGVmdDogYm91bmRpbmdSZWN0LmxlZnQgLSBiYXJSZWN0Lmxl
ZnQsIHdpZHRoOiBib3VuZGluZ1JlY3Qud2lkdGh9KTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiB0YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnM7CisgICAgfQorCisgICAgX2FwcGx5VGFi
QmFySXRlbVNpemVzQW5kUG9zaXRpb25zKHRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucywgc2tp
cFRhYkJhckl0ZW0pCisgICAgeworICAgICAgICBmb3IgKHZhciBbdGFiQmFySXRlbSwgc2l6ZUFu
ZFBvc2l0aW9uXSBvZiB0YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMpIHsKKyAgICAgICAgICAg
IGlmIChza2lwVGFiQmFySXRlbSAmJiB0YWJCYXJJdGVtID09PSBza2lwVGFiQmFySXRlbSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5z
dHlsZS5sZWZ0ID0gc2l6ZUFuZFBvc2l0aW9uLmxlZnQgKyAicHgiOworICAgICAgICAgICAgdGFi
QmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gc2l6ZUFuZFBvc2l0aW9uLndpZHRoICsgInB4
IjsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0
aW9ucyhza2lwVGFiQmFySXRlbSkKKyAgICB7CisgICAgICAgIGZvciAodmFyIHRhYkJhckl0ZW0g
b2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgIGlmIChza2lwVGFiQmFySXRlbSAm
JiB0YWJCYXJJdGVtID09PSBza2lwVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbnVsbDsKKyAg
ICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IG51bGw7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBfZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UoYmVmb3JlVGFi
U2l6ZXNBbmRQb3NpdGlvbnMpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVu
Y3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlcik7CisgICAgICAgICAgICB0aGlzLl90
YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciA9IGZhbHNlOworCisgICAgICAgICAgICBp
ZiAoIWJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKQorICAgICAgICAgICAgICAgIGJlZm9yZVRh
YlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRp
b25zKCk7CisKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0
aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBv
c2l0aW9ucygpOworCisgICAgICAgICAgICB2YXIgYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyA9
IHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworCisgICAgICAgICAg
ICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhiZWZvcmVUYWJTaXplc0Fu
ZFBvc2l0aW9ucyk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3Rh
dGljLWxheW91dCIpOworCisgICAgICAgICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0
YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImV4cGFuZGluZy10YWJzIik7CisKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJh
ckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhhZnRlclRhYlNpemVzQW5kUG9zaXRpb25zKTsKKworICAg
ICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0
aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiByZW1vdmVTdHlsZXMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAg
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRpbmct
dGFicyIpOworCisgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQ
b3NpdGlvbnMoKTsKKworICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CisKKyAg
ICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJh
bnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKworICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHJlbW92ZVN0eWxlc0xp
c3RlbmVyID0gcmVtb3ZlU3R5bGVzLmJpbmQodGhpcyk7CisKKyAgICAgICAgICAgIHJlcXVlc3RB
bmltYXRpb25GcmFtZShhbmltYXRlVGFicy5iaW5kKHRoaXMpKTsKKyAgICAgICAgfS5iaW5kKHRo
aXMpKTsKKyAgICB9CisKKyAgICBfaGFuZGxlTW91c2VEb3duKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgLy8gT25seSBjb25zaWRlciBsZWZ0IG1vdXNlIGNsaWNrcyBmb3IgdGFiIG1vdmVtZW50Lgor
ICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8IGV2ZW50LmN0cmxLZXkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmNs
b3Nlc3QoIi4iICsgV0kuVGFiQmFySXRlbS5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGlmICgh
aXRlbUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHRhYkJhckl0
ZW0gPSBpdGVtRWxlbWVudFtXSS5UYWJCYXJJdGVtLkVsZW1lbnRSZWZlcmVuY2VTeW1ib2xdOwor
ICAgICAgICBpZiAoIXRhYkJhckl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKHRhYkJhckl0ZW0uZGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKHRhYkJhckl0ZW0gPT09IHRoaXMuX25ld1RhYlRhYkJhckl0ZW0pCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKHRhYkJhckl0ZW0gPT09IHRoaXMuX3RhYlBpY2tlclRhYkJh
ckl0ZW0pIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5faGlkZGVuVGFiQmFySXRlbXMubGVuZ3Ro
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKHRoaXMuX2lnbm9y
ZVRhYlBpY2tlck1vdXNlRG93bikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIHRoaXMuX2lnbm9yZVRhYlBpY2tlck1vdXNlRG93biA9IHRydWU7CisKKyAgICAgICAgICAg
IGxldCBjb250ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7
CisgICAgICAgICAgICBjb250ZXh0TWVudS5hZGRCZWZvcmVTaG93Q2FsbGJhY2soKCkgPT4gewor
ICAgICAgICAgICAgICAgIHRoaXMuX2lnbm9yZVRhYlBpY2tlck1vdXNlRG93biA9IGZhbHNlOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5faGlk
ZGVuVGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KGl0ZW0udGl0bGUsICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RUYWJC
YXJJdGVtKGl0ZW0sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJ
LlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5Db250ZXh0TWVudSwKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGxldCBjbG9zZUJ1dHRvbkVsZW1lbnQgPSBldmVudC50YXJnZXQuY2xv
c2VzdCgiLiIgKyBXSS5UYWJCYXJJdGVtLkNsb3NlQnV0dG9uU3R5bGVDbGFzc05hbWUpOworICAg
ICAgICBpZiAoY2xvc2VCdXR0b25FbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRoaXMuc2VsZWN0VGFiQmFySXRlbSh0YWJCYXJJdGVtLCB7CisgICAgICAgICAgICBpbml0
aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuVGFiQ2xpY2ss
CisgICAgICAgIH0pOworCisgICAgICAgIGlmICh0YWJCYXJJdGVtIGluc3RhbmNlb2YgV0kuUGlu
bmVkVGFiQmFySXRlbSB8fCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9maXJzdE5vcm1hbFRhYkl0ZW1JbmRleCA9
IDA7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fdGFiQmFySXRlbXMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl90YWJCYXJJdGVtc1tpXSBpbnN0YW5jZW9m
IFdJLlBpbm5lZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIHRoaXMuX2ZpcnN0Tm9ybWFsVGFiSXRlbUluZGV4ID0gaTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbW91c2VJc0Rvd24gPSB0cnVlOworCisg
ICAgICAgIHRoaXMuX21vdXNlTW92ZWRFdmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlTW91c2VN
b3ZlZC5iaW5kKHRoaXMpOworICAgICAgICB0aGlzLl9tb3VzZVVwRXZlbnRMaXN0ZW5lciA9IHRo
aXMuX2hhbmRsZU1vdXNlVXAuYmluZCh0aGlzKTsKKworICAgICAgICAvLyBSZWdpc3RlciB0aGVz
ZSBsaXN0ZW5lcnMgb24gdGhlIGRvY3VtZW50IHNvIHdlIGNhbiB0cmFjayB0aGUgbW91c2UgaWYg
aXQgbGVhdmVzIHRoZSB0YWIgYmFyLgorICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZW1vdmUiLCB0aGlzLl9tb3VzZU1vdmVkRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisgICAg
ICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9tb3VzZVVwRXZl
bnRMaXN0ZW5lciwgdHJ1ZSk7CisKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAg
ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgfQorCisgICAgX2hhbmRsZUNsaWNr
KGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmNs
b3Nlc3QoIi4iICsgV0kuVGFiQmFySXRlbS5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGlmICgh
aXRlbUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHRhYkJhckl0
ZW0gPSBpdGVtRWxlbWVudFtXSS5UYWJCYXJJdGVtLkVsZW1lbnRSZWZlcmVuY2VTeW1ib2xdOwor
ICAgICAgICBpZiAoIXRhYkJhckl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKHRhYkJhckl0ZW0uZGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Y29uc3QgY2xpY2tlZE1pZGRsZUJ1dHRvbiA9IGV2ZW50LmJ1dHRvbiA9PT0gMTsKKworICAgICAg
ICB2YXIgY2xvc2VCdXR0b25FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoIi4iICsgV0ku
VGFiQmFySXRlbS5DbG9zZUJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKGNsb3Nl
QnV0dG9uRWxlbWVudCB8fCBjbGlja2VkTWlkZGxlQnV0dG9uKSB7CisgICAgICAgICAgICAvLyBE
aXNhbGxvdyBjbG9zaW5nIHRoZSBkZWZhdWx0IHRhYiBpZiBpdCBpcyB0aGUgb25seSB0YWIuCisg
ICAgICAgICAgICBpZiAodGFiQmFySXRlbS5pc0RlZmF1bHRUYWIgJiYgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5jb250YWlucygic2luZ2xlLXRhYiIpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgaWYgKCFldmVudC5hbHRLZXkpIHsKKyAgICAgICAgICAgICAgICBsZXQg
b3B0aW9ucyA9IHsKKyAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NFeHBhbnNpb246IHRydWUs
CisgICAgICAgICAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2
aWdhdGlvbkluaXRpYXRvci5UYWJDbGljaywKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgIHRoaXMucmVtb3ZlVGFiQmFySXRlbSh0YWJCYXJJdGVtLCBvcHRpb25zKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAobGV0
IGkgPSB0aGlzLl90YWJCYXJJdGVtcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgeworICAgICAg
ICAgICAgICAgIGxldCBpdGVtID0gdGhpcy5fdGFiQmFySXRlbXNbaV07CisgICAgICAgICAgICAg
ICAgaWYgKGl0ZW0gPT09IHRhYkJhckl0ZW0gfHwgaXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRh
YkJhckl0ZW0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IHRoaXMucmVtb3ZlVGFiQmFySXRlbShpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIF9oYW5kbGVNb3VzZU1vdmVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fbW91c2VJc0Rvd24pOworICAgICAgICBpZiAoIXRoaXMuX21vdXNlSXNEb3duKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NlbGVjdGVk
VGFiQmFySXRlbSk7CisgICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAg
ICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworCisgICAgICAgIGlmICghdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKSB7CisgICAgICAgICAgICB0aGlz
Ll9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyh0aGlzLl9yZWNvcmRUYWJCYXJJdGVt
U2l6ZXNBbmRQb3NpdGlvbnMoKSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImRyYWdnaW5nLXRhYiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX21v
dXNlT2Zmc2V0ID09PSB1bmRlZmluZWQpCisgICAgICAgICAgICB0aGlzLl9tb3VzZU9mZnNldCA9
IGV2ZW50LnBhZ2VYIC0gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQudG90YWxPZmZz
ZXRMZWZ0OworCisgICAgICAgIHZhciB0YWJCYXJNb3VzZU9mZnNldCA9IGV2ZW50LnBhZ2VYIC0g
dGhpcy5lbGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKKyAgICAgICAgdmFyIG5ld0xlZnQgPSB0YWJC
YXJNb3VzZU9mZnNldCAtIHRoaXMuX21vdXNlT2Zmc2V0OworCisgICAgICAgIHRoaXMuX3NlbGVj
dGVkVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBuZXdMZWZ0ICsgInB4IjsKKworICAg
ICAgICB2YXIgc2VsZWN0ZWRUYWJNaWRYID0gbmV3TGVmdCArICh0aGlzLl9zZWxlY3RlZFRhYkJh
ckl0ZW0uZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGggLyAyKTsKKworICAgICAgICB2YXIgY3VycmVu
dEluZGV4ID0gdGhpcy5fdGFiQmFySXRlbXMuaW5kZXhPZih0aGlzLl9zZWxlY3RlZFRhYkJhckl0
ZW0pOworICAgICAgICB2YXIgbmV3SW5kZXggPSBjdXJyZW50SW5kZXg7CisKKyAgICAgICAgZm9y
IChsZXQgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgeworICAgICAgICAgICAgaWYg
KHRhYkJhckl0ZW0gPT09IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgdmFyIHRhYkJhckl0ZW1SZWN0ID0gdGFiQmFySXRl
bS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworCisgICAgICAgICAgICBpZiAoc2Vs
ZWN0ZWRUYWJNaWRYIDwgdGFiQmFySXRlbVJlY3QubGVmdCB8fCBzZWxlY3RlZFRhYk1pZFggPiB0
YWJCYXJJdGVtUmVjdC5yaWdodCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgbmV3SW5kZXggPSB0aGlzLl90YWJCYXJJdGVtcy5pbmRleE9mKHRhYkJhckl0ZW0pOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBTdWJ0cmFjdCAxIGZy
b20gbm9ybWFsVGFiQ291bnQgc2luY2UgYXJyYXlzIGJlZ2luIGluZGV4aW5nIGF0IDAuCisgICAg
ICAgIG5ld0luZGV4ID0gTnVtYmVyLmNvbnN0cmFpbihuZXdJbmRleCwgdGhpcy5fZmlyc3ROb3Jt
YWxUYWJJdGVtSW5kZXgsIHRoaXMubm9ybWFsVGFiQ291bnQgLSAxKTsKKworICAgICAgICBpZiAo
Y3VycmVudEluZGV4ID09PSBuZXdJbmRleCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLl90YWJCYXJJdGVtcy5zcGxpY2UoY3VycmVudEluZGV4LCAxKTsKKyAgICAgICAgdGhp
cy5fdGFiQmFySXRlbXMuc3BsaWNlKG5ld0luZGV4LCAwLCB0aGlzLl9zZWxlY3RlZFRhYkJhckl0
ZW0pOworCisgICAgICAgIGxldCBuZXh0U2libGluZyA9IHRoaXMuX3RhYkJhckl0ZW1zW25ld0lu
ZGV4ICsgMV07CisgICAgICAgIGxldCBuZXh0U2libGluZ0VsZW1lbnQgPSBuZXh0U2libGluZyA/
IG5leHRTaWJsaW5nLmVsZW1lbnQgOiB0aGlzLl9uZXdUYWJUYWJCYXJJdGVtLmVsZW1lbnQ7CisK
KyAgICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9zZWxlY3RlZFRhYkJhckl0
ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKKworICAgICAgICAvLyBGSVhNRTogQW5p
bWF0ZSB0aGUgdGFicyB0aGF0IG1vdmUgdG8gbWFrZSByb29tIGZvciB0aGUgc2VsZWN0ZWQgdGFi
LiBUaGlzIHdhcyBjYXVzaW5nIG1lIHRyb3VibGUgd2hlbiBJIHRyaWVkLgorCisgICAgICAgIGxl
dCBsZWZ0ID0gMDsKKyAgICAgICAgZm9yIChsZXQgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJ
dGVtc0Zyb21MZWZ0VG9SaWdodCgpKSB7CisgICAgICAgICAgICBpZiAodGFiQmFySXRlbSAhPT0g
dGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtICYmIHRhYkJhckl0ZW0gIT09IHRoaXMuX25ld1RhYlRh
YkJhckl0ZW0gJiYgcGFyc2VGbG9hdCh0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCkgIT09
IGxlZnQpCisgICAgICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBs
ZWZ0ICsgInB4IjsKKyAgICAgICAgICAgIGxlZnQgKz0gcGFyc2VGbG9hdCh0YWJCYXJJdGVtLmVs
ZW1lbnQuc3R5bGUud2lkdGgpOworICAgICAgICB9CisgICAgfQorCisgICAgX2hhbmRsZU1vdXNl
VXAoZXZlbnQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24gPT09
IDApOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9tb3VzZUlzRG93bik7CisgICAgICAg
IGlmICghdGhpcy5fbW91c2VJc0Rvd24pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nLXRhYiIpOworCisgICAgICAg
IGlmICghdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIpIHsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAg
ICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbGV0IGxlZnQgPSAwOworICAgICAgICAgICAgZm9yIChs
ZXQgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtc0Zyb21MZWZ0VG9SaWdodCgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0gPT09IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRl
bSkKKyAgICAgICAgICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBs
ZWZ0ICsgInB4IjsKKyAgICAgICAgICAgICAgICBsZWZ0ICs9IHBhcnNlRmxvYXQodGFiQmFySXRl
bS5lbGVtZW50LnN0eWxlLndpZHRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIHRoaXMuX21vdXNlSXNEb3duID0gZmFsc2U7CisgICAgICAgIHRoaXMuX21vdXNlT2Zmc2V0
ID0gdW5kZWZpbmVkOworCisgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1v
dXNlbW92ZSIsIHRoaXMuX21vdXNlTW92ZWRFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAg
ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX21vdXNlVXBFdmVu
dExpc3RlbmVyLCB0cnVlKTsKKworICAgICAgICB0aGlzLl9tb3VzZU1vdmVkRXZlbnRMaXN0ZW5l
ciA9IG51bGw7CisgICAgICAgIHRoaXMuX21vdXNlVXBFdmVudExpc3RlbmVyID0gbnVsbDsKKwor
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYWJC
YXIuRXZlbnQuVGFiQmFySXRlbXNSZW9yZGVyZWQpOworICAgIH0KKworICAgIF9oYW5kbGVNb3Vz
ZUxlYXZlKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX21vdXNlSXNEb3duIHx8ICF0
aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoImFuaW1hdGluZyIpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8vIFRoaXMgZXZlbnQgY2FuIHN0aWxsIGZpcmUgd2hlbiB0aGUgbW91c2UgaXMgaW5zaWRlIHRo
ZSBlbGVtZW50IGlmIERPTSBub2RlcyBhcmUgYWRkZWQsIHJlbW92ZWQgb3IgZ2VuZXJhbGx5IGNo
YW5nZSBpbnNpZGUuCisgICAgICAgIC8vIENoZWNrIGlmIHRoZSBtb3VzZSByZWFsbHkgZGlkIGxl
YXZlIHRoZSBlbGVtZW50IGJ5IGNoZWNraW5nIHRoZSBib3VuZHMuCisgICAgICAgIC8vIEZJWE1F
OiBJcyB0aGlzIGEgV2ViS2l0IGJ1ZyBvciBjb3JyZWN0IGJlaGF2aW9yPworICAgICAgICBjb25z
dCBiYXJSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAg
ICBjb25zdCBuZXdUYWJJdGVtUmVjdCA9IHRoaXMuX25ld1RhYlRhYkJhckl0ZW0uZWxlbWVudC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgaWYgKGV2ZW50LnBhZ2VZID4gYmFyUmVj
dC50b3AgJiYgZXZlbnQucGFnZVkgPCBiYXJSZWN0LmJvdHRvbSAmJiBldmVudC5wYWdlWCA+IGJh
clJlY3QubGVmdCAmJiBldmVudC5wYWdlWCA8IChuZXdUYWJJdGVtUmVjdCA/IG5ld1RhYkl0ZW1S
ZWN0LnJpZ2h0IDogYmFyUmVjdC5yaWdodCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGhpcy5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UoKTsKKyAgICB9CisKKyAgICBf
aGFuZGxlQ29udGV4dE1lbnUoZXZlbnQpCisgICAgeworICAgICAgICBsZXQgY29udGV4dE1lbnUg
PSBXSS5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOworCisgICAgICAgIGZvciAo
bGV0IHRhYkNsYXNzIG9mIFdJLmtub3duVGFiQ2xhc3NlcygpKSB7CisgICAgICAgICAgICBpZiAo
IXRhYkNsYXNzLmlzVGFiQWxsb3dlZCgpIHx8IHRhYkNsYXNzLnRhYkluZm8oKS5pc0VwaGVtZXJh
bCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgbGV0IG9wZW5UYWJC
YXJJdGVtID0gbnVsbDsKKyAgICAgICAgICAgIGZvciAobGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5f
dGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgdGFiQ29udGVudFZpZXcgPSB0YWJC
YXJJdGVtLnJlcHJlc2VudGVkT2JqZWN0OworICAgICAgICAgICAgICAgIGlmICghKHRhYkNvbnRl
bnRWaWV3IGluc3RhbmNlb2YgV0kuVGFiQ29udGVudFZpZXcpKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICh0YWJDb250ZW50Vmlldy50eXBlID09
PSB0YWJDbGFzcy5UeXBlKSB7CisgICAgICAgICAgICAgICAgICAgIG9wZW5UYWJCYXJJdGVtID0g
dGFiQmFySXRlbTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2Jv
eEl0ZW0odGFiQ2xhc3MudGFiSW5mbygpLnRpdGxlLCAoKSA9PiB7CisgICAgICAgICAgICAgICAg
aWYgKG9wZW5UYWJCYXJJdGVtKQorICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYkJh
ckl0ZW0ob3BlblRhYkJhckl0ZW0pOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgV0kuY3JlYXRlTmV3VGFiV2l0aFR5cGUodGFiQ2xhc3MuVHlwZSwge3Nob3VsZFNo
b3dOZXdUYWI6IHRydWV9KTsKKyAgICAgICAgICAgIH0sICEhb3BlblRhYkJhckl0ZW0pOworICAg
ICAgICB9CisgICAgfQorCisgICAgX2hhbmRsZU5ld1RhYkNsaWNrKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgbGV0IG9wdGlvbnMgPSB7aW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZp
Z2F0aW9uSW5pdGlhdG9yLlRhYkNsaWNrfTsKKyAgICAgICAgV0kuc2hvd05ld1RhYlRhYihvcHRp
b25zKTsKKyAgICB9CisKKyAgICBfaGFuZGxlTmV3VGFiTW91c2VFbnRlcihldmVudCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwg
IXRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZSgpOwor
ICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9NYWluLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL01haW4uY3NzCmluZGV4IGM5ZTczODM0ZTg2NGE4NzgzMGY0NzRkNjAzYWFjMDc3ZTIxZDM1
YmMuLjEwY2Q2NGE0NTU5MDk5NWNkYTQ5MDI5MjFlMWJmOTgxNTAzYWY5MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01haW4uY3NzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01haW4uY3NzCkBAIC02
NCw2ICs2NCwxMCBAQCBib2R5IHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3Jv
dW5kLWNvbG9yLWNvbnRlbnQpOwogfQogCitib2R5LmRvY2tlZC5ib3R0b20geworICAgIGJvcmRl
ci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOworfQorCiBib2R5LmRvY2tlZC5y
aWdodCB7CiAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwog
fQpAQCAtMTA5LDIzICsxMTMsMTIgQEAgYm9keS5kb2NrZWQubGVmdCAjZG9ja2VkLXJlc2l6ZXIg
ewogICAgIGN1cnNvcjogY29sLXJlc2l6ZTsKIH0KIAotI3VuZG9ja2VkLXRpdGxlLWFyZWEgewot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAg
bGVmdDogMDsKLSAgICBoZWlnaHQ6IHZhcigtLXVuZG9ja2VkLXRpdGxlLWFyZWEtaGVpZ2h0KTsK
LSAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwg
MCUsIDkyJSksIGhzbCgwLCAwJSwgODclKSk7Ci0gICAgYm94LXNoYWRvdzogaW5zZXQgaHNsYSgw
LCAwJSwgMTAwJSwgMC41KSAwIDFweCAxcHg7Ci19Ci0KLWJvZHkuZG9ja2VkICN1bmRvY2tlZC10
aXRsZS1hcmVhIHsKLSAgICBkaXNwbGF5OiBub25lOworYm9keS5kb2NrZWQuYm90dG9tICN0b29s
YmFyIHsKKyAgICBjdXJzb3I6IHJvdy1yZXNpemU7CiB9CiAKLWJvZHkud2luZG93LWluYWN0aXZl
ICN1bmRvY2tlZC10aXRsZS1hcmVhIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUs
IDk2JSk7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKK2JvZHkuZG9ja2VkLmJvdHRvbSAj
dG9vbGJhciAuaXRlbTpub3QoLmZsZXhpYmxlLXNwYWNlKSB7CisgICAgY3Vyc29yOiBkZWZhdWx0
OwogfQogCiBpbnB1dFt0eXBlPXJhbmdlXSB7CkBAIC0xNDQsNyArMTM3LDcgQEAgaW5wdXRbdHlw
ZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsKIAogI21haW4gewogICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IGNhbGModmFyKC0tdW5kb2NrZWQtdGl0bGUt
YXJlYS1oZWlnaHQpICsgdmFyKC0tdGFiLWJhci1oZWlnaHQpKTsKKyAgICB0b3A6IGNhbGModmFy
KC0tdG9vbGJhci1oZWlnaHQpICsgdmFyKC0tdGFiLWJhci1oZWlnaHQpKTsKICAgICBsZWZ0OiAw
OwogICAgIHJpZ2h0OiAwOwogICAgIGJvdHRvbTogMDsKQEAgLTQ4MiwxNSArNDc1LDYgQEAgYm9k
eVtkaXI9cnRsXSBbZGlyPWx0cl0gLmdvLXRvLWFycm93IHsKICAgICB9CiB9CiAKLUBrZXlmcmFt
ZXMgdGFiLWJhci1jb25zb2xlLWl0ZW0tcHVsc2UgewotICAgIDUwJSB7IG9wYWNpdHk6IDAuNjsg
fQotfQotCi0udGFiLWJhciA+IC5uYXZpZ2F0aW9uLWJhciA6bWF0Y2hlcyguY29uc29sZS13YXJu
aW5ncywgLmNvbnNvbGUtZXJyb3JzKTpub3QoLmRpc2FibGVkKS5wdWxzaW5nIHsKLSAgICBhbmlt
YXRpb24tbmFtZTogdGFiLWJhci1jb25zb2xlLWl0ZW0tcHVsc2U7Ci0gICAgYW5pbWF0aW9uLWR1
cmF0aW9uOiAwLjc1czsKLX0KLQogLmRldmljZS1zZXR0aW5ncy1jb250ZW50IHsKICAgICBwb3Np
dGlvbjogcmVsYXRpdmU7CiAgICAgcGFkZGluZzogMCA0cHg7CkBAIC01NTUsMTUgKzUzOSw2IEBA
IGJvZHlbZGlyPXJ0bF0gLmRldmljZS1zZXR0aW5ncy1jb250ZW50ID4gLnJlZmVyZW5jZS1wYWdl
LWxpbmstY29udGFpbmVyIHsKIH0KIAogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFy
aykgewotICAgICN1bmRvY2tlZC10aXRsZS1hcmVhIHsKLSAgICAgICAgYmFja2dyb3VuZC1pbWFn
ZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCAyNiUpLCBoc2woMCwgMCUs
IDIzJSkpOwotICAgICAgICBib3gtc2hhZG93OiBub25lOwotICAgIH0KLQotICAgIGJvZHkud2lu
ZG93LWluYWN0aXZlICN1bmRvY2tlZC10aXRsZS1hcmVhIHsKLSAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogdmFyKC0tYmFja2dyb3VuZC1jb2xvcik7Ci0gICAgfQotCiAgICAgLmdvLXRvLWFycm93
IHsKICAgICAgICAgZmlsdGVyOiBpbnZlcnQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwpp
bmRleCAzNDNlZDFkYTMxZmIzYzAyMWE5YjE5YTEwOTI1MjIxZTJhOTRkZWY3Li5hMjY5Njg2ZDM5
N2NiMjIyYWUwZjA4NmQ1MDUxODE1NGY4NmU4OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKQEAg
LTI1LDcgKzI1LDcgQEAKIAogV0kuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIg
ZXh0ZW5kcyBXSS5WaWV3CiB7Ci0gICAgY29uc3RydWN0b3IoZWxlbWVudCwge3JvbGUsIHNpemVz
VG9GaXR9ID0ge30pCisgICAgY29uc3RydWN0b3IoZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1zLCBy
b2xlLCBsYWJlbCkKICAgICB7CiAgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCkBAIC0zNCw2ICsz
NCw4IEBAIFdJLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV0ku
VmlldwogCiAgICAgICAgIGlmIChyb2xlKQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0
dHJpYnV0ZSgicm9sZSIsIHJvbGUpOworICAgICAgICBpZiAobGFiZWwpCisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCiAgICAgICAg
IHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2ZvY3VzLmJpbmQo
dGhpcyksIGZhbHNlKTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJs
dXIiLCB0aGlzLl9ibHVyLmJpbmQodGhpcyksIGZhbHNlKTsKQEAgLTQzLDE5ICs0NSwyMSBAQCBX
SS5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdJLlZpZXcKICAg
ICAgICAgdGhpcy5fbW91c2VNb3ZlZEV2ZW50TGlzdGVuZXIgPSB0aGlzLl9tb3VzZU1vdmVkLmJp
bmQodGhpcyk7CiAgICAgICAgIHRoaXMuX21vdXNlVXBFdmVudExpc3RlbmVyID0gdGhpcy5fbW91
c2VVcC5iaW5kKHRoaXMpOwogCi0gICAgICAgIHRoaXMuX3NpemVzVG9GaXQgPSBzaXplc1RvRml0
IHx8IGZhbHNlOwogICAgICAgICB0aGlzLl9taW5pbXVtV2lkdGggPSBOYU47CiAgICAgICAgIHRo
aXMuX25hdmlnYXRpb25JdGVtcyA9IFtdOwogICAgICAgICB0aGlzLl9zZWxlY3RlZE5hdmlnYXRp
b25JdGVtID0gbnVsbDsKKworICAgICAgICBpZiAobmF2aWdhdGlvbkl0ZW1zKSB7CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hdmlnYXRpb25JdGVtcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgICAgICB0aGlzLmFkZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtc1tpXSk7
CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCBzaXplc1RvRml0
KCkgeyByZXR1cm4gdGhpcy5fc2l6ZXNUb0ZpdDsgfQotCiAgICAgYWRkTmF2aWdhdGlvbkl0ZW0o
bmF2aWdhdGlvbkl0ZW0sIHBhcmVudEVsZW1lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5pbnNlcnROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbSwgSW5maW5pdHksIHBhcmVudEVs
ZW1lbnQpOworICAgICAgICByZXR1cm4gdGhpcy5pbnNlcnROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0
aW9uSXRlbSwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCwgcGFyZW50RWxlbWVudCk7CiAg
ICAgfQogCiAgICAgaW5zZXJ0TmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0sIGluZGV4LCBw
YXJlbnRFbGVtZW50KQpAQCAtNjksNyArNzMsNyBAQCBXSS5OYXZpZ2F0aW9uQmFyID0gY2xhc3Mg
TmF2aWdhdGlvbkJhciBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICBuYXZpZ2F0aW9uSXRlbS5k
aWRBdHRhY2godGhpcyk7CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWlzRmluaXRlKGluZGV4
KSB8fCAoaW5kZXggPj0gMCAmJiBpbmRleCA8PSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3Ro
KSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPD0gdGhpcy5f
bmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCk7CiAgICAgICAgIGluZGV4ID0gTWF0aC5tYXgoMCwgTWF0
aC5taW4oaW5kZXgsIHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGgpKTsKIAogICAgICAgICB0
aGlzLl9uYXZpZ2F0aW9uSXRlbXMuc3BsaWNlKGluZGV4LCAwLCBuYXZpZ2F0aW9uSXRlbSk7CkBA
IC0xNjQsNiArMTY4LDEyIEBAIFdJLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFy
IGV4dGVuZHMgV0kuVmlldwogICAgICAgICByZXR1cm4gdGhpcy5fbWluaW11bVdpZHRoOwogICAg
IH0KIAorICAgIGdldCBzaXplc1RvRml0KCkKKyAgICB7CisgICAgICAgIC8vIENhbiBiZSBvdmVy
cmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAg
ICBmaW5kTmF2aWdhdGlvbkl0ZW0oaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGZ1bmN0aW9u
IG1hdGNoaW5nU2VsZk9yQ2hpbGQoaXRlbSkgewpAQCAtMjE0LDcgKzIyNCw3IEBAIFdJLk5hdmln
YXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAg
ICAgaXRlbS51cGRhdGUoe2V4cGFuZE9ubHk6IHRydWV9KTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICh0aGlzLl9zaXplc1RvRml0KQorICAgICAgICBpZiAodGhpcy5zaXplc1RvRml0KQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCB2aXNpYmxlTmF2aWdhdGlvbkl0ZW1zID0g
dGhpcy5fdmlzaWJsZU5hdmlnYXRpb25JdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtEZXRhaWxWaWV3LmNzcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtEZXRhaWxWaWV3LmNz
cwppbmRleCBjMDJlY2I4NjZlNDQxMzg0ZmRhOThkNjAxMmQzYzc2ZDI0OTczNjJhLi5iZWE1Njhm
NGY0MzRjOTVhZTZhODY5YmI5NTY1ZGUwOTFkYmQxM2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrRGV0YWlsVmlldy5jc3MKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya0RldGFp
bFZpZXcuY3NzCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgdG9wOiAwOwogICAgIGxlZnQ6IDA7CiAg
ICAgcmlnaHQ6IDA7Ci0gICAgYm90dG9tOiB2YXIoLS1uZXR3b3JrLXN0YXRpc3RpY3MtaGVpZ2h0
KTsKKyAgICBib3R0b206IDA7CiAgICAgLyogbGVmdCBvciByaWdodCBzZXQgYnkgTmV0d29ya1Rh
YmxlVmlldyBvbiBkaXNwbGF5IC8gcmVzaXplICovCiAgICAgei1pbmRleDogMTA7CiAgICAgYmFj
a2dyb3VuZC1jb2xvcjogd2hpdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanMK
aW5kZXggNjUxMTBhY2EyMzI0ODRmZGViY2YzZmU5MmNjMTQ3NzFjNTAxYzUxNy4uYjBlM2EzMDE4
OWRmODk2YTU4NzRmOTBlZmM2NzMzZjkwYzBiMDUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJD
b250ZW50Vmlldy5qcwpAQCAtMjUsOSArMjUsMTEgQEAKIAogV0kuTmV0d29ya1RhYkNvbnRlbnRW
aWV3ID0gY2xhc3MgTmV0d29ya1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZp
ZXcKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHN1cGVyKE5ldHdvcmtUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworICAg
ICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJ
Lk5ldHdvcmtUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworCisgICAgICAgIHN1cGVyKGlkZW50
aWZpZXIgfHwgIm5ldHdvcmsiLCAibmV0d29yayIsIHRhYkJhckl0ZW0pOwogCiAgICAgICAgIHRo
aXMuX25ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gbmV3IFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRW
aWV3OwogCkBAIC00OCw3ICs1MCw2IEBAIFdJLk5ldHdvcmtUYWJDb250ZW50VmlldyA9IGNsYXNz
IE5ldHdvcmtUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaWV3CiAgICAgc3Rh
dGljIHRhYkluZm8oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50
aWZpZXI6IE5ldHdvcmtUYWJDb250ZW50Vmlldy5UeXBlLAogICAgICAgICAgICAgaW1hZ2U6ICJJ
bWFnZXMvTmV0d29yay5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJOZXR3
b3JrIiksCiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5jc3MgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5j
c3MKaW5kZXggYjRmMGRlYjZjNzJmZGM4M2I5MzI1YTVmZDg2Y2ExNmU2NjA1MTIyNi4uYjRmZGIx
MmQ2NjU1MTM0MDJlNjAzZjAzZThlOTE0ZTA2YmQ4NzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcu
Y3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdv
cmtUYWJsZUNvbnRlbnRWaWV3LmNzcwpAQCAtMzYsMTIgKzM2LDcgQEAKICAgICBjb250ZW50OiB1
cmwoLi4vSW1hZ2VzL05ldHdvcmtIQVIuc3ZnKTsKIH0KIAotLmNvbnRlbnQtdmlldy5uZXR3b3Jr
IC5uZXR3b3JrLXRhYmxlIHsKLSAgICBkaXNwbGF5OiBmbGV4OwotICAgIGZsZXgtZGlyZWN0aW9u
OiBjb2x1bW47Ci19Ci0KLS5jb250ZW50LXZpZXcubmV0d29yayAubmV0d29yay10YWJsZSA+IC50
YWJsZSAuaWNvbiB7CisuY29udGVudC12aWV3Lm5ldHdvcmsgLm5ldHdvcmstdGFibGUgLmljb24g
ewogICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICB3aWR0aDogMTZweDsKICAgICBoZWlnaHQ6
IDE2cHg7CkBAIC01MCwxOSArNDUsMTUgQEAKICAgICAtd2Via2l0LW1hcmdpbi1lbmQ6IDRweDsK
IH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgbGk6bm90KC5zZWxlY3RlZCkgLmNlbGw6bm90
KC5jdXJyZW50LXNlc3Npb24pIHsKLSAgICBvcGFjaXR5OiAwLjU7Ci19Ci0KLS5uZXR3b3JrLXRh
YmxlID4gLnRhYmxlIGxpOm5vdCguZmlsbGVyKSAuY2VsbC5uYW1lIHsKKy5uZXR3b3JrLXRhYmxl
IGxpOm5vdCguZmlsbGVyKSAuY2VsbC5uYW1lIHsKICAgICBjdXJzb3I6IHBvaW50ZXI7CiB9CiAK
LS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmljb24geworLm5l
dHdvcmstdGFibGUgLmNlbGwuZG9tLW5vZGUubmFtZSAuaWNvbiB7CiAgICAgY29udGVudDogdXJs
KC4uL0ltYWdlcy9ET01FbGVtZW50LnN2Zyk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
IC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUgeworLm5ldHdvcmstdGFibGUgLmNlbGwu
ZG9tLW5vZGUubmFtZSAuZGlzY2xvc3VyZSB7CiAgICAgd2lkdGg6IDEzcHg7CiAgICAgaGVpZ2h0
OiAxM3B4OwogICAgIHZlcnRpY2FsLWFsaWduOiAtMnB4OwpAQCAtNzEsMTEyICs2MiwxMTIgQEAK
ICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogfQogCi1ib2R5W2Rpcj1ydGxdIC5u
ZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUgewor
Ym9keVtkaXI9cnRsXSAubmV0d29yay10YWJsZSAuY2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9z
dXJlIHsKICAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4g
LnRhYmxlOmZvY3VzIGxpLnNlbGVjdGVkIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUg
eworLm5ldHdvcmstdGFibGU6Zm9jdXMgbGkuc2VsZWN0ZWQgLmNlbGwuZG9tLW5vZGUubmFtZSAu
ZGlzY2xvc3VyZSB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9EaXNjbG9zdXJlVHJpYW5n
bGVzLnN2ZyNjbG9zZWQtc2VsZWN0ZWQpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAu
Y2VsbC5kb20tbm9kZS5uYW1lIC5kaXNjbG9zdXJlLmV4cGFuZGVkIHsKKy5uZXR3b3JrLXRhYmxl
IC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUuZXhwYW5kZWQgewogICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvRGlzY2xvc3VyZVRyaWFuZ2xlcy5zdmcjb3Blbi1ub3JtYWwpOwogfQog
Ci0ubmV0d29yay10YWJsZSA+IC50YWJsZTpmb2N1cyBsaS5zZWxlY3RlZCAuY2VsbC5kb20tbm9k
ZS5uYW1lIC5kaXNjbG9zdXJlLmV4cGFuZGVkIHsKKy5uZXR3b3JrLXRhYmxlOmZvY3VzIGxpLnNl
bGVjdGVkIC5jZWxsLmRvbS1ub2RlLm5hbWUgLmRpc2Nsb3N1cmUuZXhwYW5kZWQgewogICAgIGNv
bnRlbnQ6IHVybCguLi9JbWFnZXMvRGlzY2xvc3VyZVRyaWFuZ2xlcy5zdmcjb3Blbi1zZWxlY3Rl
ZCk7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlLmdyb3VwZWQgLmRhdGEtY29udGFpbmVy
IC5jZWxsLm5hbWUgeworLm5ldHdvcmstdGFibGUuZ3JvdXBlZCAuZGF0YS1jb250YWluZXIgLmNl
bGwubmFtZSB7CiAgICAgLS1pdGVtLXBhZGRpbmctc3RhcnQ6IDE5cHg7CiAgICAgLS1pdGVtLWRp
c2Nsb3N1cmUtd2lkdGg6IDExcHg7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlLmdyb3Vw
ZWQgLmRhdGEtY29udGFpbmVyIC5jZWxsOm5vdCgucGFyZW50KS5uYW1lIHsKKy5uZXR3b3JrLXRh
YmxlLmdyb3VwZWQgLmRhdGEtY29udGFpbmVyIC5jZWxsOm5vdCgucGFyZW50KS5uYW1lIHsKICAg
ICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IHZhcigtLWl0ZW0tcGFkZGluZy1zdGFydCk7CiB9CiAK
LS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlLmdyb3VwZWQgLmRhdGEtY29udGFpbmVyIC5jZWxsLmNo
aWxkLm5hbWUgeworLm5ldHdvcmstdGFibGUuZ3JvdXBlZCAuZGF0YS1jb250YWluZXIgLmNlbGwu
Y2hpbGQubmFtZSB7CiAgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiBjYWxjKHZhcigtLWl0ZW0t
cGFkZGluZy1zdGFydCkgKyB2YXIoLS1pdGVtLWRpc2Nsb3N1cmUtd2lkdGgpKTsKIH0KIAotLm5l
dHdvcmstdGFibGUgPiAudGFibGUgLmRhdGEtY29udGFpbmVyIC5jZWxsLm5hbWUgLnJhbmdlIHsK
Ky5uZXR3b3JrLXRhYmxlIC5kYXRhLWNvbnRhaW5lciAuY2VsbC5uYW1lIC5yYW5nZSB7CiAgICAg
Y29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjcpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJs
ZSAuZGF0YS1jb250YWluZXIgLmNlbGwubmFtZSAucmFuZ2U6OmJlZm9yZSB7CisubmV0d29yay10
YWJsZSAuZGF0YS1jb250YWluZXIgLmNlbGwubmFtZSAucmFuZ2U6OmJlZm9yZSB7CiAgICAgY29u
dGVudDogIlwwMEEwXDIwMTRcMDBBMCI7IC8qICZuYnNwOyZtZGFzaDsmbmJzcDsgKi87CiB9CiAK
LS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlOmZvY3VzIC5kYXRhLWNvbnRhaW5lciBsaS5zZWxlY3Rl
ZCAuY2VsbC5uYW1lIC5yYW5nZSB7CisubmV0d29yay10YWJsZTpmb2N1cyAuZGF0YS1jb250YWlu
ZXIgbGkuc2VsZWN0ZWQgLmNlbGwubmFtZSAucmFuZ2UgewogICAgIGNvbG9yOiBoc2xhKDAsIDAl
LCAxMDAlLCAwLjkpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSBsaTpub3QoLnNlbGVj
dGVkKSAuY2VsbDptYXRjaGVzKC5jYWNoZS10eXBlLCAubXVsdGlwbGUpIHsKKy5uZXR3b3JrLXRh
YmxlIGxpOm5vdCguc2VsZWN0ZWQpIC5jZWxsOm1hdGNoZXMoLmNhY2hlLXR5cGUsIC5tdWx0aXBs
ZSkgewogICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLWdyYXktbWVkaXVtKTsKIH0KIAotLm5l
dHdvcmstdGFibGUgPiAudGFibGUgLmVycm9yIHsKKy5uZXR3b3JrLXRhYmxlIC5lcnJvciB7CiAg
ICAgY29sb3I6IHZhcigtLWVycm9yLXRleHQtY29sb3IpOwogfQogCi0ubmV0d29yay10YWJsZSA+
IC50YWJsZSAuY2VsbC5kb21haW4gPiAubG9jayB7CisubmV0d29yay10YWJsZSAuY2VsbC5kb21h
aW4gPiAubG9jayB7CiAgICAgd2lkdGg6IDhweDsKICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgY29u
dGVudDogdXJsKC4uL0ltYWdlcy9Mb2NrZWQuc3ZnKTsKICAgICAtd2Via2l0LW1hcmdpbi1lbmQ6
IDVweDsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgbGkuc2VsZWN0ZWQgLmNlbGwuZG9t
YWluID4gLmxvY2sgeworLm5ldHdvcmstdGFibGUgbGkuc2VsZWN0ZWQgLmNlbGwuZG9tYWluID4g
LmxvY2sgewogICAgIC8qIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg5NzczPiBXZWIg
SW5zcGVjdG9yOiBjcmVhdGUgc3BlY2lhbCBOZXR3b3JrIHdhdGVyZmFsbCBmb3IgbWVkaWEgZXZl
bnRzICovCiAgICAgZmlsdGVyOiBpbnZlcnQoKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFi
bGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgeworLm5ldHdvcmstdGFibGUgLmNlbGwubmFtZSA+IC5z
dGF0dXMgewogICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiA0cHg7CiB9CiAKLWJvZHlbZGlyPWx0
cl0gLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgeworYm9keVtk
aXI9bHRyXSAubmV0d29yay10YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyB7CiAgICAgZmxvYXQ6
IHJpZ2h0OwogfQogCi1ib2R5W2Rpcj1ydGxdIC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxs
Lm5hbWUgPiAuc3RhdHVzIHsKK2JvZHlbZGlyPXJ0bF0gLm5ldHdvcmstdGFibGUgLmNlbGwubmFt
ZSA+IC5zdGF0dXMgewogICAgIGZsb2F0OiBsZWZ0OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50
YWJsZSAuY2VsbC5uYW1lID4gLnN0YXR1cyAuaW5kZXRlcm1pbmF0ZS1wcm9ncmVzcy1zcGlubmVy
IHsKKy5uZXR3b3JrLXRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIC5pbmRldGVybWluYXRlLXBy
b2dyZXNzLXNwaW5uZXIgewogICAgIG1hcmdpbi10b3A6IDNweDsKICAgICB3aWR0aDogMTRweDsK
ICAgICBoZWlnaHQ6IDE0cHg7CiB9CiAKLS5uZXR3b3JrLXRhYmxlLnNob3dpbmctZGV0YWlsID4g
LnRhYmxlIC5jZWxsOm5vdCgubmFtZSkgeworLnNob3dpbmctZGV0YWlsIC5uZXR3b3JrLXRhYmxl
IC5jZWxsOm5vdCgubmFtZSkgewogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLS5uZXR3b3JrLXRh
YmxlLnNob3dpbmctZGV0YWlsID4gLnRhYmxlIC5yZXNpemVyOm5vdCg6Zmlyc3Qtb2YtdHlwZSkg
eworLnNob3dpbmctZGV0YWlsIC5uZXR3b3JrLXRhYmxlIC5yZXNpemVyOm5vdCg6Zmlyc3Qtb2Yt
dHlwZSkgewogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLS5uZXR3b3JrLXRhYmxlLnNob3dpbmct
ZGV0YWlsID4gLnRhYmxlIC50aW1lbGluZS1ydWxlciB7Cisuc2hvd2luZy1kZXRhaWwgLm5ldHdv
cmstdGFibGUgLnRpbWVsaW5lLXJ1bGVyIHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCi0ubmV0
d29yay10YWJsZSA+IC50YWJsZSAuaGVhZGVyIC5jZWxsLndhdGVyZmFsbCB7CisubmV0d29yay10
YWJsZSAuaGVhZGVyIC5jZWxsLndhdGVyZmFsbCB7CiAgICAgLyogSGlkZSB0aGUgbGFiZWwgZm9y
IHRoaXMgY29sdW1uLiAqLwogICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKIH0KIAotLm5ldHdvcmst
dGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbDpmaXJzdC1vZi10eXBlIHsKKy5uZXR3
b3JrLXRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGw6Zmlyc3Qtb2YtdHlwZSB7CiAgICAgYmFja2dy
b3VuZDogcmdiYSgwLCAwLCAwLCAwLjA3KTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUg
Om5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgeworLm5ldHdvcmstdGFibGUgOm5vdCguaGVh
ZGVyKSAuY2VsbC53YXRlcmZhbGwgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICBoZWln
aHQ6IDIwcHg7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNl
bGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyIHsKKy5uZXR3b3JrLXRhYmxlIDpub3Qo
LmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyIHsKICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAwOwogICAgIGxlZnQ6IDA7CkBAIC0xODQsNyArMTc1
LDcgQEAgYm9keVtkaXI9cnRsXSAubmV0d29yay10YWJsZSA+IC50YWJsZSAuY2VsbC5uYW1lID4g
LnN0YXR1cyB7CiAgICAgYm90dG9tOiAwOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSA6
bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5kb20t
ZXZlbnQgeworLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndh
dGVyZmFsbC1jb250YWluZXIgPiAuZG9tLWV2ZW50IHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CiAgICAgdG9wOiBjYWxjKDUwJSAtICh2YXIoLS1ub2RlLXdhdGVyZmFsbC1kb20tZXZlbnQtc2l6
ZSkgLyAyKSk7CiAgICAgbWluLXdpZHRoOiB2YXIoLS1ub2RlLXdhdGVyZmFsbC1kb20tZXZlbnQt
c2l6ZSk7CkBAIC0xOTMsMTcgKzE4NCwxNyBAQCBib2R5W2Rpcj1ydGxdIC5uZXR3b3JrLXRhYmxl
ID4gLnRhYmxlIC5jZWxsLm5hbWUgPiAuc3RhdHVzIHsKICAgICBib3JkZXItcmFkaXVzOiBjYWxj
KHZhcigtLW5vZGUtd2F0ZXJmYWxsLWRvbS1ldmVudC1zaXplKSAvIDIpOwogfQogCi0ubmV0d29y
ay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxs
LWNvbnRhaW5lciA+IC5kb20tYWN0aXZpdHkgeworLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVy
KSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuZG9tLWFjdGl2aXR5IHsK
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiBjYWxjKDUwJSAtIDAuNXB4KTsKICAg
ICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXNlbGVjdGVkLWJhY2tncm91bmQtY29sb3It
YWN0aXZlKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgOm5vdCguaGVhZGVyKSAuY2Vs
bC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIgPiAuZG9tLWFjdGl2aXR5LnBsYXlpbmcg
eworLm5ldHdvcmstdGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFs
bC1jb250YWluZXIgPiAuZG9tLWFjdGl2aXR5LnBsYXlpbmcgewogICAgIGJvcmRlci10b3Atc3R5
bGU6IHNvbGlkOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5j
ZWxsLndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5hcmVhIHsKKy5uZXR3b3JrLXRh
YmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxsIC53YXRlcmZhbGwtY29udGFpbmVyID4g
LmFyZWEgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IHZhcigtLWFyZWEtcGFk
ZGluZyk7CiAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAodmFyKC0tYXJlYS1wYWRkaW5nKSAqIDIp
KTsKQEAgLTIxMiwyMiArMjAzLDIyIEBAIGJvZHlbZGlyPXJ0bF0gLm5ldHdvcmstdGFibGUgPiAu
dGFibGUgLmNlbGwubmFtZSA+IC5zdGF0dXMgewogICAgIC0tYXJlYS1wYWRkaW5nOiBjYWxjKCg1
MCUgLSAodmFyKC0tbm9kZS13YXRlcmZhbGwtZG9tLWV2ZW50LXNpemUpIC8gMikpIC8gMik7CiB9
CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIDpub3QoLmhlYWRlcikgLmNlbGwud2F0ZXJmYWxs
IC53YXRlcmZhbGwtY29udGFpbmVyID4gLmFyZWEuZG9tLWZ1bGxzY3JlZW4geworLm5ldHdvcmst
dGFibGUgOm5vdCguaGVhZGVyKSAuY2VsbC53YXRlcmZhbGwgLndhdGVyZmFsbC1jb250YWluZXIg
PiAuYXJlYS5kb20tZnVsbHNjcmVlbiB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAl
LCA0MCUpOwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxs
LndhdGVyZmFsbCAud2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5hcmVhLnBvd2VyLWVmZmljaWVudC1w
bGF5YmFjayB7CisubmV0d29yay10YWJsZSA6bm90KC5oZWFkZXIpIC5jZWxsLndhdGVyZmFsbCAu
d2F0ZXJmYWxsLWNvbnRhaW5lciA+IC5hcmVhLnBvd2VyLWVmZmljaWVudC1wbGF5YmFjayB7CiAg
ICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV0d29yay1yZXF1ZXN0LWNvbG9yKTsKIH0KIAot
Lm5ldHdvcmstdGFibGUgPiAudGFibGUgLnRpbWVsaW5lLXJ1bGVyIHsKKy5uZXR3b3JrLXRhYmxl
IC50aW1lbGluZS1ydWxlciB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMDsK
ICAgICBib3R0b206IDA7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKIH0KIAotLm5ldHdvcmstdGFi
bGUgPiAudGFibGUgLnRpbWVsaW5lLXJ1bGVyID4gLmhlYWRlciB7CisubmV0d29yay10YWJsZSAu
dGltZWxpbmUtcnVsZXIgPiAuaGVhZGVyIHsKICAgICB0b3A6IGNhbGModmFyKC0tbmF2aWdhdGlv
bi1iYXItaGVpZ2h0KSAtIHZhcigtLXRpbWVsaW5lLXJ1bGVyLWhlaWdodCkpOwogfQogCkBAIC0y
NjAsMTEwICsyNTEsNzYgQEAgYm9keVtkaXI9cnRsXSAud2F0ZXJmYWxsIC5ibG9jayB7CiAgICAg
Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLXN0YXJ0LXJhZGl1cyk7CiB9CiAKLS5u
ZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrICsgLmJsb2NrIHsKKy5uZXR3
b3JrLXRhYmxlIC53YXRlcmZhbGwgLmJsb2NrICsgLmJsb2NrIHsKICAgICAtLXN0YXJ0LXJhZGl1
czogMDsKICAgICAtLWVuZC1yYWRpdXM6IDA7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxl
IC53YXRlcmZhbGwgLmJsb2NrOm1hdGNoZXMoLm1vdXNlLXRyYWNraW5nLCAuZmlsbGVyKSArIC5i
bG9jazpub3QoLm1vdXNlLXRyYWNraW5nLCAuZmlsbGVyKSwKLS5uZXR3b3JrLXRhYmxlID4gLnRh
YmxlIC53YXRlcmZhbGwgLmJsb2NrOm5vdCgucmVxdWVzdCwgLnJlc3BvbnNlKSArIDptYXRjaGVz
KC5yZXF1ZXN0LCAucmVzcG9uc2UpIHsKKy5uZXR3b3JrLXRhYmxlIC53YXRlcmZhbGwgLmJsb2Nr
Om1hdGNoZXMoLm1vdXNlLXRyYWNraW5nLCAuZmlsbGVyKSArIC5ibG9jazpub3QoLm1vdXNlLXRy
YWNraW5nLCAuZmlsbGVyKSwKKy5uZXR3b3JrLXRhYmxlIC53YXRlcmZhbGwgLmJsb2NrOm5vdCgu
cmVxdWVzdCwgLnJlc3BvbnNlKSArIDptYXRjaGVzKC5yZXF1ZXN0LCAucmVzcG9uc2UpIHsKICAg
ICAtLXN0YXJ0LXJhZGl1czogMnB4OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0
ZXJmYWxsIC5ibG9jazpsYXN0LWNoaWxkIHsKKy5uZXR3b3JrLXRhYmxlIC53YXRlcmZhbGwgLmJs
b2NrOmxhc3QtY2hpbGQgewogICAgIC0tZW5kLXJhZGl1czogMnB4OwogfQogCi0ubmV0d29yay10
YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5yZXF1ZXN0LAotLm5ldHdvcmstdGFibGUg
PiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2sucmVzcG9uc2UgeworLndhdGVyZmFsbCAuYmxvY2su
cmVxdWVzdCwKKy53YXRlcmZhbGwgLmJsb2NrLnJlc3BvbnNlIHsKICAgICB0b3A6IDNweDsKICAg
ICBoZWlnaHQ6IDE0cHg7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwg
LmJsb2NrLm1vdXNlLXRyYWNraW5nIHsKKy53YXRlcmZhbGwgLmJsb2NrLm1vdXNlLXRyYWNraW5n
IHsKICAgICB0b3A6IDFweDsKICAgICB6LWluZGV4OiAyOwogICAgIGhlaWdodDogMThweDsKIH0K
IAotLm5ldHdvcmstdGFibGUgPiAudGFibGUgLndhdGVyZmFsbCAuYmxvY2suZmlsbGVyIHsKKy53
YXRlcmZhbGwgLmJsb2NrLmZpbGxlciB7CiAgICAgdG9wOiA5cHg7CiAgICAgaGVpZ2h0OiAycHg7
CiAgICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmV5OwogfQogCi0ubmV0d29yay10YWJsZSA+
IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5yZWRpcmVjdCB7Cisud2F0ZXJmYWxsIC5ibG9jay5y
ZWRpcmVjdCB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV0d29yay1yZWRpcmVjdC1j
b2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2NrLnF1
ZXVlIHsKKy53YXRlcmZhbGwgLmJsb2NrLnF1ZXVlIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2
YXIoLS1uZXR3b3JrLXF1ZXVlLWNvbG9yKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAudGFibGUg
LndhdGVyZmFsbCAuYmxvY2suZG5zIHsKKy53YXRlcmZhbGwgLmJsb2NrLmRucyB7CiAgICAgYmFj
a2dyb3VuZC1jb2xvcjogdmFyKC0tbmV0d29yay1kbnMtY29sb3IpOwogfQogCi0ubmV0d29yay10
YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5jb25uZWN0IHsKKy53YXRlcmZhbGwgLmJs
b2NrLmNvbm5lY3QgewogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldHdvcmstY29ubmVj
dC1jb2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC53YXRlcmZhbGwgLmJsb2Nr
LnNlY3VyZSB7Cisud2F0ZXJmYWxsIC5ibG9jay5zZWN1cmUgewogICAgIGJhY2tncm91bmQtY29s
b3I6IHZhcigtLW5ldHdvcmstc2VjdXJlLWNvbG9yKTsKIH0KIAotLm5ldHdvcmstdGFibGUgPiAu
dGFibGUgLndhdGVyZmFsbCAuYmxvY2sucmVxdWVzdCB7Cisud2F0ZXJmYWxsIC5ibG9jay5yZXF1
ZXN0IHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXR3b3JrLXJlcXVlc3QtY29sb3Ip
OwogfQogCi0ubmV0d29yay10YWJsZSA+IC50YWJsZSAud2F0ZXJmYWxsIC5ibG9jay5yZXNwb25z
ZSB7Cisud2F0ZXJmYWxsIC5ibG9jay5yZXNwb25zZSB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjog
dmFyKC0tbmV0d29yay1yZXNwb25zZS1jb2xvcik7CiB9CiAKLS5uZXR3b3JrLXRhYmxlID4gLnN0
YXRpc3RpY3MgewotICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAganVzdGlmeS1jb250ZW50OiBjZW50
ZXI7Ci0gICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKLSAgICBtaW4taGVpZ2h0OiB2YXIoLS1uZXR3
b3JrLXN0YXRpc3RpY3MtaGVpZ2h0KTsKLSAgICBwYWRkaW5nOiA0cHggMDsKLSAgICBib3JkZXIt
dG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKLX0KLQotLm5ldHdvcmstdGFibGUg
PiAuc3RhdGlzdGljcyA+IC5zdGF0aXN0aWMgewotICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAgcGFk
ZGluZzogMCA4cHg7Ci19Ci0KLS5uZXR3b3JrLXRhYmxlID4gLnN0YXRpc3RpY3MgPiAuc3RhdGlz
dGljW2hpZGRlbl0gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5uZXR3b3JrLXRhYmxlID4g
LnN0YXRpc3RpY3MgPiAuc3RhdGlzdGljID4gLmljb24gewotICAgIHdpZHRoOiAxNnB4OwotICAg
IGhlaWdodDogMTZweDsKLX0KLQotLm5ldHdvcmstdGFibGUgPiAuc3RhdGlzdGljcyA+IC5zdGF0
aXN0aWMgPiAudGV4dCB7Ci0gICAgcGFkZGluZy10b3A6IDFweDsKLSAgICAtd2Via2l0LXBhZGRp
bmctc3RhcnQ6IDRweDsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGw7Ci19Ci0KIEBtZWRp
YSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAuY29udGVudC12aWV3LnRhYi5u
ZXR3b3JrID4gLmNvbnRlbnQtYnJvd3NlciA+IC5uYXZpZ2F0aW9uLWJhciAuaGllcmFyY2hpY2Fs
LXBhdGggLmljb24gewogICAgICAgICBmaWx0ZXI6IGludmVydCg4OCUpOwogICAgIH0KIAotICAg
IC5uZXR3b3JrLXRhYmxlID4gLnRhYmxlIC5jZWxsLmRvbWFpbiA+IC5sb2NrIHsKKyAgICAubmV0
d29yay10YWJsZSAuY2VsbC5kb21haW4gPiAubG9jayB7CiAgICAgICAgIGZpbHRlcjogdmFyKC0t
ZmlsdGVyLWludmVydCk7CiAgICAgfQogCi0gICAgLm5ldHdvcmstdGFibGUgPiAudGFibGUgLmRh
dGEtY29udGFpbmVyIC5jZWxsLm5hbWUgLnJhbmdlIHsKKyAgICAubmV0d29yay10YWJsZSAuZGF0
YS1jb250YWluZXIgLmNlbGwubmFtZSAucmFuZ2UgewogICAgICAgICBjb2xvcjogdmFyKC0tdGV4
dC1jb2xvci1zZWNvbmRhcnkpOwogICAgIH0KLQotICAgIC5uZXR3b3JrLXRhYmxlID4gLnN0YXRp
c3RpY3MgPiAuc3RhdGlzdGljLmRvbWFpbi1jb3VudCA+IC5pY29uIHsKLSAgICAgICAgZmlsdGVy
OiBpbnZlcnQoKTsKLSAgICAgICAgb3BhY2l0eTogMC43OwotICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNv
bnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmV0d29ya1RhYmxlQ29udGVudFZpZXcuanMKaW5kZXggNGU4MzdmYTBhYzRkMTlkZjc4MzljOTZh
NjA4OGM0ZTY1YjE3Zjk3NC4uYjJjZTJhOWU0ZDJiODk5MmRhNmJiMTc3NzFiOWE2MzhmMTg0Y2Yx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmV0d29ya1RhYmxlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuanMKQEAgLTU2LDEwICs1
Niw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIC8vIEZJWE1FOiBOZXR3b3Jr
IFRpbWVsaW5lLgogICAgICAgICAvLyBGSVhNRTogVGhyb3R0bGluZy4KIAotICAgICAgICB0aGlz
Ll9zdGF0aXN0aWNzID0ge307Ci0KLSAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
Im5ldHdvcmstdGFibGUiKTsKLQogICAgICAgICB0aGlzLl90eXBlRmlsdGVyU2NvcGVCYXJJdGVt
QWxsID0gbmV3IFdJLlNjb3BlQmFySXRlbSgibmV0d29yay10eXBlLWZpbHRlci1hbGwiLCBXSS5V
SVN0cmluZygiQWxsIiksIHtleGNsdXNpdmU6IHRydWV9KTsKICAgICAgICAgbGV0IHR5cGVGaWx0
ZXJTY29wZUJhckl0ZW1zID0gW3RoaXMuX3R5cGVGaWx0ZXJTY29wZUJhckl0ZW1BbGxdOwogCkBA
IC0xNjgsNyArMTY0LDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3
b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgV0kuRnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzQWRkZWQsIHRo
aXMuX2hhbmRsZUZyYW1lV2FzQWRkZWQsIHRoaXMpOwogICAgICAgICBXSS5SZXNvdXJjZS5hZGRF
dmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGaW5pc2gsIHRoaXMuX3Jl
c291cmNlTG9hZGluZ0RpZEZpbmlzaCwgdGhpcyk7CiAgICAgICAgIFdJLlJlc291cmNlLmFkZEV2
ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuTG9hZGluZ0RpZEZhaWwsIHRoaXMuX3Jlc291
cmNlTG9hZGluZ0RpZEZhaWwsIHRoaXMpOwotICAgICAgICBXSS5SZXNvdXJjZS5hZGRFdmVudExp
c3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LlNpemVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVJlc291
cmNlU2l6ZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlz
dGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuVHJhbnNmZXJTaXplRGlkQ2hhbmdlLCB0aGlzLl9yZXNv
dXJjZVRyYW5zZmVyU2l6ZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLm5ldHdvcmtNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuTWFpbkZyYW1lRGlk
Q2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOwogCkBAIC0zMDksMTEgKzMw
NCw4IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAKICAgICByZXNldCgpCiAgICAgewotICAg
ICAgICB0aGlzLl9ydW5Gb3JNYWluQ29sbGVjdGlvbigoY29sbGVjdGlvbiwgd2FzTWFpbikgPT4g
eworICAgICAgICB0aGlzLl9ydW5Gb3JNYWluQ29sbGVjdGlvbigoY29sbGVjdGlvbikgPT4gewog
ICAgICAgICAgICAgdGhpcy5fcmVzZXRDb2xsZWN0aW9uKGNvbGxlY3Rpb24pOwotCi0gICAgICAg
ICAgICBpZiAod2FzTWFpbikKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWNz
KCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGZvciAobGV0IGRldGFpbFZpZXcgb2YgdGhpcy5f
ZGV0YWlsVmlld01hcC52YWx1ZXMoKSkKQEAgLTQ1MCw4ICs0NDIsNiBAQCBXSS5OZXR3b3JrVGFi
bGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0ku
Q29udGVudFZpZQogICAgIHsKICAgICAgICAgbGV0IGVudHJ5ID0gdGhpcy5fYWN0aXZlQ29sbGVj
dGlvbi5maWx0ZXJlZEVudHJpZXNbcm93SW5kZXhdOwogCi0gICAgICAgIGNlbGwuY2xhc3NMaXN0
LnRvZ2dsZSgiY3VycmVudC1zZXNzaW9uIiwgZW50cnkuY3VycmVudFNlc3Npb24pOwotCiAgICAg
ICAgIGlmIChlbnRyeS5yZXNvdXJjZSkKICAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnRvZ2ds
ZSgiZXJyb3IiLCBlbnRyeS5yZXNvdXJjZS5oYWRMb2FkaW5nRXJyb3IoKSk7CiAKQEAgLTYxMSw3
ICs2MDEsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJs
ZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICB0aGlzLl91cGRhdGVG
aWx0ZXJlZEVudHJpZXMoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlV2F0ZXJmYWxsVGltZWxpbmVS
dWxlcigpOwogICAgICAgICB0aGlzLl9yZWxvYWRUYWJsZSgpOwotICAgICAgICB0aGlzLl91cGRh
dGVTdGF0aXN0aWNzKCk7CiAgICAgICAgIHRoaXMuX2hpZGVEZXRhaWxWaWV3KCk7CiAKICAgICAg
ICAgdGhpcy5uZWVkc0xheW91dCgpOwpAQCAtMTI0OSwzMSArMTIzOCw2IEBAIFdJLk5ldHdvcmtU
YWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VmllCiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5f
dGFibGUpOwotCi0gICAgICAgIGxldCBzdGF0aXN0aWNzQ29udGFpbmVyID0gdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKLSAgICAgICAgc3Rh
dGlzdGljc0NvbnRhaW5lci5jbGFzc05hbWUgPSAic3RhdGlzdGljcyI7Ci0KLSAgICAgICAgbGV0
IGNyZWF0ZVN0YXRpc3RpY0VsZW1lbnQgPSAobmFtZSwgaW1hZ2UpID0+IHsKLSAgICAgICAgICAg
IGxldCBzdGF0aXN0aWMgPSB0aGlzLl9zdGF0aXN0aWNzW25hbWVdOwotICAgICAgICAgICAgaWYg
KCFzdGF0aXN0aWMpCi0gICAgICAgICAgICAgICAgc3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGlj
c1tuYW1lXSA9IHt9OwotCi0gICAgICAgICAgICBzdGF0aXN0aWMuY29udGFpbmVyID0gc3RhdGlz
dGljc0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7
Ci0gICAgICAgICAgICBzdGF0aXN0aWMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInN0YXRpc3Rp
YyIsIG5hbWUpOwotCi0gICAgICAgICAgICBzdGF0aXN0aWMuY29udGFpbmVyLmFwcGVuZENoaWxk
KFdJLkltYWdlVXRpbGl0aWVzLnVzZVNWR1N5bWJvbChpbWFnZSwgImljb24iKSk7Ci0KLSAgICAg
ICAgICAgIHN0YXRpc3RpYy5lbGVtZW50ID0gc3RhdGlzdGljLmNvbnRhaW5lci5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgICAgICAgICBzdGF0aXN0aWMu
ZWxlbWVudC5jbGFzc05hbWUgPSAidGV4dCI7Ci0gICAgICAgIH07Ci0gICAgICAgIGNyZWF0ZVN0
YXRpc3RpY0VsZW1lbnQoImRvbWFpbi1jb3VudCIsICJJbWFnZXMvT3JpZ2luLnN2ZyIpOwotICAg
ICAgICBjcmVhdGVTdGF0aXN0aWNFbGVtZW50KCJyZXNvdXJjZS1jb3VudCIsICJJbWFnZXMvUmVz
b3VyY2VzLnN2ZyIpOwotICAgICAgICBjcmVhdGVTdGF0aXN0aWNFbGVtZW50KCJyZXNvdXJjZS1z
aXplIiwgIkltYWdlcy9XZWlnaHQuc3ZnIik7Ci0gICAgICAgIGNyZWF0ZVN0YXRpc3RpY0VsZW1l
bnQoInRyYW5zZmVyLXNpemUiLCAiSW1hZ2VzL05ldHdvcmsuc3ZnIik7Ci0gICAgICAgIGNyZWF0
ZVN0YXRpc3RpY0VsZW1lbnQoInJlZGlyZWN0LWNvdW50IiwgIkltYWdlcy9TdGVwT3Zlci5zdmci
KTsKLSAgICAgICAgY3JlYXRlU3RhdGlzdGljRWxlbWVudCgibG9hZC10aW1lIiwgIkltYWdlcy9U
aW1lLnN2ZyIpOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKICAgICB9CiAK
ICAgICBsYXlvdXQoKQpAQCAtMTMwOCw4ICsxMjcyLDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVu
dFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
aWUKIAogICAgICAgICBmb3IgKGxldCByZXNvdXJjZSBvZiByZXNvdXJjZXMpCiAgICAgICAgICAg
ICB0aGlzLl9pbnNlcnRSZXNvdXJjZUFuZFJlbG9hZFRhYmxlKHJlc291cmNlKTsKLQotICAgICAg
ICB0aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7CiAgICAgfQogCiAgICAgaGFuZGxlQ2xlYXJTaG9y
dGN1dChldmVudCkKQEAgLTEzOTcsNyArMTM1OSw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRW
aWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50Vmll
CiAgICAgICAgICAgICAgICAgdGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJsZShyZXNv
dXJjZSk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChjb2xsZWN0aW9uLnBlbmRpbmdJbnNl
cnRpb25zLmxlbmd0aCA9PT0gb3JpZ2luYWxMZW5ndGgpOwogICAgICAgICAgICAgY29sbGVjdGlv
bi5wZW5kaW5nSW5zZXJ0aW9ucyA9IFtdOwotICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlz
dGljcygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0MTcsNyArMTM3
OCw2IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIHRoaXMuX3VwZGF0ZVNvcnQo
KTsKICAgICAgICAgdGhpcy5fdXBkYXRlRmlsdGVyZWRFbnRyaWVzKCk7CiAgICAgICAgIHRoaXMu
X3JlbG9hZFRhYmxlKCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKICAgICB9
CiAKICAgICBfcG9wdWxhdGVXaXRoSW5pdGlhbFJlc291cmNlc0lmTmVlZGVkKGNvbGxlY3Rpb24p
CkBAIC0xNTA1LDggKzE0NjUsNiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNz
IE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHVwZGF0ZUV4aXN0aW5nRW50cnkoY29sbGVjdGlvbi5maWx0
ZXJlZEVudHJpZXNbcm93SW5kZXhdLCBlbnRyeSk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3Rh
dGlzdGljcygpOwogICAgIH0KIAogICAgIF9oaWRlUG9wb3ZlcigpCkBAIC0xNjM3LDMzICsxNTk1
LDIzIEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAKICAgICBfbWFpblJlc291cmNlRGlkQ2hh
bmdlKGV2ZW50KQogICAgIHsKLSAgICAgICAgbGV0IGZyYW1lID0gZXZlbnQudGFyZ2V0OwotCi0g
ICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpICYmICF0aGlzLl90cmFuc2l0aW9uaW5nUGFn
ZVRhcmdldCkKLSAgICAgICAgICAgIHRoaXMuX3N0YXJ0VXBkYXRpbmdMb2FkVGltZVN0YXRpc3Rp
YygpOwotCiAgICAgICAgIHRoaXMuX3J1bkZvck1haW5Db2xsZWN0aW9uKChjb2xsZWN0aW9uLCB3
YXNNYWluKSA9PiB7Ci0gICAgICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewotICAg
ICAgICAgICAgICAgIGlmIChXSS5zZXR0aW5ncy5jbGVhck5ldHdvcmtPbk5hdmlnYXRlLnZhbHVl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29sbGVjdGlvbihjb2xsZWN0aW9u
KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAod2FzTWFpbiAmJiAhdGhpcy5fbmVlZHNJbml0
aWFsUG9wdWxhdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9oaWRlRGV0YWlsVmll
dygpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAo
bGV0IGVudHJ5IG9mIGNvbGxlY3Rpb24uZW50cmllcykKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVudHJ5LmN1cnJlbnRTZXNzaW9uID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbGV0IGZyYW1lID0gZXZlbnQudGFyZ2V0OworICAgICAgICAgICAgaWYgKGZyYW1lLmlz
TWFpbkZyYW1lKCkgJiYgV0kuc2V0dGluZ3MuY2xlYXJOZXR3b3JrT25OYXZpZ2F0ZS52YWx1ZSkg
eworICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29sbGVjdGlvbihjb2xsZWN0aW9uKTsKKwor
ICAgICAgICAgICAgICAgIGlmICh3YXNNYWluICYmICF0aGlzLl9uZWVkc0luaXRpYWxQb3B1bGF0
ZSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5faGlkZURldGFpbFZpZXcoKTsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0KSB7
CiAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICB0aGlzLl9uZWVkc0luaXRpYWxQb3B1bGF0ZSA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVXaXRoSW5pdGlhbFJlc291cmNlc0lmTmVlZGVkKGNv
bGxlY3Rpb24pOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5faW5z
ZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJsZShmcmFtZS5tYWluUmVzb3VyY2UpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHdhc01haW4p
Ci0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOworICAgICAgICAgICAg
dGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJsZShmcmFtZS5tYWluUmVzb3VyY2UpOwog
ICAgICAgICB9KTsKICAgICB9CiAKQEAgLTE3MDYsNDEgKzE2NTQsNiBAQCBXSS5OZXR3b3JrVGFi
bGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0ku
Q29udGVudFZpZQogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBfaGFuZGxlUmVzb3VyY2VTaXpl
RGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl90YWJsZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9ydW5Gb3JNYWluQ29sbGVjdGlvbigoY29s
bGVjdGlvbiwgd2FzTWFpbikgPT4gewotICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQu
dGFyZ2V0OwotCi0gICAgICAgICAgICAvLyBJbiB0aGUgdW5saWtlbHkgZXZlbnQgdGhhdCB0aGlz
IGlzIHRoZSBzb3J0IGNvbHVtbiwgd2UgbWF5IG5lZWQgdG8gcmVzb3J0LgotICAgICAgICAgICAg
aWYgKHRoaXMuX3RhYmxlLnNvcnRDb2x1bW5JZGVudGlmaWVyID09PSAicmVzb3VyY2VTaXplIikg
ewotICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ucGVuZGluZ1VwZGF0ZXMucHVzaChyZXNvdXJj
ZSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbGV0IGluZGV4ID0gY29sbGVj
dGlvbi5lbnRyaWVzLmZpbmRJbmRleCgoeCkgPT4geC5yZXNvdXJjZSA9PT0gcmVzb3VyY2UpOwot
ICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIGxldCBlbnRyeSA9IGNvbGxlY3Rpb24uZW50cmllc1tpbmRleF07Ci0gICAg
ICAgICAgICBlbnRyeS5yZXNvdXJjZVNpemUgPSByZXNvdXJjZS5zaXplOwotCi0gICAgICAgICAg
ICBpZiAoIXdhc01haW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBs
ZXQgcm93SW5kZXggPSB0aGlzLl9yb3dJbmRleEZvclJlcHJlc2VudGVkT2JqZWN0KHJlc291cmNl
KTsKLSAgICAgICAgICAgIGlmIChyb3dJbmRleCA9PT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICB0aGlzLl90YWJsZS5yZWxvYWRDZWxsKHJvd0luZGV4LCAicmVz
b3VyY2VTaXplIik7Ci0KLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKLSAg
ICAgICAgfSk7Ci0gICAgfQotCiAgICAgX3Jlc291cmNlVHJhbnNmZXJTaXplRGlkQ2hhbmdlKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl90YWJsZSkKQEAgLTE3NzEsMTggKzE2ODQs
MTMgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250
ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgICAgIHRoaXMuX3RhYmxlLnJlbG9hZENlbGwocm93SW5kZXgsICJ0cmFuc2ZlclNp
emUiKTsKLQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdGlzdGljcygpOwogICAgICAgICB9
KTsKICAgICB9CiAKICAgICBfaGFuZGxlUmVzb3VyY2VBZGRlZChldmVudCkKICAgICB7Ci0gICAg
ICAgIHRoaXMuX3J1bkZvck1haW5Db2xsZWN0aW9uKChjb2xsZWN0aW9uLCB3YXNNYWluKSA9PiB7
CisgICAgICAgIHRoaXMuX3J1bkZvck1haW5Db2xsZWN0aW9uKChjb2xsZWN0aW9uKSA9PiB7CiAg
ICAgICAgICAgICB0aGlzLl9pbnNlcnRSZXNvdXJjZUFuZFJlbG9hZFRhYmxlKGV2ZW50LmRhdGEu
cmVzb3VyY2UpOwotCi0gICAgICAgICAgICBpZiAod2FzTWFpbikKLSAgICAgICAgICAgICAgICB0
aGlzLl91cGRhdGVTdGF0aXN0aWNzKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMTc5MSwx
NSArMTY5OSwxMiBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtU
YWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZQogICAgICAgICBpZiAodGhpcy5f
bmVlZHNJbml0aWFsUG9wdWxhdGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhp
cy5fcnVuRm9yTWFpbkNvbGxlY3Rpb24oKGNvbGxlY3Rpb24sIHdhc01haW4pID0+IHsKKyAgICAg
ICAgdGhpcy5fcnVuRm9yTWFpbkNvbGxlY3Rpb24oKGNvbGxlY3Rpb24pID0+IHsKICAgICAgICAg
ICAgIGxldCBmcmFtZSA9IGV2ZW50LmRhdGEuY2hpbGRGcmFtZTsKICAgICAgICAgICAgIGxldCBt
YWluUmVzb3VyY2UgPSBmcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZSB8fCBmcmFtZS5tYWlu
UmVzb3VyY2U7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChtYWluUmVzb3VyY2UsICJGcmFt
ZSBzaG91bGQgaGF2ZSBhIG1haW4gcmVzb3VyY2UuIik7CiAgICAgICAgICAgICB0aGlzLl9pbnNl
cnRSZXNvdXJjZUFuZFJlbG9hZFRhYmxlKG1haW5SZXNvdXJjZSk7CiAKLSAgICAgICAgICAgIGlm
ICh3YXNNYWluKQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpY3MoKTsKLQog
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWZyYW1lLnJlc291cmNlQ29sbGVjdGlvbi5zaXpl
LCAiTmV3IGZyYW1lIHNob3VsZCBiZSBlbXB0eS4iKTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFmcmFtZS5jaGlsZEZyYW1lQ29sbGVjdGlvbi5zaXplLCAiTmV3IGZyYW1lIHNob3VsZCBi
ZSBlbXB0eS4iKTsKICAgICAgICAgfSk7CkBAIC0xOTAzLDcgKzE4MDgsNiBAQCBXSS5OZXR3b3Jr
VGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudFZpZQogICAgICAgICAgICAgcmVtb3RlQWRkcmVzczogcmVzb3VyY2UucmVtb3Rl
QWRkcmVzcywKICAgICAgICAgICAgIGNvbm5lY3Rpb25JZGVudGlmaWVyOiByZXNvdXJjZS5jb25u
ZWN0aW9uSWRlbnRpZmllciwKICAgICAgICAgICAgIHN0YXJ0VGltZTogcmVzb3VyY2UuZmlyc3RU
aW1lc3RhbXAsCi0gICAgICAgICAgICBjdXJyZW50U2Vzc2lvbjogdHJ1ZSwKICAgICAgICAgfTsK
ICAgICB9CiAKQEAgLTIwNzAsMTMxICsxOTc0LDYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZp
ZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUK
ICAgICAgICAgdGhpcy5fdXBkYXRlRW1wdHlGaWx0ZXJSZXN1bHRzTWVzc2FnZSgpOwogICAgIH0K
IAotICAgIF91cGRhdGVTdGF0aXN0aWNzKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5kaWRJ
bml0aWFsTGF5b3V0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxldCBlbnRyaWVz
ID0gdGhpcy5fYWN0aXZlQ29sbGVjdGlvbi5lbnRyaWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5
LmN1cnJlbnRTZXNzaW9uKTsKLQotICAgICAgICBsZXQgZG9tYWlucyA9IG5ldyBTZXQ7Ci0gICAg
ICAgIGxldCByZXNvdXJjZVNpemUgPSAwOwotICAgICAgICBsZXQgdHJhbnNmZXJTaXplID0gMDsK
LSAgICAgICAgbGV0IHJlZGlyZWN0Q291bnQgPSAwOwotICAgICAgICBmb3IgKGxldCBlbnRyeSBv
ZiBlbnRyaWVzKSB7Ci0gICAgICAgICAgICBkb21haW5zLmFkZChlbnRyeS5kb21haW4pOwotICAg
ICAgICAgICAgaWYgKCFpc05hTihlbnRyeS5yZXNvdXJjZVNpemUpKQotICAgICAgICAgICAgICAg
IHJlc291cmNlU2l6ZSArPSBlbnRyeS5yZXNvdXJjZVNpemU7Ci0gICAgICAgICAgICBpZiAoIWlz
TmFOKGVudHJ5LnRyYW5zZmVyU2l6ZSkpCi0gICAgICAgICAgICAgICAgdHJhbnNmZXJTaXplICs9
IGVudHJ5LnRyYW5zZmVyU2l6ZTsKLSAgICAgICAgICAgIGlmIChlbnRyeS5yZXNvdXJjZSkKLSAg
ICAgICAgICAgICAgICByZWRpcmVjdENvdW50ICs9IGVudHJ5LnJlc291cmNlLnJlZGlyZWN0cy5s
ZW5ndGg7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0aWMoImRvbWFp
bi1jb3VudCIsIGRvbWFpbnMuc2l6ZSA9PT0gMSA/IFdJLlVJU3RyaW5nKCIlZCBkb21haW4iKSA6
IFdJLlVJU3RyaW5nKCIlZCBkb21haW5zIiksIGRvbWFpbnMuc2l6ZSk7Ci0KLSAgICAgICAgbGV0
IHJlc291cmNlQ291bnQgPSBlbnRyaWVzLmxlbmd0aDsKLSAgICAgICAgdGhpcy5fdXBkYXRlU3Rh
dGlzdGljKCJyZXNvdXJjZS1jb3VudCIsIHJlc291cmNlQ291bnQgPT09IDEgPyBXSS5VSVN0cmlu
ZygiJWQgcmVzb3VyY2UiKSA6IFdJLlVJU3RyaW5nKCIlZCByZXNvdXJjZXMiKSwgcmVzb3VyY2VD
b3VudCk7Ci0KLSAgICAgICAgY29uc3QgaGlnaGVyUmVzb2x1dGlvbiA9IGZhbHNlOwotICAgICAg
ICB0aGlzLl91cGRhdGVTdGF0aXN0aWMoInJlc291cmNlLXNpemUiLCBXSS5VSVN0cmluZygiJXMg
dG90YWwiKSwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcocmVzb3VyY2VTaXplLCBoaWdoZXJSZXNvbHV0
aW9uKSk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpYygidHJhbnNmZXItc2l6ZSIsIFdJ
LlVJU3RyaW5nKCIlcyB0cmFuc2ZlcnJlZCIpLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0cmFuc2Zl
clNpemUsIGhpZ2hlclJlc29sdXRpb24pKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0aXN0
aWMoInJlZGlyZWN0LWNvdW50IiwgcmVkaXJlY3RDb3VudCA9PT0gMSA/IFdJLlVJU3RyaW5nKCIl
ZCByZWRpcmVjdCIpIDogV0kuVUlTdHJpbmcoIiVkIHJlZGlyZWN0cyIpLCByZWRpcmVjdENvdW50
KTsKLQotICAgICAgICBsZXQgbG9hZFRpbWVTdGF0aXN0aWMgPSB0aGlzLl9zdGF0aXN0aWNzWyJs
b2FkLXRpbWUiXTsKLSAgICAgICAgaWYgKGxvYWRUaW1lU3RhdGlzdGljLmZvcm1hdCAmJiB0aGlz
Ll9pc1Nob3dpbmdNYWluQ29sbGVjdGlvbigpKSB7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVT
dGF0aXN0aWMoImxvYWQtdGltZSIpOwotICAgICAgICAgICAgbG9hZFRpbWVTdGF0aXN0aWMuY29u
dGFpbmVyLmhpZGRlbiA9IGZhbHNlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGxvYWRU
aW1lU3RhdGlzdGljLmNvbnRhaW5lci5oaWRkZW4gPSB0cnVlOwotICAgIH0KLQotICAgIF91cGRh
dGVTdGF0aXN0aWMobmFtZSwgZm9ybWF0LCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGxldCBzdGF0
aXN0aWMgPSB0aGlzLl9zdGF0aXN0aWNzW25hbWVdOwotCi0gICAgICAgIGlmIChmb3JtYXQpCi0g
ICAgICAgICAgICBzdGF0aXN0aWMuZm9ybWF0ID0gZm9ybWF0OwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBmb3JtYXQgPSBzdGF0aXN0aWMuZm9ybWF0OwotCi0gICAgICAgIGlmICh2YWx1ZSB8
fCB2YWx1ZSA9PT0gMCkKLSAgICAgICAgICAgIHN0YXRpc3RpYy52YWx1ZSA9IHZhbHVlOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB2YWx1ZSA9IHN0YXRpc3RpYy52YWx1ZTsKLQotICAgICAg
ICBpZiAoc3RhdGlzdGljLmNvbnRhaW5lcikKLSAgICAgICAgICAgIHN0YXRpc3RpYy5jb250YWlu
ZXIudGl0bGUgPSBmb3JtYXQuZm9ybWF0KHZhbHVlKTsKLQotICAgICAgICBpZiAoc3RhdGlzdGlj
LmVsZW1lbnQpCi0gICAgICAgICAgICBzdGF0aXN0aWMuZWxlbWVudC50ZXh0Q29udGVudCA9IHZh
bHVlOwotICAgIH0KLQotICAgIF9zdGFydFVwZGF0aW5nTG9hZFRpbWVTdGF0aXN0aWMoKQotICAg
IHsKLSAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nTG9hZFRpbWVTdGF0aXN0aWMoKTsKLQotICAg
ICAgICBsZXQgbG9hZFRpbWVTdGF0aXN0aWMgPSB0aGlzLl9zdGF0aXN0aWNzWyJsb2FkLXRpbWUi
XTsKLSAgICAgICAgaWYgKCFsb2FkVGltZVN0YXRpc3RpYykKLSAgICAgICAgICAgIGxvYWRUaW1l
U3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGljc1sibG9hZC10aW1lIl0gPSB7fTsKLQotICAgICAg
ICBsb2FkVGltZVN0YXRpc3RpYy5zdGFydCA9IERhdGUubm93KCk7Ci0gICAgICAgIGxvYWRUaW1l
U3RhdGlzdGljLmRlbGF5ID0gNTA7Ci0gICAgICAgIGxvYWRUaW1lU3RhdGlzdGljLnRpbWVyID0g
c2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlTG9hZFRpbWVTdGF0aXN0aWMuYmluZCh0aGlzKSwgbG9h
ZFRpbWVTdGF0aXN0aWMuZGVsYXkpOwotICAgIH0KLQotICAgIF9zdG9wVXBkYXRpbmdMb2FkVGlt
ZVN0YXRpc3RpYygpCi0gICAgewotICAgICAgICBsZXQgbG9hZFRpbWVTdGF0aXN0aWMgPSB0aGlz
Ll9zdGF0aXN0aWNzWyJsb2FkLXRpbWUiXTsKLSAgICAgICAgaWYgKCFsb2FkVGltZVN0YXRpc3Rp
YykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAobG9hZFRpbWVTdGF0aXN0aWMu
dGltZXIpIHsKLSAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobG9hZFRpbWVTdGF0aXN0aWMudGlt
ZXIpOwotICAgICAgICAgICAgbG9hZFRpbWVTdGF0aXN0aWMudGltZXIgPSB1bmRlZmluZWQ7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBfdXBkYXRlTG9hZFRpbWVTdGF0aXN0aWMoKQotICAgIHsK
LSAgICAgICAgbGV0IGxvYWRUaW1lU3RhdGlzdGljID0gdGhpcy5fc3RhdGlzdGljc1sibG9hZC10
aW1lIl07Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvYWRUaW1lU3RhdGlzdGljKTsKLQotICAg
ICAgICBsZXQgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gbG9hZFRpbWVTdGF0aXN0aWMuc3RhcnQ7
Ci0KLSAgICAgICAgbGV0IGRlbGF5ID0gbG9hZFRpbWVTdGF0aXN0aWMuZGVsYXk7Ci0gICAgICAg
IGlmIChkdXJhdGlvbiA+PSAxMDAwKSAvLyAxIHNlY29uZAotICAgICAgICAgICAgZGVsYXkgPSAx
MDA7Ci0gICAgICAgIGVsc2UgaWYgKGR1cmF0aW9uID49IDYwMDAwKSAvLyA2MCBzZWNvbmRzCi0g
ICAgICAgICAgICBkZWxheSA9IDEwMDA7Ci0gICAgICAgIGVsc2UgaWYgKGR1cmF0aW9uID49IDM2
MDAwMDApIC8vIDEgbWludXRlCi0gICAgICAgICAgICBkZWxheSA9IDEwMDAwOwotCi0gICAgICAg
IGlmIChkZWxheSAhPT0gbG9hZFRpbWVTdGF0aXN0aWMuZGVsYXkpIHsKLSAgICAgICAgICAgIGxv
YWRUaW1lU3RhdGlzdGljLmRlbGF5ID0gZGVsYXk7Ci0KLSAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwobG9hZFRpbWVTdGF0aXN0aWMudGltZXIpOwotICAgICAgICAgICAgbG9hZFRpbWVTdGF0aXN0
aWMudGltZXIgPSBzZXRJbnRlcnZhbCh0aGlzLl91cGRhdGVMb2FkVGltZVN0YXRpc3RpYy5iaW5k
KHRoaXMpLCBsb2FkVGltZVN0YXRpc3RpYy5kZWxheSk7Ci0gICAgICAgIH0KLQotICAgICAgICBs
ZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwotICAgICAgICBsZXQg
bWFpbkZyYW1lU3RhcnRUaW1lID0gbWFpbkZyYW1lLm1haW5SZXNvdXJjZS5maXJzdFRpbWVzdGFt
cDsKLSAgICAgICAgbGV0IG1haW5GcmFtZUxvYWRFdmVudFRpbWUgPSBtYWluRnJhbWUubG9hZEV2
ZW50VGltZXN0YW1wOwotCi0gICAgICAgIGlmIChsb2FkVGltZVN0YXRpc3RpYy5jb250YWluZXIp
Ci0gICAgICAgICAgICBsb2FkVGltZVN0YXRpc3RpYy5jb250YWluZXIuaGlkZGVuID0gIXRoaXMu
X2lzU2hvd2luZ01haW5Db2xsZWN0aW9uKCk7Ci0KLSAgICAgICAgaWYgKGlzTmFOKG1haW5GcmFt
ZVN0YXJ0VGltZSkgfHwgaXNOYU4obWFpbkZyYW1lTG9hZEV2ZW50VGltZSkpIHsKLSAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZVN0YXRpc3RpYygibG9hZC10aW1lIiwgV0kuVUlTdHJpbmcoIkxvYWRp
bmcgZm9yICVzIiksIE51bWJlci5zZWNvbmRzVG9TdHJpbmcoZHVyYXRpb24gLyAxMDAwKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0
aXN0aWMoImxvYWQtdGltZSIsIFdJLlVJU3RyaW5nKCJMb2FkZWQgaW4gJXMiKSwgTnVtYmVyLnNl
Y29uZHNUb1N0cmluZyhtYWluRnJhbWVMb2FkRXZlbnRUaW1lIC0gbWFpbkZyYW1lU3RhcnRUaW1l
KSk7Ci0KLSAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nTG9hZFRpbWVTdGF0aXN0aWMoKTsKLSAg
ICB9Ci0KICAgICBfcmVsb2FkVGFibGUoKQogICAgIHsKICAgICAgICAgdGhpcy5fdGFibGUucmVs
b2FkRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiMjk5
YjVhZmY1ZGI2OTNkNzRhMTVjNzZjZmUyYTQ0ZTVjY2UwNGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmll
dy5jc3MKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5uZXctdGFiLnRhYi5jb250ZW50
LXZpZXcgeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleC1mbG93OiByb3cgd3JhcDsKKyAg
ICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKKyAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7Cisg
ICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKworICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAw
JSwgOTYlKTsKKworICAgIHBhZGRpbmc6IDEwcHg7CisKKyAgICBvdmVyZmxvdy15OiBhdXRvOwor
fQorCisubmV3LXRhYi50YWIuY29udGVudC12aWV3ID4gLnRhYi1pdGVtIHsKKyAgICBkaXNwbGF5
OiBmbGV4OworCisgICAgbWluLXdpZHRoOiAxMTBweDsKKyAgICBtaW4taGVpZ2h0OiAxMTBweDsK
KworICAgIG1hcmdpbjogMTBweDsKKworICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CisgICAg
YWxpZ24taXRlbXM6IGNlbnRlcjsKK30KKworLm5ldy10YWIudGFiLmNvbnRlbnQtdmlldyA+IC50
YWItaXRlbS5kaXNhYmxlZCB7CisgICAgb3BhY2l0eTogMC41OworICAgIGZpbHRlcjogYnJpZ2h0
bmVzcyg5MCUpOworfQorCisubmV3LXRhYi50YWIuY29udGVudC12aWV3ID4gLnRhYi1pdGVtID4g
LmJveCB7CisgICAgd2lkdGg6IDk0cHg7CisgICAgaGVpZ2h0OiA5NHB4OworCisgICAgcGFkZGlu
ZzogMTVweDsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7CisKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBoc2woMCwgMCUsIDgyJSk7CisgICAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUsIDAuMzMp
IDAgMXB4IDZweDsKKworICAgIGRpc3BsYXk6IGJsb2NrOworfQorCisubmV3LXRhYi50YWIuY29u
dGVudC12aWV3ID4gLnRhYi1pdGVtOm5vdCguZGlzYWJsZWQpOmhvdmVyID4gLmJveCB7CisgICAg
ZmlsdGVyOiBicmlnaHRuZXNzKDkwJSk7Cit9CisKKy5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcg
PiAudGFiLWl0ZW06bm90KC5kaXNhYmxlZCk6YWN0aXZlID4gLmJveCB7CisgICAgZmlsdGVyOiBi
cmlnaHRuZXNzKDc1JSk7Cit9CisKKy5uZXctdGFiLnRhYi5jb250ZW50LXZpZXcgPiAudGFiLWl0
ZW0gPiAuYm94ID4gaW1nIHsKKyAgICB3aWR0aDogNjRweDsKKyAgICBoZWlnaHQ6IDY0cHg7CisK
KyAgICBvcGFjaXR5OiAwLjU1OyAvKiBBc3N1bWVzIGJsYWNrIGdseXBocy4gKi8KKworICAgIC13
ZWJraXQtdXNlci1kcmFnOiBub25lOworfQorCisubmV3LXRhYi50YWIuY29udGVudC12aWV3ID4g
LnRhYi1pdGVtID4gbGFiZWwgeworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIG1hcmdpbi10b3A6
IDhweDsKK30KKworQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgeworICAgIC5u
ZXctdGFiLnRhYi5jb250ZW50LXZpZXcgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1iYWNrZ3JvdW5kLWNvbG9yLWNvbnRlbnQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVu
dFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTliMjM1ZmUwZjM0ZjcwMDZhNzM0YjY2ZGU4OTkxZmQ5ZWU0
YTJmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworV0kuTmV3VGFiQ29udGVudFZpZXcgPSBjbGFzcyBOZXdUYWJDb250ZW50VmlldyBleHRl
bmRzIFdJLlRhYkNvbnRlbnRWaWV3Cit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKKyAg
ICB7CisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRh
YkluZm8oV0kuTmV3VGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKyAgICAgICAgdGFiQmFySXRl
bS5pc0RlZmF1bHRUYWIgPSB0cnVlOworCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgIm5l
dy10YWIiLCAibmV3LXRhYiIsIHRhYkJhckl0ZW0pOworCisgICAgICAgIHRoaXMuX3RhYkVsZW1l
bnRzQnlUYWJDbGFzcyA9IG5ldyBNYXA7CisKKyAgICAgICAgbGV0IGFsbFRhYkNsYXNzZXMgPSBB
cnJheS5mcm9tKFdJLmtub3duVGFiQ2xhc3NlcygpKTsKKyAgICAgICAgdGhpcy5fc2hvd25UYWJD
bGFzc2VzID0gYWxsVGFiQ2xhc3Nlcy5maWx0ZXIoKHRhYkNsYXNzKSA9PiB0YWJDbGFzcy5pc1Rh
YkFsbG93ZWQoKSAmJiAhdGFiQ2xhc3MudGFiSW5mbygpLmlzRXBoZW1lcmFsKTsKKyAgICAgICAg
dGhpcy5fc2hvd25UYWJDbGFzc2VzLnNvcnQoKGEsIGIpID0+IGEudGFiSW5mbygpLnRpdGxlLmV4
dGVuZGVkTG9jYWxlQ29tcGFyZShiLnRhYkluZm8oKS50aXRsZSkpOworICAgIH0KKworICAgIHN0
YXRpYyB0YWJJbmZvKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBpbWFn
ZTogIkltYWdlcy9OZXdUYWIuc3ZnIiwKKyAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygi
TmV3IFRhYiIpLAorICAgICAgICAgICAgaXNFcGhlbWVyYWw6IHRydWUsCisgICAgICAgIH07Cisg
ICAgfQorCisgICAgc3RhdGljIHNob3VsZFNhdmVUYWIoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHR5cGUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFdJLk5ld1RhYkNvbnRlbnRWaWV3LlR5cGU7CisgICAgfQorCisgICAg
c2hvd24oKQorICAgIHsKKyAgICAgICAgV0kudGFiQmFyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFi
QmFyLkV2ZW50LlRhYkJhckl0ZW1BZGRlZCwgdGhpcy5fdXBkYXRlVGFiSXRlbXMsIHRoaXMpOwor
ICAgICAgICBXSS50YWJCYXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYWJCYXIuRXZlbnQuVGFiQmFy
SXRlbVJlbW92ZWQsIHRoaXMuX3VwZGF0ZVRhYkl0ZW1zLCB0aGlzKTsKKworICAgICAgICB0aGlz
Ll91cGRhdGVUYWJJdGVtcygpOworICAgIH0KKworICAgIGhpZGRlbigpCisgICAgeworICAgICAg
ICBXSS50YWJCYXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAgICB9
CisKKyAgICBnZXQgc3VwcG9ydHNTcGxpdENvbnRlbnRCcm93c2VyKCkKKyAgICB7CisgICAgICAg
IC8vIFNob3dpbmcgdGhlIHNwbGl0IGNvbnNvbGUgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSBzb21l
IG5ldyB0YWJzIHdpbGwgY2F1c2UgaXQgdG8KKyAgICAgICAgLy8gZGlzYXBwZWFyIGFuZCBub3Qg
cmVhcHBlYXIsIGJ1dCBvdGhlcnMgd29uJ3QuIEp1c3QgcHJldmVudCBpdCBmcm9tIGV2ZXIgc2hv
d2luZy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGxheW91dCgpCisgICAg
eworICAgICAgICB0aGlzLl90YWJFbGVtZW50c0J5VGFiQ2xhc3MuY2xlYXIoKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgZm9yIChsZXQgdGFiQ2xh
c3Mgb2YgdGhpcy5fc2hvd25UYWJDbGFzc2VzKSB7CisgICAgICAgICAgICBsZXQgdGFiSXRlbUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHRhYkl0
ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1pdGVtIik7CisgICAgICAgICAgICB0YWJJdGVt
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NyZWF0ZU5ld1RhYldpdGhU
eXBlLmJpbmQodGhpcywgdGFiQ2xhc3MuVHlwZSkpOworICAgICAgICAgICAgdGFiSXRlbUVsZW1l
bnRbV0kuTmV3VGFiQ29udGVudFZpZXcuVHlwZVN5bWJvbF0gPSB0YWJDbGFzcy5UeXBlOworCisg
ICAgICAgICAgICBsZXQgYm94RWxlbWVudCA9IHRhYkl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICAgICAgICAgIGJveEVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgiYm94Iik7CisKKyAgICAgICAgICAgIGxldCBpbmZvID0gdGFiQ2xhc3MudGFi
SW5mbygpOworICAgICAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGJveEVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOworICAgICAgICAgICAgaW1hZ2VF
bGVtZW50LnNyYyA9IGluZm8uaW1hZ2U7CisKKyAgICAgICAgICAgIGxldCBsYWJlbEVsZW1lbnQg
PSB0YWJJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJl
bCIpKTsKKyAgICAgICAgICAgIGxhYmVsRWxlbWVudC50ZXh0Q29udGVudCA9IGluZm8udGl0bGU7
CisKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0YWJJdGVtRWxlbWVudCk7
CisgICAgICAgICAgICB0aGlzLl90YWJFbGVtZW50c0J5VGFiQ2xhc3Muc2V0KHRhYkNsYXNzLCB0
YWJJdGVtRWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl91cGRhdGVUYWJJdGVt
cygpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9jcmVhdGVOZXdUYWJXaXRoVHlw
ZSh0YWJUeXBlLCBldmVudCkKKyAgICB7CisgICAgICAgIGlmICghV0kuaXNOZXdUYWJXaXRoVHlw
ZUFsbG93ZWQodGFiVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3Qg
Y2FuQ3JlYXRlQWRkaXRpb25hbFRhYnMgPSB0aGlzLl9hbGxvd2FibGVUYWJUeXBlcygpLmxlbmd0
aCA+IDE7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICByZWZlcmVuY2Vk
VmlldzogdGhpcywKKyAgICAgICAgICAgIHNob3VsZFJlcGxhY2VUYWI6ICFjYW5DcmVhdGVBZGRp
dGlvbmFsVGFicyB8fCAhV0kubW9kaWZpZXJLZXlzLm1ldGFLZXksCisgICAgICAgICAgICBzaG91
bGRTaG93TmV3VGFiOiAhV0kubW9kaWZpZXJLZXlzLm1ldGFLZXksCisgICAgICAgICAgICBpbml0
aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQnV0dG9uQ2xp
Y2ssCisgICAgICAgIH07CisgICAgICAgIFdJLmNyZWF0ZU5ld1RhYldpdGhUeXBlKHRhYlR5cGUs
IG9wdGlvbnMpOworICAgIH0KKworICAgIF9hbGxvd2FibGVUYWJUeXBlcygpCisgICAgeworICAg
ICAgICBsZXQgdGFiVHlwZXMgPSB0aGlzLl9zaG93blRhYkNsYXNzZXMubWFwKCh0YWJDbGFzcykg
PT4gdGFiQ2xhc3MuVHlwZSk7CisgICAgICAgIHJldHVybiB0YWJUeXBlcy5maWx0ZXIoKHR5cGUp
ID0+IFdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKHR5cGUpKTsKKyAgICB9CisKKyAgICBfdXBk
YXRlVGFiSXRlbXMoKQorICAgIHsKKyAgICAgICAgZm9yIChsZXQgW3RhYkNsYXNzLCB0YWJJdGVt
RWxlbWVudF0gb2YgdGhpcy5fdGFiRWxlbWVudHNCeVRhYkNsYXNzLmVudHJpZXMoKSkgeworICAg
ICAgICAgICAgbGV0IGFsbG93ZWQgPSBXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZCh0YWJDbGFz
cy5UeXBlKTsKKyAgICAgICAgICAgIHRhYkl0ZW1FbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV0ku
TmV3VGFiQ29udGVudFZpZXcuRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSwgIWFsbG93ZWQpOworICAg
ICAgICB9CisgICAgfQorfTsKKworV0kuTmV3VGFiQ29udGVudFZpZXcuVHlwZSA9ICJuZXctdGFi
IjsKK1dJLk5ld1RhYkNvbnRlbnRWaWV3LlR5cGVTeW1ib2wgPSBTeW1ib2woInR5cGUiKTsKKwor
V0kuTmV3VGFiQ29udGVudFZpZXcuVGFiSXRlbVN0eWxlQ2xhc3NOYW1lID0gInRhYi1pdGVtIjsK
K1dJLk5ld1RhYkNvbnRlbnRWaWV3LkRpc2FibGVkU3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UGlubmVkVGFiQmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Bpbm5lZFRhYkJhckl0ZW0uanMKaW5kZXggZDU4MjAzYjYxMjhiYzFkNDcwMmNhNmVj
YzFhOGRlYTZiODg4OWJjNC4uOWIwYmNjNzE2ZDRmMzJlZDlkZTdhYzNjZjZhNWY2NWY5NjU3ZmVh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UGlubmVkVGFiQmFySXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9QaW5uZWRUYWJCYXJJdGVtLmpzCkBAIC0yNSwyNyArMjUsMzcgQEAKIAogV0ku
UGlubmVkVGFiQmFySXRlbSA9IGNsYXNzIFBpbm5lZFRhYkJhckl0ZW0gZXh0ZW5kcyBXSS5UYWJC
YXJJdGVtCiB7Ci0gICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QsIGltYWdlLCB0aXRs
ZSkKKyAgICBjb25zdHJ1Y3RvcihpbWFnZSwgdGl0bGUpCiAgICAgewotICAgICAgICBzdXBlcihy
ZXByZXNlbnRlZE9iamVjdCwgaW1hZ2UsIHRpdGxlKTsKKyAgICAgICAgc3VwZXIoaW1hZ2UsIHRp
dGxlKTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicGlubmVkIik7Ci0g
ICAgfQogCi0gICAgLy8gU3RhdGljCisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlz
KSk7CisgICAgfQogCi0gICAgc3RhdGljIGZyb21UYWJDb250ZW50Vmlldyh0YWJDb250ZW50Vmll
dykKKyAgICBzdGF0aWMgZnJvbVRhYkluZm8oe2ltYWdlLCB0aXRsZX0pCiAgICAgewotICAgICAg
ICBjb25zb2xlLmFzc2VydCh0YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlRhYkNvbnRlbnRW
aWV3KTsKLQotICAgICAgICBsZXQge2ltYWdlLCB0aXRsZX0gPSB0YWJDb250ZW50Vmlldy5jb25z
dHJ1Y3Rvci50YWJJbmZvKCk7Ci0gICAgICAgIHJldHVybiBuZXcgV0kuUGlubmVkVGFiQmFySXRl
bSh0YWJDb250ZW50VmlldywgaW1hZ2UsIHRpdGxlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXSS5Q
aW5uZWRUYWJCYXJJdGVtKGltYWdlLCB0aXRsZSk7CiAgICAgfQogCi0gICAgLy8gUHJvdGVjdGVk
Ci0KICAgICB0aXRsZURpZENoYW5nZSgpCiAgICAgewogICAgICAgICB0aGlzLmVsZW1lbnQudGl0
bGUgPSB0aGlzLnRpdGxlOwogICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9oYW5kbGVD
b250ZXh0TWVudUV2ZW50KGV2ZW50KQorICAgIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKKworICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXSS5Db250ZXh0TWVudS5jcmVhdGVG
cm9tRXZlbnQoZXZlbnQpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLlBpbm5lZFRhYkJhckl0ZW0uRXZlbnQuQ29udGV4dE1lbnUsIHtjb250ZXh0TWVudX0pOwor
ICAgIH0KK307CisKK1dJLlBpbm5lZFRhYkJhckl0ZW0uRXZlbnQgPSB7CisgICAgQ29udGV4dE1l
bnU6ICJwaW5uZWQtdGFiLWJhci1pdGVtLWNvbnRleHQtbWVudSIsCiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xl
LmpzCmluZGV4IDA2YmJjOTUxOTYzNTkwNzliODg1NmVjYmY0ZDZiMzkzZDY1MzFiMTkuLjlkMjM0
YjIyZDBiMmMwYWU2ZjYxZjNhODg5NmRiMGUxZWJkNDQyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMK
QEAgLTUxLDggKzUxLDcgQEAgV0kuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4
dGVuZHMgV0kuVmlldwogICAgICAgICAvLyB3b3VsZCBiZSBmb3IgQ29kZU1pcnJvcidzIGV2ZW50
IGhhbmRsZXIgdG8gcGFzcyBpZiBpdCBkb2Vzbid0IGRvIGFueXRoaW5nLgogICAgICAgICB0aGlz
LnByb21wdC5lc2NhcGVLZXlIYW5kbGVyV2hlbkVtcHR5ID0gZnVuY3Rpb24oKSB7IFdJLnRvZ2ds
ZVNwbGl0Q29uc29sZSgpOyB9OwogCi0gICAgICAgIGNvbnN0IG5hdmlnYXRpb25iYXJFbGVtZW50
ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXSS5OYXZpZ2F0aW9u
QmFyKG5hdmlnYXRpb25iYXJFbGVtZW50LCB7c2l6ZXNUb0ZpdDogdHJ1ZX0pOworICAgICAgICB0
aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdJLlNpemVzVG9GaXROYXZpZ2F0aW9uQmFyOwogICAg
ICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fbmF2aWdhdGlvbkJhcik7CiAKICAgICAgICAgdGhp
cy5fYWN0aXZlRXhlY3V0aW9uQ29udGV4dE5hdmlnYXRpb25JdGVtRGl2aWRlciA9IG5ldyBXSS5E
aXZpZGVyTmF2aWdhdGlvbkl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5j
c3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdG
cmFtZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jc3MKaW5kZXggY2M1YzdiZDIzYTA3M2I0YzU4M2Mz
MWFiODJjMmU2ZWNjYWMwODkxYy4uZWUxZmFjYTQ2ZDY4NGJlYzg1MGFiODE5YWNlM2NmNDc0MGY1
ZWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGguY3NzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVP
dmVydmlld0dyYXBoLmNzcwpAQCAtNTgsNiArNTgsNiBAQAogICAgIHBvaW50ZXItZXZlbnRzOiBu
b25lOwogfQogCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQt
aW5hY3RpdmUpIC50aW1lbGluZS1vdmVydmlldy1ncmFwaC5yZW5kZXJpbmctZnJhbWUgPiAuZnJh
bWUtbWFya2VyIHsKK2JvZHkud2luZG93LWluYWN0aXZlIC50aW1lbGluZS1vdmVydmlldy1ncmFw
aC5yZW5kZXJpbmctZnJhbWUgPiAuZnJhbWUtbWFya2VyIHsKICAgICBiYWNrZ3JvdW5kLWltYWdl
OiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIGhzbCgwLCAwJSwgNjAlKSwgaHNsKDAsIDAlLCA2
MCUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoVGFiQ29udGVudFZpZXcuanMKaW5kZXggMDA2MTY0MDYw
ZTBlNWZlMmE2YjQ0YWMwODYwZTdkNWU4ZmEwMTQwMi4uMzRiMzJjNzlhM2VlZDNjYTA2ZWQ0MjJk
ZjNmNWRkNmZiNTU5ODI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2VhcmNoVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoVGFiQ29udGVudFZpZXcuanMKQEAg
LTI1LDQ1ICsyNSwzOCBAQAogCiBXSS5TZWFyY2hUYWJDb250ZW50VmlldyA9IGNsYXNzIFNlYXJj
aFRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldwog
ewotICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsK
LSAgICAgICAgbGV0IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBbCi0gICAgICAg
ICAgICBXSS5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBXSS5Qcm9i
ZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBXSS5ET01Ob2RlRGV0YWlsc1NpZGVi
YXJQYW5lbCwKLSAgICAgICAgICAgIFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LAotICAgICAgICAgICAgV0kuUnVsZXNTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAg
IF07CisgICAgICAgIGxldCB0YWJCYXJJdGVtOworICAgICAgICBpZiAoV0kuc2V0dGluZ3MuZXhw
ZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFyLnZhbHVlKQorICAgICAgICAgICAgdGFiQmFySXRlbSA9
IFdJLlBpbm5lZFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuU2VhcmNoVGFiQ29udGVudFZpZXcu
dGFiSW5mbygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGFiQmFySXRlbSA9IFdJLkdl
bmVyYWxUYWJCYXJJdGVtLmZyb21UYWJJbmZvKFdJLlNlYXJjaFRhYkNvbnRlbnRWaWV3LnRhYklu
Zm8oKSk7CisKKyAgICAgICAgbGV0IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBb
V0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5Qcm9iZURldGFpbHNTaWRlYmFyUGFu
ZWwsCisgICAgICAgICAgICBXSS5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCwgV0kuQ29tcHV0
ZWRTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLlJ1bGVzU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsXTsKKwogICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5oYXNEb21haW4oIkxheWVyVHJl
ZSIpKQogICAgICAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycy5wdXNoKFdJ
LkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwpOwogCi0gICAgICAgIHN1cGVyKFNlYXJjaFRh
YkNvbnRlbnRWaWV3LnRhYkluZm8oKSwgewotICAgICAgICAgICAgbmF2aWdhdGlvblNpZGViYXJQ
YW5lbENvbnN0cnVjdG9yOiBXSS5TZWFyY2hTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBkZXRh
aWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLAotICAgICAgICB9KTsKKyAgICAgICAgc3VwZXIo
aWRlbnRpZmllciB8fCAic2VhcmNoIiwgInNlYXJjaCIsIHRhYkJhckl0ZW0sIFdJLlNlYXJjaFNp
ZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyk7CisKKyAgICAgICAg
Ly8gRW5zdXJlcyB0aGF0IHRoZSBTZWFyY2ggdGFiIGlzIGRpc3BsYXlhYmxlIGZyb20gYSBwaW5u
ZWQgdGFiIGJhciBpdGVtLgorICAgICAgICB0YWJCYXJJdGVtLnJlcHJlc2VudGVkT2JqZWN0ID0g
dGhpczsKIAogICAgICAgICB0aGlzLl9mb3JjZVBlcmZvcm1TZWFyY2ggPSBmYWxzZTsKICAgICB9
CiAKICAgICBzdGF0aWMgdGFiSW5mbygpCiAgICAgeworICAgICAgICBsZXQgaW1hZ2UgPSBXSS5z
ZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXIudmFsdWUgPyAiSW1hZ2VzL1NlYXJj
aC5zdmciIDogIkltYWdlcy9TZWFyY2hSZXN1bHRzLnN2ZyI7CiAgICAgICAgIHJldHVybiB7Ci0g
ICAgICAgICAgICBpZGVudGlmaWVyOiBTZWFyY2hUYWJDb250ZW50Vmlldy5UeXBlLAotICAgICAg
ICAgICAgaW1hZ2U6ICJJbWFnZXMvU2VhcmNoLnN2ZyIsCisgICAgICAgICAgICBpbWFnZSwKICAg
ICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiU2VhcmNoIiksCisgICAgICAgICAgICBpc0Vw
aGVtZXJhbDogdHJ1ZSwKICAgICAgICAgfTsKICAgICB9CiAKLSAgICBzdGF0aWMgc2hvdWxkUGlu
VGFiKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHN0YXRpYyBz
aG91bGRTYXZlVGFiKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCB0eXBlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRl
bnRWaWV3LmpzCmluZGV4IDk0YjQ3YzhmMzhlM2YzMmI1MWU3ZDk1MGE1Njk5ZGE2Nzk0NmUyZjIu
LmE3ZDM5NDBiMTc0OTI4NWNlNzA5ZDljNWU0ZTE3MDdjMzhhNjNhNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVu
dFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwpAQCAtMjYsOSArMjYsMTQgQEAKIAogV0kuU2V0dGlu
Z3NUYWJDb250ZW50VmlldyA9IGNsYXNzIFNldHRpbmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5UYWJDb250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3Rvcihp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc3VwZXIoU2V0dGluZ3NUYWJDb250ZW50Vmlldy50
YWJJbmZvKCkpOworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLlBpbm5lZFRhYkJhckl0ZW0u
ZnJvbVRhYkluZm8oV0kuU2V0dGluZ3NUYWJDb250ZW50Vmlldy50YWJJbmZvKCkpOworCisgICAg
ICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgInNldHRpbmdzIiwgInNldHRpbmdzIiwgdGFiQmFySXRl
bSk7CisKKyAgICAgICAgLy8gRW5zdXJlcyB0aGF0IHRoZSBTZXR0aW5ncyB0YWIgaXMgZGlzcGxh
eWFibGUgZnJvbSBhIHBpbm5lZCB0YWIgYmFyIGl0ZW0uCisgICAgICAgIHRhYkJhckl0ZW0ucmVw
cmVzZW50ZWRPYmplY3QgPSB0aGlzOwogCiAgICAgICAgIHRoaXMuX3NlbGVjdGVkU2V0dGluZ3NW
aWV3ID0gbnVsbDsKICAgICAgICAgdGhpcy5fc2V0dGluZ3NWaWV3cyA9IFtdOwpAQCAtMzcsMTcg
KzQyLDEyIEBAIFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5nc1RhYkNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpCiAgICAgc3RhdGljIHRhYkluZm8oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGlkZW50aWZpZXI6IFNldHRpbmdz
VGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL0dlYXIuc3Zn
IiwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiU2V0dGluZ3MiKSwKKyAgICAgICAg
ICAgIGlzRXBoZW1lcmFsOiB0cnVlLAogICAgICAgICB9OwogICAgIH0KIAotICAgIHN0YXRpYyBz
aG91bGRQaW5UYWIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCiAgICAg
c3RhdGljIHNob3VsZFNhdmVUYWIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MzYwLDYgKzM2MCw5IEBAIFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5n
c1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpCiAgICAgICAgICAgICBleHBl
cmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkU2VwYXJhdG9yKCk7CiAgICAgICAgIH0KIAorICAgICAg
ICBleHBlcmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkU2V0dGluZyhXSS5VSVN0cmluZygiVXNlciBJ
bnRlcmZhY2U6IiksIFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhciwgV0ku
VUlTdHJpbmcoIkVuYWJsZSBOZXcgVGFiIEJhciIpKTsKKyAgICAgICAgZXhwZXJpbWVudGFsU2V0
dGluZ3NWaWV3LmFkZFNlcGFyYXRvcigpOworCiAgICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5k
Lmhhc0RvbWFpbigiQ1NTIikpIHsKICAgICAgICAgICAgIGxldCBzdHlsZXNHcm91cCA9IGV4cGVy
aW1lbnRhbFNldHRpbmdzVmlldy5hZGRHcm91cChXSS5VSVN0cmluZygiU3R5bGVzOiIpKTsKICAg
ICAgICAgICAgIHN0eWxlc0dyb3VwLmFkZFNldHRpbmcoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFs
RW5hYmxlU3R5bGVzSnVtcFRvRWZmZWN0aXZlLCBXSS5VSVN0cmluZygiU2hvdyBKdW1wIHRvIEVm
ZmVjdGl2ZSBQcm9wZXJ0eSBCdXR0b24iKSk7CkBAIC0zODMsNiArMzg2LDcgQEAgV0kuU2V0dGlu
Z3NUYWJDb250ZW50VmlldyA9IGNsYXNzIFNldHRpbmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5UYWJDb250ZW50VmkKICAgICAgICAgfQogCiAgICAgICAgIGxpc3RlbkZvckNoYW5nZShXSS5z
ZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVQcmV2aWV3RmVhdHVyZXMpOworICAgICAgICBsaXN0
ZW5Gb3JDaGFuZ2UoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlTmV3VGFiQmFyKTsKIAog
ICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5oYXNEb21haW4oIkNTUyIpKQogICAgICAgICAg
ICAgbGlzdGVuRm9yQ2hhbmdlKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZVN0eWxlc0p1
bXBUb0VmZmVjdGl2ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2lkZWJhci5qcwppbmRleCA2NGRjODk1MzA1OGJmNTEzODRjNWU0YWNlZjVj
MGJmNTBhYTM0ZTk2Li4xMGExMzE5ZjU0NDA0Y2JiNjc2ZmUyMGVkODMyOWYzZTM1NjU4ZTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRl
YmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Np
ZGViYXIuanMKQEAgLTQyLDggKzQyLDcgQEAgV0kuU2lkZWJhciA9IGNsYXNzIFNpZGViYXIgZXh0
ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlmIChoYXNOYXZpZ2F0aW9uQmFyKSB7CiAgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaGFzLW5hdmlnYXRpb24tYmFyIik7CiAKLSAg
ICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb25CYXJFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgICAg
IHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV0kuTmF2aWdhdGlvbkJhcihuYXZpZ2F0aW9uQmFy
RWxlbWVudCwge3JvbGU6ICJ0YWJsaXN0In0pOworICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlv
bkJhciA9IG5ldyBXSS5OYXZpZ2F0aW9uQmFyKG51bGwsIG51bGwsICJ0YWJsaXN0Iik7CiAgICAg
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmF2aWdhdGlv
bkJhci5FdmVudC5OYXZpZ2F0aW9uSXRlbVNlbGVjdGVkLCB0aGlzLl9uYXZpZ2F0aW9uSXRlbVNl
bGVjdGVkLCB0aGlzKTsKICAgICAgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9uYXZpZ2F0
aW9uQmFyKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2l6ZXNUb0ZpdE5hdmlnYXRpb25CYXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaXplc1RvRml0TmF2aWdhdGlvbkJhci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNGM5ZDllNDRjOTY0NzFkZDI0ODQyODZkNGUzMzhjYzJlN2Y3ZmE2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU2l6ZXNUb0ZpdE5hdmlnYXRpb25CYXIuanMKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK1dJLlNpemVzVG9GaXROYXZpZ2F0aW9uQmFyID0gY2xhc3MgU2l6ZXNUb0ZpdE5hdmlnYXRp
b25CYXIgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uQmFyCit7CisgICAgZ2V0IHNpemVzVG9GaXQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNU
YWJDb250ZW50Vmlldy5qcwppbmRleCAxM2IxZDU1YTg5MjhkZDgyZWViMTYxYTEyMzk5NGRkOTBi
YzdiNTBkLi5jNWFkNzdiNGIzNmVmNDE0NmQwZWM2ZDdlZGUzMGNiNjU5ZDI0YTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzVGFi
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU291cmNlc1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNywyNSArMjcsMTYgQEAgV0kuU291
cmNlc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU291cmNlc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudEJyb3dzZXIKIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewotICAgICAgICBz
dXBlcihTb3VyY2VzVGFiQ29udGVudFZpZXcudGFiSW5mbygpLCB7Ci0gICAgICAgICAgICBuYXZp
Z2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3I6IFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLAotICAgICAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9yczogWwot
ICAgICAgICAgICAgICAgIFdJLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAg
ICAgICAgICBXSS5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICAgICAgICAgICAg
ICBXSS5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgICAgICAgICBdLAotICAgICAgICB9
KTsKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFiQmFySXRlbS5mcm9tVGFi
SW5mbyhXSS5Tb3VyY2VzVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKyAgICAgICAgY29uc3Qg
ZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyA9IFtXSS5SZXNvdXJjZURldGFpbHNTaWRl
YmFyUGFuZWwsIFdJLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5Qcm9iZURldGFp
bHNTaWRlYmFyUGFuZWxdOworICAgICAgICBzdXBlcigic291cmNlcyIsIFsic291cmNlcyJdLCB0
YWJCYXJJdGVtLCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGVi
YXJQYW5lbENvbnN0cnVjdG9ycyk7CiAKICAgICAgICAgdGhpcy5fc2hvd1Njb3BlQ2hhaW5EZXRh
aWxzU2lkZWJhclBhbmVsID0gZmFsc2U7Ci0KLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgdGhpcy5faGFu
ZGxlRGVidWdnZXJQYXVzZWQsIHRoaXMpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgdGhpcy5faGFu
ZGxlRGVidWdnZXJSZXN1bWVkLCB0aGlzKTsKICAgICB9CiAKICAgICBzdGF0aWMgdGFiSW5mbygp
CiAgICAgewogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWRlbnRpZmllcjogU291cmNl
c1RhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9Tb3VyY2Vz
LnN2ZyIsCiAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIlNvdXJjZXMiKSwKICAgICAg
ICAgfTsKQEAgLTEwNywxOCArOTgsNiBAQCBXSS5Tb3VyY2VzVGFiQ29udGVudFZpZXcgPSBjbGFz
cyBTb3VyY2VzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlcgogICAgICAg
ICBpZiAodHJlZUVsZW1lbnQpCiAgICAgICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxl
Y3QoKTsKICAgICB9Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfaGFuZGxlRGVidWdnZXJQYXVz
ZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnRhYkJhckl0ZW0uaW1hZ2UgPSAiSW1hZ2Vz
L1NvdXJjZXNQYXVzZWQuc3ZnIjsKLSAgICB9Ci0KLSAgICBfaGFuZGxlRGVidWdnZXJSZXN1bWVk
KGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy50YWJCYXJJdGVtLmltYWdlID0gIkltYWdlcy9T
b3VyY2VzLnN2ZyI7Ci0gICAgfQogfTsKIAogV0kuU291cmNlc1RhYkNvbnRlbnRWaWV3LlR5cGUg
PSAic291cmNlcyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanMKaW5kZXggOTU0
MGFiOGNiMTZkODAwODcxZTU3NjUyYzk0ZmU5MDRhY2UwYTYwYi4uM2QxZjE1NWY2NDUwNzVmZjBl
NjFhMTU2YzZkOTU1NmExNzAyNDg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmll
dy5qcwpAQCAtMjUsMTUgKzI1LDEyIEBACiAKIFdJLlN0b3JhZ2VUYWJDb250ZW50VmlldyA9IGNs
YXNzIFN0b3JhZ2VUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGFiQ29u
dGVudFZpZXcKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHN1cGVyKFN0b3JhZ2VUYWJDb250ZW50Vmlldy50YWJJbmZvKCks
IHsKLSAgICAgICAgICAgIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcjogV0kuU3Rv
cmFnZVNpZGViYXJQYW5lbCwKLSAgICAgICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1
Y3RvcnM6IFsKLSAgICAgICAgICAgICAgICBXSS5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGVi
YXJQYW5lbCwKLSAgICAgICAgICAgICAgICBXSS5JbmRleGVkRGF0YWJhc2VEZXRhaWxzU2lkZWJh
clBhbmVsLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSk7CisgICAgICAgIGxldCB0YWJCYXJJ
dGVtID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuU3RvcmFnZVRhYkNvbnRl
bnRWaWV3LnRhYkluZm8oKSk7CisgICAgICAgIGxldCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3Ry
dWN0b3JzID0gW1dJLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5JbmRl
eGVkRGF0YWJhc2VEZXRhaWxzU2lkZWJhclBhbmVsXTsKKworICAgICAgICBzdXBlcihpZGVudGlm
aWVyIHx8ICJzdG9yYWdlIiwgInN0b3JhZ2UiLCB0YWJCYXJJdGVtLCBXSS5TdG9yYWdlU2lkZWJh
clBhbmVsLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzKTsKIAogICAgICAgICBXSS5h
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5lbmFibGUoKTsKICAgICAgICAgV0kuZGF0YWJhc2VNYW5h
Z2VyLmVuYWJsZSgpOwpAQCAtNDQsNyArNDEsNiBAQCBXSS5TdG9yYWdlVGFiQ29udGVudFZpZXcg
PSBjbGFzcyBTdG9yYWdlVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3Nlcgog
ICAgIHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg
ICBpZGVudGlmaWVyOiBTdG9yYWdlVGFiQ29udGVudFZpZXcuVHlwZSwKICAgICAgICAgICAgIGlt
YWdlOiAiSW1hZ2VzL1N0b3JhZ2Uuc3ZnIiwKICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmlu
ZygiU3RvcmFnZSIpLAogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3MKaW5kZXggZWY1MWNhYWRjZGU4YTJhMTFh
N2Y4NjYxZTcyYjNlMThiNzUxNjc1OC4uM2Q3Y2Q3YWIyZjljM2FlODgxMTIzYWUwZTYwNWUyYmMy
ZmJlNDFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGFiQmFyLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UYWJCYXIuY3NzCkBAIC0yNSwxNiArMjUsMjUgQEAKIAogLnRhYi1iYXIgewogICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IHZhcigtLXVuZG9ja2VkLXRpdGxlLWFyZWEt
aGVpZ2h0KTsKKyAgICB0b3A6IHZhcigtLXRvb2xiYXItaGVpZ2h0KTsKICAgICBsZWZ0OiAwOwog
ICAgIHJpZ2h0OiAwOwogICAgIGhlaWdodDogdmFyKC0tdGFiLWJhci1oZWlnaHQpOwogCiAgICAg
ZGlzcGxheTogZmxleDsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CisgICAg
ZmxleC13cmFwOiB3cmFwOworCisgICAgYm9yZGVyLWJvdHRvbTogdmFyKC0tdGFiLWl0ZW0tbWVk
aXVtLWJvcmRlci1zdHlsZSk7CiAKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGll
bnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDc4JSksIGhzbCgwLCAwJSwgNzIlKSk7CiAgICAgYmFj
a2dyb3VuZC1zaXplOiAxMDAlIDIwMCU7CiAKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAg
IG92ZXJmbG93OiBoaWRkZW47CisKKyAgICBvdXRsaW5lOiBub25lOworCiAgICAgLS10YWItaXRl
bS1kYXJrLWJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCA1OSUpOwogICAgIC0tdGFiLWl0ZW0tbWVk
aXVtLWJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCA2NSUpOwogICAgIC0tdGFiLWl0ZW0tbGlnaHQt
Ym9yZGVyLWNvbG9yOiBoc2woMCwgMCUsIDg1JSk7CkBAIC00NCw4NSArNTMsMzAgQEAKICAgICAt
LXRhYi1pdGVtLWxpZ2h0LWJvcmRlci1zdHlsZTogMXB4IHNvbGlkIHZhcigtLXRhYi1pdGVtLWxp
Z2h0LWJvcmRlci1jb2xvcik7CiB9CiAKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAu
d2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgeworYm9keS53aW5kb3ctaW5hY3RpdmUg
LnRhYi1iYXIgeworICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXRhYi1pdGVtLWxpZ2h0
LWJvcmRlci1jb2xvcik7CisKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7
CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tZXh0cmEtbGlnaHQtYm9yZGVy
LWNvbG9yKSAhaW1wb3J0YW50OwogfQogCi0udGFiLWJhciA+IC5ib3JkZXIgeworLnRhYi1iYXIg
PiAudG9wLWJvcmRlciB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKICAg
ICBsZWZ0OiAwOwogICAgIHJpZ2h0OiAwOwotICAgIHotaW5kZXg6IDEwOwogICAgIGhlaWdodDog
MXB4OwotICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRhYi1pdGVtLW1lZGl1bS1ib3JkZXIt
Y29sb3IpOwotfQotCi0udGFiLWJhciA+IC5ib3JkZXIudG9wIHsKLSAgICB0b3A6IDA7Ci19Ci0K
LS50YWItYmFyID4gLmJvcmRlci5ib3R0b20gewotICAgIGJvdHRvbTogMDsKLX0KLQotYm9keS5k
b2NrZWQuYm90dG9tIC50YWItYmFyID4gLmJvcmRlci50b3AgewotICAgIGZpbHRlcjogYnJpZ2h0
bmVzcyg4MCUpOwotfQotCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1k
b2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLmJvcmRlciB7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKTsKLX0KLQotQG1lZGlhICgtd2Vi
a2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW86IDEpIHsKLSAgICBib2R5LmRvY2tlZDptYXRjaGVz
KC5yaWdodCwgLmxlZnQpOm5vdCgud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAu
Ym9yZGVyLnRvcCB7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwotICAg
IH0KLX0KLQotQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHsKLSAg
ICBib2R5LmRvY2tlZDptYXRjaGVzKC5yaWdodCwgLmxlZnQpOm5vdCgud2luZG93LWRvY2tlZC1p
bmFjdGl2ZSkgLnRhYi1iYXIgPiAuYm9yZGVyLnRvcCB7Ci0gICAgICAgIGhlaWdodDogMC41cHgg
IWltcG9ydGFudDsKLSAgICB9Ci19Ci0KLS50YWItYmFyID4gLm5hdmlnYXRpb24tYmFyIHsKLSAg
ICBoZWlnaHQ6IHZhcigtLXRhYi1iYXItaGVpZ2h0KTsKLX0KLQotLnRhYi1iYXIgPiAubmF2aWdh
dGlvbi1iYXIgPiAuaXRlbS5ncm91cCA+IC5pdGVtIHsKLSAgICB3aWR0aDogYXV0byAhaW1wb3J0
YW50OwotICAgIG1hcmdpbjogMCA0cHggIWltcG9ydGFudDsKLSAgICBwYWRkaW5nOiAwICFpbXBv
cnRhbnQ7Ci19Ci0KLS50YWItYmFyID4gLm5hdmlnYXRpb24tYmFyID4gLml0ZW0uZ3JvdXAgPiAu
aXRlbTpudGgtY2hpbGQoMSBvZiA6bm90KC5oaWRkZW4pKSB7Ci0gICAgLXdlYmtpdC1tYXJnaW4t
c3RhcnQ6IDEycHggIWltcG9ydGFudDsKLX0KLQotLnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iYXIg
PiAuaXRlbS5ncm91cCA+IC5pdGVtOm50aC1sYXN0LWNoaWxkKDEgb2YgOm5vdCguaGlkZGVuKSkg
ewotICAgIC13ZWJraXQtbWFyZ2luLWVuZDogMTJweCAhaW1wb3J0YW50OwotfQogCi0udGFiLWJh
ciA+IC5uYXZpZ2F0aW9uLWJhciAuaXRlbS5kaXZpZGVyIHsKLSAgICBtYXJnaW4tdG9wOiAxcHg7
CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbWVkaXVtLWJvcmRlci1jb2xv
cik7Ci19CiAKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1p
bmFjdGl2ZSkgLnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iYXIgPiAuaXRlbS5kaXZpZGVyIHsKLSAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3IpOwor
ICAgIHotaW5kZXg6IDA7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgewotICAgIGRpc3BsYXk6IGZs
ZXg7Ci0gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwotICAgIGZsZXgtd3JhcDog
d3JhcDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVp
Z2h0OiAxMDAlOworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAudG9wLWJvcmRlciB7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9y
KTsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtIHsKKy50YWItYmFyID4gLml0ZW0gewog
ICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgZmxleC1ncm93OiAxOwogCkBAIC0xMzQsMTIgKzg4LDE0
IEBAIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2
ZSkgLnRhYi1iYXIgPiAubmF2aWdhdGlvbi1iCiAKICAgICBwYWRkaW5nOiAwIDZweDsKIAotICAg
IG1pbi13aWR0aDogY2FsYyh2YXIoLS10YWItYmFyLWhlaWdodCkgLSAxcHgpOyAvKiBzdWJ0cmFj
dCB0aGUgd2lkdGggb2YgdGhlIGJvcmRlciAqLworICAgIG1pbi13aWR0aDogMjRweDsKICAgICBv
dmVyZmxvdzogaGlkZGVuOwogCiAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50
KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA3OCUpLCBoc2woMCwgMCUsIDcyJSkpOwogICAgIGJhY2tn
cm91bmQtc2l6ZTogMTAwJSAyMDAlOwogCisgICAgYm9yZGVyLXRvcDogdmFyKC0tdGFiLWl0ZW0t
bWVkaXVtLWJvcmRlci1zdHlsZSk7CisKICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgbGluZS1oZWln
aHQ6IDE1cHg7CiAgICAgb3V0bGluZTogbm9uZTsKQEAgLTE1MCw1MyArMTA2LDU0IEBAIGJvZHk6
bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1i
YXIgPiAubmF2aWdhdGlvbi1iCiAgICAgLyogdHJhbnNpdGlvbi1kZWxheTogNTBtczsgKi8KIH0K
IAotLnRhYi1iYXIgPiAudGFicy5jYWxjdWxhdGUtd2lkdGggPiAuaXRlbSB7CisudGFiLWJhci5j
YWxjdWxhdGUtd2lkdGggPiAuaXRlbSB7CiAgICAgZmxleDogaW5pdGlhbDsKIH0KIAotYm9keVtk
aXI9bHRyXSAudGFiLWJhciA+IC50YWJzID4gLml0ZW06bm90KDpmaXJzdC1jaGlsZCksCi1ib2R5
W2Rpcj1sdHJdIC50YWItYmFyID4gLnRhYnM6bm90KC5oaWRlLWJvcmRlci1zdGFydCkgPiAuaXRl
bTpmaXJzdC1jaGlsZCwKLWJvZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiAudGFicy5kcmFnZ2luZy10
YWIgPiAuaXRlbS5zZWxlY3RlZCwKLWJvZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiAudGFiczpub3Qo
LmhpZGUtYm9yZGVyLWVuZCkgPiAuaXRlbTpsYXN0LWNoaWxkIHsKK2JvZHlbZGlyPWx0cl0gLnRh
Yi1iYXIgPiA6bnRoLWNoaWxkKG4gKyAyIG9mIC5pdGVtKSwKK2JvZHlbZGlyPWx0cl0gLnRhYi1i
YXIuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQgewogICAgIGJvcmRlci1sZWZ0OiB2YXIo
LS10YWItaXRlbS1tZWRpdW0tYm9yZGVyLXN0eWxlKTsKIH0KIAotYm9keVtkaXI9bHRyXSAudGFi
LWJhciA+IC50YWJzOm5vdCguaGlkZS1ib3JkZXItZW5kKSA+IC5pdGVtOmxhc3QtY2hpbGQsCi1i
b2R5W2Rpcj1ydGxdIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbTpub3QoOmZpcnN0LWNoaWxkKSwK
LWJvZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiAudGFiczpub3QoLmhpZGUtYm9yZGVyLXN0YXJ0KSA+
IC5pdGVtOmZpcnN0LWNoaWxkLAotYm9keVtkaXI9cnRsXSAudGFiLWJhciA+IC50YWJzLmRyYWdn
aW5nLXRhYiA+IC5pdGVtLnNlbGVjdGVkIHsKK2JvZHlbZGlyPXJ0bF0gLnRhYi1iYXIgPiA6bnRo
LWNoaWxkKG4gKyAyIG9mIC5pdGVtKSwKK2JvZHlbZGlyPXJ0bF0gLnRhYi1iYXIuZHJhZ2dpbmct
dGFiID4gLml0ZW0uc2VsZWN0ZWQgewogICAgIGJvcmRlci1yaWdodDogdmFyKC0tdGFiLWl0ZW0t
bWVkaXVtLWJvcmRlci1zdHlsZSk7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5waW5u
ZWQgeworLnRhYi1iYXIgPiAuaXRlbS5waW5uZWQgeworICAgIHdpZHRoOiAyNHB4OwogICAgIGZs
ZXg6IG5vbmU7CiAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiB9CiAKLS50YWItYmFyID4g
LnRhYnMgPiAuaXRlbTpub3QoLmRpc2FibGVkKS5zZWxlY3RlZCB7CisudGFiLWJhciA+IC5pdGVt
LnBpbm5lZC50YWItcGlja2VyIHsKKyAgICB3aWR0aDogMThweDsKKyAgICBtaW4td2lkdGg6IGlu
aXRpYWw7Cit9CisKKy50YWItYmFyID4gLml0ZW06bm90KC5kaXNhYmxlZCkuc2VsZWN0ZWQgewor
ICAgIGJvcmRlci10b3AtY29sb3I6IGhzbCgwLCAwJSwgNzQlKTsKICAgICBiYWNrZ3JvdW5kLWlt
YWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDg3JSksIGhzbCgwLCAw
JSwgODIlKSk7CiAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7CiB9CiAKLS50YWItYmFy
ID4gLnRhYnM6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVk
KTpob3ZlciB7CisudGFiLWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVk
LCAuZGlzYWJsZWQpOmhvdmVyIHsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGll
bnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDY3JSksIGhzbCgwLCAwJSwgNjQlKSk7CisgICAgYm9y
ZGVyLXRvcC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tZGFyay1ib3JkZXItY29sb3IpOwogfQogCi1i
b2R5W2Rpcj1sdHJdIC50YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90
KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciwKLWJvZHlbZGlyPWx0cl0gLnRhYi1iYXIgPiAu
dGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhv
dmVyICsgLml0ZW0sCi1ib2R5W2Rpcj1ydGxdIC50YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRp
bmcpID4gLml0ZW06bGFzdC1jaGlsZDpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyIHsK
K2JvZHlbZGlyPWx0cl0gLnRhYi1iYXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxl
Y3RlZCwgLmRpc2FibGVkKTpob3ZlciwKK2JvZHlbZGlyPWx0cl0gLnRhYi1iYXI6bm90KC5hbmlt
YXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciArIC5pdGVtIHsK
ICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tZGFyay1ib3JkZXItY29sb3Ip
OwogfQogCi1ib2R5W2Rpcj1sdHJdIC50YWItYmFyID4gLnRhYnM6bm90KC5hbmltYXRpbmcpID4g
Lml0ZW06bGFzdC1jaGlsZDpub3QoLnNlbGVjdGVkLCAuZGlzYWJsZWQpOmhvdmVyLAotYm9keVtk
aXI9cnRsXSAudGFiLWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2Vs
ZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIsCi1ib2R5W2Rpcj1ydGxdIC50YWItYmFyID4gLnRhYnM6
bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciAr
IC5pdGVtIHsKK2JvZHlbZGlyPXJ0bF0gLnRhYi1iYXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06
bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciwKK2JvZHlbZGlyPXJ0bF0gLnRhYi1iYXI6
bm90KC5hbmltYXRpbmcpID4gLml0ZW06bm90KC5zZWxlY3RlZCwgLmRpc2FibGVkKTpob3ZlciAr
IC5pdGVtIHsKICAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWRhcmstYm9y
ZGVyLWNvbG9yKTsKIH0KIAotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ct
ZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4gLml0ZW0gewotICAgIGJvcmRlci1y
aWdodC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50
OwotICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29s
b3IpICFpbXBvcnRhbnQ7Citib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtIHsK
KyAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS10YWItaXRlbS1saWdodC1ib3JkZXItY29sb3Ip
ICFpbXBvcnRhbnQ7CiAKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7CiAg
ICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tZXh0cmEtbGlnaHQtYm9yZGVyLWNv
bG9yKSAhaW1wb3J0YW50OwpAQCAtMjA0LDEyICsxNjEsMjAgQEAgYm9keTptYXRjaGVzKC53aW5k
b3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzID4g
Lml0ZW0KICAgICB0cmFuc2l0aW9uOiBub25lOwogfQogCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1p
bmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRl
bS5zZWxlY3RlZCB7Citib2R5W2Rpcj1sdHJdLndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5p
dGVtIHsKKyAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tdGFiLWl0ZW0tbGlnaHQtYm9yZGVy
LWNvbG9yKSAhaW1wb3J0YW50OworfQorCitib2R5W2Rpcj1ydGxdLndpbmRvdy1pbmFjdGl2ZSAu
dGFiLWJhciA+IC5pdGVtIHsKKyAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLXRhYi1pdGVt
LWxpZ2h0LWJvcmRlci1jb2xvcikgIWltcG9ydGFudDsKK30KKworYm9keS53aW5kb3ctaW5hY3Rp
dmUgLnRhYi1iYXIgPiAuaXRlbS5zZWxlY3RlZCB7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9u
ZSAhaW1wb3J0YW50OwogICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgOTYlKSAhaW1w
b3J0YW50OwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0gPiAuY2xvc2UgeworLnRhYi1i
YXIgPiAuaXRlbSA+IC5jbG9zZSB7CiAgICAgd2lkdGg6IDE2cHg7CiAgICAgaGVpZ2h0OiAxNnB4
OwogCkBAIC0yMzAsMjggKzE5NSwzNiBAQCBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwg
LndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbQogICAgIC13
ZWJraXQtbWFyZ2luLWVuZDogNHB4OwogfQogCi1ib2R5Om5vdCgud2luZG93LWluYWN0aXZlKSAu
dGFiLWJhciA+IC50YWJzID4gLml0ZW06aG92ZXIgPiAuY2xvc2UgeworYm9keTpub3QoLndpbmRv
dy1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAuaXRlbTpob3ZlciA+IC5jbG9zZSB7CiAgICAgb3BhY2l0
eTogMC42OwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0gPiAuY2xvc2U6aG92ZXIgewor
Ym9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSkgLnRhYi1iYXIuc2luZ2xlLXRhYiA+IC5pdGVtLmRl
ZmF1bHQtdGFiOmhvdmVyID4gLmNsb3NlIHsKKyAgICBvcGFjaXR5OiAwOworfQorCisudGFiLWJh
ci5zaW5nbGUtdGFiID4gLml0ZW0uZGVmYXVsdC10YWIgPiAuY2xvc2UgeworICAgIHBvaW50ZXIt
ZXZlbnRzOiBub25lOworfQorCisudGFiLWJhciA+IC5pdGVtID4gLmNsb3NlOmhvdmVyIHsKICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC4yKTsKIH0KIAotLnRhYi1iYXIg
PiAudGFicyA+IC5pdGVtID4gLmNsb3NlOmFjdGl2ZSB7CisudGFiLWJhciA+IC5pdGVtID4gLmNs
b3NlOmFjdGl2ZSB7CiAgICAgb3BhY2l0eTogMC44ICFpbXBvcnRhbnQ7CiB9CiAKLS50YWItYmFy
ID4gLnRhYnMgPiAuaXRlbSA+IC5mbGV4LXNwYWNlIHsKKy50YWItYmFyID4gLml0ZW0gPiAuZmxl
eC1zcGFjZSB7CiAgICAgZGlzcGxheTogZmxleDsKICAgICBmbGV4OiAxOwogfQogCi0udGFiLWJh
ciA+IC50YWJzID4gLml0ZW0uZXBoZW1lcmFsID4gLmZsZXgtc3BhY2U6bGFzdC1jaGlsZCB7Cisu
dGFiLWJhciA+IC5pdGVtLmVwaGVtZXJhbCA+IC5mbGV4LXNwYWNlOmxhc3QtY2hpbGQgewogICAg
IC13ZWJraXQtbWFyZ2luLWVuZDogMTZweDsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVt
ID4gLmljb24geworLnRhYi1iYXIgPiAuaXRlbSA+IC5pY29uIHsKICAgICB3aWR0aDogMTZweDsK
ICAgICBoZWlnaHQ6IDE2cHg7CiAKQEAgLTI2MywyOCArMjM2LDI4IEBAIGJvZHk6bm90KC53aW5k
b3ctaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbTpob3ZlciA+IC5jbG9zZSB7CiAg
ICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRl
bS5waW5uZWQgPiAuaWNvbiB7CisudGFiLWJhciA+IC5pdGVtLnBpbm5lZCA+IC5pY29uIHsKICAg
ICB3aWR0aDogMTVweDsKICAgICBoZWlnaHQ6IDE1cHg7CiAgICAgbWluLXdpZHRoOiAxNXB4Owog
ICAgIG1pbi1oZWlnaHQ6IDE1cHg7CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5zZWxl
Y3RlZCA+IC5pY29uIHsKKy50YWItYmFyID4gLml0ZW0uc2VsZWN0ZWQgPiAuaWNvbiB7CiAgICAg
b3BhY2l0eTogMC43OwogfQogCi0udGFiLWJhciA+IC50YWJzID4gLml0ZW0uZGlzYWJsZWQgPiAu
aWNvbiB7CisudGFiLWJhciA+IC5pdGVtLmRpc2FibGVkID4gLmljb24gewogICAgIG9wYWNpdHk6
IDAuMzU7CiB9CiAKIEBtZWRpYSBub3QgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0g
ICAgLnRhYi1iYXIgPiAudGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVk
LCAuZGlzYWJsZWQpOmhvdmVyID4gLmljb24geworICAgIC50YWItYmFyOm5vdCguYW5pbWF0aW5n
KSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQsIC5kaXNhYmxlZCk6aG92ZXIgPiAuaWNvbiB7CiAgICAg
ICAgIG9wYWNpdHk6IDAuNjsKICAgICB9CiB9CiAKLS50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+
IC50aXRsZSB7CisudGFiLWJhciA+IC5pdGVtID4gLnRpdGxlIHsKICAgICBjb2xvcjogaHNsYSgw
LCAwJSwgMCUsIDAuNTUpOwogCiAgICAgZGlzcGxheTogZmxleDsKQEAgLTI5MywxMSArMjY2LDEx
IEBAIGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbTpo
b3ZlciA+IC5jbG9zZSB7CiAgICAgbWF4LXdpZHRoOiA0MDBweDsKIH0KIAotLnRhYi1iYXIgPiAu
dGFiczpub3QoLmNvbGxhcHNlZCkgPiAuaXRlbSA+IC50aXRsZSB7CisudGFiLWJhcjpub3QoLmNv
bGxhcHNlZCkgPiAuaXRlbSA+IC50aXRsZSB7CiAgICAgLXdlYmtpdC1tYXJnaW4tc3RhcnQ6IDZw
eDsKIH0KIAotLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLnRpdGxlID4gLmNvbnRlbnQgewor
LnRhYi1iYXIgPiAuaXRlbSA+IC50aXRsZSA+IC5jb250ZW50IHsKICAgICBtaW4td2lkdGg6IDA7
CiAgICAgd2lkdGg6IDEwMCU7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKQEAgLTMwNSw4NCArMjc4
LDg0IEBAIGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRl
bTpob3ZlciA+IC5jbG9zZSB7CiAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKIH0KIAotLnRhYi1i
YXIgPiAudGFiczpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVkKTpob3ZlciA+
IC50aXRsZSB7CisudGFiLWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNlbGVjdGVk
KTpob3ZlciA+IC50aXRsZSB7CiAgICAgY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjYpOwogfQog
Ci0udGFiLWJhciA+IC50YWJzID4gLml0ZW0uc2VsZWN0ZWQgPiAudGl0bGUgeworLnRhYi1iYXIg
PiAuaXRlbS5zZWxlY3RlZCA+IC50aXRsZSB7CiAgICAgY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAw
LjcpOwogfQogCi0udGFiLWJhciA+IC50YWJzLmNvbGxhcHNlZCA+IC5pdGVtIHsKKy50YWItYmFy
LmNvbGxhcHNlZCA+IC5pdGVtIHsKICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKIH0KIAot
LnRhYi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAuaXRlbTpub3QoLnBpbm5lZCkgPiAuaWNvbiB7
CisudGFiLWJhci5jb2xsYXBzZWQgPiAuaXRlbTpub3QoLnBpbm5lZCkgPiAuaWNvbiB7CiAgICAg
ZGlzcGxheTogbm9uZTsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5jb2xsYXBzZWQgPiAuaXRlbSA+
IC5mbGV4LXNwYWNlIHsKKy50YWItYmFyLmNvbGxhcHNlZCA+IC5pdGVtID4gLmZsZXgtc3BhY2Ug
ewogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuY29sbGFwc2VkID4g
Lml0ZW0gPiAuY2xvc2UgeworLnRhYi1iYXIuY29sbGFwc2VkID4gLml0ZW0gPiAuY2xvc2Ugewog
ICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgLXdlYmtpdC1tYXJnaW4tZW5kOiAwOwogfQogCi0udGFi
LWJhciA+IC50YWJzLmNvbGxhcHNlZCA+IC5pdGVtOmhvdmVyID4gLmNsb3NlIHsKKy50YWItYmFy
LmNvbGxhcHNlZCA+IC5pdGVtOmhvdmVyID4gLmNsb3NlIHsKICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogfQogCi0udGFiLWJhciA+IC50YWJzLmNv
bGxhcHNlZCA+IC5pdGVtLmVwaGVtZXJhbDpob3ZlciA+IC5pY29uIHsKKy50YWItYmFyLmNvbGxh
cHNlZCA+IC5pdGVtLmVwaGVtZXJhbDpob3ZlciA+IC5pY29uIHsKICAgICBkaXNwbGF5OiBub25l
OwogfQogCi0udGFiLWJhciA+IC50YWJzLmNvbGxhcHNlZCA+IC5pdGVtLmVwaGVtZXJhbDpob3Zl
ciA+IC50aXRsZSB7CisudGFiLWJhci5jb2xsYXBzZWQgPiAuaXRlbS5lcGhlbWVyYWw6aG92ZXIg
PiAudGl0bGUgewogICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKIH0KIAotLnRhYi1iYXIgPiAudGFi
cy5zdGF0aWMtbGF5b3V0IHsKKy50YWItYmFyLnN0YXRpYy1sYXlvdXQgewogICAgIHBvc2l0aW9u
OiByZWxhdGl2ZTsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5zdGF0aWMtbGF5b3V0ID4gLml0ZW0g
eworLnRhYi1iYXIuc3RhdGljLWxheW91dCA+IC5pdGVtIHsKICAgICBwb3NpdGlvbjogYWJzb2x1
dGUgIWltcG9ydGFudDsKICAgICB0b3A6IDA7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuYW5pbWF0
aW5nLmNsb3NpbmctdGFiID4gLml0ZW0geworLnRhYi1iYXIuYW5pbWF0aW5nLmNsb3NpbmctdGFi
ID4gLml0ZW0gewogICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQ7CiAgICAgdHJhbnNpdGlv
bi1kdXJhdGlvbjogMjUwbXM7CiAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Ut
aW4tb3V0OwogfQogCi0udGFiLWJhciA+IC50YWJzLmFuaW1hdGluZzptYXRjaGVzKC5leHBhbmRp
bmctdGFicywgLmluc2VydGluZy10YWIpID4gLml0ZW0geworLnRhYi1iYXIuYW5pbWF0aW5nOm1h
dGNoZXMoLmV4cGFuZGluZy10YWJzLCAuaW5zZXJ0aW5nLXRhYikgPiAuaXRlbSB7CiAgICAgdHJh
bnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgd2lkdGg7CiAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjog
MjUwbXM7CiAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogfQog
Ci0udGFiLWJhciA+IC50YWJzLmFuaW1hdGluZy5pbnNlcnRpbmctdGFiID4gLml0ZW0uYmVpbmct
aW5zZXJ0ZWQgeworLnRhYi1iYXIuYW5pbWF0aW5nLmluc2VydGluZy10YWIgPiAuaXRlbS5iZWlu
Zy1pbnNlcnRlZCB7CiAgICAgei1pbmRleDogMjsKICAgICBtaW4td2lkdGg6IDAgIWltcG9ydGFu
dDsKICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiB9CiAKLS50YWItYmFyID4gLnRhYnMuZHJh
Z2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQsCi0udGFiLWJhciA+IC50YWJzLnN0YXRpYy1sYXlv
dXQ6bm90KC5hbmltYXRpbmcuaW5zZXJ0aW5nLXRhYik6bm90KC5kcmFnZ2luZy10YWIpID4gLml0
ZW06bnRoLWxhc3QtY2hpbGQoMSBvZiA6bm90KC5waW5uZWQpKSwKLS50YWItYmFyID4gLnRhYnMu
YW5pbWF0aW5nLmNsb3NpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQgeworLnRhYi1iYXIuZHJhZ2dp
bmctdGFiID4gLml0ZW0uc2VsZWN0ZWQsCisudGFiLWJhci5zdGF0aWMtbGF5b3V0Om5vdCguYW5p
bWF0aW5nLmluc2VydGluZy10YWIpOm5vdCguZHJhZ2dpbmctdGFiKSA+IC5pdGVtOm50aC1sYXN0
LWNoaWxkKDEgb2YgOm5vdCgucGlubmVkKSksCisudGFiLWJhci5hbmltYXRpbmcuY2xvc2luZy10
YWIgPiAuaXRlbS5zZWxlY3RlZCB7CiAgICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS10YWItaXRlbS1t
ZWRpdW0tYm9yZGVyLXN0eWxlKTsKIH0KIAotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUs
IC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzLmRyYWdnaW5nLXRhYiA+
IC5pdGVtLnNlbGVjdGVkLAotYm9keTptYXRjaGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ct
ZG9ja2VkLWluYWN0aXZlKSAudGFiLWJhciA+IC50YWJzLnN0YXRpYy1sYXlvdXQ6bm90KC5hbmlt
YXRpbmcuaW5zZXJ0aW5nLXRhYik6bm90KC5kcmFnZ2luZy10YWIpID4gLml0ZW06bnRoLWxhc3Qt
Y2hpbGQoMSBvZiA6bm90KC5waW5uZWQpKSwKLWJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZl
LCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicy5hbmltYXRpbmcuY2xv
c2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCB7Citib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJh
ci5kcmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCwKK2JvZHkud2luZG93LWluYWN0aXZlIC50
YWItYmFyLnN0YXRpYy1sYXlvdXQ6bm90KC5hbmltYXRpbmcuaW5zZXJ0aW5nLXRhYik6bm90KC5k
cmFnZ2luZy10YWIpID4gLml0ZW06bnRoLWxhc3QtY2hpbGQoMSBvZiA6bm90KC5waW5uZWQpKSwK
K2JvZHkud2luZG93LWluYWN0aXZlIC50YWItYmFyLmFuaW1hdGluZy5jbG9zaW5nLXRhYiA+IC5p
dGVtLnNlbGVjdGVkIHsKICAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLXRhYi1pdGVtLWxp
Z2h0LWJvcmRlci1jb2xvcikgIWltcG9ydGFudDsKIH0KIAotLnRhYi1iYXIgPiAudGFicy5kcmFn
Z2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCB7CisudGFiLWJhci5kcmFnZ2luZy10YWIgPiAuaXRl
bS5zZWxlY3RlZCB7CiAgICAgei1pbmRleDogMjsKICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsK
IH0KQEAgLTQwMCw0OCArMzczLDQ2IEBAIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAu
d2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicy5hbmltYXRpCiAgICAgICAg
IC0tdGFiLWl0ZW0tZXh0cmEtbGlnaHQtYm9yZGVyLWNvbG9yOiB2YXIoLS10YWItaXRlbS1ib3Jk
ZXItY29sb3IpOwogICAgIH0KIAotICAgIGJvZHkuZG9ja2VkLmJvdHRvbSAudGFiLWJhciA+IC5i
b3JkZXIudG9wIHsKLSAgICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEyMCUpOwotICAgIH0KLQot
ICAgIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSB7CisgICAgLnRhYi1iYXIgPiAuaXRlbSB7CiAg
ICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgw
LCAwJSwgMTIlKSwgaHNsKDAsIDAlLCAxMCUpKTsKICAgICB9CiAKLSAgICAudGFiLWJhciA+IC50
YWJzID4gLml0ZW0gPiAudGl0bGUgeworICAgIC50YWItYmFyID4gLml0ZW0gPiAudGl0bGUgewog
ICAgICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDsKICAgICB9CiAKLSAgICAudGFiLWJhciA+
IC50YWJzID4gLml0ZW06bm90KC5kaXNhYmxlZCkuc2VsZWN0ZWQgeworICAgIC50YWItYmFyID4g
Lml0ZW06bm90KC5kaXNhYmxlZCkuc2VsZWN0ZWQgewogICAgICAgICBiYWNrZ3JvdW5kLWltYWdl
OiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDIzJSksIGhzbCgwLCAwJSwg
MjElKSk7CisgICAgICAgIGJvcmRlci10b3AtY29sb3I6IGhzbCgwLCAwJSwgMzclKTsKICAgICB9
CiAKLSAgICAudGFiLWJhciA+IC50YWJzOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2Vs
ZWN0ZWQpOmhvdmVyIHsKKyAgICAudGFiLWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3Qo
LnNlbGVjdGVkKTpob3ZlciB7CiAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFk
aWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwgMTElKSwgaHNsKDAsIDAlLCA5JSkpOwogICAgIH0K
IAotICAgIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbSA+IC5jbG9zZSwKLSAgICAudGFiLWJhciA+
IC50YWJzID4gLml0ZW0gPiAuaWNvbiB7CisgICAgLnRhYi1iYXIgPiAuaXRlbSA+IC5jbG9zZSwK
KyAgICAudGFiLWJhciA+IC5pdGVtID4gLmljb24gewogICAgICAgICBmaWx0ZXI6IHZhcigtLWZp
bHRlci1pbnZlcnQpOwogICAgIH0KIAotICAgIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZl
LCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgeworICAgIGJvZHkud2luZG93LWlu
YWN0aXZlIC50YWItYmFyIHsKICAgICAgICAgLS10YWItaXRlbS1ib3JkZXItY29sb3I6IGhzbCgw
LCAwJSwgMzQlKTsKKyAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tdGFiLWl0ZW0t
Ym9yZGVyLWNvbG9yKTsKIAogICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRh
bnQ7CiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgMTMlKSAhaW1wb3J0YW50
OwogICAgIH0KIAotICAgIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRv
Y2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtIHsKKyAgICBib2R5LndpbmRv
dy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtIHsKICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTog
bm9uZSAhaW1wb3J0YW50OwogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDEz
JSkgIWltcG9ydGFudDsKICAgICB9CiAKLSAgICBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2
ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50YWItYmFyID4gLnRhYnMgPiAuaXRlbS5zZWxl
Y3RlZCB7CisgICAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIgPiAuaXRlbS5zZWxlY3Rl
ZCB7CiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgMTklKSAhaW1wb3J0YW50
OwogICAgIH0KIAotICAgIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAud2luZG93LWRv
Y2tlZC1pbmFjdGl2ZSkgLnRhYi1iYXIgPiAudGFicyA+IC5pdGVtID4gLnRpdGxlIHsKKyAgICBi
b2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtID4gLnRpdGxlIHsKICAgICAgICAg
Y29sb3I6IGhzbCgwLCAwJSwgNTglKSAhaW1wb3J0YW50OwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcwppbmRleCA3
ODRmYzY5NWQ3NWFmYmYzYjA1Y2U4NzhiZTMwMmVjNWZhODE2ODI5Li44MDFiMTdkN2MxNTA5MjMz
MGQ5MmJhMWI3NzBmOGQ2ZjBjMGU5YjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCkBAIC0yNSw1OCArMjUsMzQgQEAKIAog
V0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogewotICAgIGNvbnN0cnVj
dG9yKGVsZW1lbnQpCisgICAgY29uc3RydWN0b3IoZWxlbWVudCwgdGFiQmFySXRlbXMpCiAgICAg
ewogICAgICAgICBzdXBlcihlbGVtZW50KTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgidGFiLWJhciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJy
b2xlIiwgInRhYmxpc3QiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlZG93biIsIHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQ2xpY2su
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWxlYXZlIiwgdGhpcy5faGFuZGxlTW91c2VMZWF2ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29u
dGV4dE1lbnUuYmluZCh0aGlzKSk7CiAKLSAgICAgICAgdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxk
KCJkaXYiLCAiYm9yZGVyIHRvcCIpOwotCi0gICAgICAgIGNvbnN0IG5hdmlnYXRpb25CYXJCZWZv
cmVFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhckJlZm9yZSA9IG5l
dyBXSS5OYXZpZ2F0aW9uQmFyKG5hdmlnYXRpb25CYXJCZWZvcmVFbGVtZW50LCB7c2l6ZXNUb0Zp
dDogdHJ1ZX0pOwotICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fbmF2aWdhdGlvbkJhckJl
Zm9yZSk7Ci0KLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyID0gdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKLSAgICAgICAgdGhpcy5fdGFi
Q29udGFpbmVyLmNsYXNzTmFtZSA9ICJ0YWJzIjsKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVy
LnNldEF0dHJpYnV0ZSgicm9sZSIsICJ0YWJsaXN0Iik7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRh
aW5lci5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24u
YmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX2hhbmRsZUNsaWNrLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl90
YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1v
dXNlTGVhdmUuYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5hZGRFdmVu
dExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51LmJpbmQodGhp
cykpOwotCi0gICAgICAgIGNvbnN0IG5hdmlnYXRpb25CYXJBZnRlckVsZW1lbnQgPSBudWxsOwot
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyQWZ0ZXIgPSBuZXcgV0kuTmF2aWdhdGlvbkJhcihu
YXZpZ2F0aW9uQmFyQWZ0ZXJFbGVtZW50LCB7c2l6ZXNUb0ZpdDogdHJ1ZX0pOwotICAgICAgICB0
aGlzLmFkZFN1YnZpZXcodGhpcy5fbmF2aWdhdGlvbkJhckFmdGVyKTsKLQotICAgICAgICB0aGlz
LmVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJib3JkZXIgYm90dG9tIik7CisgICAgICAgIHRo
aXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInRvcC1ib3JkZXIiKTsKIAogICAgICAgICB0
aGlzLl90YWJCYXJJdGVtcyA9IFtdOwogICAgICAgICB0aGlzLl9oaWRkZW5UYWJCYXJJdGVtcyA9
IFtdOwogCi0gICAgICAgIGNvbnN0IHRhYlBpY2tlclJlcHJlc2VudGVkT2JqZWN0ID0gbnVsbDsK
LSAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSA9IG5ldyBXSS5QaW5uZWRUYWJCYXJJ
dGVtKHRhYlBpY2tlclJlcHJlc2VudGVkT2JqZWN0LCAiSW1hZ2VzL1RhYlBpY2tlci5zdmciLCBX
SS5VSVN0cmluZygiU2hvdyBoaWRkZW4gdGFicyIpKTsKLSAgICAgICAgdGhpcy5fdGFiUGlja2Vy
VGFiQmFySXRlbS5oaWRkZW4gPSB0cnVlOwotICAgICAgICB0aGlzLl90YWJQaWNrZXJUYWJCYXJJ
dGVtLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLXBpY2tlciIpOworICAgICAgICBpZiAodGFi
QmFySXRlbXMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHRhYkJhckl0ZW0gaW4gdGFiQmFySXRl
bXMpCisgICAgICAgICAgICAgICAgdGhpcy5hZGRUYWJCYXJJdGVtKHRhYkJhckl0ZW0pOworICAg
ICAgICB9CisKKyAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSA9IG5ldyBXSS5QaW5u
ZWRUYWJCYXJJdGVtKCJJbWFnZXMvVGFiUGlja2VyLnN2ZyIsIFdJLlVJU3RyaW5nKCJTaG93IGhp
ZGRlbiB0YWJzIikpOworICAgICAgICB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidGFiLXBpY2tlciIsICJoaWRkZW4iKTsKICAgICAgICAgdGhpcy5hZGRU
YWJCYXJJdGVtKHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0sIHtzdXBwcmVzc0FuaW1hdGlvbnM6
IHRydWV9KTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGFkZE5hdmlnYXRpb25JdGVt
QmVmb3JlKG5hdmlnYXRpb25JdGVtKQotICAgIHsKLSAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJh
ckJlZm9yZS5hZGROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbSk7Ci0KLSAgICAgICAgdGhp
cy5uZWVkc0xheW91dCgpOwotICAgIH0KLQotICAgIGFkZE5hdmlnYXRpb25JdGVtQWZ0ZXIobmF2
aWdhdGlvbkl0ZW0pCi0gICAgewotICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyQWZ0ZXIuYWRk
TmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0pOwotCi0gICAgICAgIHRoaXMubmVlZHNMYXlv
dXQoKTsKLSAgICB9Ci0KICAgICBhZGRUYWJCYXJJdGVtKHRhYkJhckl0ZW0sIG9wdGlvbnMgPSB7
fSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmluc2VydFRhYkJhckl0ZW0odGFiQmFySXRl
bSwgdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoLCBvcHRpb25zKTsKQEAgLTEwOSw3ICs4NSw3IEBA
IFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgaW5kZXggPSBOdW1iZXIuY29uc3RyYWluKGluZGV4LCB0aGlzLm5vcm1hbFRh
YkNvdW50LCB0aGlzLl90YWJCYXJJdGVtcy5sZW5ndGgpOwogCi0gICAgICAgIGlmICh0aGlzLl90
YWJDb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgeworICAgICAgICBp
ZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKICAgICAg
ICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVTdHlsZXMuYmluZCh0aGlzKSk7CiAg
ICAgICAgICAgICBvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucyA9IHRydWU7CiAgICAgICAgIH0K
QEAgLTEyMywzNyArOTksMzcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0ku
VmlldwogICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCAr
IDFdOwogICAgICAgICBsZXQgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0
U2libGluZy5lbGVtZW50IDogdGhpcy5fdGFiQmFySXRlbXMubGFzdFZhbHVlLmVsZW1lbnQ7CiAK
LSAgICAgICAgaWYgKHRoaXMuX3RhYkNvbnRhaW5lci5jb250YWlucyhuZXh0U2libGluZ0VsZW1l
bnQpKQotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmluc2VydEJlZm9yZSh0YWJCYXJJ
dGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CisgICAgICAgIGlmICh0aGlzLmVsZW1l
bnQuY29udGFpbnMobmV4dFNpYmxpbmdFbGVtZW50KSkKKyAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5pbnNlcnRCZWZvcmUodGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYXBwZW5kQ2hpbGQo
dGFiQmFySXRlbS5lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZCh0YWJCYXJJdGVtLmVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFz
c0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwgIXRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFi
KCkpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIs
ICF0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpKTsKIAogICAgICAgICB0YWJCYXJJdGVt
LmVsZW1lbnQuc3R5bGUubGVmdCA9IG51bGw7CiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5z
dHlsZS53aWR0aCA9IG51bGw7CiAKICAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQogICAg
ICAgICB7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiYW5p
bWF0aW5nIik7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgi
aW5zZXJ0aW5nLXRhYiIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImlu
c2VydGluZy10YWIiKTsKIAogICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNB
bmRQb3NpdGlvbnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyk7CiAKLSAgICAgICAgICAgIHRo
aXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwg
cmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAg
ICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiByZW1vdmVTdHlsZXMoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxh
eW91dCIpOwotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUo
ImFuaW1hdGluZyIpOwotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5y
ZW1vdmUoImluc2VydGluZy10YWIiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgiaW5zZXJ0aW5nLXRhYiIpOwogCiAgICAgICAgICAgICB0YWJCYXJJdGVt
LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYmVpbmctaW5zZXJ0ZWQiKTsKIAogICAgICAgICAg
ICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAotICAgICAgICAg
ICAgdGhpcy5fdGFiQ29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRp
b25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xp
c3RlbmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc0FuaW1h
dGlvbnMpIHsKQEAgLTE3MCw3ICsxNDYsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0
ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmVmb3JlVGFi
U2l6ZXNBbmRQb3NpdGlvbnMuc2V0KHRhYkJhckl0ZW0sIHtsZWZ0OiAwLCB3aWR0aDogMH0pOwog
Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxh
eW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1s
YXlvdXQiKTsKICAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJi
ZWluZy1pbnNlcnRlZCIpOwogCiAgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXpl
c0FuZFBvc2l0aW9ucyhiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyk7CkBAIC0yMDYsNyArMTgy
LDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAg
ICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSBuZXh0VGFiQmFySXRlbTsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICh0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmlt
YXRpbmciKSkgeworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygi
YW5pbWF0aW5nIikpIHsKICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVT
dHlsZXMuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICBvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9u
cyA9IHRydWU7CiAgICAgICAgIH0KQEAgLTIyMiw3ICsxOTgsNyBAQCBXSS5UYWJCYXIgPSBjbGFz
cyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5yZW1v
dmUoKTsKIAogICAgICAgICB2YXIgaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIgPSB0aGlzLl9oYXNN
b3JlVGhhbk9uZU5vcm1hbFRhYigpOwotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NM
aXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYik7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwgIWhhc01vcmVU
aGFuT25lTm9ybWFsVGFiKTsKIAogICAgICAgICBpZiAoIWhhc01vcmVUaGFuT25lTm9ybWFsVGFi
IHx8IHdhc0xhc3ROb3JtYWxUYWIgfHwgIW9wdGlvbnMuc3VwcHJlc3NFeHBhbnNpb24pIHsKICAg
ICAgICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMpIHsKQEAgLTIzOSwxNSAr
MjE1LDE1IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKIAogICAg
ICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMu
X3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRo
aXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJjbG9zaW5nLXRhYiIpOworICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNsb3NpbmctdGFiIik7CiAKICAgICAgICAgICAg
IC8vIEZvciBSVEwsIHdlIG5lZWQgdG8gcGxhY2UgZXh0cmEgc3BhY2UgYmV0d2VlbiBwaW5uZWQg
dGFiIGFuZCBmaXJzdCBub3JtYWwgdGFiLgogICAgICAgICAgICAgLy8gRnJvbSBsZWZ0IHRvIHJp
Z2h0IHRoZXJlIGlzIHBpbm5lZCB0YWJzLCBleHRyYSBzcGFjZSwgdGhlbiBub3JtYWwgdGFicy4g
Q29tcHV0ZQogICAgICAgICAgICAgLy8gaG93IG11Y2ggZXh0cmEgc3BhY2Ugd2UgbmVlZCB0byBh
ZGRpdGlvbmFsbHkgYWRkIGZvciBub3JtYWwgdGFiIGl0ZW1zLgogICAgICAgICAgICAgbGV0IGV4
dHJhU3BhY2VCZXR3ZWVuTm9ybWFsQW5kUGlubmVkVGFicyA9IDA7CiAgICAgICAgICAgICBpZiAo
V0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJUTCkg
ewotICAgICAgICAgICAgICAgIGV4dHJhU3BhY2VCZXR3ZWVuTm9ybWFsQW5kUGlubmVkVGFicyA9
IHRoaXMuX3RhYkNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsKKyAgICAg
ICAgICAgICAgICBleHRyYVNwYWNlQmV0d2Vlbk5vcm1hbEFuZFBpbm5lZFRhYnMgPSB0aGlzLmVs
ZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7CiAgICAgICAgICAgICAgICAgZm9y
IChsZXQgY3VycmVudFRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXNGcm9tTGVmdFRvUmln
aHQoKSkKICAgICAgICAgICAgICAgICAgICAgZXh0cmFTcGFjZUJldHdlZW5Ob3JtYWxBbmRQaW5u
ZWRUYWJzIC09IGN1cnJlbnRUYWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkud2lkdGg7CiAgICAgICAgICAgICB9CkBAIC0yNzEsNyArMjQ3LDcgQEAgV0kuVGFiQmFyID0g
Y2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgaWYgKGxhc3ROb3JtYWxU
YWJCYXJJdGVtICE9PSB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pCiAgICAgICAgICAgICAgICAg
bGFzdE5vcm1hbFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IChwYXJzZUZsb2F0KGxh
c3ROb3JtYWxUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgpICsgMSkgKyAicHgiOwogCi0g
ICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJh
bnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVz
TGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkK
QEAgLTI4MCwxNiArMjU2LDE2IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJ
LlZpZXcKICAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gJiYgdGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtICE9PSBsYXN0Tm9ybWFsVGFiQmFySXRlbSkKICAgICAgICAgICAg
ICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IChwYXJz
ZUZsb2F0KHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoKSAtIDEp
ICsgInB4IjsKIAotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1v
dmUoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlz
dC5yZW1vdmUoImNsb3NpbmctdGFiIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgiY2xvc2luZy10YWIiKTsKIAogICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlv
dXQoKTsKIAotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAg
ICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVu
ZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghb3B0
aW9ucy5zdXBwcmVzc0FuaW1hdGlvbnMpIHsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5l
ci5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwogCiAgICAgICAgICAgICB0aGlzLl90
YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciA9IHRydWU7CiAKQEAgLTM4Miw3ICszNTgs
NyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAg
aWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkgewogICAgICAgICAgICAgdGhpcy5fc2VsZWN0
ZWRUYWJCYXJJdGVtLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9zZWxl
Y3RlZFRhYkJhckl0ZW0uaGlkZGVuKQorICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFi
QmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiaGlkZGVuIikpCiAgICAgICAgICAg
ICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgICAgICB9CiAKQEAgLTM5NSwyOCArMzcxLDMy
IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgcmV0
dXJuIHRoaXMuX3RhYkJhckl0ZW1zOwogICAgIH0KIAotICAgIGdldCB0YWJDb3VudCgpCisgICAg
Z2V0IG5vcm1hbFRhYkNvdW50KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJ
dGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
SS5UYWJDb250ZW50VmlldykubGVuZ3RoOworICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRl
bXMuZmlsdGVyKChpdGVtKSA9PiAhKGl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVt
KSkubGVuZ3RoOwogICAgIH0KIAotICAgIGdldCBub3JtYWxUYWJDb3VudCgpCisgICAgZ2V0IHNh
dmVhYmxlVGFiQ291bnQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1z
LmZpbHRlcigoaXRlbSkgPT4gIShpdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkp
Lmxlbmd0aDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zLmZpbHRlcigoaXRlbSkg
PT4gaXRlbS5yZXByZXNlbnRlZE9iamVjdCAmJiBpdGVtLnJlcHJlc2VudGVkT2JqZWN0LmNvbnN0
cnVjdG9yLnNob3VsZFNhdmVUYWIoKSkubGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFByb3RlY3Rl
ZAogCiAgICAgbGF5b3V0KCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl90YWJDb250YWluZXIu
Y2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpCisgICAgICAgIGlmICh0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImNhbGN1
bGF0ZS13aWR0aCIpOwotICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92
ZSgiY29sbGFwc2VkIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjYWxj
dWxhdGUtd2lkdGgiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNv
bGxhcHNlZCIpOworCisgICAgICAgIGZ1bmN0aW9uIGZvcmNlSXRlbUhpZGRlbihpdGVtLCBoaWRk
ZW4pIHsKKyAgICAgICAgICAgIGl0ZW0uZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJoaWRkZW4i
LCAhIWhpZGRlbik7CisgICAgICAgIH0KIAogICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMu
X3RhYkJhckl0ZW1zKQotICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSBpdGVtID09PSB0aGlzLl90
YWJQaWNrZXJUYWJCYXJJdGVtOworICAgICAgICAgICAgZm9yY2VJdGVtSGlkZGVuKGl0ZW0sIGl0
ZW0gPT09IHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0pOwogCiAgICAgICAgIGZ1bmN0aW9uIG1l
YXN1cmVJdGVtV2lkdGgoaXRlbSkgewogICAgICAgICAgICAgaWYgKCFpdGVtW1dJLlRhYkJhci5D
YWNoZWRXaWR0aFN5bWJvbF0pCkBAIC00MzQsMTMgKzQxNCwxMyBAQCBXSS5UYWJCYXIgPSBjbGFz
cyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMuX2hpZGRlblRhYkJhckl0ZW1z
ID0gW107CiAKICAgICAgICAgbGV0IHRvdGFsSXRlbVdpZHRoID0gcmVjYWxjdWxhdGVJdGVtV2lk
dGhzKCk7Ci0gICAgICAgIGxldCBiYXJXaWR0aCA9IHRoaXMuX3RhYkNvbnRhaW5lci5yZWFsT2Zm
c2V0V2lkdGg7CisgICAgICAgIGxldCBiYXJXaWR0aCA9IHRoaXMuZWxlbWVudC5yZWFsT2Zmc2V0
V2lkdGg7CiAKICAgICAgICAgaWYgKHRvdGFsSXRlbVdpZHRoID4gYmFyV2lkdGgpIHsKLSAgICAg
ICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKICAgICAg
ICAgICAgIHRvdGFsSXRlbVdpZHRoID0gcmVjYWxjdWxhdGVJdGVtV2lkdGhzKCk7CiAgICAgICAg
ICAgICBpZiAodG90YWxJdGVtV2lkdGggPiBiYXJXaWR0aCkgewotICAgICAgICAgICAgICAgIHRo
aXMuX3RhYlBpY2tlclRhYkJhckl0ZW0uaGlkZGVuID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
Zm9yY2VJdGVtSGlkZGVuKHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0sIGZhbHNlKTsKICAgICAg
ICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCArPSBtZWFzdXJlSXRlbVdpZHRoKHRoaXMuX3RhYlBp
Y2tlclRhYkJhckl0ZW0pOwogICAgICAgICAgICAgfQogCkBAIC00NTIsMjEgKzQzMiwxMyBAQCBX
SS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgdG90YWxJdGVtV2lkdGggLT0gbWVhc3Vy
ZUl0ZW1XaWR0aChpdGVtKTsKLSAgICAgICAgICAgICAgICBpdGVtLmhpZGRlbiA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgZm9yY2VJdGVtSGlkZGVuKGl0ZW0sIHRydWUpOwogCiAgICAgICAgICAg
ICAgICAgdGhpcy5faGlkZGVuVGFiQmFySXRlbXMucHVzaChpdGVtKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3Zl
KCJjYWxjdWxhdGUtd2lkdGgiKTsKLSAgICB9Ci0KLSAgICBkaWRMYXlvdXRTdWJ0cmVlKCkKLSAg
ICB7Ci0gICAgICAgIHN1cGVyLmRpZExheW91dFN1YnRyZWUoKTsKLQotICAgICAgICB0aGlzLl90
YWJDb250YWluZXIuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZS1ib3JkZXItc3RhcnQiLCB0aGlzLl9u
YXZpZ2F0aW9uQmFyQmVmb3JlLm5hdmlnYXRpb25JdGVtcy5ldmVyeSgoaXRlbSkgPT4gaXRlbS5o
aWRkZW4pKTsKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoImhp
ZGUtYm9yZGVyLWVuZCIsIHRoaXMuX25hdmlnYXRpb25CYXJBZnRlci5uYXZpZ2F0aW9uSXRlbXMu
ZXZlcnkoKGl0ZW0pID0+IGl0ZW0uaGlkZGVuKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKCJjYWxjdWxhdGUtd2lkdGgiKTsKICAgICB9CiAKICAgICAvLyBQcml2YXRl
CkBAIC01MDgsNyArNDgwLDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0ku
VmlldwogICAgIHsKICAgICAgICAgdmFyIHRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyA9IG5l
dyBNYXA7CiAKLSAgICAgICAgbGV0IGJhclJlY3QgPSB0aGlzLl90YWJDb250YWluZXIuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGNvbnN0IGJhclJlY3QgPSB0aGlzLmVsZW1lbnQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAKICAgICAgICAgZm9yICh2YXIgdGFiQmFySXRlbSBv
ZiB0aGlzLl90YWJCYXJJdGVtcykgewogICAgICAgICAgICAgdmFyIGJvdW5kaW5nUmVjdCA9IHRh
YkJhckl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKQEAgLTU0NywzNiArNTE5
LDM2IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAg
ICAgIGlmICghYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpCiAgICAgICAgICAgICAgICAgYmVm
b3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQ
b3NpdGlvbnMoKTsKIAotICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5y
ZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CiAgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJh
ckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwogCiAgICAgICAgICAgICB2YXIgYWZ0ZXJUYWJTaXpl
c0FuZFBvc2l0aW9ucyA9IHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygp
OwogCiAgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhi
ZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyk7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWlu
ZXIuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKIAogICAgICAgICAgICAgZnVuY3Rp
b24gYW5pbWF0ZVRhYnMoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRoaXMuX3Rh
YkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOwotICAgICAg
ICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJleHBhbmRpbmctdGFi
cyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMt
bGF5b3V0Iik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFu
aW1hdGluZyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJl
eHBhbmRpbmctdGFicyIpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVt
U2l6ZXNBbmRQb3NpdGlvbnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyk7CiAKLSAgICAgICAg
ICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNp
dGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxl
c0xpc3RlbmVyKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gcmVtb3Zl
U3R5bGVzKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWlu
ZXIuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAgICAgIHRo
aXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kaW5nLXRh
YnMiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3Rh
dGljLWxheW91dCIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgiZXhwYW5kaW5nLXRhYnMiKTsKIAogICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFy
VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAKICAgICAgICAgICAgICAgICB0aGlzLnVw
ZGF0ZUxheW91dCgpOwogCi0gICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLnJlbW92
ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5l
cik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndl
YmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAKICAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9CkBAIC02ODEsNyArNjUzLDcgQEAgV0kuVGFi
QmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB2YXIgY2xvc2VCdXR0
b25FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoIi4iICsgV0kuVGFiQmFySXRlbS5DbG9z
ZUJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgaWYgKGNsb3NlQnV0dG9uRWxlbWVudCB8
fCBjbGlja2VkTWlkZGxlQnV0dG9uKSB7CiAgICAgICAgICAgICAvLyBEaXNhbGxvdyBjbG9zaW5n
IHRoZSBvbmx5IHRhYi4KLSAgICAgICAgICAgIGlmICh0aGlzLl90YWJDb250YWluZXIuY2xhc3NM
aXN0LmNvbnRhaW5zKCJzaW5nbGUtdGFiIikpCisgICAgICAgICAgICBpZiAodGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5jb250YWlucygic2luZ2xlLXRhYiIpKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAgICAgaWYgKCFldmVudC5hbHRLZXkpIHsKQEAgLTcxNiwyMyArNjg4LDIx
IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAK
LSAgICAgICAgaWYgKCF0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0
aWMtbGF5b3V0IikpIHsKKyAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRh
aW5zKCJzdGF0aWMtbGF5b3V0IikpIHsKICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRl
bVNpemVzQW5kUG9zaXRpb25zKHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9u
cygpKTsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJzdGF0
aWMtbGF5b3V0Iik7Ci0gICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NMaXN0LmFk
ZCgiZHJhZ2dpbmctdGFiIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImRyYWdnaW5nLXRhYiIpOwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IGNvbnRhaW5lck9m
ZnNldCA9IHRoaXMuX3RhYkNvbnRhaW5lci50b3RhbE9mZnNldExlZnQ7Ci0KICAgICAgICAgaWYg
KHRoaXMuX21vdXNlT2Zmc2V0ID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICB0aGlzLl9tb3Vz
ZU9mZnNldCA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQu
dG90YWxPZmZzZXRMZWZ0OwogCi0gICAgICAgIGxldCB0YWJCYXJNb3VzZU9mZnNldCA9IGV2ZW50
LnBhZ2VYIC0gY29udGFpbmVyT2Zmc2V0OworICAgICAgICB2YXIgdGFiQmFyTW91c2VPZmZzZXQg
PSBldmVudC5wYWdlWCAtIHRoaXMuZWxlbWVudC50b3RhbE9mZnNldExlZnQ7CiAgICAgICAgIHZh
ciBuZXdMZWZ0ID0gdGFiQmFyTW91c2VPZmZzZXQgLSB0aGlzLl9tb3VzZU9mZnNldDsKIAogICAg
ICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbmV3TGVm
dCArICJweCI7CiAKLSAgICAgICAgdmFyIHNlbGVjdGVkVGFiTWlkWCA9IGNvbnRhaW5lck9mZnNl
dCArIG5ld0xlZnQgKyAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQucmVhbE9mZnNl
dFdpZHRoIC8gMik7CisgICAgICAgIHZhciBzZWxlY3RlZFRhYk1pZFggPSBuZXdMZWZ0ICsgKHRo
aXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aCAvIDIpOwogCiAg
ICAgICAgIHZhciBjdXJyZW50SW5kZXggPSB0aGlzLl90YWJCYXJJdGVtcy5pbmRleE9mKHRoaXMu
X3NlbGVjdGVkVGFiQmFySXRlbSk7CiAgICAgICAgIHZhciBuZXdJbmRleCA9IGN1cnJlbnRJbmRl
eDsKQEAgLTc2Miw3ICs3MzIsNyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBX
SS5WaWV3CiAgICAgICAgIGxldCBuZXh0U2libGluZyA9IHRoaXMuX3RhYkJhckl0ZW1zW25ld0lu
ZGV4ICsgMV07CiAgICAgICAgIGxldCBuZXh0U2libGluZ0VsZW1lbnQgPSBuZXh0U2libGluZyA/
IG5leHRTaWJsaW5nLmVsZW1lbnQgOiBudWxsOwogCi0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5l
ci5pbnNlcnRCZWZvcmUodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJs
aW5nRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fc2Vs
ZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CiAKICAgICAgICAg
Ly8gRklYTUU6IEFuaW1hdGUgdGhlIHRhYnMgdGhhdCBtb3ZlIHRvIG1ha2Ugcm9vbSBmb3IgdGhl
IHNlbGVjdGVkIHRhYi4gVGhpcyB3YXMgY2F1c2luZyBtZSB0cm91YmxlIHdoZW4gSSB0cmllZC4K
IApAQCAtNzgxLDEwICs3NTEsMTAgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMg
V0kuVmlldwogICAgICAgICBpZiAoIXRoaXMuX21vdXNlSXNEb3duKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJkcmFn
Z2luZy10YWIiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImRyYWdn
aW5nLXRhYiIpOwogCiAgICAgICAgIGlmICghdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1v
dXNlRW50ZXIpIHsKLSAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QucmVt
b3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwogICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJ
dGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxl
dCBsZWZ0ID0gMDsKQEAgLTgxMiwxMyArNzgyLDEzIEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJh
ciBleHRlbmRzIFdJLlZpZXcKIAogICAgIF9oYW5kbGVNb3VzZUxlYXZlKGV2ZW50KQogICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX21vdXNlSXNEb3duIHx8ICF0aGlzLl90YWJBbmltYXRlZENsb3Nl
ZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlu
cygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFp
bnMoImFuaW1hdGluZyIpKQorICAgICAgICBpZiAodGhpcy5fbW91c2VJc0Rvd24gfHwgIXRoaXMu
X3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikgfHwgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucygiYW5pbWF0aW5nIikpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8g
VGhpcyBldmVudCBjYW4gc3RpbGwgZmlyZSB3aGVuIHRoZSBtb3VzZSBpcyBpbnNpZGUgdGhlIGVs
ZW1lbnQgaWYgRE9NIG5vZGVzIGFyZSBhZGRlZCwgcmVtb3ZlZCBvciBnZW5lcmFsbHkgY2hhbmdl
IGluc2lkZS4KICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG1vdXNlIHJlYWxseSBkaWQgbGVhdmUg
dGhlIGVsZW1lbnQgYnkgY2hlY2tpbmcgdGhlIGJvdW5kcy4KICAgICAgICAgLy8gRklYTUU6IElz
IHRoaXMgYSBXZWJLaXQgYnVnIG9yIGNvcnJlY3QgYmVoYXZpb3I/Ci0gICAgICAgIGxldCBiYXJS
ZWN0ID0gdGhpcy5fdGFiQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAg
ICBjb25zdCBiYXJSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwog
ICAgICAgICBpZiAoZXZlbnQucGFnZVkgPiBiYXJSZWN0LnRvcCAmJiBldmVudC5wYWdlWSA8IGJh
clJlY3QuYm90dG9tICYmIGV2ZW50LnBhZ2VYID4gYmFyUmVjdC5sZWZ0ICYmIGV2ZW50LnBhZ2VY
IDwgYmFyUmVjdC5yaWdodCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtODMwLDcgKzgwMCw3
IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgbGV0
IGNvbnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKIAog
ICAgICAgICBmb3IgKGxldCB0YWJDbGFzcyBvZiBXSS5rbm93blRhYkNsYXNzZXMoKSkgewotICAg
ICAgICAgICAgaWYgKCF0YWJDbGFzcy5pc1RhYkFsbG93ZWQoKSB8fCAhdGFiQ2xhc3Muc2hvdWxk
U2F2ZVRhYigpKQorICAgICAgICAgICAgaWYgKCF0YWJDbGFzcy5pc1RhYkFsbG93ZWQoKSB8fCB0
YWJDbGFzcy50YWJJbmZvKCkuaXNFcGhlbWVyYWwpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIGxldCBvcGVuVGFiQmFySXRlbSA9IG51bGw7CkBAIC04NjQsNCArODM0
LDUgQEAgV0kuVGFiQmFyLkV2ZW50ID0gewogICAgIFRhYkJhckl0ZW1BZGRlZDogInRhYi1iYXIt
dGFiLWJhci1pdGVtLWFkZGVkIiwKICAgICBUYWJCYXJJdGVtUmVtb3ZlZDogInRhYi1iYXItdGFi
LWJhci1pdGVtLXJlbW92ZWQiLAogICAgIFRhYkJhckl0ZW1zUmVvcmRlcmVkOiAidGFiLWJhci10
YWItYmFyLWl0ZW1zLXJlb3JkZXJlZCIsCisgICAgT3BlbkRlZmF1bHRUYWI6ICJ0YWItYmFyLW9w
ZW4tZGVmYXVsdC10YWIiCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhckl0ZW0uanMKaW5kZXggY2VmOWQ1Njg3MGZmNTkxZDVm
ZGMwN2MwMjRiMTczZjNlMzhhNGVhYi4uYzg2NzZkMDlmN2Y1ZjQ4MjhmODc0ZTM5YjE2OTI1YWU3
NjU5Yzk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGFiQmFySXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzCkBAIC0yNCwxMSArMjQsMTIgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5UYWJCYXJJdGVtID0gY2xhc3MgVGFi
QmFySXRlbQorV0kuVGFiQmFySXRlbSA9IGNsYXNzIFRhYkJhckl0ZW0gZXh0ZW5kcyBXSS5PYmpl
Y3QKIHsKLSAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCwgaW1hZ2UsIHRpdGxlKQor
ICAgIGNvbnN0cnVjdG9yKGltYWdlLCB0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewot
ICAgICAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0IHx8IG51
bGw7CisgICAgICAgIHN1cGVyKCk7CisKICAgICAgICAgdGhpcy5fcGFyZW50VGFiQmFyID0gbnVs
bDsKIAogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CkBAIC00NywxMiArNDgsMTUgQEAgV0kuVGFiQmFySXRlbSA9IGNsYXNzIFRhYkJhckl0ZW0K
IAogICAgICAgICB0aGlzLnRpdGxlID0gdGl0bGU7CiAgICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFn
ZTsKKyAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0Owog
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKSB7IHJldHVybiB0aGlz
Ll9lbGVtZW50OyB9CisKICAgICBnZXQgcmVwcmVzZW50ZWRPYmplY3QoKSB7IHJldHVybiB0aGlz
Ll9yZXByZXNlbnRlZE9iamVjdDsgfQorICAgIHNldCByZXByZXNlbnRlZE9iamVjdChyZXByZXNl
bnRlZE9iamVjdCkgeyB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0
IHx8IG51bGw7IH0KIAogICAgIGdldCBwYXJlbnRUYWJCYXIoKSB7IHJldHVybiB0aGlzLl9wYXJl
bnRUYWJCYXI7IH0KICAgICBzZXQgcGFyZW50VGFiQmFyKHRhYkJhcil7IHRoaXMuX3BhcmVudFRh
YkJhciA9IHRhYkJhciB8fCBudWxsOyB9CkBAIC03OSwxNyArODMsMTcgQEAgV0kuVGFiQmFySXRl
bSA9IGNsYXNzIFRhYkJhckl0ZW0KIAogICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZGlzYWJsZWQiLCAhIWRp
c2FibGVkKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJkaXNhYmxl
ZCIsIGRpc2FibGVkKTsKICAgICB9CiAKLSAgICBnZXQgaGlkZGVuKCkKKyAgICBnZXQgaXNEZWZh
dWx0VGFiKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucygiaGlkZGVuIik7CisgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucygiZGVmYXVsdC10YWIiKTsKICAgICB9CiAKLSAgICBzZXQgaGlkZGVuKGhpZGRl
bikKKyAgICBzZXQgaXNEZWZhdWx0VGFiKGlzRGVmYXVsdFRhYikKICAgICB7Ci0gICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZGVuIiwgISFoaWRkZW4pOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImRlZmF1bHQtdGFiIiwgaXNEZWZhdWx0
VGFiKTsKICAgICB9CiAKICAgICBnZXQgaW1hZ2UoKSB7IHJldHVybiB0aGlzLl9pY29uRWxlbWVu
dC5zcmM7IH0KQEAgLTExMCw4ICsxMTQsNiBAQCBXSS5UYWJCYXJJdGVtID0gY2xhc3MgVGFiQmFy
SXRlbQogICAgICAgICB0aGlzLnRpdGxlRGlkQ2hhbmdlKCk7CiAgICAgfQogCi0gICAgLy8gUHJv
dGVjdGVkCi0KICAgICB0aXRsZURpZENoYW5nZSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMKaW5kZXggNWNlNzcxM2VkNzFlN2RlMjVj
NjM5NTk4MDMzMjBlZTllYjA0MjUzNy4uODRiZWQ1ZWNkY2JkZDZhYTUyY2Y3OTA5MDhlZjA3NmY5
MGFkMDFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGFiQnJvd3Nlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCkBAIC0xNjgsNyArMTY4LDcgQEAgV0kuVGFiQnJvd3Nl
ciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHRoaXMuX3RhYkJhci5hZGRUYWJCYXJJdGVtKHRhYkJhckl0ZW0sIG9wdGlvbnMpOwog
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy5sZW5n
dGggPT09IHRoaXMuX3RhYkJhci50YWJDb3VudCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRo
aXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy5sZW5ndGggPT09IHRoaXMuX3RhYkJhci5zYXZlYWJs
ZVRhYkNvdW50KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuc2VsZWN0ZWRUYWJDb250
ZW50VmlldyB8fCB0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgPT09IHRoaXMuX3JlY2VudFRh
YkNvbnRlbnRWaWV3c1swXSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDYsNyArMjA2
LDcgQEAgV0kuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAK
ICAgICAgICAgdGhpcy5fdGFiQmFyLnJlbW92ZVRhYkJhckl0ZW0odGFiQ29udGVudFZpZXcudGFi
QmFySXRlbSwgb3B0aW9ucyk7CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVjZW50
VGFiQ29udGVudFZpZXdzLmxlbmd0aCA9PT0gdGhpcy5fdGFiQmFyLnRhYkNvdW50KTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzLmxlbmd0aCA9PT0g
dGhpcy5fdGFiQmFyLnNhdmVhYmxlVGFiQ291bnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCgh
dGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3IHx8IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50Vmll
dyA9PT0gdGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzWzBdKTsKIAogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTIzMSw4ICsyMzEsNyBAQCBXSS5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3Nl
ciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5fdGFi
QmFyLnNlbGVjdGVkVGFiQmFySXRlbSA/IHRoaXMuX3RhYkJhci5zZWxlY3RlZFRhYkJhckl0ZW0u
cmVwcmVzZW50ZWRPYmplY3QgOiBudWxsOwogCiAgICAgICAgIGlmICh0YWJDb250ZW50Vmlldykg
ewotICAgICAgICAgICAgbGV0IHRhYkNsYXNzID0gdGFiQ29udGVudFZpZXcuY29uc3RydWN0b3I7
Ci0gICAgICAgICAgICBsZXQgc2hvdWxkU2F2ZVRhYiA9IHRhYkNsYXNzLnNob3VsZFNhdmVUYWIo
KSB8fCB0YWJDbGFzcy5zaG91bGRQaW5UYWIoKTsKKyAgICAgICAgICAgIGxldCBzaG91bGRTYXZl
VGFiID0gdGFiQ29udGVudFZpZXcuY29uc3RydWN0b3Iuc2hvdWxkU2F2ZVRhYigpOwogICAgICAg
ICAgICAgaWYgKHNob3VsZFNhdmVUYWIpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9yZWNlbnRU
YWJDb250ZW50Vmlld3MucmVtb3ZlKHRhYkNvbnRlbnRWaWV3KTsKICAgICAgICAgICAgICAgICB0
aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MudW5zaGlmdCh0YWJDb250ZW50Vmlldyk7CkBAIC0y
NDEsNyArMjQwLDcgQEAgV0kuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBX
SS5WaWV3CiAgICAgICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVu
dFZpZXcodGFiQ29udGVudFZpZXcpOwogCiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
LnNlbGVjdGVkVGFiQ29udGVudFZpZXcpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fcmVjZW50VGFiQ29udGVudFZpZXdzLmxlbmd0aCA9PT0gdGhpcy5fdGFiQmFyLnRhYkNvdW50
KTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3
cy5sZW5ndGggPT09IHRoaXMuX3RhYkJhci5zYXZlYWJsZVRhYkNvdW50KTsKICAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyA9PT0gdGhpcy5fcmVj
ZW50VGFiQ29udGVudFZpZXdzWzBdIHx8ICFzaG91bGRTYXZlVGFiKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVu
dFZpZXdzKCk7CkBAIC0yODcsMTIgKzI4NiwxMiBAQCBXSS5UYWJCcm93c2VyID0gY2xhc3MgVGFi
QnJvd3NlciBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICB0aGlzLl9yZWNlbnRUYWJDb250ZW50
Vmlld3MucmVtb3ZlKHRhYkNvbnRlbnRWaWV3KTsKIAotICAgICAgICBpZiAodGFiQ29udGVudFZp
ZXcuY29uc3RydWN0b3Iuc2hvdWxkU2F2ZVRhYigpKQorICAgICAgICBpZiAoIXRhYkNvbnRlbnRW
aWV3LmNvbnN0cnVjdG9yLnRhYkluZm8oKS5pc0VwaGVtZXJhbCkKICAgICAgICAgICAgIHRoaXMu
X2Nsb3NlZFRhYkNsYXNzZXMuYWRkKHRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yKTsKIAogICAg
ICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUNvbnRlbnRWaWV3KHRhYkNvbnRl
bnRWaWV3KTsKIAotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNlbnRUYWJDb250ZW50
Vmlld3MubGVuZ3RoID09PSB0aGlzLl90YWJCYXIudGFiQ291bnQpOworICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3RoID09PSB0aGlzLl90YWJC
YXIuc2F2ZWFibGVUYWJDb3VudCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnNlbGVj
dGVkVGFiQ29udGVudFZpZXcgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0aGlz
Ll9yZWNlbnRUYWJDb250ZW50Vmlld3NbMF0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5q
cwppbmRleCA5YTFiNjI2YjQwMDI5YjQ4MTUwOTI2OTdkY2M0MDNmYTNjYmNlMmY2Li5hZTkwNjVm
OTIxNmZhZGQ1ZmJjYTUxOTZjZDY3MDlkNDAzOTM1MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5q
cwpAQCAtMjUsMzAgKzI1LDM4IEBACiAKIFdJLlRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgVGFiQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKHRhYklu
Zm8sIHtuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IsIGRldGFpbHNTaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvcnN9ID0ge30pCisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgc3R5bGVD
bGFzc05hbWVzLCB0YWJCYXJJdGVtLCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3Is
IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMpCiAgICAgewotICAgICAgICBjb25zb2xl
LmFzc2VydCghbmF2aWdhdGlvblNpZGViYXJQYW5lbENvbnN0cnVjdG9yIHx8IG5hdmlnYXRpb25T
aWRlYmFyUGFuZWxDb25zdHJ1Y3Rvci5wcm90b3R5cGUgaW5zdGFuY2VvZiBXSS5OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWRldGFpbHNTaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvcnMgfHwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycy5ldmVyeSgo
ZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9yKSA9PiBkZXRhaWxzU2lkZWJhclBhbmVsQ29u
c3RydWN0b3IucHJvdG90eXBlIGluc3RhbmNlb2YgV0kuRGV0YWlsc1NpZGViYXJQYW5lbCkpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgaWRlbnRpZmllciA9PT0gInN0cmluZyIpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Ygc3R5bGVDbGFzc05hbWVzID09PSAic3RyaW5n
IiB8fCBzdHlsZUNsYXNzTmFtZXMuZXZlcnkoKGNsYXNzTmFtZSkgPT4gdHlwZW9mIGNsYXNzTmFt
ZSA9PT0gInN0cmluZyIpKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFiQmFySXRlbSBpbnN0
YW5jZW9mIFdJLlRhYkJhckl0ZW0pOworICAgICAgICBjb25zb2xlLmFzc2VydCghbmF2aWdhdGlv
blNpZGViYXJQYW5lbENvbnN0cnVjdG9yIHx8IHR5cGVvZiBuYXZpZ2F0aW9uU2lkZWJhclBhbmVs
Q29uc3RydWN0b3IgPT09ICJmdW5jdGlvbiIpOworICAgICAgICBjb25zb2xlLmFzc2VydCghZGV0
YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyB8fCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3Ry
dWN0b3JzLmV2ZXJ5KChkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3IpID0+IHR5cGVvZiBk
ZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3IgPT09ICJmdW5jdGlvbiIpKTsKIAogICAgICAg
ICBzdXBlcihudWxsKTsKIAotICAgICAgICB0aGlzLl9pZGVudGlmaWVyID0gdGFiSW5mby5pZGVu
dGlmaWVyOwotICAgICAgICB0aGlzLl90YWJCYXJJdGVtID0gdGhpcy5jb25zdHJ1Y3Rvci5zaG91
bGRQaW5UYWIoKSA/IFdJLlBpbm5lZFRhYkJhckl0ZW0uZnJvbVRhYkNvbnRlbnRWaWV3KHRoaXMp
IDogV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkNvbnRlbnRWaWV3KHRoaXMpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiIik7CisKKyAgICAgICAgaWYgKHR5cGVv
ZiBzdHlsZUNsYXNzTmFtZXMgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgc3R5bGVDbGFzc05h
bWVzID0gW3N0eWxlQ2xhc3NOYW1lc107CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoLi4uc3R5bGVDbGFzc05hbWVzKTsKKworICAgICAgICB0aGlzLl9pZGVudGlmaWVyID0g
aWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5fdGFiQmFySXRlbSA9IHRhYkJhckl0ZW07CiAgICAg
ICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciA9IG5hdmlnYXRpb25T
aWRlYmFyUGFuZWxDb25zdHJ1Y3RvciB8fCBudWxsOwogICAgICAgICB0aGlzLl9kZXRhaWxzU2lk
ZWJhclBhbmVsQ29uc3RydWN0b3JzID0gZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyB8
fCBbXTsKIAogICAgICAgICBjb25zdCBkZWZhdWx0U2lkZWJhcldpZHRoID0gMzAwOwogCi0gICAg
ICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyQ29sbGFwc2VkU2V0dGluZyA9IG5ldyBXSS5TZXR0
aW5nKHRoaXMuX2lkZW50aWZpZXIgKyAiLW5hdmlnYXRpb24tc2lkZWJhci1jb2xsYXBzZWQiLCBm
YWxzZSk7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyV2lkdGhTZXR0aW5nID0gbmV3
IFdJLlNldHRpbmcodGhpcy5faWRlbnRpZmllciArICItbmF2aWdhdGlvbi1zaWRlYmFyLXdpZHRo
IiwgZGVmYXVsdFNpZGViYXJXaWR0aCk7Ci0KLSAgICAgICAgdGhpcy5fZGV0YWlsc1NpZGViYXJD
b2xsYXBzZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRlbnRpZmllciArICItZGV0
YWlscy1zaWRlYmFyLWNvbGxhcHNlZCIsICF0aGlzLmRldGFpbHNTaWRlYmFyRXhwYW5kZWRCeURl
ZmF1bHQpOwotICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhclNlbGVjdGVkUGFuZWxTZXR0aW5n
ID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRlbnRpZmllciArICItZGV0YWlscy1zaWRlYmFyLXNl
bGVjdGVkLXBhbmVsIiwgbnVsbCk7Ci0gICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyV2lkdGhT
ZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhpcy5faWRlbnRpZmllciArICItZGV0YWlscy1zaWRl
YmFyLXdpZHRoIiwgZGVmYXVsdFNpZGViYXJXaWR0aCk7CisgICAgICAgIHRoaXMuX25hdmlnYXRp
b25TaWRlYmFyQ29sbGFwc2VkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50aWZpZXIgKyAi
LW5hdmlnYXRpb24tc2lkZWJhci1jb2xsYXBzZWQiLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX25h
dmlnYXRpb25TaWRlYmFyV2lkdGhTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoaWRlbnRpZmllciAr
ICItbmF2aWdhdGlvbi1zaWRlYmFyLXdpZHRoIiwgZGVmYXVsdFNpZGViYXJXaWR0aCk7CiAKLSAg
ICAgICAgdGhpcy5fY29va2llU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKHRoaXMuX2lkZW50aWZp
ZXIgKyAiLXRhYi1jb29raWUiLCB7fSk7CisgICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyQ29s
bGFwc2VkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lk
ZWJhci1jb2xsYXBzZWQiLCAhdGhpcy5kZXRhaWxzU2lkZWJhckV4cGFuZGVkQnlEZWZhdWx0KTsK
KyAgICAgICAgdGhpcy5fZGV0YWlsc1NpZGViYXJTZWxlY3RlZFBhbmVsU2V0dGluZyA9IG5ldyBX
SS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci1zZWxlY3RlZC1wYW5lbCIs
IG51bGwpOworICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZyA9IG5ldyBX
SS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci13aWR0aCIsIGRlZmF1bHRT
aWRlYmFyV2lkdGgpOwogCi0gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWIi
LCB0aGlzLl9pZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5fY29va2llU2V0dGluZyA9IG5ldyBX
SS5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLXRhYi1jb29raWUiLCB7fSk7CiAgICAgfQogCiAgICAg
c3RhdGljIGlzVGFiQWxsb3dlZCgpCkBAIC01NywxMiArNjUsNiBAQCBXSS5UYWJDb250ZW50Vmll
dyA9IGNsYXNzIFRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3RhdGljIHNob3VsZFBpblRhYigpCi0gICAgewot
ICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHRhYiBzaG91bGQgbm90IGJlIGFsbG93ZWQg
dG8gYmUgY2xvc2VkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgc3RhdGlj
IHNob3VsZFNhdmVUYWIoKQogICAgIHsKICAgICAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUg
dGFiIHNob3VsZCBub3QgYmUgcmVzdG9yZWQgd2hlbiByZS1vcGVuaW5nIHRoZSBJbnNwZWN0b3Iu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZU92ZXJ2aWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuY3NzCmluZGV4IDY2ZTkxN2U2NTFjZDUzZDliZTc0MzVh
OTc0NjkyZTFjNThiMTZmODQuLjk3ZmQ4NzE4NzIyMTNlNWYxMjdmYWQ2MWE0ODE1MzZlN2VhNDc2
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lT3ZlcnZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuY3NzCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9k
eVtkaXI9cnRsXSAudGltZWxpbmUtb3ZlcnZpZXc6bm90KC5mcmFtZXMpID4gOm1hdGNoZXMoLnNj
cm9sbC1jb250YWluZXIsIC50aW0KIH0KIAogLnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRyZWUtb3V0
bGluZS50aW1lbGluZXMgLml0ZW0uc2VsZWN0ZWQgKyAuaXRlbSwKLWJvZHk6bWF0Y2hlcygud2lu
ZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRpbWVsaW5lLW92ZXJ2aWV3
ID4gLnRyZWUtb3V0bGluZS50aW1lbGluZXMgLml0ZW0uc2VsZWN0ZWQgKyAuaXRlbSB7Citib2R5
LndpbmRvdy1pbmFjdGl2ZSAudGltZWxpbmUtb3ZlcnZpZXcgPiAudHJlZS1vdXRsaW5lLnRpbWVs
aW5lcyAuaXRlbS5zZWxlY3RlZCArIC5pdGVtIHsKICAgICBib3JkZXItdG9wLWNvbG9yOiBoc2wo
MCwgMCUsIDgzJSk7CiB9CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCBib2R5W2Rpcj1ydGxdIC50aW1l
bGluZS1vdmVydmlldyA+IC5zY3JvbGwtY29udGFpbmVyID4gLnNjcm9sbC13aWR0aC1zaXplciB7
CiAgICAgfQogCiAgICAgLnRpbWVsaW5lLW92ZXJ2aWV3ID4gLnRyZWUtb3V0bGluZS50aW1lbGlu
ZXMgLml0ZW0uc2VsZWN0ZWQgKyAuaXRlbSwKLSAgICBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFj
dGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50aW1lbGluZS1vdmVydmlldyA+IC50cmVl
LW91dGxpbmUudGltZWxpbmVzIC5pdGVtLnNlbGVjdGVkICsgLml0ZW0geworICAgIGJvZHkud2lu
ZG93LWluYWN0aXZlIC50aW1lbGluZS1vdmVydmlldyA+IC50cmVlLW91dGxpbmUudGltZWxpbmVz
IC5pdGVtLnNlbGVjdGVkICsgLml0ZW0gewogICAgICAgICBib3JkZXItdG9wLWNvbG9yOiBoc2xh
KDAsIDAlLCB2YXIoLS1mb3JlZ3JvdW5kLWxpZ2h0bmVzcyksIDAuMDkpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lUmVjb3JkRnJhbWUuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5jc3MKaW5kZXggZDgzZWNkMzc1NGIwZDUyYzU2MGFk
MzU4YWE5YjVlYTk4MGJmNTQyMi4uZjczZTc4OGFiMDM4NDJjNjdhNWNmY2JlOTBlMTg0YjBjNjQx
YzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVSZWNvcmRGcmFtZS5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5jc3MKQEAgLTUzLDcgKzUzLDcg
QEAKICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLXNlbGVj
dGVkLXRleHQtYmFja2dyb3VuZC1jb2xvciksIHZhcigtLXNlbGVjdGVkLXRleHQtYmFja2dyb3Vu
ZC1jb2xvcikpIG5vLXJlcGVhdCAxcHggLTFweDsKIH0KIAotYm9keTptYXRjaGVzKC53aW5kb3ct
aW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudGltZWxpbmUtcmVjb3JkLWZyYW1l
LnNlbGVjdGVkIHsKK2JvZHkud2luZG93LWluYWN0aXZlIC50aW1lbGluZS1yZWNvcmQtZnJhbWUu
c2VsZWN0ZWQgewogICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgaHNs
KDAsIDAlLCA5NiUpLCBoc2woMCwgMCUsIDk2JSkpIG5vLXJlcGVhdCAxcHggLTFweDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVSdWxlci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZVJ1bGVyLmNzcwppbmRleCAzMDAyZmI0MjhlNTlhNmUxZDE2YzQyY2ZlNjYxNTQ1
YmE5ODVhODU0Li5jOGIwMjRhMTM2NWE4MWQ5NmFjMmRkZjU1MTZkNDM0NDBhOThhYjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGlu
ZVJ1bGVyLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZVJ1bGVyLmNzcwpAQCAtNzQsNyArNzQsNyBAQCBib2R5W2Rpcj1ydGxdIC50aW1l
bGluZS1ydWxlciA+IC5tYXJrZXJzID4gOm1hdGNoZXMoLmRpdmlkZXIsIC5tYXJrZXIpIHsKICAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2xhKDAsIDAl
LCA3MCUsIDApLCBoc2xhKDAsIDAlLCA3MCUsIDIpIDg1JSk7CiB9CiAKLWJvZHk6bWF0Y2hlcygu
d2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRpbWVsaW5lLXJ1bGVy
ID4gLmhlYWRlciA+IC5kaXZpZGVyIHsKK2JvZHkud2luZG93LWluYWN0aXZlIC50aW1lbGluZS1y
dWxlciA+IC5oZWFkZXIgPiAuZGl2aWRlciB7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFy
LWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsYSgwLCAwJSwgODUlLCAwKSwgaHNsYSgwLCAwJSwgODUl
LCAxKSA4NSUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qcwppbmRl
eCAyNjJkNGVkMzE4OGIwYTk1MjFmMTExZmU2YTgwOTI5ZmY5ZGRmODc3Li5jNzM5NjI1NzNiNjEx
OGYzZDdlMDRlNzY2MjdlZjcwODNhMjk3MzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29u
dGVudFZpZXcuanMKQEAgLTI1LDkgKzI1LDEwIEBACiAKIFdJLlRpbWVsaW5lVGFiQ29udGVudFZp
ZXcgPSBjbGFzcyBUaW1lbGluZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dz
ZXJUYWJDb250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3Rvcihp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc3VwZXIoVGltZWxpbmVUYWJDb250ZW50Vmlldy50
YWJJbmZvKCkpOworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IFdJLkdlbmVyYWxUYWJCYXJJdGVt
LmZyb21UYWJJbmZvKFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsKKyAgICAg
ICAgc3VwZXIoaWRlbnRpZmllciB8fCAidGltZWxpbmUiLCAidGltZWxpbmUiLCB0YWJCYXJJdGVt
KTsKIAogICAgICAgICAvLyBNYWludGFpbiBhbiBpbnZpc2libGUgdHJlZSBvdXRsaW5lIGNvbnRh
aW5pbmcgdHJlZSBlbGVtZW50cyBmb3IgYWxsIHJlY29yZGluZ3MuCiAgICAgICAgIC8vIFRoZSB2
aXNpYmxlIHJlY29yZGluZydzIHRyZWUgZWxlbWVudCBpcyBzZWxlY3RlZCB3aGVuIHRoZSBjb250
ZW50IHZpZXcgY2hhbmdlcy4KQEAgLTEwMSw3ICsxMDIsNiBAQCBXSS5UaW1lbGluZVRhYkNvbnRl
bnRWaWV3ID0gY2xhc3MgVGltZWxpbmVUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRC
cm93cwogICAgIHN0YXRpYyB0YWJJbmZvKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Ci0gICAg
ICAgICAgICBpZGVudGlmaWVyOiBUaW1lbGluZVRhYkNvbnRlbnRWaWV3LlR5cGUsCiAgICAgICAg
ICAgICBpbWFnZTogIkltYWdlcy9UaW1lbGluZS5zdmciLAogICAgICAgICAgICAgdGl0bGU6IFdJ
LlVJU3RyaW5nKCJUaW1lbGluZXMiKSwKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuY3NzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5jc3MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzgxMmJhMzllY2JhMGY0YWQxNDU0NTBlNGEyMmE0NTQ0YTA2NTlhYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuY3Nz
CkBAIC0wLDAgKzEsMjQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudG9vbGJhciB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAw
OworICAgIGhlaWdodDogdmFyKC0tdG9vbGJhci1oZWlnaHQpOworCisgICAgZGlzcGxheTogZmxl
eDsKKyAgICBwYWRkaW5nLXRvcDogM3B4OworICAgIHBhZGRpbmctYm90dG9tOiAzcHg7CisKKyAg
ICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgIG92ZXJmbG93OiBoaWRkZW47CisKKyAgICBvdXRs
aW5lOiBub25lOworCisgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJv
dHRvbSwgaHNsKDAsIDAlLCA5MiUpLCBoc2woMCwgMCUsIDg3JSkpOworICAgIGJveC1zaGFkb3c6
IGluc2V0IGhzbGEoMCwgMCUsIDEwMCUsIDAuNSkgMCAxcHggMXB4OworfQorCitib2R5LndpbmRv
dy1pbmFjdGl2ZSAudG9vbGJhciB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDk2JSk7Cit9CisKK2JvZHkubWFjLXBsYXRmb3Jt
Om5vdCguZG9ja2VkKSAudG9vbGJhciB7CisgICAgcGFkZGluZy10b3A6IDIxcHg7Cit9CisKK2Jv
ZHkubWFjLXBsYXRmb3JtOm5vdCguZG9ja2VkKSB7CisgICAgLS10b29sYmFyLWhlaWdodDogNTRw
eDsKK30KKworLnRvb2xiYXIgLmNvbnRyb2wtc2VjdGlvbiB7CisgICAgZGlzcGxheTogZmxleDsK
KyAgICBmbGV4LWRpcmVjdGlvbjogcm93OworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAg
anVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgbWluLXdpZHRoOiBtaW4tY29udGVudDsKKyAg
ICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDZweDsKKyAgICAtd2Via2l0LXBhZGRpbmctZW5kOiAy
cHg7Cit9CisKKy50b29sYmFyIC5pdGVtLXNlY3Rpb24geworICAgIGRpc3BsYXk6IGZsZXg7Cisg
ICAgZmxleDogMTsKKyAgICBtaW4td2lkdGg6IG1pbi1jb250ZW50OworfQorCisudG9vbGJhciAu
aXRlbS1zZWN0aW9uLmxlZnQgeworICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKK30K
KworLnRvb2xiYXIgLml0ZW0tc2VjdGlvbi5jZW50ZXItbGVmdCB7CisgICAganVzdGlmeS1jb250
ZW50OiBmbGV4LXN0YXJ0OworfQorCisudG9vbGJhciAuaXRlbS1zZWN0aW9uLmNlbnRlci1yaWdo
dCB7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cit9CisKKy50b29sYmFyIC5pdGVtLXNl
Y3Rpb24uY2VudGVyIHsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKK30KKworLnRvb2xi
YXIgLml0ZW0tc2VjdGlvbi5yaWdodCB7CisgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsK
KyAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7Cit9CisKKy50b29sYmFyIC5pdGVtIHsKKyAgICBkaXNw
bGF5OiBmbGV4OworICAgIG91dGxpbmU6IG5vbmU7Cit9CisKKy50b29sYmFyIC5zZWFyY2gtYmFy
IHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBtaW4td2lkdGg6IDEyNXB4OworfQorCisudG9vbGJh
ciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdIHsKKyAgICB3aWR0aDogMTAwJTsK
KyAgICBmb250LXNpemU6IDEycHg7CisgICAgYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOworICAg
IG1hcmdpbjogNHB4OworfQorCisudG9vbGJhciAuaXRlbS5idXR0b24sCisudG9vbGJhciAuc2Vh
cmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdLAorLnRvb2xiYXIgLmRhc2hib2FyZC1jb250
YWluZXIgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChoc2woMCwgMCUs
IDk5JSksIHZhcigtLXBhbmVsLWJhY2tncm91bmQtY29sb3IpKTsKKyAgICBib3gtc2hhZG93OiBo
c2xhKDAsIDAlLCAwJSwgMC4zKSAwIDFweCAxcHggLTFweDsKKworICAgIGJvcmRlci1yYWRpdXM6
IDRweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBoc2woMCwgMSUsIDgyJSk7CisgICAgYm9yZGVy
LXRvcC1jb2xvcjogaHNsKDAsIDAlLCA4MyUpOworICAgIGJvcmRlci1ib3R0b20tY29sb3I6IGhz
bCgwLCAwJSwgNzYlKTsKK30KKworLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJz
ZWFyY2giXSB7CisgICAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUsIDAuMykgMCAxcHggMXB4
IC0xcHgsIDAgMCAwIDdweCBoc2xhKDIxMSwgOTYlLCA0OCUsIDApOworICAgIHRyYW5zaXRpb246
IGJveC1zaGFkb3cgLjI1cyBjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQwLCAwLjQ0MCwgMSkgLyog
ZWFzZU91dFF1YXJ0ICovOworfQorCisudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9
InNlYXJjaCJdOmZvY3VzIHsKKyAgICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAwJSwgMC4xNSkg
MCAxcHggMCwgMCAwIDAgM3B4IGhzbGEoMjExLCA5NiUsIDQ4JSwgMC40KTsKK30KKworQG1lZGlh
ICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHsKKyAgICAudG9vbGJhciAuaXRl
bS5idXR0b24sCisgICAgLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2gi
XSwKKyAgICAudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgICAgIGJvcmRlcjog
MC41cHggc29saWQgaHNsKDAsIDAlLCA3OCUpOworICAgICAgICBib3JkZXItdG9wLWNvbG9yOiBo
c2woMCwgMCUsIDgwJSk7CisgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IGhzbCgwLCAwJSwg
NjUlKTsKKyAgICB9Cit9CisKKy50b29sYmFyIC5pdGVtLmJ1dHRvbjphY3RpdmUgeworICAgIGJh
Y2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChoc2woMCwgMCUsIDg5JSksIGhzbCgwLCAw
JSwgODYlKSk7CisgICAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUsIDAuMykgMCAxcHggMXB4
IC0xcHgsIGluc2V0IDAgMXB4IDFweCAtMXB4IHdoaXRlOworfQorCitib2R5LndpbmRvdy1pbmFj
dGl2ZSAudG9vbGJhciAuaXRlbS5idXR0b24sCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJh
ciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdLAorYm9keS53aW5kb3ctaW5hY3Rp
dmUgLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIgeworICAgIG9wYWNpdHk6IDAuNjU7Cisg
ICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC4xNSk7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKK30KKworQG1l
ZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHsKKyAgICBib2R5LndpbmRv
dy1pbmFjdGl2ZSAudG9vbGJhciAuaXRlbS5idXR0b24sCisgICAgYm9keS53aW5kb3ctaW5hY3Rp
dmUgLnRvb2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXSwKKyAgICBib2R5
LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgICAg
IGJveC1zaGFkb3c6IGluc2V0IDAgMCAxcHggMCBoc2xhKDAsIDAlLCAwJSwgMC4xKTsKKyAgICB9
Cit9CisKK0BtZWRpYSAobWF4LXdpZHRoOiA1MzlweCkgeworICAgIC50b29sYmFyIC5pdGVtLmRv
d25sb2FkIHsKKyAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICB9Cit9CisKK0BtZWRpYSAocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKKyAgICAudG9vbGJhciB7CisgICAgICAgIGJhY2tn
cm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwgMjYlKSwg
aHNsKDAsIDAlLCAyMyUpKTsKKyAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKKyAgICB9CisKKyAg
ICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciB7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IHZhcigtLWJhY2tncm91bmQtY29sb3IpOworICAgIH0KKworICAgIC50b29sYmFyIC5pdGVt
LmJ1dHRvbiwKKyAgICAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJd
IHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogdmFyKC0tYnV0dG9uLWJhY2tncm91bmQtY29sb3IpOworICAgICAgICBib3JkZXItY29s
b3I6IHZhcigtLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yKTsKKyAgICAgICAgYm9yZGVyLXRvcC1j
b2xvcjogaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjIpOworICAgICAgICBib3gtc2hhZG93OiBub25l
OworICAgIH0KKworICAgIC50b29sYmFyIC5zZWFyY2gtYmFyID4gaW5wdXRbdHlwZT0ic2VhcmNo
Il0geworICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CisgICAgfQorCisgICAgLnRv
b2xiYXIgLnNlYXJjaC1iYXIgPiBpbnB1dFt0eXBlPSJzZWFyY2giXTpmb2N1cyB7CisgICAgICAg
IGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLWFjdGl2ZSk7CisKKyAgICAgICAgLyogRklYTUU6IFVz
ZSBuYXRpdmUgb3V0bGluZSBmb3IgdGhlIGRlZmF1bHQgdGhlbWUgYXMgd2VsbC4gKi8KKyAgICAg
ICAgYm94LXNoYWRvdzogdW5zZXQ7CisgICAgICAgIHRyYW5zaXRpb246IHVuc2V0OworICAgICAg
ICBvdXRsaW5lOiAtd2Via2l0LWZvY3VzLXJpbmctY29sb3IgYXV0byA1cHg7CisgICAgICAgIG91
dGxpbmUtb2Zmc2V0OiAtM3B4OworICAgIH0KKworICAgIC50b29sYmFyIC5zZWFyY2gtYmFyID4g
aW5wdXRbdHlwZT0ic2VhcmNoIl06OnBsYWNlaG9sZGVyIHsKKyAgICAgICAgY29sb3I6IHZhcigt
LXRleHQtY29sb3Itc2Vjb25kYXJ5KTsKKyAgICB9CisKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2
ZSAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5cGU9InNlYXJjaCJdOjpwbGFjZWhvbGRl
ciB7CisgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLXRlcnRpYXJ5KTsKKyAgICB9CisK
KyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuc2VhcmNoLWJhciA+IGlucHV0W3R5
cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiB7CisgICAgICAgIC8q
IFNldHRpbmcgYGNvbG9yYCBoYXMgbm8gZWZmZWN0IG9uIHRoZSBtYWduaWZ5aW5nIGdsYXNzIGlj
b24uICovCisgICAgICAgIG9wYWNpdHk6IDAuNTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuZGFz
aGJvYXJkLWNvbnRhaW5lciB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRhc2hib2FyZC1iYWNrZ3JvdW5kLWNvbG9yKTsK
KyAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kYXNoYm9hcmQtYmFja2dyb3VuZC1jb2xvcik7
CisgICAgICAgIGJvcmRlci10b3AtY29sb3I6IGhzbGEoMCwgMTAwJSwgMTAwJSwgMC4xKTsKKyAg
ICAgICAgYm94LXNoYWRvdzogbm9uZTsKKyAgICB9CisKKyAgICAudG9vbGJhciAuaXRlbS5idXR0
b246YWN0aXZlIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICAgICAgYm9y
ZGVyLXRvcC1jb2xvcjogaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjIpOworICAgICAgICBib3gtc2hh
ZG93OiBub25lOworICAgIH0KKworICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5p
dGVtLmJ1dHRvbiwKKyAgICBib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJhciAuc2VhcmNoLWJh
ciA+IGlucHV0W3R5cGU9InNlYXJjaCJdLAorICAgIGJvZHkud2luZG93LWluYWN0aXZlIC50b29s
YmFyIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICAgICAgb3BhY2l0eTogMTsKKyAgICAgICAg
Y29sb3I6IHZhcigtLWdseXBoLWNvbG9yKTsKKyAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3Bh
cmVudDsKKyAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjEp
OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworICAgICAgICBiYWNrZ3JvdW5kOiB2
YXIoLS1idXR0b24tYmFja2dyb3VuZC1jb2xvci1pbmFjdGl2ZSk7CisgICAgfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2Q3ZTdlMTIyMDFkZmI3Y2M2MmVkOTI3ZGU2OTUzMzdkZWQ1NzRhNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Rvb2xiYXIuanMKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLlRvb2xi
YXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV0kuTmF2aWdhdGlvbkJhcgoreworICAgIGNvbnN0
cnVjdG9yKGVsZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcihlbGVtZW50LCBudWxsLCAidG9v
bGJhciIpOworCisgICAgICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1l
bnQuY2xhc3NOYW1lID0gV0kuVG9vbGJhci5Db250cm9sU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udHJvbFNlY3Rpb25FbGVt
ZW50KTsKKworICAgICAgICB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50LmNsYXNz
TmFtZSA9IFdJLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdJLlRv
b2xiYXIuTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMu
X2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV0ku
VG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV0kuVG9vbGJhci5DZW50
ZXJMZWZ0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgdGhp
cy5fY2VudGVyU2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgdGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV0kuVG9vbGJh
ci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV0kuVG9vbGJhci5DZW50ZXJJdGVt
U2VjdGlvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2NlbnRlclJpZ2h0
U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
dGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXSS5Ub29sYmFyLkl0
ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXSS5Ub29sYmFyLkNlbnRlclJpZ2h0SXRl
bVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3JpZ2h0
U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
dGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXSS5Ub29sYmFyLkl0ZW1TZWN0
aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXSS5Ub29sYmFyLlJpZ2h0SXRlbVNlY3Rpb25TdHls
ZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0
U2VjdGlvbkVsZW1lbnQpOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgYWRkVG9vbGJh
ckl0ZW0odG9vbGJhckl0ZW0sIHNlY3Rpb25JZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgdmFy
IHNlY3Rpb25FbGVtZW50OworCisgICAgICAgIHN3aXRjaCAoc2VjdGlvbklkZW50aWZpZXIpIHsK
KyAgICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rpb24uQ29udHJvbDoKKyAgICAgICAgICAgIHNl
Y3Rpb25FbGVtZW50ID0gdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50OworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rpb24uTGVmdDoKKyAgICAgICAg
ICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50OworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyTGVmdDoK
KyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fY2VudGVyTGVmdFNlY3Rpb25FbGVt
ZW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgY2Fz
ZSBXSS5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyOgorICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQg
PSB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgV0kuVG9vbGJhci5TZWN0aW9uLkNlbnRlclJpZ2h0OgorICAgICAgICAgICAgc2Vj
dGlvbkVsZW1lbnQgPSB0aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25FbGVtZW50OworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5Ub29sYmFyLlNlY3Rpb24uUmlnaHQ6CisgICAg
ICAgICAgICBzZWN0aW9uRWxlbWVudCA9IHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlY3Rp
b25FbGVtZW50KTsKKworICAgICAgICB0aGlzLmFkZE5hdmlnYXRpb25JdGVtKHRvb2xiYXJJdGVt
LCBzZWN0aW9uRWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBsYXlv
dXQoKQorICAgIHsKKyAgICAgICAgLy8gQmFpbCBlYXJseSBpZiBvdXIgc2VjdGlvbnMgYXJlIG5v
dCBjcmVhdGVkIHlldC4gVGhpcyBtZWFucyB3ZSBhcmUgYmVpbmcgY2FsbGVkIGR1cmluZyBjb25z
dHJ1Y3Rpb24uCisgICAgICAgIGlmICghdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50IHx8ICF0aGlz
Ll9jZW50ZXJTZWN0aW9uRWxlbWVudCB8fCAhdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBGb3JjZSBjb2xsYXBzZWQgc3R5bGUgZm9y
IG5vbi1XZWIgZGVidWdnYWJsZXMuCisgICAgICAgIGlmICghV0kuc2hhcmVkQXBwLmlzV2ViRGVi
dWdnYWJsZSgpKSB7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5O
YXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSB0aGUgY29sbGFwc2VkIHN0eWxlIGNs
YXNzIHRvIHRlc3QgaWYgdGhlIGl0ZW1zIGNhbiBmaXQgYXQgZnVsbCB3aWR0aC4KKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV0kuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRT
dHlsZUNsYXNzTmFtZSk7CisKKyAgICAgICAgZnVuY3Rpb24gaXNPdmVyZmxvd2luZ1Rvb2xiYXIo
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY29udHJvbFNlY3Rpb25XaWR0aCA9IHRoaXMu
X2NvbnRyb2xTZWN0aW9uRWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgICAgICB2YXIg
bGVmdFNlY3Rpb25XaWR0aCA9IHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudC5yZWFsT2Zmc2V0V2lk
dGg7CisgICAgICAgICAgICB2YXIgY2VudGVyTGVmdFNlY3Rpb25XaWR0aCA9IHRoaXMuX2NlbnRl
ckxlZnRTZWN0aW9uRWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgICAgICB2YXIgY2Vu
dGVyU2VjdGlvbldpZHRoID0gdGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQucmVhbE9mZnNldFdp
ZHRoOworICAgICAgICAgICAgdmFyIGNlbnRlclJpZ2h0U2VjdGlvbldpZHRoID0gdGhpcy5fY2Vu
dGVyUmlnaHRTZWN0aW9uRWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgICAgICB2YXIg
cmlnaHRTZWN0aW9uV2lkdGggPSB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50LnJlYWxPZmZzZXRX
aWR0aDsKKworICAgICAgICAgICAgdmFyIHRvb2xiYXJXaWR0aCA9IE1hdGgucm91bmQodGhpcy5l
bGVtZW50LnJlYWxPZmZzZXRXaWR0aCk7CisgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChj
b250cm9sU2VjdGlvbldpZHRoICsgbGVmdFNlY3Rpb25XaWR0aCArIGNlbnRlckxlZnRTZWN0aW9u
V2lkdGggKyBjZW50ZXJTZWN0aW9uV2lkdGggKyBjZW50ZXJSaWdodFNlY3Rpb25XaWR0aCArIHJp
Z2h0U2VjdGlvbldpZHRoKSA+IHRvb2xiYXJXaWR0aDsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghaXNPdmVyZmxvd2luZ1Rvb2xiYXIuY2FsbCh0aGlzKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5OYXZpZ2F0aW9uQmFyLkNv
bGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICB9Cit9OworCitXSS5Ub29sYmFyLlN0eWxlQ2xh
c3NOYW1lID0gInRvb2xiYXIiOworV0kuVG9vbGJhci5Db250cm9sU2VjdGlvblN0eWxlQ2xhc3NO
YW1lID0gImNvbnRyb2wtc2VjdGlvbiI7CitXSS5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFz
c05hbWUgPSAiaXRlbS1zZWN0aW9uIjsKK1dJLlRvb2xiYXIuTGVmdEl0ZW1TZWN0aW9uU3R5bGVD
bGFzc05hbWUgPSAibGVmdCI7CitXSS5Ub29sYmFyLkNlbnRlckxlZnRJdGVtU2VjdGlvblN0eWxl
Q2xhc3NOYW1lID0gImNlbnRlci1sZWZ0IjsKK1dJLlRvb2xiYXIuQ2VudGVySXRlbVNlY3Rpb25T
dHlsZUNsYXNzTmFtZSA9ICJjZW50ZXIiOworV0kuVG9vbGJhci5DZW50ZXJSaWdodEl0ZW1TZWN0
aW9uU3R5bGVDbGFzc05hbWUgPSAiY2VudGVyLXJpZ2h0IjsKK1dJLlRvb2xiYXIuUmlnaHRJdGVt
U2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gInJpZ2h0IjsKKworV0kuVG9vbGJhci5TZWN0aW9uID0g
eworICAgIENvbnRyb2w6ICJjb250cm9sIiwKKyAgICBMZWZ0OiAibGVmdCIsCisgICAgQ2VudGVy
TGVmdDogImNlbnRlci1sZWZ0IiwKKyAgICBDZW50ZXI6ICJjZW50ZXIiLAorICAgIENlbnRlclJp
Z2h0OiAiY2VudGVyLXJpZ2h0IiwKKyAgICBSaWdodDogInJpZ2h0IgorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZhcmlhYmxlcy5jc3Mg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WYXJpYWJsZXMuY3Nz
CmluZGV4IDRhMzA4ZWVlNzJjMDEzOTNjN2QyMDYxNGE3N2ZkNmZmYTI5MDU0YWUuLjI1OTcyM2Rm
OTdkNWU0ZmQ2NWZlNzYzMjRiYWUwNWUzOGQwNjFiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZhcmlhYmxlcy5jc3MKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmFyaWFibGVzLmNzcwpAQCAtMTYy
LDggKzE2Miw2IEBACiAgICAgLS1jcHUtbWVkaXVtLWNvbG9yOiBoc2woNDYsIDkxJSwgNjIlKTsK
ICAgICAtLWNwdS1oaWdoLWNvbG9yOiBoc2woNiwgNzklLCA1NyUpOwogCi0gICAgLS1uZXR3b3Jr
LXN0YXRpc3RpY3MtaGVpZ2h0OiB2YXIoLS1uYXZpZ2F0aW9uLWJhci1oZWlnaHQpOwotCiAgICAg
LS1uZXR3b3JrLWhlYWRlci1jb2xvcjogaHNsKDIwNCwgNTIlLCA1NSUpOwogICAgIC0tbmV0d29y
ay1zeXN0ZW0tY29sb3I6IGhzbCg3OSwgMzIlLCA1MCUpOwogICAgIC0tbmV0d29yay1wc2V1ZG8t
aGVhZGVyLWNvbG9yOiBoc2woMzEyLCAzNSUsIDUxJSk7CkBAIC0xODEsOSArMTc5LDggQEAKICAg
ICAtLW9kZC16ZWJyYS1zdHJpcGUtcm93LWJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgIC0t
dHJhbnNwYXJlbnQtc3RyaXBlLWJhY2tncm91bmQtZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCh0
byBib3R0b20sIHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCA1MCUsIGhzbGEoMCwgMCUsIDAlLCAw
LjAzKSA1MCUsIGhzbGEoMCwgMCUsIDAlLCAwLjAzKSkgdG9wIGxlZnQgLyAxMDAlIDQwcHg7CiAK
LSAgICAtLXVuZG9ja2VkLXRpdGxlLWFyZWEtaGVpZ2h0OiAwcHg7Ci0gICAgLS10YWItYmFyLWhl
aWdodDogdmFyKC0tbmF2aWdhdGlvbi1iYXItaGVpZ2h0KTsKLQorICAgIC0tdG9vbGJhci1oZWln
aHQ6IDM2cHg7CisgICAgLS10YWItYmFyLWhlaWdodDogMjRweDsKICAgICAtLW5hdmlnYXRpb24t
YmFyLWhlaWdodDogMjlweDsKIAogICAgIC0tc2xpZGVyLXdpZHRoOiAxMXB4OwpAQCAtMTk4LDcg
KzE5NSw3IEBACiAgICAgLS1kaWZmLWFkZGl0aW9uLWJvcmRlci1jb2xvcjogaHNsKDkwLCAxMDAl
LCA0MCUpOwogfQogCi1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2Nr
ZWQtaW5hY3RpdmUpIHsKK2JvZHkud2luZG93LWluYWN0aXZlIHsKICAgICAvKiBGSVhNRTogVXNl
IENTUzQgY29sb3IgYmxlbmQgZnVuY3Rpb25zIG9uY2UgdGhleSdyZSBhdmFpbGFibGUuICovCiAg
ICAgLS1zZWxlY3RlZC1iYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIxMiwgOTIlLCA1NCUsIDAuNSk7
CiAKQEAgLTIwNywxNSArMjA0LDExIEBAIGJvZHk6bWF0Y2hlcygud2luZG93LWluYWN0aXZlLCAu
d2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgewogICAgIC0tZ2x5cGgtb3BhY2l0eTogMC42OwogfQog
Ci1ib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUp
ICogeworYm9keS53aW5kb3ctaW5hY3RpdmUgKiB7CiAgICAgLS1ib3JkZXItY29sb3I6IGhzbCgw
LCAwJSwgODUlKTsKICAgICAtLWJvcmRlci1jb2xvci1kYXJrOiBoc2woMCwgMCUsIDcyJSk7CiB9
CiAKLWJvZHkubWFjLXBsYXRmb3JtOm5vdCguZG9ja2VkKSB7Ci0gICAgLS11bmRvY2tlZC10aXRs
ZS1hcmVhLWhlaWdodDogY2FsYygyMnB4IC8gdmFyKC0tem9vbS1mYWN0b3IpKTsKLX0KLQogQG1l
ZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgIDpyb290IHsKICAgICAgICAg
Y29sb3I6IHZhcigtLXRleHQtY29sb3IpOwpAQCAtMjc3LDYgKzI3MCw4IEBAIGJvZHkubWFjLXBs
YXRmb3JtOm5vdCguZG9ja2VkKSB7CiAgICAgICAgIC0tYnV0dG9uLWJhY2tncm91bmQtY29sb3It
cHJlc3NlZDogaHNsKDAsIDAlLCA1NSUpOwogICAgICAgICAtLWJ1dHRvbi1iYWNrZ3JvdW5kLWNv
bG9yLWluYWN0aXZlOiBoc2woMCwgMCUsIDI4JSk7CiAKKyAgICAgICAgLS1kYXNoYm9hcmQtYmFj
a2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCAzNiUpOworCiAgICAgICAgIC0tcGFuZWwtYmFja2dy
b3VuZC1jb2xvcjogaHNsKDAsIDAlLCAyNCUpOwogICAgICAgICAtLXBhbmVsLWJhY2tncm91bmQt
Y29sb3ItbGlnaHQ6IGhzbCgwLCAwJSwgMjklKTsKIApAQCAtMzQ5LDE2ICszNDQsMTYgQEAgYm9k
eS5tYWMtcGxhdGZvcm06bm90KC5kb2NrZWQpIHsKICAgICAgICAgLS1kaWZmLWRlbGV0aW9uLWJh
Y2tncm91bmQtY29sb3I6IGhzbCg1LCA0MCUsIDI4JSk7CiAgICAgfQogCi0gICAgYm9keTptYXRj
aGVzKC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSB7CisgICAgYm9k
eS53aW5kb3ctaW5hY3RpdmUgewogICAgICAgICAtLXNlbGVjdGVkLWJhY2tncm91bmQtY29sb3I6
IGhzbGEoMjEyLCA5MiUsIDY0JSwgMC41KTsKIAogICAgICAgICAtLWdseXBoLWNvbG9yOiBoc2wo
MCwgMCUsIDUyJSk7CiAgICAgICAgIC0tZ2x5cGgtY29sb3ItZGlzYWJsZWQ6IGhzbGEoMCwgMCUs
IDUyJSwgMC40KTsKICAgICB9CiAKLSAgICBib2R5Om1hdGNoZXMoLndpbmRvdy1pbmFjdGl2ZSwg
LndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpICogeworICAgIGJvZHkud2luZG93LWluYWN0aXZlICog
ewogICAgICAgICAvKiBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBkdXBsaWNhdGVkIHNvIHRoYXQgdGhl
eSBoYXZlIGhpZ2hlciBzcGVjaWZpY2l0eSB0aGFuIFdlYktpdCdzIHN0eWxlc2hlZXQuCi0gICAg
ICAgIE90aGVyd2lzZSwgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gaW5zaWRlICdib2R5Om1hdGNo
ZXMoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIConIGluIE9wZW5T
b3VyY2Ugb3ZlcnJpZGVzIHdpdGggYSBsaWdodGVyIGNvbG9yLgorICAgICAgICBPdGhlcndpc2Us
IHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uIGluc2lkZSAnYm9keS53aW5kb3ctaW5hY3RpdmUgKicg
aW4gT3BlblNvdXJjZSBvdmVycmlkZXMgd2l0aCBhIGxpZ2h0ZXIgY29sb3IuCiAgICAgICAgIFdo
ZW4gbWVyZ2luZyB0byBvcGVuIHNvdXJjZSwgd2Ugc2hvdWxkIGd1YXJkIHRoZSBleGlzdGluZyAu
d2luZG93LWluYWN0aXZlIHN0eWxlIHdpdGgKICAgICAgICAgJ0BtZWRpYSBub3QgYWxsJyB0byBh
dm9pZCBhcHBseWluZyB0aGUgZGVmaW5pdGlvbiB0b28gYnJvYWRseS4gKi8KICAgICAgICAgLS1i
b3JkZXItY29sb3I6IGhzbCgwLCAwJSwgMzMlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCmlu
ZGV4IGMyZGY0MTZmNTE4ZTdmOTMwZjE4M2Q2YTA3ODBiZjE5MmJmYTU3YzUuLjIxOTJjMjlmNDE4
MWUwMGExNTEwNmVhMWIyOTA5NDA1ODcyZWM0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cApAQCAtMTM4LDYgKzEzOCwxMSBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZXRT
aGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHBsYXRmb3JtU2V0U2hlZXRSZWN0
KHJlY3QpOwogfQogCit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzdGFydFdpbmRvd0Ry
YWcoKQoreworICAgIHBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCk7Cit9CisKIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKICAg
ICBwbGF0Zm9ybU9wZW5Jbk5ld1RhYih1cmwpOwpAQCAtMTkzLDYgKzE5OCw3IEBAIHZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQnJpbmdUb0Zyb250KCkgeyB9CiB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCwgYm9vbCkgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KIHZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYpIHsgfQordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRv
d0RyYWcoKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3Blbklu
TmV3VGFiKGNvbnN0IFN0cmluZyYpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1TaG93Q2VydGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJikgeyB9CiB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNsb3NlRnJvbnRlbmRQYWdlQW5kV2lu
ZG93KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDRkODdiOThiNjk5NDg0YmEwNzA0
NzkxYTUzNDIxMmRhODgyNmJlNWEuLmZhYjU4ZjhjZTA2ZWEyMWZiZWU5MTM4OTQzMjQ2Y2FlOGY1
NGYzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAg
ICAgdm9pZCBzZXRTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CisgICAgdm9p
ZCBzdGFydFdpbmRvd0RyYWcoKTsKICAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcm
IHVybCk7CiAgICAgdm9pZCBzaG93Q2VydGlmaWNhdGUoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvJik7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwpAQCAtMTMzLDYgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNh
dmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJh
c2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwogICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKICAgICB2b2lk
IHBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZv
aWQgcGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKTsKICAgICB2b2lkIHBsYXRmb3JtT3BlbkluTmV3
VGFiKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHBsYXRmb3JtU2hvd0NlcnRpZmljYXRl
KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMjg1OWM2MGNmNDZkZDE3ODU3YzM2NjFkODBhNjQw
NDBkYTVhZDExOS4uYmUwOTFiNzhmYjZhOGQ1ZGY3YjIzZTA1MGZmZmYxZDkyYTRiZDRiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzEsNiArMzEsOCBA
QCBtZXNzYWdlcyAtPiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSB7CiAKICAgICBTZXRTaGVldFJl
Y3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCiAKKyAgICBTdGFydFdpbmRvd0RyYWcoKQorCiAg
ICAgT3BlbkluTmV3VGFiKFN0cmluZyB1cmwpCiAgICAgU2hvd0NlcnRpZmljYXRlKFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IGZj
NzY4NjZmN2EyOTRkZjFhMWQ2OWFmNDRlODBiZTIzODgzZWJlMDIuLjQ3NWJiYzQwMWY0NDM2ZDFk
MjRjNjIzZDFhM2E4ODEyOGVhZDViOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMzQ3LDYgKzM0Nywx
MSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgIHBsYXRmb3JtU2V0U2hlZXRSZWN0KHJlY3QpOwogfQogCit2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpzdGFydFdpbmRvd0RyYWcoKQoreworICAgIHBsYXRmb3JtU3RhcnRXaW5k
b3dEcmFnKCk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZVBhZ2VQcm9maWxp
bmcoKQogewogICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQpAQCAtNzU5LDYgKzc2NCwxMSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJl
Y3QmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDQ5NmMxN2I5NDc4ODMzZGE3OTNhM2RhNzZh
OWUzNmVkOWZjYzYzNzkuLjJiMWZkZmNhMWRmYjhlNWM1NWZjY2Q4MDE2ZjQyMWY3MTQxNjNjY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JQcm94eS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRT
aGVldFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAKKyAgICB2b2lkIHN0YXJ0V2lu
ZG93RHJhZygpOworCiAgICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJldHVybiBt
X2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCkBA
IC0yMDcsNiArMjA5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQodW5zaWduZWQpOwogICAgIHZvaWQgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRv
d1dpZHRoKHVuc2lnbmVkKTsKICAgICB2b2lkIHBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZvaWQgcGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKTsK
ICAgICB2b2lkIHBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcyk7CiAgICAg
dm9pZCBwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNWFlZjdhN2Rm
ZmJkNzExNTU1YmZlMjY1MzNmZTQ2YjBiZTcxNTNlOS4uZWJiNzc1NTNjNmIxMTA5NzI2MmQ0N2Q0
MWYyNmIyNGMyMTYyMGYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTMs
NCArNTMsNiBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgU2V0QXR0YWNo
ZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKIAogICAgIFNldFNoZWV0UmVjdChXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdCkKKworICAgIFN0YXJ0V2luZG93RHJhZygpCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IGFjMjBiODQ5NzMyZmEwOWQ0MGQ4ZmJi
NDkzMjExMThkZGExNTY0ZjkuLjExMDg4ZGQwOGIwNjAyZDJlOTRlODU3OTQ2MDRhMjI2MjhjYjQy
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC0xNTcsNiAr
MTU3LDEwIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0U2hlZXRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYpCiB7CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtU3RhcnRXaW5kb3dEcmFnKCkKK3sKK30KKwogdm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1PcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJikKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9X
ZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggYzdmZmYzOTQxOWM3MjQyMDhiZThmZmVmNmIy
NGZjNGE1MWExYTI5ZC4uODE3YzM5ODZkM2NhYjQ1MmZlZWEzNjkxNWNhZDE1OGQ1ZWU4ZDU1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNw
ZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTQ2NCw2ICs0NjQsMTEgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwogc3RhdGljIHZvaWQgZmlsZVJlcGxhY2VDb250ZW50c0NhbGxiYWNrKEdPYmplY3QqIHNv
dXJjZU9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogewog
ICAgIEdGaWxlKiBmaWxlID0gR19GSUxFKHNvdXJjZU9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCA4NTRkYTg4NjVmY2VmNjBjOWViMjIyYWYxYTUyYjIz
MzQ0ZDk2OTI0Li40YWJkZWI1ZjZkMDY0Y2U5NGZhN2EyYTUzMTMxOGM0ZjhhZjdmNzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTIyNSw2ICsyMjUsMTEgQEAg
dm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogICAgIG1fc2hlZXRSZWN0ID0gcmVjdDsKIH0KIAordm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQoreworICAgIHdl
YlZpZXcoKS0+X3BhZ2UtPnN0YXJ0V2luZG93RHJhZygpOworfQorCiB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybU9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsK
ICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlblVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzp1cmxdXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDE3YmE2NzY3ODNh
OWU3MzlhODYzNjlhNWRiMmQ1ODkwMTgyZjNlNTQuLmJiZTcyOGQ0MzVjYWY3MDU5NjUyYWQyYjNk
OWUyMTcxNDY3ZWIwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNzM0LDYgKzcz
NCwxMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgbV9zaGVldFJlY3QgPSByZWN0OwogfQogCit2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0V2luZG93RHJhZygpCit7CisgICAgW21faW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgd2ViVmlld10tPl9wYWdlLT5zdGFydFdpbmRvd0RyYWcoKTsK
K30KKwogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkKIHsKICAg
ICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29t
LmFwcGxlLldlYkluc3BlY3RvclVJIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclByb3h5V2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlX
aW4uY3BwCmluZGV4IGFkODQyNDRhMzIyN2U2YWYxMWUxMzAzOTg5ZWYyYzM2ZDBhYTQ4NTYuLjM5
MGMyYjk0ZjJmZjU0YTRmMGRhOWVhZWU0MDEwOGM5OWVhYTBiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCkBAIC0xMzQsNiArMTM0LDcgQEAgdm9pZCBSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQoKSB7IH0KIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBib29sLCBib29sKSB7IH0KIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogdm9pZCBSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JikgeyB9Cit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVN0YXJ0
V2luZG93RHJhZygpIHsgfQogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1P
cGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJikgeyB9CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybVNob3dDZXJ0aWZpY2F0ZShjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8mKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAppbmRleCA5MjljYjhiZGEzYzNk
MzJmMzhjY2FiZmQ4MzRjOGI1Y2VhMjRkNDEwLi4yZGVhYzk3MzE3OTZmMjU1YTEwYmNlODQ3ZDZi
MGJmNmE3OTc5MDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3Ivd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApAQCAtNDUwLDQgKzQ1
MCw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1T
dGFydFdpbmRvd0RyYWcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJ
bnNwZWN0b3JVSS5jcHAKaW5kZXggNjU1OGEyNWExZWE5ZDE1ZGNiZjgyYWYxYjEzMGNmYWNlMGJm
YWM0Yy4uNTU4ZDhmMGMyNDYyMjg2OTg5MWQxOTJhZTljZDcxYTg5MmVhZWJhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JV
SS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJ
bnNwZWN0b3JVSS5jcHAKQEAgLTExMCw2ICsxMTAsMTggQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0
b3JVSTo6Y2hhbmdlU2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2V0U2hlZXRSZWN0KHJlY3QpLCBtX3BhZ2UuaWRl
bnRpZmllcigpKTsKIH0KIAordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3RhcnRXaW5kb3dE
cmFnKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5k
b3dEcmFnKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIFJlbW90ZVdlYkluc3Bl
Y3RvclVJOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9hdFJlY3Qg
ZnJhbWVSZWN0ID0gbV9wYWdlLmNvcmVQYWdlKCktPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAg
ICBmcmFtZVJlY3QubW92ZSh4LCB5KTsKKyAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+Y2hyb21lKCku
c2V0V2luZG93UmVjdChmcmFtZVJlY3QpOworfQorCiBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uIFJlbW90ZVdlYkluc3BlY3RvclVJOjp1c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLmNvcmVQYWdlKCktPnVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAppbmRleCA2M2Y0MzJkZjhi
MzQwYzE3NjkzNjQwNmNjZmZlNWE3NzVkMGI3OWE5Li5iNGFlMWMxZGFhMTY0N2EyMTFiYWYwZDQw
MDU5OWI3MzExMjg3YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCkBAIC02Miw2ICs2Miw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdpbmRvd09iamVjdENsZWFyZWQoKSBvdmVycmlkZTsKICAgICB2b2lk
IGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGFuZ2VTaGVldFJlY3QoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFdpbmRvd0Ry
YWcoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNSZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SS5jcHAKaW5kZXggOTEwY2IzNTlkYzQzNDYwODM2MzcwYjFjNjVmYmE1NTJiMjAwZDYwMS4uMWZh
YTZmNmVkZTVkZGRhMGExNGFiZGUyZWMwYzJiYmFhZmM1NWVmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTEz
Nyw2ICsxMzcsMTggQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQogICAg
IGJyaW5nVG9Gcm9udCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclVJOjpzdGFydFdpbmRvd0Ry
YWcoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTdGFydFdpbmRvd0RyYWco
KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6
Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJl
Y3QgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+Y2hyb21lKCkud2luZG93UmVjdCgpOworICAgIGZyYW1l
UmVjdC5tb3ZlKHgsIHkpOworICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5jaHJvbWUoKS5zZXRXaW5k
b3dSZWN0KGZyYW1lUmVjdCk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9u
dCgpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAppbmRleCA4YmJhN2E0ODkzYzViMTQ3ZTMw
MDkxNjA3YTU5MzIxZDY1ZTYyYjc0Li42MzlmMjFjOWI2MjBjM2VmNmYyNTA3ZGQxNjIwNjBkYTQ5
YjU1Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSS5oCkBAIC05Miw2ICs5Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbmRv
d09iamVjdENsZWFyZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCkgb3Zl
cnJpZGU7CiAKKyAgICB2b2lkIHN0YXJ0V2luZG93RHJhZygpIG92ZXJyaWRlOworICAgIHZvaWQg
bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIG92ZXJyaWRlOworCiAgICAgYm9vbCBpc1Jl
bW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgU3RyaW5nIGxvY2FsaXpl
ZFN0cmluZ3NVUkwoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgYmFja2VuZENvbW1hbmRz
VVJMKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudElPUy5tbQppbmRleCBlMzVmN2EwNDdlZDY3OWRiMGRkMjBkNzhhODk3MDQyODQyYTFjNTMw
Li4zNmZmMTAyNjlkMTM5ZTA0M2U2OTlmMzdkNTliNzE0ZGQ2NmEyZmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50SU9TLm1tCkBAIC0xMzMsNiArMTMzLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KCkgeyB9CiB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgeyB9CiB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVk
KSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldFNoZWV0UmVjdChjb25z
dCBGbG9hdFJlY3QmKSB7IH0KK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN0YXJ0
V2luZG93RHJhZygpIHsgfQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVj
dGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSB7IH0KIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNob3dDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mKSB7IH0KIHZv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkgY29uc3Qg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDdjNGM3ZjJlYWUwMmNhOTRhOTdlMTAxMWEx
ZGZiZGI5MmY0ZmZkNTYuLjY1M2U5MTBhZDE0MTk1OTU3YmUwY2Q1ODhkNjg3OWNlOTIxZjNiNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0xMTYsNiArMTE2LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOwogCisgICAgdm9pZCBzdGFydFdpbmRv
d0RyYWcoKSBvdmVycmlkZTsKKwogICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgSW5zcGVjdG9yOjpEZWJ1Z2dhYmxlVHlwZSBkZWJ1Z2dhYmxlVHlw
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEluc3BlY3Rvcjo6RGVidWdnYWJsZVR5cGU6OlBhZ2U7
IH07CiAgICAgU3RyaW5nIHRhcmdldFBsYXRmb3JtTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJtYWNPUyJfczsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA0NGY2Nzc4ZWY5ZTc2
ZWVhM2RhMDQyN2E1NmM2ZDAxOTU4M2U2NDg4Li4wZGJiODJmYjdiNjk5NDY0ZjhlN2VjMmVmMzA2
NTExYTA3NGVjNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0yMTYsNiArMjE2LDEx
IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmZyb250ZW5kTG9hZGVkKCkKICAg
ICBzZXRBdHRhY2hlZFdpbmRvdyhhdHRhY2hlZCA/IERvY2tTaWRlOjpCb3R0b20gOiBEb2NrU2lk
ZTo6VW5kb2NrZWQpOwogfQogCit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzdGFy
dFdpbmRvd0RyYWcoKQoreworICAgIFtbbV9mcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIgd2luZG93
XSBwZXJmb3JtV2luZG93RHJhZ1dpdGhFdmVudDpbTlNBcHAgY3VycmVudEV2ZW50XV07Cit9CisK
IFN0cmluZyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6bG9jYWxpemVkU3RyaW5nc1VSTCgp
IGNvbnN0CiB7CiAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRl
bnRpZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJdOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>