<?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>84441</bug_id>
          
          <creation_ts>2012-04-20 06:01:33 -0700</creation_ts>
          <short_desc>Web Inspector: extract NavigatorView and NavigatorOverlayController from ScriptsNavigator.</short_desc>
          <delta_ts>2012-04-20 06:36:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>606528</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-20 06:01:33 -0700</bug_when>
    <thetext>- Moves NavigatorOverlayController out of ScriptsNavigator
- Extracts NavigatorView from ScriptsNavigator and makes ScriptsNavigator contain 3 NavigatorView instances (one per tab)
- Subclasses SnippetsNavigatorView and leaves it within ScriptsNavigator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606529</commentid>
    <comment_count>1</comment_count>
      <attachid>138076</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-20 06:05:35 -0700</bug_when>
    <thetext>Created attachment 138076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606546</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-20 06:36:20 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/114744</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138076</attachid>
            <date>2012-04-20 06:05:35 -0700</date>
            <delta_ts>2012-04-20 06:26:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84441-20120420170533.patch</filename>
            <type>text/plain</type>
            <size>79664</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDExNjgwMmFkZTUzNjZh
MGQ0ODRlZjlmMTEzOTEyZDg0ZTc4MGMxMC4uYmYwMDA2MjgxMWVhYTVlNWYwNWJiYWRiYTc1ZjVk
M2ViMjk2Y2I5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMi0wNC0yMCAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBleHRyYWN0IE5hdmlnYXRvclZpZXcgYW5kIE5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVy
IGZyb20gU2NyaXB0c05hdmlnYXRvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0NDQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgLSBNb3ZlcyBOYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlciBvdXQgb2Yg
U2NyaXB0c05hdmlnYXRvcgorICAgICAgICAtIEV4dHJhY3RzIE5hdmlnYXRvclZpZXcgZnJvbSBT
Y3JpcHRzTmF2aWdhdG9yIGFuZCBtYWtlcyBTY3JpcHRzTmF2aWdhdG9yIGNvbnRhaW4gMyBOYXZp
Z2F0b3JWaWV3IGluc3RhbmNlcyAob25lIHBlciB0YWIpCisgICAgICAgIC0gU3ViY2xhc3NlcyBT
bmlwcGV0c05hdmlnYXRvclZpZXcgYW5kIGxlYXZlcyBpdCB3aXRoaW4gU2NyaXB0c05hdmlnYXRv
ci4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxl
ci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRy
b2xsZXIucHJvdG90eXBlLndhc1Nob3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
b3JPdmVybGF5Q29udHJvbGxlci5wcm90b3R5cGUuX2NyZWF0ZU5hdmlnYXRvckNvbnRyb2xCdXR0
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLnBy
b3RvdHlwZS5fZXNjRG93bldoaWxlTmF2aWdhdG9yT3ZlcmxheU9wZW4pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLnByb3RvdHlwZS5fdG9nZ2xlTmF2
aWdhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxl
ci5wcm90b3R5cGUuX2hpZGVQaW5uZWROYXZpZ2F0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLnByb3RvdHlwZS5zZXQgX3Bpbk5hdmlnYXRvcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIucHJvdG90
eXBlLnNldCBzaG93TmF2aWdhdG9yT3ZlcmxheSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2
aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIucHJvdG90eXBlLmhpZGVOYXZpZ2F0b3JPdmVybGF5KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5wcm90b3R5
cGUuX25hdmlnYXRvck92ZXJsYXlXYXNTaG93bik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9OYXZpZ2F0b3JWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZp
Z2F0b3JWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlw
ZS5fdXBkYXRlU2NyaXB0VGl0bGUuZ2V0IGlmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZp
Z2F0b3JWaWV3LnByb3RvdHlwZS5fdXBkYXRlU2NyaXB0VGl0bGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5hdmlnYXRvclZpZXcucHJvdG90eXBlLl9zY3JpcHRTZWxlY3RlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVmlldy5wcm90b3R5cGUuX3JlbW92ZVVJU291cmNlQ29k
ZS5nZXQgd2hpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRvclZpZXcucHJvdG90
eXBlLl9yZW1vdmVVSVNvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRv
clZpZXcucHJvdG90eXBlLl9zaG93U2NyaXB0Rm9sZGVyc1NldHRpbmdDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlwZS5fZmlsZVJlbmFtZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRvclZpZXcucHJvdG90eXBlLnJlbmFtZS5jb21t
aXRIYW5kbGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlw
ZS5yZW5hbWUuY2FuY2VsSGFuZGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9y
Vmlldy5wcm90b3R5cGUucmVuYW1lLmFmdGVyRWRpdGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmF2aWdhdG9yVmlldy5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hdmlnYXRvclZpZXcucHJvdG90eXBlLmNyZWF0ZUZvbGRlclRyZWVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlwZS5nZXRPckNyZWF0ZUZvbGRl
clRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LnByb3Rv
dHlwZS5oYW5kbGVDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9y
VHJlZU91dGxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRvclRyZWVPdXRsaW5l
Ll90cmVlRWxlbWVudHNDb21wYXJlLmNvbXBhcmUudHlwZVdlaWdodCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmF2aWdhdG9yVHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0NvbXBhcmUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRvclRyZWVPdXRsaW5lLnByb3RvdHlwZS5zY3JpcHRU
cmVlRWxlbWVudHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRvclRyZWVPdXRsaW5l
LnByb3RvdHlwZS5zZWFyY2hTdGFydGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
b3JUcmVlT3V0bGluZS5wcm90b3R5cGUuc2VhcmNoRmluaXNoZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkJhc2VOYXZpZ2F0b3JUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnJldmVhbCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlw
ZS5nZXQgdGl0bGVUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CYXNlTmF2aWdhdG9yVHJl
ZUVsZW1lbnQucHJvdG90eXBlLnNldCB0aXRsZVRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkJhc2VOYXZpZ2F0b3JUcmVlRWxlbWVudC5wcm90b3R5cGUubWF0Y2hlc1NlYXJjaFRleHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRvckZvbGRlclRyZWVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JGb2xkZXJUcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0
IGZvbGRlcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRvckZvbGRl
clRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgaXNEb21haW4pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5hdmlnYXRvckZvbGRlclRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yU2NyaXB0VHJlZUVsZW1lbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5hdmlnYXRvclNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgdWlT
b3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JTY3JpcHRUcmVlRWxl
bWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRv
clNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNwYWNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0b3JTY3JpcHRUcmVlRWxlbWVudC5wcm90b3R5cGUuX29uY2xpY2spOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRvclNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZS5v
bmVudGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JTY3JpcHRUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JpcHRzTmF2aWdhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9y
LnByb3RvdHlwZS5hZGRVSVNvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNOYXZpZ2F0b3IucHJvdG90eXBlLmlzU2NyaXB0U291cmNlQWRkZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJvdG90eXBlLnJldmVhbFVJU291cmNlQ29kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5wcm90b3R5cGUucmVwbGFj
ZVVJU291cmNlQ29kZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3Iu
cHJvdG90eXBlLl9zY3JpcHRTZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
c05hdmlnYXRvci5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBw
ZXRzTmF2aWdhdG9yVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNOYXZpZ2F0
b3JWaWV3LnByb3RvdHlwZS5nZXRPckNyZWF0ZUZvbGRlclRyZWVFbGVtZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TbmlwcGV0c05hdmlnYXRvclZpZXcucHJvdG90eXBlLl9nZXRPckNyZWF0
ZVNuaXBwZXRFdmFsdWF0aW9uc0ZvbGRlclRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TbmlwcGV0c05hdmlnYXRvclZpZXcucHJvdG90eXBlLmhhbmRsZUNvbnRleHRNZW51KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c05hdmlnYXRvclZpZXcucHJvdG90eXBlLl9m
aWxlUmVuYW1lZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9uYXZpZ2F0b3JWaWV3LmNzczogQWRkZWQuCisgICAgICAgICgu
bmF2aWdhdG9yLWRvbWFpbi10cmVlLWl0ZW0gLmljb24pOgorICAgICAgICAoLm5hdmlnYXRvci1m
b2xkZXItdHJlZS1pdGVtIC5pY29uKToKKyAgICAgICAgKC5uYXZpZ2F0b3Itc2NyaXB0LXRyZWUt
aXRlbSAuaWNvbik6CisgICAgICAgICgubmF2aWdhdG9yIGxpKToKKyAgICAgICAgKC5uYXZpZ2F0
b3IgOmZvY3VzIGxpLnNlbGVjdGVkKToKKyAgICAgICAgKC5uYXZpZ2F0b3IgbGkuc2VsZWN0ZWQg
LnNlbGVjdGlvbik6CisgICAgICAgICgubmF2aWdhdG9yIDpmb2N1cyBsaS5zZWxlY3RlZCAuc2Vs
ZWN0aW9uKToKKyAgICAgICAgKC5uYXZpZ2F0b3IgLnNlYXJjaC1tYXRjaC1mb3VuZCBsaS5zZWxl
Y3RlZCAuc2VsZWN0aW9uKToKKyAgICAgICAgKC5uYXZpZ2F0b3IgLnNlYXJjaC1tYXRjaC1ub3Qt
Zm91bmQgbGkuc2VsZWN0ZWQgLnNlbGVjdGlvbik6CisgICAgICAgICgubmF2aWdhdG9yIC5zZWFy
Y2hpbmcgbGkuc2VsZWN0ZWQgLnNlbGVjdGlvbik6CisgICAgICAgICgubmF2aWdhdG9yIC5pY29u
KToKKyAgICAgICAgKC5uYXZpZ2F0b3IgLmJhc2UtbmF2aWdhdG9yLXRyZWUtZWxlbWVudC10aXRs
ZSk6CisgICAgICAgICgubmF2aWdhdG9yIC5iYXNlLW5hdmlnYXRvci10cmVlLWVsZW1lbnQtdGl0
bGUuZWRpdGluZyk6CisgICAgICAgICgubmF2aWdhdG9yLXRyZWUtc2VhcmNoLWJveCk6CisgICAg
ICAgICgubmF2aWdhdG9yLXRyZWUtc2VhcmNoLWJveC52aXNpYmxlKToKKyAgICAgICAgKC5uYXZp
Z2F0b3ItdHJlZS1zZWFyY2gtYm94ID4gaW5wdXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvc2NyaXB0c1BhbmVsLmNzczoKKwogMjAxMi0wNC0xOSAgUGF2ZWwgRmVsZG1hbiAgPHBm
ZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYWtlIFNjcmlw
dE5hdmlnYXRvckNvbnRyb2xsZXIgdXNlIHZpZXdzIG9ubHksIHJlbmFtZSB0byBOYXZpZ2F0b3JP
dmVybGF5Q29udHJvbGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjZmY2NDE2MjZlYmQ0NGU4OGMz
ZDgxMTA5MmM0Y2FhOWM1NzhhYmU3Li5kNjAyMmQ4NTM0M2I5MTkyOGM0MTI4ZmZmMmZlZDVlYzgx
ZmNmMTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MzYxLDYgKzYzNjEsOCBAQAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcycsCisgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5qcycsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JWaWV3LmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmlldy5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzJywKQEAgLTY0NjYsNiArNjQ2OCw3
IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9oZWFwUHJvZmlsZXIuY3NzJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2luZGV4ZWREQlZpZXdzLmNzcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3JDb21tb24uY3NzJywKKyAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL25hdmlnYXRvclZpZXcuY3NzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL25ldHdvcmtMb2dWaWV3LmNzcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL3BhbmVsRW5hYmxlclZpZXcuY3NzJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYzg1MzI5N2U2NjE0NTRh
YzA4NTQxZDJlMTI3ZTI0NTJmNGI0YjFlMC4uNWJiNmFiM2MyNGIxZjJhYzEzNmY0NWNlNGZkZjhh
MzJiMzI1NDBiYyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKQEAgLTc0MTYxLDYgKzc0MTYxLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXE5hdmlnYXRv
ck92ZXJsYXlDb250cm9sbGVyLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxOYXZpZ2F0b3JWaWV3Lmpz
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aW5zcGVjdG9yXGZyb250LWVuZFxOZXR3b3JrSXRlbVZpZXcuanMiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CkBAIC03NDE2OSw2ICs3NDE3NywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxuYXZpZ2F0b3JW
aWV3LmNzcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcbmV0d29ya0xvZ1ZpZXcuY3NzIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUt
ZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5k
LnB5CmluZGV4IDk5YjdlY2JjMDM0YWZiZWE4MDcyYTY5NjhjMTFjYzk4NTAwMzhhNjguLmRlMDU2
OTFjYWU5ZDlkODU0MDExNzg3ODhmNzFiYjY1NTlhN2QzNzkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKQEAgLTE1MSw2ICsxNTEsOCBAQCBtb2R1
bGVzID0gWwogICAgICAgICAgICAgIkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMiLAogICAg
ICAgICAgICAgIkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcyIsCiAgICAgICAgICAgICAi
R29Ub0xpbmVEaWFsb2cuanMiLAorICAgICAgICAgICAgIk5hdmlnYXRvck92ZXJsYXlDb250cm9s
bGVyLmpzIiwKKyAgICAgICAgICAgICJOYXZpZ2F0b3JWaWV3LmpzIiwKICAgICAgICAgICAgICJK
YXZhU2NyaXB0Q29udGV4dE1hbmFnZXIuanMiLAogICAgICAgICAgICAgIk9iamVjdFBvcG92ZXJI
ZWxwZXIuanMiLAogICAgICAgICAgICAgIk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzIiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9yT3Zl
cmxheUNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05h
dmlnYXRvck92ZXJsYXlDb250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2MjVkYTRlNjNhMGU1ZTUy
MjZjMjBjZDIzNWM2M2MxM2M2MjkyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLmpzCkBAIC0w
LDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBHT09HTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuCisgKiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5QYW5lbH0gcGFuZWwKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNwbGl0Vmlld30gcGFyZW50U3BsaXRWaWV3CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5WaWV3
fSBuYXZpZ2F0b3JWaWV3CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5WaWV3fSBlZGl0b3JWaWV3
CisgKi8KK1dlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlciA9IGZ1bmN0aW9u
KHBhbmVsLCBwYXJlbnRTcGxpdFZpZXcsIG5hdmlnYXRvclZpZXcsIGVkaXRvclZpZXcpCit7Cisg
ICAgdGhpcy5fcGFuZWwgPSBwYW5lbDsKKyAgICB0aGlzLl9wYXJlbnRTcGxpdFZpZXcgPSBwYXJl
bnRTcGxpdFZpZXc7CisgICAgdGhpcy5fbmF2aWdhdG9yVmlldyA9IG5hdmlnYXRvclZpZXc7Cisg
ICAgdGhpcy5fZWRpdG9yVmlldyA9IGVkaXRvclZpZXc7CisKKyAgICB0aGlzLl9uYXZpZ2F0b3JT
aWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgIHRoaXMuX25hdmlnYXRvclNpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50LmFkZFN0eWxl
Q2xhc3MoInNjcmlwdHMtbmF2aWdhdG9yLXJlc2l6ZXItd2lkZ2V0Iik7CisgICAgdGhpcy5fcGFy
ZW50U3BsaXRWaWV3Lmluc3RhbGxSZXNpemVyKHRoaXMuX25hdmlnYXRvclNpZGViYXJSZXNpemVX
aWRnZXRFbGVtZW50KTsKKyAgICB0aGlzLl9uYXZpZ2F0b3JWaWV3LmVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fbmF2aWdhdG9yU2lkZWJhclJlc2l6ZVdpZGdldEVsZW1lbnQpOworCisgICAgdGhp
cy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24gPSB0aGlzLl9jcmVhdGVOYXZpZ2F0b3JDb250cm9s
QnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBuYXZpZ2F0b3IiKSwgInNjcmlwdHMt
bmF2aWdhdG9yLXNob3ctaGlkZS1idXR0b24iLCB0aGlzLl90b2dnbGVOYXZpZ2F0b3IuYmluZCh0
aGlzKSk7CisgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24uYWRkU3R5bGVDbGFzcygi
dG9nZ2xlZC1vbiIpOworICAgIHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLnRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIG5hdmlnYXRvciIpOworICAgIHRoaXMuX3BhcmVu
dFNwbGl0Vmlldy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0
dG9uKTsKKworICAgIHRoaXMuX25hdmlnYXRvclBpbkJ1dHRvbiA9IHRoaXMuX2NyZWF0ZU5hdmln
YXRvckNvbnRyb2xCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQaW4gbmF2aWdhdG9yIiks
ICJzY3JpcHRzLW5hdmlnYXRvci1waW4tYnV0dG9uIiwgdGhpcy5fcGluTmF2aWdhdG9yLmJpbmQo
dGhpcykpOworICAgIHRoaXMuX25hdmlnYXRvclBpbkJ1dHRvbi5hZGRTdHlsZUNsYXNzKCJoaWRk
ZW4iKTsKKyAgICB0aGlzLl9uYXZpZ2F0b3JWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
bmF2aWdhdG9yUGluQnV0dG9uKTsKKworICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5uYXZpZ2F0
b3JIaWRkZW4gPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygibmF2aWdhdG9y
SGlkZGVuIiwgdHJ1ZSk7CisgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5uYXZpZ2F0b3JI
aWRkZW4uZ2V0KCkpCisgICAgICAgIHRoaXMuX3RvZ2dsZU5hdmlnYXRvcigpOworfQorCitXZWJJ
bnNwZWN0b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIucHJvdG90eXBlID0geworICAgIHdh
c1Nob3duOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dCh0aGlz
Ll9tYXliZVNob3dOYXZpZ2F0b3JPdmVybGF5LmJpbmQodGhpcyksIDApOworICAgIH0sCisKKyAg
ICBfY3JlYXRlTmF2aWdhdG9yQ29udHJvbEJ1dHRvbjogZnVuY3Rpb24odGl0bGUsIGlkLCBsaXN0
ZW5lcikKKyAgICB7CisgICAgICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJidXR0b24iKTsKKyAgICAgICAgYnV0dG9uLnRpdGxlID0gdGl0bGU7CisgICAgICAgIGJ1dHRv
bi5pZCA9IGlkOworICAgICAgICBidXR0b24uYWRkU3R5bGVDbGFzcygic2NyaXB0cy1uYXZpZ2F0
b3ItY29udHJvbC1idXR0b24iKTsKKyAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICAgICAgYnV0dG9uLmNyZWF0ZUNoaWxkKCJkaXYi
LCAiZ2x5cGgiKTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9LAorCisgICAgX2VzY0Rv
d25XaGlsZU5hdmlnYXRvck92ZXJsYXlPcGVuOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIHRoaXMuaGlkZU5hdmlnYXRvck92ZXJsYXkoKTsKKyAgICB9LAorCisgICAgX21heWJlU2hv
d05hdmlnYXRvck92ZXJsYXk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MubmF2aWdhdG9ySGlkZGVuLmdldCgpICYmICFXZWJJbnNwZWN0b3Iuc2V0
dGluZ3MubmF2aWdhdG9yV2FzT25jZUhpZGRlbi5nZXQoKSkKKyAgICAgICAgICAgIHRoaXMuc2hv
d05hdmlnYXRvck92ZXJsYXkoKTsKKyAgICB9LAorCisgICAgX3RvZ2dsZU5hdmlnYXRvcjogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX25hdmlnYXRvck92ZXJsYXlTaG93bikK
KyAgICAgICAgICAgIHRoaXMuaGlkZU5hdmlnYXRvck92ZXJsYXkoKTsKKyAgICAgICAgZWxzZSBp
ZiAodGhpcy5fbmF2aWdhdG9ySGlkZGVuKQorICAgICAgICAgICAgdGhpcy5zaG93TmF2aWdhdG9y
T3ZlcmxheSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9oaWRlUGlubmVkTmF2
aWdhdG9yKCk7CisgICAgfSwKKworICAgIF9oaWRlUGlubmVkTmF2aWdhdG9yOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl9uYXZpZ2F0b3JIaWRkZW4gPSB0cnVlOworICAgICAgICB0
aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRvbi5yZW1vdmVTdHlsZUNsYXNzKCJ0b2dnbGVkLW9u
Iik7CisgICAgICAgIHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTaG93IHNjcmlwdHMgbmF2aWdhdG9yIik7CisgICAgICAgIHRoaXMu
X2VkaXRvclZpZXcuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJuYXZpZ2F0b3ItaGlkZGVuIik7Cisg
ICAgICAgIHRoaXMuX25hdmlnYXRvclNpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50LmFkZFN0eWxl
Q2xhc3MoImhpZGRlbiIpOworCisgICAgICAgIHRoaXMuX25hdmlnYXRvclBpbkJ1dHRvbi5yZW1v
dmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKworICAgICAgICB0aGlzLl9wYXJlbnRTcGxpdFZpZXcu
aGlkZVNpZGViYXJFbGVtZW50KCk7CisgICAgICAgIHRoaXMuX25hdmlnYXRvclZpZXcuZGV0YWNo
KCk7CisgICAgICAgIHRoaXMuX2VkaXRvclZpZXcuZm9jdXMoKTsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnNldHRpbmdzLm5hdmlnYXRvckhpZGRlbi5zZXQodHJ1ZSk7CisgICAgfSwKKworICAgIF9w
aW5OYXZpZ2F0b3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9uYXZp
Z2F0b3JIaWRkZW47CisgICAgICAgIHRoaXMuaGlkZU5hdmlnYXRvck92ZXJsYXkoKTsKKworICAg
ICAgICB0aGlzLl9uYXZpZ2F0b3JQaW5CdXR0b24uYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Cisg
ICAgICAgIHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLmFkZFN0eWxlQ2xhc3MoInRvZ2ds
ZWQtb24iKTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24udGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgc2NyaXB0cyBuYXZpZ2F0b3IiKTsKKworICAgICAg
ICB0aGlzLl9lZGl0b3JWaWV3LmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygibmF2aWdhdG9yLWhp
ZGRlbiIpOworICAgICAgICB0aGlzLl9uYXZpZ2F0b3JTaWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVu
dC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKworICAgICAgICB0aGlzLl9wYXJlbnRTcGxp
dFZpZXcuc2hvd1NpZGViYXJFbGVtZW50KCk7CisgICAgICAgIHRoaXMuX25hdmlnYXRvclZpZXcu
c2hvdyh0aGlzLl9wYXJlbnRTcGxpdFZpZXcuc2lkZWJhckVsZW1lbnQpOworICAgICAgICB0aGlz
Ll9uYXZpZ2F0b3JWaWV3LmZvY3VzKCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5u
YXZpZ2F0b3JIaWRkZW4uc2V0KGZhbHNlKTsKKyAgICB9LAorCisgICAgc2hvd05hdmlnYXRvck92
ZXJsYXk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9uYXZpZ2F0b3JPdmVy
bGF5U2hvd24pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fbmF2aWdhdG9y
T3ZlcmxheVNob3duID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fc2lkZWJhck92ZXJsYXkgPSBuZXcg
V2ViSW5zcGVjdG9yLlNpZGViYXJPdmVybGF5KHRoaXMuX25hdmlnYXRvclZpZXcsICJzY3JpcHRz
UGFuZWxOYXZpZ2F0b3JPdmVybGF5V2lkdGgiLCBQcmVmZXJlbmNlcy5taW5TY3JpcHRzU2lkZWJh
cldpZHRoKTsKKyAgICAgICAgdGhpcy5fc2lkZWJhck92ZXJsYXkuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuU2lkZWJhck92ZXJsYXkuRXZlbnRUeXBlcy5XYXNTaG93biwgdGhpcy5fbmF2
aWdhdG9yT3ZlcmxheVdhc1Nob3duLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc2lkZWJhck92ZXJs
YXkuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhck92ZXJsYXkuRXZlbnRUeXBl
cy5XaWxsSGlkZSwgdGhpcy5fbmF2aWdhdG9yT3ZlcmxheVdpbGxIaWRlLCB0aGlzKTsKKworICAg
ICAgICB2YXIgbmF2aWdhdG9yT3ZlcmxheVJlc2l6ZVdpZGdldEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgbmF2aWdhdG9yT3ZlcmxheVJlc2l6ZVdpZGdl
dEVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2NyaXB0cy1uYXZpZ2F0b3ItcmVzaXplci13aWRnZXQi
KTsKKyAgICAgICAgdGhpcy5fc2lkZWJhck92ZXJsYXkucmVzaXplcldpZGdldEVsZW1lbnQgPSBu
YXZpZ2F0b3JPdmVybGF5UmVzaXplV2lkZ2V0RWxlbWVudDsKKworICAgICAgICB0aGlzLl9zaWRl
YmFyT3ZlcmxheS5zaG93KHRoaXMuX3BhcmVudFNwbGl0Vmlldy5lbGVtZW50KTsKKyAgICB9LAor
CisgICAgaGlkZU5hdmlnYXRvck92ZXJsYXk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlm
ICghdGhpcy5fbmF2aWdhdG9yT3ZlcmxheVNob3duKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMuX3NpZGViYXJPdmVybGF5LmhpZGUoKTsKKyAgICAgICAgdGhpcy5fZWRpdG9y
Vmlldy5mb2N1cygpOworICAgIH0sCisKKyAgICBfbmF2aWdhdG9yT3ZlcmxheVdhc1Nob3duOiBm
dW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX25hdmlnYXRvclZpZXcuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRvbik7CisgICAgICAgIHRo
aXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLmFkZFN0eWxlQ2xhc3MoInRvZ2dsZWQtb24iKTsK
KyAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24udGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkhpZGUgbmF2aWdhdG9yIik7CisgICAgICAgIHRoaXMuX25hdmlnYXRvclZp
ZXcuZm9jdXMoKTsKKyAgICAgICAgdGhpcy5fcGFuZWwucmVnaXN0ZXJTaG9ydGN1dChXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkVzYy5jb2RlLCB0aGlzLl9lc2NEb3duV2hpbGVO
YXZpZ2F0b3JPdmVybGF5T3Blbi5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgX25hdmlnYXRv
ck92ZXJsYXlXaWxsSGlkZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBkZWxldGUg
dGhpcy5fbmF2aWdhdG9yT3ZlcmxheVNob3duOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MubmF2aWdhdG9yV2FzT25jZUhpZGRlbi5zZXQodHJ1ZSk7CisgICAgICAgIHRoaXMuX3BhcmVu
dFNwbGl0Vmlldy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0
dG9uKTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24ucmVtb3ZlU3R5bGVD
bGFzcygidG9nZ2xlZC1vbiIpOworICAgICAgICB0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRv
bi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBuYXZpZ2F0b3IiKTsKKyAgICAg
ICAgdGhpcy5fcGFuZWwudW5yZWdpc3RlclNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0LktleXMuRXNjLmNvZGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9yVmlldy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9yVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzNiNGNj
ZjI1ZTdlMDE1NmNjZWI1YjE1OWMzNDIzZTlmZGI2ZmUwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JWaWV3LmpzCkBAIC0wLDAg
KzEsNTY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBHT09HTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuCisgKiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5WaWV3fQorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3
ID0gZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CisgICAg
dGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJuYXZpZ2F0b3JWaWV3LmNzcyIpOworCisgICAgdGhp
cy5fdHJlZVNlYXJjaEJveEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICB0aGlzLl90cmVlU2VhcmNoQm94RWxlbWVudC5jbGFzc05hbWUgPSAibmF2aWdhdG9yLXRy
ZWUtc2VhcmNoLWJveCI7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RyZWVT
ZWFyY2hCb3hFbGVtZW50KTsKKworICAgIHZhciBzY3JpcHRzVHJlZUVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgIHRoaXMuX3NjcmlwdHNUcmVlID0gbmV3IFdlYklu
c3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZSh0aGlzLl90cmVlU2VhcmNoQm94RWxlbWVudCwg
c2NyaXB0c1RyZWVFbGVtZW50KTsKKworICAgIHZhciBzY3JpcHRzT3V0bGluZUVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBzY3JpcHRzT3V0bGluZUVsZW1lbnQu
YWRkU3R5bGVDbGFzcygib3V0bGluZS1kaXNjbG9zdXJlIik7CisgICAgc2NyaXB0c091dGxpbmVF
bGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5hdmlnYXRvciIpOworICAgIHNjcmlwdHNPdXRsaW5lRWxl
bWVudC5hcHBlbmRDaGlsZChzY3JpcHRzVHJlZUVsZW1lbnQpOworCisgICAgdGhpcy5lbGVtZW50
LmFkZFN0eWxlQ2xhc3MoImZpbGwiKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
bmF2aWdhdG9yLWNvbnRhaW5lciIpOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzY3Jp
cHRzT3V0bGluZUVsZW1lbnQpOworICAgIHRoaXMuc2V0RGVmYXVsdEZvY3VzZWRFbGVtZW50KHRo
aXMuX3NjcmlwdHNUcmVlLmVsZW1lbnQpOworCisgICAgdGhpcy5fZm9sZGVyVHJlZUVsZW1lbnRz
ID0ge307CisgICAgdGhpcy5fc2NyaXB0VHJlZUVsZW1lbnRzQnlVSVNvdXJjZUNvZGUgPSBuZXcg
TWFwKCk7CisKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMuYWRk
Q2hhbmdlTGlzdGVuZXIodGhpcy5fc2hvd1NjcmlwdEZvbGRlcnNTZXR0aW5nQ2hhbmdlZC5iaW5k
KHRoaXMpKTsKK30KKworCitXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVmlldy5FdmVudHMgPSB7Cisg
ICAgSXRlbVNlbGVjdGVkOiAiSXRlbVNlbGVjdGVkIgorfQorCitXZWJJbnNwZWN0b3IuTmF2aWdh
dG9yVmlldy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKi8KKyAgICBhZGRVSVNvdXJjZUNv
ZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zY3Jp
cHRUcmVlRWxlbWVudHNCeVVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2RlKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB2YXIgc2NyaXB0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5z
cGVjdG9yLk5hdmlnYXRvclNjcmlwdFRyZWVFbGVtZW50KHRoaXMsIHVpU291cmNlQ29kZSwgIiIp
OworICAgICAgICB0aGlzLl9zY3JpcHRUcmVlRWxlbWVudHNCeVVJU291cmNlQ29kZS5wdXQodWlT
b3VyY2VDb2RlLCBzY3JpcHRUcmVlRWxlbWVudCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNjcmlw
dFRpdGxlKHVpU291cmNlQ29kZSk7CisKKyAgICAgICAgdmFyIGZvbGRlclRyZWVFbGVtZW50ID0g
dGhpcy5nZXRPckNyZWF0ZUZvbGRlclRyZWVFbGVtZW50KHVpU291cmNlQ29kZSk7CisgICAgICAg
IGZvbGRlclRyZWVFbGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdFRyZWVFbGVtZW50KTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1
aVNvdXJjZUNvZGUKKyAgICAgKi8KKyAgICBfdXBkYXRlU2NyaXB0VGl0bGU6IGZ1bmN0aW9uKHVp
U291cmNlQ29kZSkKKyAgICB7CisgICAgICAgIHZhciBzY3JpcHRUcmVlRWxlbWVudCA9IHRoaXMu
X3NjcmlwdFRyZWVFbGVtZW50c0J5VUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOworICAg
ICAgICBpZiAoIXNjcmlwdFRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHZhciB0aXRsZVRleHQ7CisgICAgICAgIGlmICh1aVNvdXJjZUNvZGUucGFyc2VkVVJMLmlz
VmFsaWQpIHsKKyAgICAgICAgICAgIHRpdGxlVGV4dCA9IHVpU291cmNlQ29kZS5wYXJzZWRVUkwu
bGFzdFBhdGhDb21wb25lbnQ7CisgICAgICAgICAgICBpZiAodWlTb3VyY2VDb2RlLnBhcnNlZFVS
TC5xdWVyeVBhcmFtcykKKyAgICAgICAgICAgICAgICB0aXRsZVRleHQgKz0gIj8iICsgdWlTb3Vy
Y2VDb2RlLnBhcnNlZFVSTC5xdWVyeVBhcmFtczsKKyAgICAgICAgfSBlbHNlIGlmICh1aVNvdXJj
ZUNvZGUucGFyc2VkVVJMKQorICAgICAgICAgICAgdGl0bGVUZXh0ID0gdWlTb3VyY2VDb2RlLnBh
cnNlZFVSTC51cmw7CisgICAgICAgIGlmICghdGl0bGVUZXh0KQorICAgICAgICAgICAgdGl0bGVU
ZXh0ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIocHJvZ3JhbSkiKTsKKyAgICAgICAgc2NyaXB0
VHJlZUVsZW1lbnQudGl0bGVUZXh0ID0gdGl0bGVUZXh0OworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgaXNTY3JpcHRTb3VyY2VBZGRlZDog
ZnVuY3Rpb24odWlTb3VyY2VDb2RlKQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdFRyZWVFbGVt
ZW50ID0gdGhpcy5fc2NyaXB0VHJlZUVsZW1lbnRzQnlVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNl
Q29kZSk7CisgICAgICAgIHJldHVybiAhIXNjcmlwdFRyZWVFbGVtZW50OworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNl
Q29kZQorICAgICAqLworICAgIHJldmVhbFVJU291cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VD
b2RlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NjcmlwdHNUcmVlLnNlbGVjdGVkVHJlZUVs
ZW1lbnQpCisgICAgICAgICAgICB0aGlzLl9zY3JpcHRzVHJlZS5zZWxlY3RlZFRyZWVFbGVtZW50
LmRlc2VsZWN0KCk7CisKKyAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkVUlTb3VyY2VDb2RlID0g
dWlTb3VyY2VDb2RlOworCisgICAgICAgIHZhciBzY3JpcHRUcmVlRWxlbWVudCA9IHRoaXMuX3Nj
cmlwdFRyZWVFbGVtZW50c0J5VUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOworICAgICAg
ICBzY3JpcHRUcmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSk7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSBv
bGRVSVNvdXJjZUNvZGVMaXN0CisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZT59IHVpU291cmNlQ29kZUxpc3QKKyAgICAgKi8KKyAgICByZXBsYWNlVUlTb3Vy
Y2VDb2RlczogZnVuY3Rpb24ob2xkVUlTb3VyY2VDb2RlTGlzdCwgdWlTb3VyY2VDb2RlTGlzdCkK
KyAgICB7CisgICAgICAgIHZhciBhZGRlZCA9IGZhbHNlOworICAgICAgICB2YXIgc2VsZWN0ZWQg
PSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvbGRVSVNvdXJjZUNvZGVMaXN0
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gb2xkVUlTb3Vy
Y2VDb2RlTGlzdFtpXTsKKyAgICAgICAgICAgIGlmICghdGhpcy5fc2NyaXB0VHJlZUVsZW1lbnRz
QnlVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBhZGRlZCA9IHRydWU7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9s
YXN0U2VsZWN0ZWRVSVNvdXJjZUNvZGUgPT09IHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgICAg
ICBzZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9yZW1vdmVVSVNvdXJjZUNvZGUo
dWlTb3VyY2VDb2RlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFhZGRlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHVpU291cmNlQ29kZUxpc3QubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLmFk
ZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVMaXN0W2ldKTsKKworICAgICAgICBpZiAoc2VsZWN0
ZWQpCisgICAgICAgICAgICB0aGlzLnJldmVhbFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVMaXN0
WzBdKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvY3VzU291
cmNlCisgICAgICovCisgICAgX3NjcmlwdFNlbGVjdGVkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUs
IGZvY3VzU291cmNlKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkVUlTb3VyY2VD
b2RlID0gdWlTb3VyY2VDb2RlOworICAgICAgICB2YXIgZGF0YSA9IHsgdWlTb3VyY2VDb2RlOiB1
aVNvdXJjZUNvZGUsIGZvY3VzU291cmNlOiBmb2N1c1NvdXJjZX07CisgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LkV2ZW50cy5J
dGVtU2VsZWN0ZWQsIGRhdGEpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqLworICAgIF9yZW1v
dmVVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKKyAgICB7CisgICAgICAgIHZh
ciB0cmVlRWxlbWVudCA9IHRoaXMuX3NjcmlwdFRyZWVFbGVtZW50c0J5VUlTb3VyY2VDb2RlLmdl
dCh1aVNvdXJjZUNvZGUpOworICAgICAgICB3aGlsZSAodHJlZUVsZW1lbnQpIHsKKyAgICAgICAg
ICAgIHZhciBwYXJlbnQgPSB0cmVlRWxlbWVudC5wYXJlbnQ7CisgICAgICAgICAgICBpZiAocGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLk5hdmlnYXRvckZvbGRlclRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgICAgICBk
ZWxldGUgdGhpcy5fZm9sZGVyVHJlZUVsZW1lbnRzW3RyZWVFbGVtZW50LmZvbGRlcklkZW50aWZp
ZXJdOworICAgICAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCh0cmVlRWxlbWVudCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHBhcmVudC5jaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdHJlZUVsZW1lbnQgPSBw
YXJlbnQ7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fc2NyaXB0VHJlZUVsZW1lbnRzQnlVSVNv
dXJjZUNvZGUucmVtb3ZlKHVpU291cmNlQ29kZSk7CisgICAgfSwKKworICAgIF9zaG93U2NyaXB0
Rm9sZGVyc1NldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgdWlT
b3VyY2VDb2RlcyA9IHRoaXMuX3NjcmlwdHNUcmVlLnNjcmlwdFRyZWVFbGVtZW50cygpOworICAg
ICAgICB0aGlzLnJlc2V0KCk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJj
ZUNvZGVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5hZGRVSVNvdXJjZUNvZGUodWlT
b3VyY2VDb2Rlc1tpXSk7CisKKyAgICAgICAgaWYgKHRoaXMuX2xhc3RTZWxlY3RlZFVJU291cmNl
Q29kZSkKKyAgICAgICAgICAgIHRoaXMucmV2ZWFsVUlTb3VyY2VDb2RlKHRoaXMuX2xhc3RTZWxl
Y3RlZFVJU291cmNlQ29kZSk7CisgICAgfSwKKworICAgIF9maWxlUmVuYW1lZDogZnVuY3Rpb24o
dWlTb3VyY2VDb2RlLCBuZXdUaXRsZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBUbyBiZSBp
bXBsZW1lbnRlZC4KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9
fSBjYWxsYmFjaworICAgICAqLworICAgIHJlbmFtZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBzY3JpcHRUcmVlRWxlbWVudCA9IHRoaXMuX3Nj
cmlwdFRyZWVFbGVtZW50c0J5VUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOworICAgICAg
ICBpZiAoIXNjcmlwdFRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8vIFRyZWUgb3V0bGluZSBzaG91bGQgYmUgbWFya2VkIGFzIGVkaXRlZCBhcyB3ZWxsIGFzIHRo
ZSB0cmVlIGVsZW1lbnQgdG8gcHJldmVudCBzZWFyY2ggZnJvbSBzdGFydGluZy4KKyAgICAgICAg
V2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZChzY3JpcHRUcmVlRWxlbWVudC50cmVlT3V0bGlu
ZS5lbGVtZW50LCB0cnVlKTsKKworICAgICAgICBmdW5jdGlvbiBjb21taXRIYW5kbGVyKGVsZW1l
bnQsIG5ld1RpdGxlLCBvbGRUaXRsZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG5ld1Rp
dGxlICYmIG5ld1RpdGxlICE9PSBvbGRUaXRsZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9maWxl
UmVuYW1lZCh1aVNvdXJjZUNvZGUsIG5ld1RpdGxlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0aGlzLl91cGRhdGVTY3JpcHRUaXRsZSh1aVNvdXJjZUNvZGUpOworICAgICAg
ICAgICAgYWZ0ZXJFZGl0aW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjYW5j
ZWxIYW5kbGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgYWZ0ZXJFZGl0aW5nKCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBhZnRlckVkaXRpbmcoKQorICAgICAgICB7CisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IubWFya0JlaW5nRWRpdGVkKHNjcmlwdFRyZWVFbGVtZW50LnRy
ZWVPdXRsaW5lLmVsZW1lbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChjYWxsYmFjaykKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGVkaXRp
bmdDb25maWcgPSBuZXcgV2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWcoY29tbWl0SGFuZGxlci5i
aW5kKHRoaXMpLCBjYW5jZWxIYW5kbGVyLmJpbmQodGhpcykpOworICAgICAgICBXZWJJbnNwZWN0
b3Iuc3RhcnRFZGl0aW5nKHNjcmlwdFRyZWVFbGVtZW50LnRpdGxlRWxlbWVudCwgZWRpdGluZ0Nv
bmZpZyk7CisgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHNj
cmlwdFRyZWVFbGVtZW50LnRpdGxlRWxlbWVudCwgMCwgc2NyaXB0VHJlZUVsZW1lbnQudGl0bGVF
bGVtZW50LCAxKTsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3NjcmlwdHNUcmVlLnN0b3BTZWFyY2goKTsKKyAgICAgICAgdGhpcy5fc2NyaXB0
c1RyZWUucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgdGhpcy5fZm9sZGVyVHJlZUVsZW1lbnRz
ID0ge307CisgICAgICAgIHRoaXMuX3NjcmlwdFRyZWVFbGVtZW50c0J5VUlTb3VyY2VDb2RlLmNs
ZWFyKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJJ
ZGVudGlmaWVyCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRvbWFpbgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBmb2xkZXJOYW1lCisgICAgICovCisgICAgY3JlYXRlRm9sZGVyVHJlZUVsZW1lbnQ6
IGZ1bmN0aW9uKHBhcmVudEZvbGRlckVsZW1lbnQsIGZvbGRlcklkZW50aWZpZXIsIGRvbWFpbiwg
Zm9sZGVyTmFtZSkKKyAgICB7CisgICAgICAgIHZhciBmb2xkZXJUcmVlRWxlbWVudCA9IG5ldyBX
ZWJJbnNwZWN0b3IuTmF2aWdhdG9yRm9sZGVyVHJlZUVsZW1lbnQoZm9sZGVySWRlbnRpZmllciwg
ZG9tYWluLCBmb2xkZXJOYW1lKTsKKyAgICAgICAgcGFyZW50Rm9sZGVyRWxlbWVudC5hcHBlbmRD
aGlsZChmb2xkZXJUcmVlRWxlbWVudCk7CisgICAgICAgIHRoaXMuX2ZvbGRlclRyZWVFbGVtZW50
c1tmb2xkZXJJZGVudGlmaWVyXSA9IGZvbGRlclRyZWVFbGVtZW50OworICAgICAgICByZXR1cm4g
Zm9sZGVyVHJlZUVsZW1lbnQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICovCisgICAgZ2V0T3JD
cmVhdGVGb2xkZXJUcmVlRWxlbWVudDogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2dldE9yQ3JlYXRlRm9sZGVyVHJlZUVsZW1lbnQodWlTb3VyY2VD
b2RlLnBhcnNlZFVSTC5ob3N0LCB1aVNvdXJjZUNvZGUucGFyc2VkVVJMLmZvbGRlclBhdGhDb21w
b25lbnRzKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRvbWFp
bgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJOYW1lCisgICAgICovCisgICAgX2dldE9y
Q3JlYXRlRm9sZGVyVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKGRvbWFpbiwgZm9sZGVyTmFtZSkKKyAg
ICB7CisgICAgICAgIHZhciBmb2xkZXJJZGVudGlmaWVyID0gZG9tYWluICsgIi8iICsgZm9sZGVy
TmFtZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLl9mb2xkZXJUcmVlRWxlbWVudHNbZm9s
ZGVySWRlbnRpZmllcl0pCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZm9sZGVyVHJlZUVsZW1l
bnRzW2ZvbGRlcklkZW50aWZpZXJdOworCisgICAgICAgIHZhciBzaG93U2NyaXB0Rm9sZGVycyA9
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93U2NyaXB0Rm9sZGVycy5nZXQoKTsKKworICAgICAg
ICBpZiAoKCFkb21haW4gJiYgIWZvbGRlck5hbWUpIHx8ICFzaG93U2NyaXB0Rm9sZGVycykKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9zY3JpcHRzVHJlZTsKKworICAgICAgICB2YXIgcGFyZW50
Rm9sZGVyRWxlbWVudDsKKyAgICAgICAgaWYgKCFmb2xkZXJOYW1lKQorICAgICAgICAgICAgcGFy
ZW50Rm9sZGVyRWxlbWVudCA9IHRoaXMuX3NjcmlwdHNUcmVlOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwYXJlbnRGb2xkZXJFbGVtZW50ID0gdGhpcy5fZ2V0T3JDcmVhdGVGb2xkZXJUcmVl
RWxlbWVudChkb21haW4sICIiKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0aGlzLmNyZWF0
ZUZvbGRlclRyZWVFbGVtZW50KHBhcmVudEZvbGRlckVsZW1lbnQsIGZvbGRlcklkZW50aWZpZXIs
IGRvbWFpbiwgZm9sZGVyTmFtZSk7CisgICAgfSwKKworICAgIGhhbmRsZUNvbnRleHRNZW51OiBm
dW5jdGlvbihldmVudCwgdWlTb3VyY2VDb2RlKQorICAgIHsKKyAgICAgICAgLy8gT3ZlcnJpZGVu
LgorICAgIH0KK30KKworV2ViSW5zcGVjdG9yLk5hdmlnYXRvclZpZXcucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtUcmVlT3V0bGluZX0KKyAqIEBwYXJhbSB7RWxlbWVudH0gdHJlZVNl
YXJjaEJveEVsZW1lbnQKKyAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudAorICovCitXZWJJbnNw
ZWN0b3IuTmF2aWdhdG9yVHJlZU91dGxpbmUgPSBmdW5jdGlvbih0cmVlU2VhcmNoQm94RWxlbWVu
dCwgZWxlbWVudCkKK3sKKyAgICBUcmVlT3V0bGluZS5jYWxsKHRoaXMsIGVsZW1lbnQpOworICAg
IHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CisKKyAgICB0aGlzLl90cmVlU2VhcmNoQm94RWxlbWVu
dCA9IHRyZWVTZWFyY2hCb3hFbGVtZW50OworICAgIAorICAgIHRoaXMuY29tcGFyYXRvciA9IFdl
Ykluc3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZS5fdHJlZUVsZW1lbnRzQ29tcGFyZTsKKwor
ICAgIHRoaXMuc2VhcmNoYWJsZSA9IHRydWU7CisgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworfQorCitXZWJJbnNwZWN0b3IuTmF2
aWdhdG9yVHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0NvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJl
KHRyZWVFbGVtZW50MSwgdHJlZUVsZW1lbnQyKQoreworICAgIC8vIEluc2VydCBpbiB0aGUgYWxw
aGFiZXRpY2FsIG9yZGVyLCBmaXJzdCBkb21haW5zLCB0aGVuIGZvbGRlcnMsIHRoZW4gc2NyaXB0
cy4KKyAgICBmdW5jdGlvbiB0eXBlV2VpZ2h0KHRyZWVFbGVtZW50KQorICAgIHsKKyAgICAgICAg
aWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk5hdmlnYXRvckZvbGRlclRy
ZWVFbGVtZW50KSB7CisgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQuaXNEb21haW4pCisgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gMzsKKyAgICB9CisKKyAgICB2YXIgdHlwZVdlaWdodDEgPSB0eXBlV2Vp
Z2h0KHRyZWVFbGVtZW50MSk7CisgICAgdmFyIHR5cGVXZWlnaHQyID0gdHlwZVdlaWdodCh0cmVl
RWxlbWVudDIpOworCisgICAgdmFyIHJlc3VsdDsKKyAgICBpZiAodHlwZVdlaWdodDEgPiB0eXBl
V2VpZ2h0MikKKyAgICAgICAgcmVzdWx0ID0gMTsKKyAgICBlbHNlIGlmICh0eXBlV2VpZ2h0MSA8
IHR5cGVXZWlnaHQyKQorICAgICAgICByZXN1bHQgPSAtMTsKKyAgICBlbHNlIHsKKyAgICAgICAg
dmFyIHRpdGxlMSA9IHRyZWVFbGVtZW50MS50aXRsZVRleHQ7CisgICAgICAgIHZhciB0aXRsZTIg
PSB0cmVlRWxlbWVudDIudGl0bGVUZXh0OworICAgICAgICByZXN1bHQgPSB0aXRsZTEubG9jYWxl
Q29tcGFyZSh0aXRsZTIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitXZWJJbnNw
ZWN0b3IuTmF2aWdhdG9yVHJlZU91dGxpbmUucHJvdG90eXBlID0geworICAgLyoqCisgICAgKiBA
cmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59CisgICAgKi8KKyAgIHNj
cmlwdFRyZWVFbGVtZW50czogZnVuY3Rpb24oKQorICAgeworICAgICAgIHZhciByZXN1bHQgPSBb
XTsKKyAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGgpIHsKKyAgICAgICAgICAgZm9yICh2
YXIgdHJlZUVsZW1lbnQgPSB0aGlzLmNoaWxkcmVuWzBdOyB0cmVlRWxlbWVudDsgdHJlZUVsZW1l
bnQgPSB0cmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxzZSwgdGhpcywgdHJ1
ZSkpIHsKKyAgICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0b3JTY3JpcHRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICAgICByZXN1
bHQucHVzaCh0cmVlRWxlbWVudC51aVNvdXJjZUNvZGUpOworICAgICAgICAgICB9CisgICAgICAg
fQorICAgICAgIHJldHVybiByZXN1bHQ7CisgICB9LAorCisgICBzZWFyY2hTdGFydGVkOiBmdW5j
dGlvbigpCisgICB7CisgICAgICAgdGhpcy5fdHJlZVNlYXJjaEJveEVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQpOworICAgICAgIHRoaXMuX3RyZWVTZWFyY2hCb3hF
bGVtZW50LmFkZFN0eWxlQ2xhc3MoInZpc2libGUiKTsKKyAgIH0sCisKKyAgIHNlYXJjaEZpbmlz
aGVkOiBmdW5jdGlvbigpCisgICB7CisgICAgICAgdGhpcy5fdHJlZVNlYXJjaEJveEVsZW1lbnQu
cmVtb3ZlQ2hpbGQodGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQpOworICAgICAgIHRoaXMuX3RyZWVT
ZWFyY2hCb3hFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInZpc2libGUiKTsKKyAgIH0KK30KKwor
V2ViSW5zcGVjdG9yLk5hdmlnYXRvclRyZWVPdXRsaW5lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBU
cmVlT3V0bGluZS5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5k
cyB7VHJlZUVsZW1lbnR9CisgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUKKyAqIEBwYXJhbSB7QXJy
YXkuPHN0cmluZz59IGljb25DbGFzc2VzCisgKiBAcGFyYW0ge2Jvb2xlYW59IGhhc0NoaWxkcmVu
CisgKiBAcGFyYW0ge2Jvb2xlYW49fSBub0ljb24KKyAqLworV2ViSW5zcGVjdG9yLkJhc2VOYXZp
Z2F0b3JUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHRpdGxlLCBpY29uQ2xhc3NlcywgaGFzQ2hpbGRy
ZW4sIG5vSWNvbikKK3sKKyAgICBUcmVlRWxlbWVudC5jYWxsKHRoaXMsICIiLCBudWxsLCBoYXND
aGlsZHJlbik7CisgICAgdGhpcy5fdGl0bGVUZXh0ID0gdGl0bGU7CisgICAgdGhpcy5faWNvbkNs
YXNzZXMgPSBpY29uQ2xhc3NlczsKKyAgICB0aGlzLl9ub0ljb24gPSBub0ljb247Cit9CisKK1dl
Ykluc3BlY3Rvci5CYXNlTmF2aWdhdG9yVHJlZUVsZW1lbnQucHJvdG90eXBlID0geworICAgIG9u
YXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5y
ZW1vdmVDaGlsZHJlbigpOworICAgICAgICBpZiAodGhpcy5faWNvbkNsYXNzZXMpIHsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5faWNvbkNsYXNzZXMubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkU3R5bGVDbGFzcyh0aGlz
Ll9pY29uQ2xhc3Nlc1tpXSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgc2VsZWN0aW9uRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBzZWxlY3Rpb25F
bGVtZW50LmNsYXNzTmFtZSA9ICJzZWxlY3Rpb24iOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxl
bWVudC5hcHBlbmRDaGlsZChzZWxlY3Rpb25FbGVtZW50KTsKKworICAgICAgICBpZiAoIXRoaXMu
X25vSWNvbikgeworICAgICAgICAgICAgdGhpcy5pbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgICAgIHRoaXMuaW1hZ2VFbGVtZW50LmNsYXNzTmFt
ZSA9ICJpY29uIjsKKyAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuaW1hZ2VFbGVtZW50KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGhpcy50
aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhp
cy50aXRsZUVsZW1lbnQuY2xhc3NOYW1lID0gImJhc2UtbmF2aWdhdG9yLXRyZWUtZWxlbWVudC10
aXRsZSI7CisgICAgICAgIHRoaXMuX3RpdGxlVGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgiIik7CisgICAgICAgIHRoaXMuX3RpdGxlVGV4dE5vZGUudGV4dENvbnRlbnQgPSB0aGlz
Ll90aXRsZVRleHQ7CisgICAgICAgIHRoaXMudGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X3RpdGxlVGV4dE5vZGUpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLnRpdGxlRWxlbWVudCk7CisgICAgICAgIAorICAgICAgICB0aGlzLmV4cGFuZCgpOwor
ICAgIH0sCisKKyAgICBvbnJldmVhbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMubGlzdEl0ZW1FbGVtZW50KQorICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuc2Ny
b2xsSW50b1ZpZXdJZk5lZWRlZCh0cnVlKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJl
dHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGdldCB0aXRsZVRleHQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3RpdGxlVGV4dDsKKyAgICB9LAorCisgICAgc2V0IHRpdGxlVGV4dCh0
aXRsZVRleHQpCisgICAgeworICAgICAgICB0aGlzLl90aXRsZVRleHQgPSB0aXRsZVRleHQgfHwg
IiI7CisgICAgICAgIGlmICh0aGlzLnRpdGxlRWxlbWVudCkKKyAgICAgICAgICAgIHRoaXMudGl0
bGVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fdGl0bGVUZXh0OworICAgIH0sCisgICAgCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFRleHQKKyAgICAgKi8KKyAgICBt
YXRjaGVzU2VhcmNoVGV4dDogZnVuY3Rpb24oc2VhcmNoVGV4dCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLnRpdGxlVGV4dC5tYXRjaChuZXcgUmVnRXhwKCJeIiArIHNlYXJjaFRleHQuZXNj
YXBlRm9yUmVnRXhwKCksICJpIikpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkJhc2VOYXZp
Z2F0b3JUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90
eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5C
YXNlTmF2aWdhdG9yVHJlZUVsZW1lbnR9CisgKiBAcGFyYW0ge3N0cmluZ30gZm9sZGVySWRlbnRp
ZmllcgorICogQHBhcmFtIHtzdHJpbmd9IGRvbWFpbgorICogQHBhcmFtIHtzdHJpbmd9IGZvbGRl
ck5hbWUKKyAqLworV2ViSW5zcGVjdG9yLk5hdmlnYXRvckZvbGRlclRyZWVFbGVtZW50ID0gZnVu
Y3Rpb24oZm9sZGVySWRlbnRpZmllciwgZG9tYWluLCBmb2xkZXJOYW1lKQoreworICAgIHRoaXMu
X2ZvbGRlcklkZW50aWZpZXIgPSBmb2xkZXJJZGVudGlmaWVyOworICAgIHRoaXMuX2ZvbGRlck5h
bWUgPSBmb2xkZXJOYW1lOworICAgIAorICAgIHZhciBpY29uQ2xhc3MgPSB0aGlzLmlzRG9tYWlu
ID8gIm5hdmlnYXRvci1kb21haW4tdHJlZS1pdGVtIiA6ICJuYXZpZ2F0b3ItZm9sZGVyLXRyZWUt
aXRlbSI7CisgICAgdmFyIHRpdGxlID0gdGhpcy5pc0RvbWFpbiA/IGRvbWFpbiA6IGZvbGRlck5h
bWUuc3Vic3RyaW5nKDEpOworCisgICAgV2ViSW5zcGVjdG9yLkJhc2VOYXZpZ2F0b3JUcmVlRWxl
bWVudC5jYWxsKHRoaXMsIHRpdGxlLCBbaWNvbkNsYXNzXSwgdHJ1ZSk7CisgICAgdGhpcy50b29s
dGlwID0gZm9sZGVyTmFtZTsKK30KKworV2ViSW5zcGVjdG9yLk5hdmlnYXRvckZvbGRlclRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9Cisg
ICAgICovCisgICAgZ2V0IGZvbGRlcklkZW50aWZpZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2ZvbGRlcklkZW50aWZpZXI7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZ2V0IGlzRG9tYWluKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9mb2xkZXJOYW1lID09PSAiIjsKKyAgICB9LAorICAgIAorICAgIG9uYXR0
YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRv
clRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOworICAgICAgICBpZiAo
dGhpcy5faXNEb21haW4pCisgICAgICAgICAgICB0aGlzLmNvbGxhcHNlKCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3Iu
TmF2aWdhdG9yRm9sZGVyVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5CYXNlTmF2aWdhdG9yVHJlZUVsZW1lbnQucHJvdG90eXBlOworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5CYXNlTmF2aWdhdG9yVHJlZUVsZW1l
bnR9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3fSBuYXZpZ2F0b3JWaWV3
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICog
QHBhcmFtIHtzdHJpbmd9IHRpdGxlCisgKi8KK1dlYkluc3BlY3Rvci5OYXZpZ2F0b3JTY3JpcHRU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKG5hdmlnYXRvclZpZXcsIHVpU291cmNlQ29kZSwgdGl0bGUp
Cit7CisgICAgV2ViSW5zcGVjdG9yLkJhc2VOYXZpZ2F0b3JUcmVlRWxlbWVudC5jYWxsKHRoaXMs
IHRpdGxlLCBbIm5hdmlnYXRvci1zY3JpcHQtdHJlZS1pdGVtIl0sIGZhbHNlKTsKKyAgICB0aGlz
Ll9uYXZpZ2F0b3JWaWV3ID0gbmF2aWdhdG9yVmlldzsKKyAgICB0aGlzLl91aVNvdXJjZUNvZGUg
PSB1aVNvdXJjZUNvZGU7CisgICAgdGhpcy50b29sdGlwID0gdWlTb3VyY2VDb2RlLnVybDsKK30K
KworV2ViSW5zcGVjdG9yLk5hdmlnYXRvclNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
KyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQorICAg
ICAqLworICAgIGdldCB1aVNvdXJjZUNvZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3VpU291cmNlQ29kZTsKKyAgICB9LAorCisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIFdlYkluc3BlY3Rvci5CYXNlTmF2aWdhdG9yVHJlZUVsZW1lbnQucHJvdG90eXBl
Lm9uYXR0YWNoLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25jbGljay5iaW5kKHRoaXMpLCBmYWxzZSk7Cisg
ICAgfSwKKworICAgIG9uc3BhY2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX25h
dmlnYXRvclZpZXcuX3NjcmlwdFNlbGVjdGVkKHRoaXMudWlTb3VyY2VDb2RlLCB0cnVlKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RXZl
bnR9IGV2ZW50CisgICAgICovCisgICAgX29uY2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgdGhpcy5fbmF2aWdhdG9yVmlldy5fc2NyaXB0U2VsZWN0ZWQodGhpcy51aVNvdXJj
ZUNvZGUsIGZhbHNlKTsKKyAgICB9LAorCisgICAgb25lbnRlcjogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5fbmF2aWdhdG9yVmlldy5fc2NyaXB0U2VsZWN0ZWQodGhpcy51aVNvdXJj
ZUNvZGUsIHRydWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfaGFuZGxlQ29udGV4dE1l
bnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9uYXZpZ2F0b3JW
aWV3LmhhbmRsZUNvbnRleHRNZW51KGV2ZW50LCB0aGlzLl91aVNvdXJjZUNvZGUpOworICAgIH0K
K30KKworV2ViSW5zcGVjdG9yLk5hdmlnYXRvclNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
c05hdmlnYXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
c05hdmlnYXRvci5qcwppbmRleCA1ZWNkYzExMGNlZTM0ZmNiMzhlNjAxN2FjNTc0MmQwY2FjNTI5
MWE4Li5lYzM1YzRjMmE4YTM3YzcxNjkyZWVkYWEwY2M2YjY2MzJlNjU2ZGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9y
LmpzCkBAIC0zOCw1NCArMzgsMjMgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IgPSBm
dW5jdGlvbigpCiAgICAgdGhpcy5fdGFiYmVkUGFuZS5zaHJpbmthYmxlVGFicyA9IHRydWU7CiAK
ICAgICB0aGlzLl90YWJiZWRQYW5lLmVsZW1lbnQuaWQgPSAic2NyaXB0cy1uYXZpZ2F0b3ItdGFi
YmVkLXBhbmUiOwotICAgIAotICAgIHRoaXMuX3RyZWVTZWFyY2hCb3ggPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl90cmVlU2VhcmNoQm94LmlkID0gInNjcmlwdHMt
bmF2aWdhdG9yLXRyZWUtc2VhcmNoLWJveCI7Ci0gICAgdGhpcy5fdGFiYmVkUGFuZS5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX3RyZWVTZWFyY2hCb3gpOwogCi0gICAgdmFyIHNjcmlwdHNUcmVl
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7Ci0gICAgdGhpcy5fc2NyaXB0
c1RyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRvclRyZWVPdXRsaW5lKHRoaXMsIHNjcmlw
dHNUcmVlRWxlbWVudCk7CisgICAgdGhpcy5fc2NyaXB0c1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRvclZpZXcoKTsKKyAgICB0aGlzLl9zY3JpcHRzVmlldy5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LkV2ZW50cy5JdGVtU2VsZWN0ZWQsIHRoaXMuX3Nj
cmlwdFNlbGVjdGVkLCB0aGlzKTsKIAotICAgIHZhciBzY3JpcHRzT3V0bGluZUVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICBzY3JpcHRzT3V0bGluZUVsZW1lbnQu
YWRkU3R5bGVDbGFzcygib3V0bGluZS1kaXNjbG9zdXJlIik7Ci0gICAgc2NyaXB0c091dGxpbmVF
bGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5hdmlnYXRvciIpOwotICAgIHNjcmlwdHNPdXRsaW5lRWxl
bWVudC5hcHBlbmRDaGlsZChzY3JpcHRzVHJlZUVsZW1lbnQpOworICAgIHRoaXMuX2NvbnRlbnRT
Y3JpcHRzVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVmlldygpOworICAgIHRoaXMu
X2NvbnRlbnRTY3JpcHRzVmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OYXZpZ2F0
b3JWaWV3LkV2ZW50cy5JdGVtU2VsZWN0ZWQsIHRoaXMuX3NjcmlwdFNlbGVjdGVkLCB0aGlzKTsK
IAotICAgIHZhciBzY3JpcHRzVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlldygpOwotICAgIHNj
cmlwdHNWaWV3LmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZmlsbCIpOwotICAgIHNjcmlwdHNWaWV3
LmVsZW1lbnQuYWRkU3R5bGVDbGFzcygibmF2aWdhdG9yLWNvbnRhaW5lciIpOwotICAgIHNjcmlw
dHNWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0c091dGxpbmVFbGVtZW50KTsKLSAgICBz
Y3JpcHRzVmlldy5zZXREZWZhdWx0Rm9jdXNlZEVsZW1lbnQodGhpcy5fc2NyaXB0c1RyZWUuZWxl
bWVudCk7CisgICAgdGhpcy5fc25pcHBldHNWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5TbmlwcGV0
c05hdmlnYXRvclZpZXcoKTsKKyAgICB0aGlzLl9zbmlwcGV0c1ZpZXcuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVmlldy5FdmVudHMuSXRlbVNlbGVjdGVkLCB0aGlzLl9z
Y3JpcHRTZWxlY3RlZCwgdGhpcyk7CiAKLSAgICB0aGlzLl90YWJiZWRQYW5lLmFwcGVuZFRhYihX
ZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5TY3JpcHRzVGFiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlNjcmlwdHMiKSwgc2NyaXB0c1ZpZXcpOworICAgIHRoaXMuX3RhYmJlZFBhbmUuYXBw
ZW5kVGFiKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLlNjcmlwdHNUYWIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2NyaXB0cyIpLCB0aGlzLl9zY3JpcHRzVmlldyk7CiAgICAgdGhpcy5f
dGFiYmVkUGFuZS5zZWxlY3RUYWIoV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuU2NyaXB0
c1RhYik7Ci0KLSAgICB2YXIgY29udGVudFNjcmlwdHNUcmVlRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoIm9sIik7Ci0gICAgdGhpcy5fY29udGVudFNjcmlwdHNUcmVlID0gbmV3IFdl
Ykluc3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZSh0aGlzLCBjb250ZW50U2NyaXB0c1RyZWVF
bGVtZW50KTsKLQotICAgIHZhciBjb250ZW50U2NyaXB0c091dGxpbmVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgY29udGVudFNjcmlwdHNPdXRsaW5lRWxlbWVu
dC5hZGRTdHlsZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKLSAgICBjb250ZW50U2NyaXB0
c091dGxpbmVFbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5hdmlnYXRvciIpOwotICAgIGNvbnRlbnRT
Y3JpcHRzT3V0bGluZUVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudFNjcmlwdHNUcmVlRWxlbWVu
dCk7Ci0KLSAgICB2YXIgY29udGVudFNjcmlwdHNWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5WaWV3
KCk7Ci0gICAgY29udGVudFNjcmlwdHNWaWV3LmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZmlsbCIp
OwotICAgIGNvbnRlbnRTY3JpcHRzVmlldy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5hdmlnYXRv
ci1jb250YWluZXIiKTsKLSAgICBjb250ZW50U2NyaXB0c1ZpZXcuZWxlbWVudC5hcHBlbmRDaGls
ZChjb250ZW50U2NyaXB0c091dGxpbmVFbGVtZW50KTsKLSAgICBjb250ZW50U2NyaXB0c1ZpZXcu
c2V0RGVmYXVsdEZvY3VzZWRFbGVtZW50KHRoaXMuX2NvbnRlbnRTY3JpcHRzVHJlZS5lbGVtZW50
KTsKLQotICAgIHRoaXMuX3RhYmJlZFBhbmUuYXBwZW5kVGFiKFdlYkluc3BlY3Rvci5TY3JpcHRz
TmF2aWdhdG9yLkNvbnRlbnRTY3JpcHRzVGFiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRl
bnQgc2NyaXB0cyIpLCBjb250ZW50U2NyaXB0c1ZpZXcpOwotCi0gICAgdGhpcy5fc25pcHBldHNU
cmVlID0gdGhpcy5fY3JlYXRlU25pcHBldHNUcmVlKCk7Ci0KLSAgICB0aGlzLl9mb2xkZXJUcmVl
RWxlbWVudHMgPSB7fTsKLSAgICAKLSAgICB0aGlzLl9zY3JpcHRUcmVlRWxlbWVudHNCeVVJU291
cmNlQ29kZSA9IG5ldyBNYXAoKTsKLSAgICAKLSAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hv
d1NjcmlwdEZvbGRlcnMuYWRkQ2hhbmdlTGlzdGVuZXIodGhpcy5fc2hvd1NjcmlwdEZvbGRlcnNT
ZXR0aW5nQ2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl90YWJiZWRQYW5lLmFwcGVuZFRh
YihXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5Db250ZW50U2NyaXB0c1RhYiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb250ZW50IHNjcmlwdHMiKSwgdGhpcy5fY29udGVudFNjcmlwdHNW
aWV3KTsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNT
dXBwb3J0LmlzRW5hYmxlZCgpKQorICAgICAgICB0aGlzLl90YWJiZWRQYW5lLmFwcGVuZFRhYihX
ZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5TbmlwcGV0c1RhYiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTbmlwcGV0cyIpLCB0aGlzLl9zbmlwcGV0c1ZpZXcpOwogfQogCi0KIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzTmF2aWdhdG9yLkV2ZW50cyA9IHsKICAgICBTY3JpcHRTZWxlY3RlZDogIlNj
cmlwdFNlbGVjdGVkIgogfQpAQCAtMTA4LDM2ICs3NywxMiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0
c05hdmlnYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgYWRkVUlTb3VyY2VDb2RlOiBm
dW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fc2NyaXB0VHJl
ZUVsZW1lbnRzQnlVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIAotICAgICAgICB2YXIgc2NyaXB0VHJlZUVsZW1lbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRvclNjcmlwdFRyZWVFbGVtZW50KHRoaXMsIHVpU291cmNlQ29kZSwg
IiIpOwotICAgICAgICB0aGlzLl9zY3JpcHRUcmVlRWxlbWVudHNCeVVJU291cmNlQ29kZS5wdXQo
dWlTb3VyY2VDb2RlLCBzY3JpcHRUcmVlRWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVNj
cmlwdFRpdGxlKHVpU291cmNlQ29kZSk7Ci0KLSAgICAgICAgdmFyIGZvbGRlclRyZWVFbGVtZW50
ID0gdGhpcy5fZ2V0T3JDcmVhdGVGb2xkZXJUcmVlRWxlbWVudCh1aVNvdXJjZUNvZGUpOwotICAg
ICAgICBmb2xkZXJUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChzY3JpcHRUcmVlRWxlbWVudCk7Ci0g
ICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gdWlTb3VyY2VDb2RlCi0gICAgICovCi0gICAgX3VwZGF0ZVNjcmlwdFRpdGxlOiBmdW5jdGlv
bih1aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICB2YXIgc2NyaXB0VHJlZUVsZW1lbnQgPSB0
aGlzLl9zY3JpcHRUcmVlRWxlbWVudHNCeVVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2RlKTsK
LSAgICAgICAgaWYgKCFzY3JpcHRUcmVlRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICB2YXIgdGl0bGVUZXh0OwotICAgICAgICBpZiAodWlTb3VyY2VDb2RlLnBhcnNlZFVS
TC5pc1ZhbGlkKSB7Ci0gICAgICAgICAgICB0aXRsZVRleHQgPSB1aVNvdXJjZUNvZGUucGFyc2Vk
VVJMLmxhc3RQYXRoQ29tcG9uZW50OwotICAgICAgICAgICAgaWYgKHVpU291cmNlQ29kZS5wYXJz
ZWRVUkwucXVlcnlQYXJhbXMpCi0gICAgICAgICAgICAgICAgdGl0bGVUZXh0ICs9ICI/IiArIHVp
U291cmNlQ29kZS5wYXJzZWRVUkwucXVlcnlQYXJhbXM7Ci0gICAgICAgIH0gZWxzZSBpZiAodWlT
b3VyY2VDb2RlLnBhcnNlZFVSTCkKLSAgICAgICAgICAgIHRpdGxlVGV4dCA9IHVpU291cmNlQ29k
ZS5wYXJzZWRVUkwudXJsOwotICAgICAgICBpZiAoIXRpdGxlVGV4dCkKLSAgICAgICAgICAgIHRp
dGxlVGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIik7Ci0gICAgICAgIHNj
cmlwdFRyZWVFbGVtZW50LnRpdGxlVGV4dCA9IHRpdGxlVGV4dDsKKyAgICAgICAgaWYgKHVpU291
cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpCisgICAgICAgICAgICB0aGlzLl9jb250ZW50U2NyaXB0
c1ZpZXcuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CisgICAgICAgIGVsc2UgaWYgKHVp
U291cmNlQ29kZS5pc1NuaXBwZXQgfHwgdWlTb3VyY2VDb2RlLmlzU25pcHBldEV2YWx1YXRpb24p
CisgICAgICAgICAgICB0aGlzLl9zbmlwcGV0c1ZpZXcuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNl
Q29kZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3NjcmlwdHNWaWV3LmFkZFVJ
U291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE0Niw4ICs5
MSwxMSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5wcm90b3R5cGUgPSB7CiAgICAg
ICovCiAgICAgaXNTY3JpcHRTb3VyY2VBZGRlZDogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQogICAg
IHsKLSAgICAgICAgdmFyIHNjcmlwdFRyZWVFbGVtZW50ID0gdGhpcy5fc2NyaXB0VHJlZUVsZW1l
bnRzQnlVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSk7Ci0gICAgICAgIHJldHVybiAhIXNj
cmlwdFRyZWVFbGVtZW50OworICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlw
dCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50U2NyaXB0c1ZpZXcuaXNTY3JpcHRT
b3VyY2VBZGRlZCh1aVNvdXJjZUNvZGUpOworICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmlzU25p
cHBldCB8fCB1aVNvdXJjZUNvZGUuaXNTbmlwcGV0RXZhbHVhdGlvbikKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9zbmlwcGV0c1ZpZXcuaXNTY3JpcHRTb3VyY2VBZGRlZCh1aVNvdXJjZUNvZGUp
OworICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0c1ZpZXcuaXNTY3JpcHRTb3VyY2VBZGRlZCh1
aVNvdXJjZUNvZGUpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE1NSwyNSArMTAzLDE2IEBAIFdl
Ykluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBy
ZXZlYWxVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9zY3JpcHRzVHJlZS5zZWxlY3RlZFRyZWVFbGVtZW50KQotICAgICAgICAgICAg
dGhpcy5fc2NyaXB0c1RyZWUuc2VsZWN0ZWRUcmVlRWxlbWVudC5kZXNlbGVjdCgpOwotICAgICAg
ICBpZiAodGhpcy5fY29udGVudFNjcmlwdHNUcmVlLnNlbGVjdGVkVHJlZUVsZW1lbnQpCi0gICAg
ICAgICAgICB0aGlzLl9jb250ZW50U2NyaXB0c1RyZWUuc2VsZWN0ZWRUcmVlRWxlbWVudC5kZXNl
bGVjdCgpOwotICAgICAgICBpZiAodGhpcy5fc25pcHBldHNUcmVlLnNlbGVjdGVkVHJlZUVsZW1l
bnQpCi0gICAgICAgICAgICB0aGlzLl9zbmlwcGV0c1RyZWUuc2VsZWN0ZWRUcmVlRWxlbWVudC5k
ZXNlbGVjdCgpOwotCi0gICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZFVJU291cmNlQ29kZSA9IHVp
U291cmNlQ29kZTsKLQotICAgICAgICB2YXIgdGFiID0gV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZp
Z2F0b3IuU2NyaXB0c1RhYjsKLSAgICAgICAgaWYgKHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3Jp
cHQpCi0gICAgICAgICAgICB0YWIgPSBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5Db250
ZW50U2NyaXB0c1RhYjsKLSAgICAgICAgaWYgKHVpU291cmNlQ29kZS5pc1NuaXBwZXQgfHwgdWlT
b3VyY2VDb2RlLmlzU25pcHBldEV2YWx1YXRpb24pCi0gICAgICAgICAgICB0YWIgPSBXZWJJbnNw
ZWN0b3IuU2NyaXB0c05hdmlnYXRvci5TbmlwcGV0c1RhYjsKLQotICAgICAgICB0aGlzLl90YWJi
ZWRQYW5lLnNlbGVjdFRhYih0YWIpOwotCi0gICAgICAgIHZhciBzY3JpcHRUcmVlRWxlbWVudCA9
IHRoaXMuX3NjcmlwdFRyZWVFbGVtZW50c0J5VUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUp
OwotICAgICAgICBzY3JpcHRUcmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSk7CisgICAg
ICAgIGlmICh1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KSB7CisgICAgICAgICAgICB0aGlz
Ll9jb250ZW50U2NyaXB0c1ZpZXcucmV2ZWFsVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7Cisg
ICAgICAgICAgICB0aGlzLl90YWJiZWRQYW5lLnNlbGVjdFRhYihXZWJJbnNwZWN0b3IuU2NyaXB0
c05hdmlnYXRvci5Db250ZW50U2NyaXB0c1RhYik7CisgICAgICAgIH0gZWxzZSBpZiAodWlTb3Vy
Y2VDb2RlLmlzU25pcHBldCB8fCB1aVNvdXJjZUNvZGUuaXNTbmlwcGV0RXZhbHVhdGlvbikgewor
ICAgICAgICAgICAgdGhpcy5fc25pcHBldHNWaWV3LnJldmVhbFVJU291cmNlQ29kZSh1aVNvdXJj
ZUNvZGUpOworICAgICAgICAgICAgdGhpcy5fdGFiYmVkUGFuZS5zZWxlY3RUYWIoV2ViSW5zcGVj
dG9yLlNjcmlwdHNOYXZpZ2F0b3IuU25pcHBldHNUYWIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdGhpcy5fc2NyaXB0c1ZpZXcucmV2ZWFsVUlTb3VyY2VDb2RlKHVpU291cmNlQ29k
ZSk7CisgICAgICAgICAgICB0aGlzLl90YWJiZWRQYW5lLnNlbGVjdFRhYihXZWJJbnNwZWN0b3Iu
U2NyaXB0c05hdmlnYXRvci5TY3JpcHRzVGFiKTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICAv
KioKQEAgLTE5MSwxMDQgKzEzMCw2NiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5w
cm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcmVwbGFjZVVJU291cmNlQ29kZXM6IGZ1bmN0aW9u
KG9sZFVJU291cmNlQ29kZUxpc3QsIHVpU291cmNlQ29kZUxpc3QpCiAgICAgewotICAgICAgICB2
YXIgYWRkZWQgPSBmYWxzZTsKLSAgICAgICAgdmFyIHNlbGVjdGVkID0gZmFsc2U7Ci0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgb2xkVUlTb3VyY2VDb2RlTGlzdC5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG9sZFVJU291cmNlQ29kZUxpc3RbaV07Ci0g
ICAgICAgICAgICBpZiAoIXRoaXMuX3NjcmlwdFRyZWVFbGVtZW50c0J5VUlTb3VyY2VDb2RlLmdl
dCh1aVNvdXJjZUNvZGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
YWRkZWQgPSB0cnVlOwotCi0gICAgICAgICAgICBpZiAodGhpcy5fbGFzdFNlbGVjdGVkVUlTb3Vy
Y2VDb2RlID09PSB1aVNvdXJjZUNvZGUpCi0gICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVl
OwotICAgICAgICAgICAgdGhpcy5fcmVtb3ZlVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghYWRkZWQpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNv
ZGVMaXN0Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5hZGRVSVNvdXJjZUNvZGUodWlT
b3VyY2VDb2RlTGlzdFtpXSk7Ci0KLSAgICAgICAgaWYgKHNlbGVjdGVkKQotICAgICAgICAgICAg
dGhpcy5yZXZlYWxVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlTGlzdFswXSk7CisgICAgICAgIHRo
aXMuX3NjcmlwdHNWaWV3LnJlcGxhY2VVSVNvdXJjZUNvZGVzKG9sZFVJU291cmNlQ29kZUxpc3Qs
IHVpU291cmNlQ29kZUxpc3QpOworICAgICAgICB0aGlzLl9jb250ZW50U2NyaXB0c1ZpZXcucmVw
bGFjZVVJU291cmNlQ29kZXMob2xkVUlTb3VyY2VDb2RlTGlzdCwgdWlTb3VyY2VDb2RlTGlzdCk7
CisgICAgICAgIHRoaXMuX3NuaXBwZXRzVmlldy5yZXBsYWNlVUlTb3VyY2VDb2RlcyhvbGRVSVNv
dXJjZUNvZGVMaXN0LCB1aVNvdXJjZUNvZGVMaXN0KTsKICAgICB9LAogCiAgICAgLyoqCi0gICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAg
KiBAcGFyYW0ge2Jvb2xlYW59IGZvY3VzU291cmNlCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRXZlbnR9IGV2ZW50CiAgICAgICovCi0gICAgX3NjcmlwdFNlbGVjdGVkOiBmdW5jdGlvbih1
aVNvdXJjZUNvZGUsIGZvY3VzU291cmNlKQorICAgIF9zY3JpcHRTZWxlY3RlZDogZnVuY3Rpb24o
ZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWRVSVNvdXJjZUNvZGUgPSB1
aVNvdXJjZUNvZGU7Ci0gICAgICAgIHZhciBkYXRhID0geyB1aVNvdXJjZUNvZGU6IHVpU291cmNl
Q29kZSwgZm9jdXNTb3VyY2U6IGZvY3VzU291cmNlfTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuRXZlbnRzLlNjcmlw
dFNlbGVjdGVkLCBkYXRhKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuRXZlbnRzLlNjcmlwdFNlbGVjdGVkLCBldmVu
dC5kYXRhKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKi8KLSAgICBfcmVtb3ZlVUlTb3VyY2VD
b2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICB2YXIgdHJlZUVsZW1l
bnQgPSB0aGlzLl9zY3JpcHRUcmVlRWxlbWVudHNCeVVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VD
b2RlKTsKLSAgICAgICAgd2hpbGUgKHRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICB2YXIgcGFy
ZW50ID0gdHJlZUVsZW1lbnQucGFyZW50OwotICAgICAgICAgICAgaWYgKHBhcmVudCkgewotICAg
ICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5OYXZp
Z2F0b3JGb2xkZXJUcmVlRWxlbWVudCkKLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X2ZvbGRlclRyZWVFbGVtZW50c1t0cmVlRWxlbWVudC5mb2xkZXJJZGVudGlmaWVyXTsKLSAgICAg
ICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodHJlZUVsZW1lbnQpOwotICAgICAgICAgICAg
ICAgIGlmIChwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRyZWVFbGVtZW50ID0gcGFyZW50OwotICAg
ICAgICB9Ci0gICAgICAgIHRoaXMuX3NjcmlwdFRyZWVFbGVtZW50c0J5VUlTb3VyY2VDb2RlLnJl
bW92ZSh1aVNvdXJjZUNvZGUpOwotICAgIH0sCi0KLSAgICBfc2hvd1NjcmlwdEZvbGRlcnNTZXR0
aW5nQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IHRoaXMuX3NjcmlwdHNUcmVlLnNjcmlwdFRyZWVFbGVt
ZW50cygpOwotICAgICAgICB1aVNvdXJjZUNvZGVzID0gdWlTb3VyY2VDb2Rlcy5jb25jYXQodGhp
cy5fY29udGVudFNjcmlwdHNUcmVlLnNjcmlwdFRyZWVFbGVtZW50cygpKTsKLSAgICAgICAgdGhp
cy5yZXNldCgpOworICAgICAgICB0aGlzLl9zY3JpcHRzVmlldy5yZXNldCgpOworICAgICAgICB0
aGlzLl9jb250ZW50U2NyaXB0c1ZpZXcucmVzZXQoKTsKKyAgICAgICAgdGhpcy5fc25pcHBldHNW
aWV3LnJlc2V0KCk7CisgICAgfQorfQogCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWlT
b3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuYWRkVUlTb3VyY2VDb2Rl
KHVpU291cmNlQ29kZXNbaV0pOworV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwogCi0gICAgICAg
IGlmICh0aGlzLl9sYXN0U2VsZWN0ZWRVSVNvdXJjZUNvZGUpCi0gICAgICAgICAgICB0aGlzLnJl
dmVhbFVJU291cmNlQ29kZSh0aGlzLl9sYXN0U2VsZWN0ZWRVSVNvdXJjZUNvZGUpOwotICAgIH0s
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5OYXZpZ2F0
b3JWaWV3fQorICovCitXZWJJbnNwZWN0b3IuU25pcHBldHNOYXZpZ2F0b3JWaWV3ID0gZnVuY3Rp
b24oKQoreworICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LmNhbGwodGhpcyk7CisgICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5oYW5kbGVD
b250ZXh0TWVudS5iaW5kKHRoaXMpLCBmYWxzZSk7Cit9CiAKLSAgICBfY3JlYXRlU25pcHBldHNU
cmVlOiBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuU25pcHBldHNOYXZpZ2F0b3JWaWV3LnByb3Rv
dHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGV9IHVpU291cmNlQ29kZQorICAgICAqLworICAgIGdldE9yQ3JlYXRlRm9sZGVyVHJlZUVsZW1l
bnQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAgICB7Ci0gICAgICAgIHZhciBzbmlwcGV0c1Ry
ZWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKLSAgICAgICAgdmFyIHNu
aXBwZXRzVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlldygpOwotICAgICAgICBzbmlwcGV0c1Zp
ZXcuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJmaWxsIik7Ci0gICAgICAgIHNuaXBwZXRzVmlldy5l
bGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5hdmlnYXRvci1jb250YWluZXIiKTsKLSAgICAgICAgc25p
cHBldHNWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9o
YW5kbGVTbmlwcGV0Q29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAg
IHZhciBzbmlwcGV0c091dGxpbmVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgICAgIHNuaXBwZXRzT3V0bGluZUVsZW1lbnQuYWRkU3R5bGVDbGFzcygib3V0bGlu
ZS1kaXNjbG9zdXJlIik7Ci0gICAgICAgIHNuaXBwZXRzT3V0bGluZUVsZW1lbnQuYWRkU3R5bGVD
bGFzcygibmF2aWdhdG9yIik7Ci0gICAgICAgIHNuaXBwZXRzT3V0bGluZUVsZW1lbnQuYXBwZW5k
Q2hpbGQoc25pcHBldHNUcmVlRWxlbWVudCk7Ci0gICAgICAgIHNuaXBwZXRzVmlldy5lbGVtZW50
LmFwcGVuZENoaWxkKHNuaXBwZXRzT3V0bGluZUVsZW1lbnQpOwotICAgICAgICB2YXIgc25pcHBl
dHNUcmVlID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZSh0aGlzLCBzbmlw
cGV0c1RyZWVFbGVtZW50KTsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1Nl
dHRpbmdzLnNuaXBwZXRzU3VwcG9ydC5pc0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHRoaXMuX3Rh
YmJlZFBhbmUuYXBwZW5kVGFiKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLlNuaXBwZXRz
VGFiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNuaXBwZXRzIiksIHNuaXBwZXRzVmlldyk7Ci0g
ICAgICAgIHJldHVybiBzbmlwcGV0c1RyZWU7CisgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuaXNT
bmlwcGV0KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHNUcmVlOworICAgICAgICBp
ZiAodWlTb3VyY2VDb2RlLmlzU25pcHBldEV2YWx1YXRpb24pCisgICAgICAgICAgICByZXR1cm4g
dGhpcy5fZ2V0T3JDcmVhdGVTbmlwcGV0RXZhbHVhdGlvbnNGb2xkZXJUcmVlRWxlbWVudCgpOwor
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLk5hdmlnYXRvclZpZXcucHJvdG90eXBlLmdldE9y
Q3JlYXRlRm9sZGVyVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCB1aVNvdXJjZUNvZGUpOwogICAgIH0s
CiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAotICAgICAqLwotICAgIF9o
YW5kbGVTbmlwcGV0Q29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2dldE9y
Q3JlYXRlU25pcHBldEV2YWx1YXRpb25zRm9sZGVyVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX3Nob3dTbmlwcGV0Q29udGV4dE1lbnUoZXZlbnQpOworICAgICAg
ICBjb25zdCBzbmlwcGV0RXZhbHVhdGlvbnNGb2xkZXJJZGVudGlmaWVyID0gInNuaXBwZXRFdmFs
dWF0aW9uc0ZvbGRlciI7CisgICAgICAgIHZhciBmb2xkZXJUcmVlRWxlbWVudCA9IHRoaXMuX2Zv
bGRlclRyZWVFbGVtZW50c1tzbmlwcGV0RXZhbHVhdGlvbnNGb2xkZXJJZGVudGlmaWVyXTsKKyAg
ICAgICAgaWYgKGZvbGRlclRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIGZvbGRlclRy
ZWVFbGVtZW50OworICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGb2xkZXJUcmVlRWxlbWVudCh0
aGlzLl9zY3JpcHRzVHJlZSwgc25pcHBldEV2YWx1YXRpb25zRm9sZGVySWRlbnRpZmllciwgIiIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZhbHVhdGVkIHNuaXBwZXRzIikpOwogICAgIH0sCiAK
ICAgICAvKioKICAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAogICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZT19IHVpU291cmNlQ29kZQogICAgICAqLwotICAgIF9zaG93
U25pcHBldENvbnRleHRNZW51OiBmdW5jdGlvbihldmVudCwgdWlTb3VyY2VDb2RlKQorICAgIGhh
bmRsZUNvbnRleHRNZW51OiBmdW5jdGlvbihldmVudCwgdWlTb3VyY2VDb2RlKQogICAgIHsKICAg
ICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOwog
ICAgICAgICBpZiAodWlTb3VyY2VDb2RlKSB7CkBAIC0zMzksNTU0ICsyNDAsNyBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c05hdmlnYXRvci5wcm90b3R5cGUgPSB7CiAgICAgX2ZpbGVSZW5hbWVkOiBm
dW5jdGlvbih1aVNvdXJjZUNvZGUsIG5ld1RpdGxlKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6
IFRvIGJlIGltcGxlbWVudGVkLgotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oKT19IGNhbGxiYWNrCi0gICAgICovCi0gICAgcmVuYW1lOiBmdW5jdGlvbih1aVNvdXJj
ZUNvZGUsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdFRyZWVFbGVtZW50ID0g
dGhpcy5fc2NyaXB0VHJlZUVsZW1lbnRzQnlVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSk7
Ci0gICAgICAgIGlmICghc2NyaXB0VHJlZUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgLy8gVHJlZSBvdXRsaW5lIHNob3VsZCBiZSBtYXJrZWQgYXMgZWRpdGVkIGFzIHdl
bGwgYXMgdGhlIHRyZWUgZWxlbWVudCB0byBwcmV2ZW50IHNlYXJjaCBmcm9tIHN0YXJ0aW5nLgot
ICAgICAgICBXZWJJbnNwZWN0b3IubWFya0JlaW5nRWRpdGVkKHNjcmlwdFRyZWVFbGVtZW50LnRy
ZWVPdXRsaW5lLmVsZW1lbnQsIHRydWUpOwotCi0gICAgICAgIGZ1bmN0aW9uIGNvbW1pdEhhbmRs
ZXIoZWxlbWVudCwgbmV3VGl0bGUsIG9sZFRpdGxlKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAobmV3VGl0bGUgJiYgbmV3VGl0bGUgIT09IG9sZFRpdGxlKQotICAgICAgICAgICAgICAgIHRo
aXMuX2ZpbGVSZW5hbWVkKHVpU291cmNlQ29kZSwgbmV3VGl0bGUpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNjcmlwdFRpdGxlKHVpU291cmNlQ29kZSk7
Ci0gICAgICAgICAgICBhZnRlckVkaXRpbmcoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIGNhbmNlbEhhbmRsZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBhZnRlckVkaXRpbmco
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFmdGVyRWRpdGluZygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQoc2NyaXB0VHJlZUVs
ZW1lbnQudHJlZU91dGxpbmUuZWxlbWVudCwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKGNhbGxi
YWNrKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
YXIgZWRpdGluZ0NvbmZpZyA9IG5ldyBXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZyhjb21taXRI
YW5kbGVyLmJpbmQodGhpcyksIGNhbmNlbEhhbmRsZXIuYmluZCh0aGlzKSk7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5zdGFydEVkaXRpbmcoc2NyaXB0VHJlZUVsZW1lbnQudGl0bGVFbGVtZW50LCBl
ZGl0aW5nQ29uZmlnKTsKLSAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRF
eHRlbnQoc2NyaXB0VHJlZUVsZW1lbnQudGl0bGVFbGVtZW50LCAwLCBzY3JpcHRUcmVlRWxlbWVu
dC50aXRsZUVsZW1lbnQsIDEpOwotICAgIH0sCi0KLSAgICByZXNldDogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdGhpcy5fc2NyaXB0c1RyZWUuc3RvcFNlYXJjaCgpOwotICAgICAgICB0aGlz
Ll9zY3JpcHRzVHJlZS5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICB0aGlzLl9jb250ZW50U2Ny
aXB0c1RyZWUuc3RvcFNlYXJjaCgpOwotICAgICAgICB0aGlzLl9jb250ZW50U2NyaXB0c1RyZWUu
cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdGhpcy5fc25pcHBldHNUcmVlLnN0b3BTZWFyY2go
KTsKLSAgICAgICAgdGhpcy5fc25pcHBldHNUcmVlLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAg
IHRoaXMuX2ZvbGRlclRyZWVFbGVtZW50cyA9IHt9OwotICAgICAgICB0aGlzLl9zY3JpcHRUcmVl
RWxlbWVudHNCeVVJU291cmNlQ29kZS5jbGVhcigpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAq
LwotICAgIF9nZXRPckNyZWF0ZUZvbGRlclRyZWVFbGVtZW50OiBmdW5jdGlvbih1aVNvdXJjZUNv
ZGUpCi0gICAgewotICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmlzU25pcHBldCkKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9zbmlwcGV0c1RyZWU7Ci0gICAgICAgIGlmICh1aVNvdXJjZUNvZGUu
aXNTbmlwcGV0RXZhbHVhdGlvbikKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRPckNyZWF0
ZVNuaXBwZXRFdmFsdWF0aW9uc0ZvbGRlclRyZWVFbGVtZW50KCk7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9nZXRPckNyZWF0ZVNjcmlwdEZvbGRlclRyZWVFbGVtZW50KHVpU291cmNlQ29kZS5pc0Nv
bnRlbnRTY3JpcHQsIHVpU291cmNlQ29kZS5wYXJzZWRVUkwuaG9zdCwgdWlTb3VyY2VDb2RlLnBh
cnNlZFVSTC5mb2xkZXJQYXRoQ29tcG9uZW50cyk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJJZGVudGlmaWVyCi0gICAgICogQHBhcmFtIHtzdHJpbmd9
IGRvbWFpbgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJOYW1lCi0gICAgICovCi0gICAg
X2NyZWF0ZUZvbGRlclRyZWVFbGVtZW50OiBmdW5jdGlvbihwYXJlbnRGb2xkZXJFbGVtZW50LCBm
b2xkZXJJZGVudGlmaWVyLCBkb21haW4sIGZvbGRlck5hbWUpCi0gICAgewotICAgICAgICB2YXIg
Zm9sZGVyVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRvckZvbGRlclRyZWVF
bGVtZW50KGZvbGRlcklkZW50aWZpZXIsIGRvbWFpbiwgZm9sZGVyTmFtZSk7Ci0gICAgICAgIHBh
cmVudEZvbGRlckVsZW1lbnQuYXBwZW5kQ2hpbGQoZm9sZGVyVHJlZUVsZW1lbnQpOwotICAgICAg
ICB0aGlzLl9mb2xkZXJUcmVlRWxlbWVudHNbZm9sZGVySWRlbnRpZmllcl0gPSBmb2xkZXJUcmVl
RWxlbWVudDsKLSAgICAgICAgcmV0dXJuIGZvbGRlclRyZWVFbGVtZW50OwotICAgIH0sCi0KLSAg
ICBfZ2V0T3JDcmVhdGVTbmlwcGV0RXZhbHVhdGlvbnNGb2xkZXJUcmVlRWxlbWVudDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgY29uc3Qgc25pcHBldEV2YWx1YXRpb25zRm9sZGVySWRlbnRp
ZmllciA9ICJzbmlwcGV0RXZhbHVhdGlvbnNGb2xkZXIiOwotICAgICAgICB2YXIgZm9sZGVyVHJl
ZUVsZW1lbnQgPSB0aGlzLl9mb2xkZXJUcmVlRWxlbWVudHNbc25pcHBldEV2YWx1YXRpb25zRm9s
ZGVySWRlbnRpZmllcl07Ci0gICAgICAgIGlmIChmb2xkZXJUcmVlRWxlbWVudCkKLSAgICAgICAg
ICAgIHJldHVybiBmb2xkZXJUcmVlRWxlbWVudDsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0
ZUZvbGRlclRyZWVFbGVtZW50KHRoaXMuX3NuaXBwZXRzVHJlZSwgc25pcHBldEV2YWx1YXRpb25z
Rm9sZGVySWRlbnRpZmllciwgIiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZhbHVhdGVkIHNu
aXBwZXRzIikpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlz
Q29udGVudFNjcmlwdAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkb21haW4KLSAgICAgKiBAcGFy
YW0ge3N0cmluZ30gZm9sZGVyTmFtZQotICAgICAqLwotICAgIF9zY3JpcHRGb2xkZXJJZGVudGlm
aWVyOiBmdW5jdGlvbihpc0NvbnRlbnRTY3JpcHQsIGRvbWFpbiwgZm9sZGVyTmFtZSkKLSAgICB7
Ci0gICAgICAgIHZhciBjb250ZW50U2NyaXB0UHJlZml4ID0gaXNDb250ZW50U2NyaXB0ID8gIjAi
IDogIjEiOwotICAgICAgICByZXR1cm4gY29udGVudFNjcmlwdFByZWZpeCArICI6IiArIGRvbWFp
biArIGZvbGRlck5hbWU7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gaXNDb250ZW50U2NyaXB0Ci0gICAgICogQHBhcmFtIHtzdHJpbmd9IGRvbWFpbgotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJOYW1lCi0gICAgICovCi0gICAgX2dldE9yQ3JlYXRlU2Ny
aXB0Rm9sZGVyVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKGlzQ29udGVudFNjcmlwdCwgZG9tYWluLCBm
b2xkZXJOYW1lKQotICAgIHsKLSAgICAgICAgdmFyIGZvbGRlcklkZW50aWZpZXIgPSB0aGlzLl9z
Y3JpcHRGb2xkZXJJZGVudGlmaWVyKGlzQ29udGVudFNjcmlwdCwgZG9tYWluLCBmb2xkZXJOYW1l
KTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0aGlzLl9mb2xkZXJUcmVlRWxlbWVudHNbZm9sZGVy
SWRlbnRpZmllcl0pCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fZm9sZGVyVHJlZUVsZW1lbnRz
W2ZvbGRlcklkZW50aWZpZXJdOwotCi0gICAgICAgIHZhciBzaG93U2NyaXB0Rm9sZGVycyA9IFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5zaG93U2NyaXB0Rm9sZGVycy5nZXQoKTsKLSAgICAgICAgCi0g
ICAgICAgIGlmICgoZG9tYWluID09PSAiIiAmJiBmb2xkZXJOYW1lID09PSAiIikgfHwgIXNob3dT
Y3JpcHRGb2xkZXJzKQotICAgICAgICAgICAgcmV0dXJuIGlzQ29udGVudFNjcmlwdCA/IHRoaXMu
X2NvbnRlbnRTY3JpcHRzVHJlZSA6IHRoaXMuX3NjcmlwdHNUcmVlOwotCi0gICAgICAgIHZhciBw
YXJlbnRGb2xkZXJFbGVtZW50OwotICAgICAgICBpZiAoZm9sZGVyTmFtZSA9PT0gIiIpCi0gICAg
ICAgICAgICBwYXJlbnRGb2xkZXJFbGVtZW50ID0gaXNDb250ZW50U2NyaXB0ID8gdGhpcy5fY29u
dGVudFNjcmlwdHNUcmVlIDogdGhpcy5fc2NyaXB0c1RyZWU7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHBhcmVudEZvbGRlckVsZW1lbnQgPSB0aGlzLl9nZXRPckNyZWF0ZVNjcmlwdEZvbGRl
clRyZWVFbGVtZW50KGlzQ29udGVudFNjcmlwdCwgZG9tYWluLCAiIik7Ci0gICAgICAgIAotICAg
ICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRm9sZGVyVHJlZUVsZW1lbnQocGFyZW50Rm9sZGVyRWxl
bWVudCwgZm9sZGVySWRlbnRpZmllciwgZG9tYWluLCBmb2xkZXJOYW1lKTsKLSAgICB9Ci19Ci0K
LVdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBl
eHRlbmRzIHtUcmVlT3V0bGluZX0KLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZp
Z2F0b3J9IG5hdmlnYXRvcgotICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50Ci0gKi8KLVdlYklu
c3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZSA9IGZ1bmN0aW9uKG5hdmlnYXRvciwgZWxlbWVu
dCkKLXsKLSAgICBUcmVlT3V0bGluZS5jYWxsKHRoaXMsIGVsZW1lbnQpOwotICAgIHRoaXMuZWxl
bWVudCA9IGVsZW1lbnQ7Ci0KLSAgICB0aGlzLl9uYXZpZ2F0b3IgPSBuYXZpZ2F0b3I7Ci0gICAg
Ci0gICAgdGhpcy5jb21wYXJhdG9yID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRvclRyZWVPdXRsaW5l
Ll90cmVlRWxlbWVudHNDb21wYXJlOwotCi0gICAgdGhpcy5zZWFyY2hhYmxlID0gdHJ1ZTsKLSAg
ICB0aGlzLnNlYXJjaElucHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0
Iik7Ci19Ci0KLVdlYkluc3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZS5fdHJlZUVsZW1lbnRz
Q29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUodHJlZUVsZW1lbnQxLCB0cmVlRWxlbWVudDIpCi17
Ci0gICAgLy8gSW5zZXJ0IGluIHRoZSBhbHBoYWJldGljYWwgb3JkZXIsIGZpcnN0IGRvbWFpbnMs
IHRoZW4gZm9sZGVycywgdGhlbiBzY3JpcHRzLgotICAgIGZ1bmN0aW9uIHR5cGVXZWlnaHQodHJl
ZUVsZW1lbnQpCi0gICAgewotICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuTmF2aWdhdG9yRm9sZGVyVHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgIGlmICh0
cmVlRWxlbWVudC5pc0RvbWFpbikKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
ICAgIHJldHVybiAyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAzOwotICAgIH0KLQotICAg
IHZhciB0eXBlV2VpZ2h0MSA9IHR5cGVXZWlnaHQodHJlZUVsZW1lbnQxKTsKLSAgICB2YXIgdHlw
ZVdlaWdodDIgPSB0eXBlV2VpZ2h0KHRyZWVFbGVtZW50Mik7Ci0KLSAgICB2YXIgcmVzdWx0Owot
ICAgIGlmICh0eXBlV2VpZ2h0MSA+IHR5cGVXZWlnaHQyKQotICAgICAgICByZXN1bHQgPSAxOwot
ICAgIGVsc2UgaWYgKHR5cGVXZWlnaHQxIDwgdHlwZVdlaWdodDIpCi0gICAgICAgIHJlc3VsdCA9
IC0xOwotICAgIGVsc2UgewotICAgICAgICB2YXIgdGl0bGUxID0gdHJlZUVsZW1lbnQxLnRpdGxl
VGV4dDsKLSAgICAgICAgdmFyIHRpdGxlMiA9IHRyZWVFbGVtZW50Mi50aXRsZVRleHQ7Ci0gICAg
ICAgIHJlc3VsdCA9IHRpdGxlMS5sb2NhbGVDb21wYXJlKHRpdGxlMik7CiAgICAgfQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLVdlYkluc3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZS5wcm90
b3R5cGUgPSB7Ci0gICAvKioKLSAgICAqIEByZXR1cm4ge0FycmF5LjxUcmVlRWxlbWVudD59Ci0g
ICAgKi8KLSAgIHNjcmlwdFRyZWVFbGVtZW50czogZnVuY3Rpb24oKQotICAgewotICAgICAgIHZh
ciByZXN1bHQgPSBbXTsKLSAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAg
ICAgICAgZm9yICh2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLmNoaWxkcmVuWzBdOyB0cmVlRWxlbWVu
dDsgdHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxz
ZSwgdGhpcywgdHJ1ZSkpIHsKLSAgICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JTY3JpcHRUcmVlRWxlbWVudCkKLSAgICAgICAgICAg
ICAgICAgICByZXN1bHQucHVzaCh0cmVlRWxlbWVudC51aVNvdXJjZUNvZGUpOwotICAgICAgICAg
ICB9Ci0gICAgICAgfQotICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9LAotCi0gICBzZWFyY2hT
dGFydGVkOiBmdW5jdGlvbigpCi0gICB7Ci0gICAgICAgdGhpcy5fbmF2aWdhdG9yLl90cmVlU2Vh
cmNoQm94LmFwcGVuZENoaWxkKHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50KTsKLSAgICAgICB0aGlz
Ll9uYXZpZ2F0b3IuX3RyZWVTZWFyY2hCb3guYWRkU3R5bGVDbGFzcygidmlzaWJsZSIpOwotICAg
fSwKLQotICAgc2VhcmNoRmluaXNoZWQ6IGZ1bmN0aW9uKCkKLSAgIHsKLSAgICAgICB0aGlzLl9u
YXZpZ2F0b3IuX3RyZWVTZWFyY2hCb3gucmVtb3ZlQ2hpbGQodGhpcy5zZWFyY2hJbnB1dEVsZW1l
bnQpOwotICAgICAgIHRoaXMuX25hdmlnYXRvci5fdHJlZVNlYXJjaEJveC5yZW1vdmVTdHlsZUNs
YXNzKCJ2aXNpYmxlIik7Ci0gICB9LAogfQogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdG9yVHJlZU91
dGxpbmUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZTsKLQotLyoq
Ci0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtUcmVlRWxlbWVudH0KLSAqIEBwYXJhbSB7
c3RyaW5nfSB0aXRsZQotICogQHBhcmFtIHtBcnJheS48c3RyaW5nPn0gaWNvbkNsYXNzZXMKLSAq
IEBwYXJhbSB7Ym9vbGVhbn0gaGFzQ2hpbGRyZW4KLSAqIEBwYXJhbSB7Ym9vbGVhbj19IG5vSWNv
bgotICovCi1XZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50ID0gZnVuY3Rpb24o
dGl0bGUsIGljb25DbGFzc2VzLCBoYXNDaGlsZHJlbiwgbm9JY29uKQotewotICAgIFRyZWVFbGVt
ZW50LmNhbGwodGhpcywgIiIsIG51bGwsIGhhc0NoaWxkcmVuKTsKLSAgICB0aGlzLl90aXRsZVRl
eHQgPSB0aXRsZTsKLSAgICB0aGlzLl9pY29uQ2xhc3NlcyA9IGljb25DbGFzc2VzOwotICAgIHRo
aXMuX25vSWNvbiA9IG5vSWNvbjsKLX0KLQotV2ViSW5zcGVjdG9yLkJhc2VOYXZpZ2F0b3JUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIGlm
ICh0aGlzLl9pY29uQ2xhc3NlcykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLl9pY29uQ2xhc3Nlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICB0aGlzLmxpc3RJ
dGVtRWxlbWVudC5hZGRTdHlsZUNsYXNzKHRoaXMuX2ljb25DbGFzc2VzW2ldKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhciBzZWxlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgICAgIHNlbGVjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gInNlbGVjdGlv
biI7Ci0gICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHNlbGVjdGlvbkVs
ZW1lbnQpOwotCi0gICAgICAgIGlmICghdGhpcy5fbm9JY29uKSB7Ci0gICAgICAgICAgICB0aGlz
LmltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwotICAgICAgICAg
ICAgdGhpcy5pbWFnZUVsZW1lbnQuY2xhc3NOYW1lID0gImljb24iOwotICAgICAgICAgICAgdGhp
cy5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5pbWFnZUVsZW1lbnQpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICB0aGlzLnRpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLnRpdGxlRWxlbWVudC5jbGFzc05hbWUgPSAi
YmFzZS1uYXZpZ2F0b3ItdHJlZS1lbGVtZW50LXRpdGxlIjsKLSAgICAgICAgdGhpcy5fdGl0bGVU
ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTsKLSAgICAgICAgdGhpcy5fdGl0
bGVUZXh0Tm9kZS50ZXh0Q29udGVudCA9IHRoaXMuX3RpdGxlVGV4dDsKLSAgICAgICAgdGhpcy50
aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGl0bGVUZXh0Tm9kZSk7Ci0gICAgICAgIHRo
aXMubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudGl0bGVFbGVtZW50KTsKLSAgICAg
ICAgCi0gICAgICAgIHRoaXMuZXhwYW5kKCk7Ci0gICAgfSwKLQotICAgIG9ucmV2ZWFsOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5saXN0SXRlbUVsZW1lbnQpCi0gICAgICAg
ICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKHRydWUpOwot
ICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtzdHJpbmd9Ci0gICAgICovCi0gICAg
Z2V0IHRpdGxlVGV4dCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVUZXh0Owot
ICAgIH0sCi0KLSAgICBzZXQgdGl0bGVUZXh0KHRpdGxlVGV4dCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX3RpdGxlVGV4dCA9IHRpdGxlVGV4dCB8fCAiIjsKLSAgICAgICAgaWYgKHRoaXMudGl0bGVF
bGVtZW50KQotICAgICAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlz
Ll90aXRsZVRleHQ7Ci0gICAgfSwKLSAgICAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gc2VhcmNoVGV4dAotICAgICAqLwotICAgIG1hdGNoZXNTZWFyY2hUZXh0OiBmdW5jdGlvbihz
ZWFyY2hUZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGl0bGVUZXh0Lm1hdGNoKG5l
dyBSZWdFeHAoIl4iICsgc2VhcmNoVGV4dC5lc2NhcGVGb3JSZWdFeHAoKSwgImkiKSk7Ci0gICAg
fQotfQotCi1XZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBUcmVlRWxlbWVudC5wcm90b3R5cGU7Ci0KLS8qKgotICogQGNvbnN0cnVjdG9y
Ci0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkJhc2VOYXZpZ2F0b3JUcmVlRWxlbWVudH0KLSAq
IEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJJZGVudGlmaWVyCi0gKiBAcGFyYW0ge3N0cmluZ30gZG9t
YWluCi0gKiBAcGFyYW0ge3N0cmluZ30gZm9sZGVyTmFtZQotICovCi1XZWJJbnNwZWN0b3IuTmF2
aWdhdG9yRm9sZGVyVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihmb2xkZXJJZGVudGlmaWVyLCBkb21h
aW4sIGZvbGRlck5hbWUpCi17Ci0gICAgdGhpcy5fZm9sZGVySWRlbnRpZmllciA9IGZvbGRlcklk
ZW50aWZpZXI7Ci0gICAgdGhpcy5fZm9sZGVyTmFtZSA9IGZvbGRlck5hbWU7Ci0gICAgCi0gICAg
dmFyIGljb25DbGFzcyA9IHRoaXMuaXNEb21haW4gPyAic2NyaXB0cy1uYXZpZ2F0b3ItZG9tYWlu
LXRyZWUtaXRlbSIgOiAic2NyaXB0cy1uYXZpZ2F0b3ItZm9sZGVyLXRyZWUtaXRlbSI7Ci0gICAg
dmFyIHRpdGxlID0gdGhpcy5pc0RvbWFpbiA/IGRvbWFpbiA6IGZvbGRlck5hbWUuc3Vic3RyaW5n
KDEpOwotICAgIFdlYkluc3BlY3Rvci5CYXNlTmF2aWdhdG9yVHJlZUVsZW1lbnQuY2FsbCh0aGlz
LCB0aXRsZSwgW2ljb25DbGFzc10sIHRydWUpOwotICAgIHRoaXMudG9vbHRpcCA9IGZvbGRlck5h
bWU7Ci19Ci0KLVdlYkluc3BlY3Rvci5OYXZpZ2F0b3JGb2xkZXJUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHJldHVybiB7c3RyaW5nfQotICAgICAqLwotICAgIGdl
dCBmb2xkZXJJZGVudGlmaWVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9mb2xkZXJJ
ZGVudGlmaWVyOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQot
ICAgICAqLwotICAgIGdldCBpc0RvbWFpbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
Zm9sZGVyTmFtZSA9PT0gIiI7Ci0gICAgfSwKLSAgICAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkJhc2VOYXZpZ2F0b3JUcmVlRWxlbWVudC5w
cm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKLSAgICAgICAgaWYgKHRoaXMuX2lzRG9tYWlu
KQotICAgICAgICAgICAgdGhpcy5jb2xsYXBzZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aGlzLmV4cGFuZCgpOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLk5hdmlnYXRvckZvbGRl
clRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQmFzZU5hdmln
YXRvclRyZWVFbGVtZW50LnByb3RvdHlwZTsKLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBl
eHRlbmRzIHtXZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50fQotICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvcn0gbmF2aWdhdG9yCi0gKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICogQHBhcmFtIHtzdHJpbmd9
IHRpdGxlCi0gKi8KLVdlYkluc3BlY3Rvci5OYXZpZ2F0b3JTY3JpcHRUcmVlRWxlbWVudCA9IGZ1
bmN0aW9uKG5hdmlnYXRvciwgdWlTb3VyY2VDb2RlLCB0aXRsZSkKLXsKLSAgICBXZWJJbnNwZWN0
b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LmNhbGwodGhpcywgdGl0bGUsIFsic2NyaXB0cy1u
YXZpZ2F0b3Itc2NyaXB0LXRyZWUtaXRlbSJdLCBmYWxzZSk7Ci0gICAgdGhpcy5fbmF2aWdhdG9y
ID0gbmF2aWdhdG9yOwotICAgIHRoaXMuX3VpU291cmNlQ29kZSA9IHVpU291cmNlQ29kZTsKLSAg
ICB0aGlzLnRvb2x0aXAgPSB1aVNvdXJjZUNvZGUudXJsOwotfQotCi1XZWJJbnNwZWN0b3IuTmF2
aWdhdG9yU2NyaXB0VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBy
ZXR1cm4ge1dlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yfQotICAgICAqLwotICAgIGdldCBu
YXZpZ2F0b3IoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvcjsKLSAgICB9
LAotCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0K
LSAgICAgKi8KLSAgICBnZXQgdWlTb3VyY2VDb2RlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl91aVNvdXJjZUNvZGU7Ci0gICAgfSwKLQotICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3Rv
dHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOwotICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uY2xpY2suYmluZCh0aGlzKSwgZmFsc2Up
OwotICAgICAgICBpZiAodGhpcy5fdWlTb3VyY2VDb2RlLmlzU25pcHBldCkKLSAgICAgICAgICAg
IHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhp
cy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgfSwKLQot
ICAgIG9uc3BhY2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRvci5f
c2NyaXB0U2VsZWN0ZWQodGhpcy51aVNvdXJjZUNvZGUsIHRydWUpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKLSAg
ICAgKi8KLSAgICBfb25jbGljazogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlz
Ll9uYXZpZ2F0b3IuX3NjcmlwdFNlbGVjdGVkKHRoaXMudWlTb3VyY2VDb2RlLCBmYWxzZSk7Ci0g
ICAgfSwKLQotICAgIG9uZW50ZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX25h
dmlnYXRvci5fc2NyaXB0U2VsZWN0ZWQodGhpcy51aVNvdXJjZUNvZGUsIHRydWUpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtFdmVudH0g
ZXZlbnQKLSAgICAgKi8KLSAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZl
bnQpCi0gICAgewotICAgICAgICB0aGlzLm5hdmlnYXRvci5fc2hvd1NuaXBwZXRDb250ZXh0TWVu
dShldmVudCwgdGhpcy51aVNvdXJjZUNvZGUpOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLk5h
dmlnYXRvclNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlwZTsKLQotLyoqCi0gKiBAY29uc3Ry
dWN0b3IKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlBhbmVsfSBwYW5lbAotICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuU3BsaXRWaWV3fSBwYXJlbnRTcGxpdFZpZXcKLSAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlZpZXd9IG5hdmlnYXRvclZpZXcKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9
IGVkaXRvclZpZXcKLSAqLwotV2ViSW5zcGVjdG9yLk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVy
ID0gZnVuY3Rpb24ocGFuZWwsIHBhcmVudFNwbGl0VmlldywgbmF2aWdhdG9yVmlldywgZWRpdG9y
VmlldykKLXsKLSAgICB0aGlzLl9wYW5lbCA9IHBhbmVsOwotICAgIHRoaXMuX3BhcmVudFNwbGl0
VmlldyA9IHBhcmVudFNwbGl0VmlldzsKLSAgICB0aGlzLl9uYXZpZ2F0b3JWaWV3ID0gbmF2aWdh
dG9yVmlldzsKLSAgICB0aGlzLl9lZGl0b3JWaWV3ID0gZWRpdG9yVmlldzsKLQotICAgIHRoaXMu
X25hdmlnYXRvclNpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fbmF2aWdhdG9yU2lkZWJhclJlc2l6ZVdpZGdldEVsZW1l
bnQuYWRkU3R5bGVDbGFzcygic2NyaXB0cy1uYXZpZ2F0b3ItcmVzaXplci13aWRnZXQiKTsKLSAg
ICB0aGlzLl9wYXJlbnRTcGxpdFZpZXcuaW5zdGFsbFJlc2l6ZXIodGhpcy5fbmF2aWdhdG9yU2lk
ZWJhclJlc2l6ZVdpZGdldEVsZW1lbnQpOwotICAgIHRoaXMuX25hdmlnYXRvclZpZXcuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0b3JTaWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVudCk7
Ci0KLSAgICB0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRvbiA9IHRoaXMuX2NyZWF0ZU5hdmln
YXRvckNvbnRyb2xCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IG5hdmlnYXRvciIp
LCAic2NyaXB0cy1uYXZpZ2F0b3Itc2hvdy1oaWRlLWJ1dHRvbiIsIHRoaXMuX3RvZ2dsZU5hdmln
YXRvci5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRvbi5hZGRT
dHlsZUNsYXNzKCJ0b2dnbGVkLW9uIik7Ci0gICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0
b24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgbmF2aWdhdG9yIik7Ci0gICAg
dGhpcy5fcGFyZW50U3BsaXRWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdG9y
U2hvd0hpZGVCdXR0b24pOwotCi0gICAgdGhpcy5fbmF2aWdhdG9yUGluQnV0dG9uID0gdGhpcy5f
Y3JlYXRlTmF2aWdhdG9yQ29udHJvbEJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBpbiBu
YXZpZ2F0b3IiKSwgInNjcmlwdHMtbmF2aWdhdG9yLXBpbi1idXR0b24iLCB0aGlzLl9waW5OYXZp
Z2F0b3IuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fbmF2aWdhdG9yUGluQnV0dG9uLmFkZFN0eWxl
Q2xhc3MoImhpZGRlbiIpOwotICAgIHRoaXMuX25hdmlnYXRvclZpZXcuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9uYXZpZ2F0b3JQaW5CdXR0b24pOwotCi0gICAgV2ViSW5zcGVjdG9yLnNldHRp
bmdzLm5hdmlnYXRvckhpZGRlbiA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5n
KCJuYXZpZ2F0b3JIaWRkZW4iLCB0cnVlKTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdz
Lm5hdmlnYXRvckhpZGRlbi5nZXQoKSkKLSAgICAgICAgdGhpcy5fdG9nZ2xlTmF2aWdhdG9yKCk7
Ci19Ci0KLVdlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5wcm90b3R5cGUg
PSB7Ci0gICAgd2FzU2hvd246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHdpbmRvdy5zZXRU
aW1lb3V0KHRoaXMuX21heWJlU2hvd05hdmlnYXRvck92ZXJsYXkuYmluZCh0aGlzKSwgMCk7Ci0g
ICAgfSwKLQotICAgIF9jcmVhdGVOYXZpZ2F0b3JDb250cm9sQnV0dG9uOiBmdW5jdGlvbih0aXRs
ZSwgaWQsIGxpc3RlbmVyKQotICAgIHsKLSAgICAgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAgICAgICBidXR0b24udGl0bGUgPSB0aXRsZTsKLSAg
ICAgICAgYnV0dG9uLmlkID0gaWQ7Ci0gICAgICAgIGJ1dHRvbi5hZGRTdHlsZUNsYXNzKCJzY3Jp
cHRzLW5hdmlnYXRvci1jb250cm9sLWJ1dHRvbiIpOwotICAgICAgICBidXR0b24uYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCBsaXN0ZW5lciwgZmFsc2UpOwotICAgICAgICBidXR0b24uY3JlYXRl
Q2hpbGQoImRpdiIsICJnbHlwaCIpOwotICAgICAgICByZXR1cm4gYnV0dG9uOwotICAgIH0sCi0K
LSAgICBfZXNjRG93bldoaWxlTmF2aWdhdG9yT3ZlcmxheU9wZW46IGZ1bmN0aW9uKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgdGhpcy5oaWRlTmF2aWdhdG9yT3ZlcmxheSgpOwotICAgIH0sCi0KLSAg
ICBfbWF5YmVTaG93TmF2aWdhdG9yT3ZlcmxheTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5uYXZpZ2F0b3JIaWRkZW4uZ2V0KCkgJiYgIVdlYklu
c3BlY3Rvci5zZXR0aW5ncy5uYXZpZ2F0b3JXYXNPbmNlSGlkZGVuLmdldCgpKQotICAgICAgICAg
ICAgdGhpcy5zaG93TmF2aWdhdG9yT3ZlcmxheSgpOwotICAgIH0sCi0KLSAgICBfdG9nZ2xlTmF2
aWdhdG9yOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fbmF2aWdhdG9yT3Zl
cmxheVNob3duKQotICAgICAgICAgICAgdGhpcy5oaWRlTmF2aWdhdG9yT3ZlcmxheSgpOwotICAg
ICAgICBlbHNlIGlmICh0aGlzLl9uYXZpZ2F0b3JIaWRkZW4pCi0gICAgICAgICAgICB0aGlzLnNo
b3dOYXZpZ2F0b3JPdmVybGF5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2hp
ZGVQaW5uZWROYXZpZ2F0b3IoKTsKLSAgICB9LAotCi0gICAgX2hpZGVQaW5uZWROYXZpZ2F0b3I6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRvckhpZGRlbiA9IHRydWU7
Ci0gICAgICAgIHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLnJlbW92ZVN0eWxlQ2xhc3Mo
InRvZ2dsZWQtb24iKTsKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24udGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgc2NyaXB0cyBuYXZpZ2F0b3IiKTsKLSAg
ICAgICAgdGhpcy5fZWRpdG9yVmlldy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5hdmlnYXRvci1o
aWRkZW4iKTsKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2lkZWJhclJlc2l6ZVdpZGdldEVsZW1l
bnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0KLSAgICAgICAgdGhpcy5fbmF2aWdhdG9yUGlu
QnV0dG9uLnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwotCi0gICAgICAgIHRoaXMuX3BhcmVu
dFNwbGl0Vmlldy5oaWRlU2lkZWJhckVsZW1lbnQoKTsKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9y
Vmlldy5kZXRhY2goKTsKLSAgICAgICAgdGhpcy5fZWRpdG9yVmlldy5mb2N1cygpOwotICAgICAg
ICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubmF2aWdhdG9ySGlkZGVuLnNldCh0cnVlKTsKLSAgICB9
LAotCi0gICAgX3Bpbk5hdmlnYXRvcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgZGVsZXRl
IHRoaXMuX25hdmlnYXRvckhpZGRlbjsKLSAgICAgICAgdGhpcy5oaWRlTmF2aWdhdG9yT3Zlcmxh
eSgpOwotCi0gICAgICAgIHRoaXMuX25hdmlnYXRvclBpbkJ1dHRvbi5hZGRTdHlsZUNsYXNzKCJo
aWRkZW4iKTsKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24uYWRkU3R5bGVD
bGFzcygidG9nZ2xlZC1vbiIpOwotICAgICAgICB0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRv
bi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSBzY3JpcHRzIG5hdmlnYXRvciIp
OwotCi0gICAgICAgIHRoaXMuX2VkaXRvclZpZXcuZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJu
YXZpZ2F0b3ItaGlkZGVuIik7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRvclNpZGViYXJSZXNpemVX
aWRnZXRFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwotCi0gICAgICAgIHRoaXMu
X3BhcmVudFNwbGl0Vmlldy5zaG93U2lkZWJhckVsZW1lbnQoKTsKLSAgICAgICAgdGhpcy5fbmF2
aWdhdG9yVmlldy5zaG93KHRoaXMuX3BhcmVudFNwbGl0Vmlldy5zaWRlYmFyRWxlbWVudCk7Ci0g
ICAgICAgIHRoaXMuX25hdmlnYXRvclZpZXcuZm9jdXMoKTsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LnNldHRpbmdzLm5hdmlnYXRvckhpZGRlbi5zZXQoZmFsc2UpOwotICAgIH0sCi0KLSAgICBzaG93
TmF2aWdhdG9yT3ZlcmxheTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX25h
dmlnYXRvck92ZXJsYXlTaG93bikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlz
Ll9uYXZpZ2F0b3JPdmVybGF5U2hvd24gPSB0cnVlOwotICAgICAgICB0aGlzLl9zaWRlYmFyT3Zl
cmxheSA9IG5ldyBXZWJJbnNwZWN0b3IuU2lkZWJhck92ZXJsYXkodGhpcy5fbmF2aWdhdG9yVmll
dywgInNjcmlwdHNQYW5lbE5hdmlnYXRvck92ZXJsYXlXaWR0aCIsIFByZWZlcmVuY2VzLm1pblNj
cmlwdHNTaWRlYmFyV2lkdGgpOwotICAgICAgICB0aGlzLl9zaWRlYmFyT3ZlcmxheS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyT3ZlcmxheS5FdmVudFR5cGVzLldhc1Nob3du
LCB0aGlzLl9uYXZpZ2F0b3JPdmVybGF5V2FzU2hvd24sIHRoaXMpOwotICAgICAgICB0aGlzLl9z
aWRlYmFyT3ZlcmxheS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyT3Zlcmxh
eS5FdmVudFR5cGVzLldpbGxIaWRlLCB0aGlzLl9uYXZpZ2F0b3JPdmVybGF5V2lsbEhpZGUsIHRo
aXMpOwotCi0gICAgICAgIHZhciBuYXZpZ2F0b3JPdmVybGF5UmVzaXplV2lkZ2V0RWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBuYXZpZ2F0b3JPdmVybGF5
UmVzaXplV2lkZ2V0RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzY3JpcHRzLW5hdmlnYXRvci1yZXNp
emVyLXdpZGdldCIpOwotICAgICAgICB0aGlzLl9zaWRlYmFyT3ZlcmxheS5yZXNpemVyV2lkZ2V0
RWxlbWVudCA9IG5hdmlnYXRvck92ZXJsYXlSZXNpemVXaWRnZXRFbGVtZW50OwotCi0gICAgICAg
IHRoaXMuX3NpZGViYXJPdmVybGF5LnNob3codGhpcy5fcGFyZW50U3BsaXRWaWV3LmVsZW1lbnQp
OwotICAgIH0sCi0KLSAgICBoaWRlTmF2aWdhdG9yT3ZlcmxheTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLl9uYXZpZ2F0b3JPdmVybGF5U2hvd24pCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fc2lkZWJhck92ZXJsYXkuaGlkZSgpOwotICAgICAgICB0
aGlzLl9lZGl0b3JWaWV3LmZvY3VzKCk7Ci0gICAgfSwKLQotICAgIF9uYXZpZ2F0b3JPdmVybGF5
V2FzU2hvd246IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9y
Vmlldy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uKTsK
LSAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24uYWRkU3R5bGVDbGFzcygidG9n
Z2xlZC1vbiIpOwotICAgICAgICB0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRvbi50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSBuYXZpZ2F0b3IiKTsKLSAgICAgICAgdGhpcy5f
bmF2aWdhdG9yVmlldy5mb2N1cygpOwotICAgICAgICB0aGlzLl9wYW5lbC5yZWdpc3RlclNob3J0
Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUsIHRoaXMuX2Vz
Y0Rvd25XaGlsZU5hdmlnYXRvck92ZXJsYXlPcGVuLmJpbmQodGhpcykpOwotICAgIH0sCi0KLSAg
ICBfbmF2aWdhdG9yT3ZlcmxheVdpbGxIaWRlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAg
ICAgIGRlbGV0ZSB0aGlzLl9uYXZpZ2F0b3JPdmVybGF5U2hvd247Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5uYXZpZ2F0b3JXYXNPbmNlSGlkZGVuLnNldCh0cnVlKTsKLSAgICAgICAg
dGhpcy5fcGFyZW50U3BsaXRWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdG9y
U2hvd0hpZGVCdXR0b24pOwotICAgICAgICB0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRvbi5y
ZW1vdmVTdHlsZUNsYXNzKCJ0b2dnbGVkLW9uIik7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRvclNo
b3dIaWRlQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IG5hdmlnYXRv
ciIpOwotICAgICAgICB0aGlzLl9wYW5lbC51bnJlZ2lzdGVyU2hvcnRjdXQoV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQuS2V5cy5Fc2MuY29kZSk7Ci0gICAgfQotfQorV2ViSW5zcGVjdG9y
LlNuaXBwZXRzTmF2aWdhdG9yVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
Lk5hdmlnYXRvclZpZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjCmluZGV4IDUzNWM0MDU3YzgwMTY3ZWM3Yjc1OGQ0NTM1MDZlYjNm
MGQ3YzE2NzUuLjFlMTkzNzA1MzExYTA4YThjZWFiMDU3NGJjNzRkMjBjM2QzZDQ0NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTgzLDYg
KzgzLDggQEAKICAgICA8ZmlsZT5LZXlib2FyZFNob3J0Y3V0LmpzPC9maWxlPgogICAgIDxmaWxl
Pk1lbW9yeVN0YXRpc3RpY3MuanM8L2ZpbGU+CiAgICAgPGZpbGU+TWV0cmljc1NpZGViYXJQYW5l
LmpzPC9maWxlPgorICAgIDxmaWxlPk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLmpzPC9maWxl
PgorICAgIDxmaWxlPk5hdmlnYXRvclZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+TmV0d29ya0l0
ZW1WaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPk5ldHdvcmtMb2cuanM8L2ZpbGU+CiAgICAgPGZp
bGU+TmV0d29ya01hbmFnZXIuanM8L2ZpbGU+CkBAIC0xODUsNiArMTg3LDcgQEAKICAgICA8Zmls
ZT5pbnNwZWN0b3IuY3NzPC9maWxlPgogICAgIDxmaWxlPmluc3BlY3RvckNvbW1vbi5jc3M8L2Zp
bGU+CiAgICAgPGZpbGU+aW5zcGVjdG9yU3ludGF4SGlnaGxpZ2h0LmNzczwvZmlsZT4KKyAgICA8
ZmlsZT5uYXZpZ2F0b3JWaWV3LmNzczwvZmlsZT4KICAgICA8ZmlsZT5uZXR3b3JrTG9nVmlldy5j
c3M8L2ZpbGU+CiAgICAgPGZpbGU+bmV0d29ya1BhbmVsLmNzczwvZmlsZT4KICAgICA8ZmlsZT5w
YW5lbEVuYWJsZXJWaWV3LmNzczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDdmNDIyZDM2ODE0MzE1MWRlZTA4NTdh
NzUzODk5NjQyNTAwMmY4ZjUuLmE5OWNjMTEyMDU5ODQ2MDA0NDNkNjgyYWNiY2VmMTc4MTRhNjdh
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbApAQCAtNjksNiArNjksOCBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9Ik5ldHdvcmtSZXF1ZXN0LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDU1NTdHlsZU1vZGVsLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrTWFuYWdl
ci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
TmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik5hdmlnYXRvclZpZXcuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik5ldHdvcmtMb2cuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlVHJl
ZU1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJSZXNvdXJjZVV0aWxzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmF2aWdhdG9yVmlldy5jc3MgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25hdmlnYXRvclZpZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwODkx
ZGVkODQ1NjE4M2RhNDAzMWVlZjQ3NzdiOTY1YjBhNDk1YmYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25hdmlnYXRvclZpZXcuY3NzCkBAIC0w
LDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQW50aG9u
eSBSaWNhdWQgPHJpa0B3ZWJraXQub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5uYXZpZ2F0b3ItZG9tYWluLXRyZWUtaXRlbSAuaWNv
biB7CisgICAgY29udGVudDogdXJsKEltYWdlcy9kb21haW4ucG5nKTsKK30KKworLm5hdmlnYXRv
ci1mb2xkZXItdHJlZS1pdGVtIC5pY29uIHsKKyAgICBvcGFjaXR5OiAwLjc7CisgICAgY29udGVu
dDogdXJsKEltYWdlcy9mcmFtZS5wbmcpOworfQorCisubmF2aWdhdG9yLXNjcmlwdC10cmVlLWl0
ZW0gLmljb24geworICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvcmVzb3VyY2VKU0ljb24ucG5nKTsK
K30KKworLm5hdmlnYXRvciBsaSB7CisgICAgaGVpZ2h0OiAxN3B4OworICAgIHdoaXRlLXNwYWNl
OiBub3dyYXA7Cit9CisKKy5uYXZpZ2F0b3IgOmZvY3VzIGxpLnNlbGVjdGVkIHsKKyAgICBjb2xv
cjogd2hpdGU7Cit9CisKKy5uYXZpZ2F0b3IgbGkuc2VsZWN0ZWQgLnNlbGVjdGlvbiB7CisgICAg
aGVpZ2h0OiAxN3B4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxODAsIDE4MCwgMTgwKTsK
K30KKworLm5hdmlnYXRvciA6Zm9jdXMgbGkuc2VsZWN0ZWQgLnNlbGVjdGlvbiB7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDExMSwgMTQwLCAyMTApOworfQorCisubmF2aWdhdG9yIC5zZWFy
Y2gtbWF0Y2gtZm91bmQgbGkuc2VsZWN0ZWQgLnNlbGVjdGlvbiB7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiKDExMSwgMTQwLCAyMTApOworfQorCisubmF2aWdhdG9yIC5zZWFyY2gtbWF0Y2gt
bm90LWZvdW5kIGxpLnNlbGVjdGVkIC5zZWxlY3Rpb24geworICAgIGJvcmRlci1jb2xvcjogcmdi
KDExMSwgMTQwLCAyMTApOworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworfQorCisubmF2
aWdhdG9yIC5zZWFyY2hpbmcgbGkuc2VsZWN0ZWQgLnNlbGVjdGlvbiB7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDExMSwgMTQwLCAyMTApOworfQorCisubmF2aWdhdG9yIC5pY29uIHsKKyAg
ICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgZmxvYXQ6IGxlZnQ7Cit9CisK
Ky5uYXZpZ2F0b3IgLmJhc2UtbmF2aWdhdG9yLXRyZWUtZWxlbWVudC10aXRsZSB7CisgICAgb3Zl
cmZsb3c6IGhpZGRlbjsKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKKyAgICBwb3NpdGlv
bjogcmVsYXRpdmU7CisgICAgcGFkZGluZy1sZWZ0OiAycHg7CisgICAgdG9wOiAxcHg7Cit9CisK
Ky5uYXZpZ2F0b3IgLmJhc2UtbmF2aWdhdG9yLXRyZWUtZWxlbWVudC10aXRsZS5lZGl0aW5nIHsK
KyAgICBtYXJnaW46IGF1dG87Cit9CisKKy5uYXZpZ2F0b3ItdHJlZS1zZWFyY2gtYm94IHsKKyAg
ICBkaXNwbGF5OiBub25lOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDIzcHg7
CisgICAgcmlnaHQ6IDA7CisgICAgaGVpZ2h0OiAyNnB4OworICAgIHdpZHRoOiAxMDBweDsKKyAg
ICB6LWluZGV4OiAxOworICAgIHBhZGRpbmc6IDFweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMTExLCAxNDAsIDIxMCk7CisgICAgYm9yZGVyOiAycHggc29saWQgbGlnaHRncmF5OworfQor
CisubmF2aWdhdG9yLXRyZWUtc2VhcmNoLWJveC52aXNpYmxlIHsKKyAgICBkaXNwbGF5OiBibG9j
azsKK30KKworLm5hdmlnYXRvci10cmVlLXNlYXJjaC1ib3ggPiBpbnB1dCB7CisgICAgd2lkdGg6
IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9zY3JpcHRzUGFuZWwuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9zY3JpcHRzUGFuZWwuY3NzCmluZGV4IGJhMTdjOTFiNmFkNDViMzll
ZDNlNDhmZTlkMzA3YWJiMDg3Y2E0NTguLjJkZmNjNWI0MzM0ODI1MzRkNTYwNzE2YjQyNjc2YTcz
MDI1NDBkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
c2NyaXB0c1BhbmVsLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3NjcmlwdHNQYW5lbC5jc3MKQEAgLTIyNiwxOSArMjI2LDYgQEAKICAgICB0b3A6IDJweDsKIH0K
IAotLnNjcmlwdHMtbmF2aWdhdG9yLWRvbWFpbi10cmVlLWl0ZW0gLmljb24gewotICAgIGNvbnRl
bnQ6IHVybChJbWFnZXMvZG9tYWluLnBuZyk7Ci19Ci0KLS5zY3JpcHRzLW5hdmlnYXRvci1mb2xk
ZXItdHJlZS1pdGVtIC5pY29uIHsKLSAgICBvcGFjaXR5OiAwLjc7Ci0gICAgY29udGVudDogdXJs
KEltYWdlcy9mcmFtZS5wbmcpOwotfQotCi0uc2NyaXB0cy1uYXZpZ2F0b3Itc2NyaXB0LXRyZWUt
aXRlbSAuaWNvbiB7Ci0gICAgY29udGVudDogdXJsKEltYWdlcy9yZXNvdXJjZUpTSWNvbi5wbmcp
OwotfQotCiAjc2NyaXB0cy1uYXZpZ2F0b3ItdGFiYmVkLXBhbmUgLnRhYmJlZC1wYW5lLWNvbnRl
bnQgewogICAgIG92ZXJmbG93OiBoaWRkZW47CiB9CkBAIC0yNTIsMjggKzIzOSw2IEBACiAgICAg
cGFkZGluZy1sZWZ0OiAwOwogfQogCi0jc2NyaXB0cy1uYXZpZ2F0b3ItdHJlZS1zZWFyY2gtYm94
IHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6
IDIzcHg7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgaGVpZ2h0OiAyNnB4OwotICAgIHdpZHRoOiAxMDBw
eDsKLSAgICB6LWluZGV4OiAxOwotICAgIHBhZGRpbmc6IDFweDsKLSAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoMTExLCAxNDAsIDIxMCk7Ci0gICAgYm9yZGVyOiAycHggc29saWQgbGlnaHRncmF5
OwotfQotCi0jc2NyaXB0cy1uYXZpZ2F0b3ItdHJlZS1zZWFyY2gtYm94LnZpc2libGUgewotICAg
IGRpc3BsYXk6IGJsb2NrOwotfQotCi0jc2NyaXB0cy1uYXZpZ2F0b3ItdHJlZS1zZWFyY2gtYm94
ID4gaW5wdXQgewotICAgIHdpZHRoOiAxMDAlOwotICAgIGhlaWdodDogMTAwJTsKLX0KLQogI3Nj
cmlwdHMtbmF2aWdhdG9yLXRhYmJlZC1wYW5lIC50YWJiZWQtcGFuZS1oZWFkZXIgewogICAgIGJh
Y2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwJSAwJSwgMCUgMTAwJSwg
ZnJvbSgjRjVGNUY1KSwgdG8oI0U1RTVFNSkpOwogfQpAQCAtMzAwLDU1ICsyNjUsNiBAQAogICAg
IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQkJCOwogfQogCi0jc2NyaXB0cy1uYXZpZ2F0b3It
dGFiYmVkLXBhbmUgLm5hdmlnYXRvciBsaSB7Ci0gICAgaGVpZ2h0OiAxN3B4OwotICAgIHdoaXRl
LXNwYWNlOiBub3dyYXA7Ci19Ci0KLSNzY3JpcHRzLW5hdmlnYXRvci10YWJiZWQtcGFuZSAubmF2
aWdhdG9yIDpmb2N1cyBsaS5zZWxlY3RlZCB7Ci0gICAgY29sb3I6IHdoaXRlOwotfQotCi0jc2Ny
aXB0cy1uYXZpZ2F0b3ItdGFiYmVkLXBhbmUgLm5hdmlnYXRvciBsaS5zZWxlY3RlZCAuc2VsZWN0
aW9uIHsKLSAgICBoZWlnaHQ6IDE3cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE4MCwg
MTgwLCAxODApOwotfQotCi0jc2NyaXB0cy1uYXZpZ2F0b3ItdGFiYmVkLXBhbmUgLm5hdmlnYXRv
ciA6Zm9jdXMgbGkuc2VsZWN0ZWQgLnNlbGVjdGlvbiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDExMSwgMTQwLCAyMTApOwotfQotCi0jc2NyaXB0cy1uYXZpZ2F0b3ItdGFiYmVkLXBhbmUg
Lm5hdmlnYXRvciAuc2VhcmNoLW1hdGNoLWZvdW5kIGxpLnNlbGVjdGVkIC5zZWxlY3Rpb24gewot
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxMTEsIDE0MCwgMjEwKTsKLX0KLQotI3NjcmlwdHMt
bmF2aWdhdG9yLXRhYmJlZC1wYW5lIC5uYXZpZ2F0b3IgLnNlYXJjaC1tYXRjaC1ub3QtZm91bmQg
bGkuc2VsZWN0ZWQgLnNlbGVjdGlvbiB7Ci0gICAgYm9yZGVyLWNvbG9yOiByZ2IoMTExLCAxNDAs
IDIxMCk7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ci19Ci0KLSNzY3JpcHRzLW5hdmln
YXRvci10YWJiZWQtcGFuZSAubmF2aWdhdG9yIC5zZWFyY2hpbmcgbGkuc2VsZWN0ZWQgLnNlbGVj
dGlvbiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDExMSwgMTQwLCAyMTApOwotfQotCi0j
c2NyaXB0cy1uYXZpZ2F0b3ItdGFiYmVkLXBhbmUgLm5hdmlnYXRvciAuaWNvbiB7Ci0gICAgd2lk
dGg6IDE2cHg7Ci0gICAgaGVpZ2h0OiAxNnB4OwotICAgIGZsb2F0OiBsZWZ0OwotfQotCi0jc2Ny
aXB0cy1uYXZpZ2F0b3ItdGFiYmVkLXBhbmUgLm5hdmlnYXRvciAuYmFzZS1uYXZpZ2F0b3ItdHJl
ZS1lbGVtZW50LXRpdGxlIHsKLSAgICBvdmVyZmxvdzogaGlkZGVuOwotICAgIHRleHQtb3ZlcmZs
b3c6IGVsbGlwc2lzOwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBwYWRkaW5nLWxlZnQ6
IDJweDsKLSAgICB0b3A6IDFweDsKLX0KLQotI3NjcmlwdHMtbmF2aWdhdG9yLXRhYmJlZC1wYW5l
IC5uYXZpZ2F0b3IgLmJhc2UtbmF2aWdhdG9yLXRyZWUtZWxlbWVudC10aXRsZS5lZGl0aW5nIHsK
LSAgICBtYXJnaW46IGF1dG87Ci19Ci0KIC5mdW5jdGlvbi1sb2NhdGlvbi1saW5rIHsKICAgICBm
bG9hdDogcmlnaHQ7CiAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTkwMmI3ZGIyMDA0
YWZmZDYzZmQ3NTY3MjU3OGI1NDY2ODllZmZmZi4uNmEzNDk5OGQ0MTliZjc5NDIxMjUzZGE5NmYz
OWYxYzFjNmZmZTg3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA0LTIwICBQYXZlbCBG
ZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGV4dHJhY3QgTmF2aWdhdG9yVmlldyBhbmQgTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIgZnJv
bSBTY3JpcHRzTmF2aWdhdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQ0NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanM6CisKIDIw
MTItMDQtMjAgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMKaW5k
ZXggNjEzM2NhNjlhN2RlNDE2ZTUzNDViMjUwMzJjNDgxODlkOGVkOTNhYS4uYTA0OTExYzMyYmFi
OGQ0YzA2MThmY2VhNTI5OGUyYmU2YzUxZDEwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzCkBAIC0xNzgsOSArMTc4LDkgQEAgSW5z
cGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlID0gZnVuY3Rpb24oc2NyaXB0TmFtZSwgY2FsbGJh
Y2spCiBJbnNwZWN0b3JUZXN0LmR1bXBTY3JpcHRzTmF2aWdhdG9yID0gZnVuY3Rpb24obmF2aWdh
dG9yKQogewogICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEdW1waW5nIFNjcmlwdHNOYXZp
Z2F0b3IgJ1NjcmlwdHMnIHRhYjoiKTsKLSAgICBkdW1wTmF2aWdhdG9yVHJlZU91dGxpbmUobmF2
aWdhdG9yLl9zY3JpcHRzVHJlZSk7CisgICAgZHVtcE5hdmlnYXRvclRyZWVPdXRsaW5lKG5hdmln
YXRvci5fc2NyaXB0c1ZpZXcuX3NjcmlwdHNUcmVlKTsKICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdDb250ZW50IHNjcmlwdHMnIHRhYjoiKTsK
LSAgICBkdW1wTmF2aWdhdG9yVHJlZU91dGxpbmUobmF2aWdhdG9yLl9jb250ZW50U2NyaXB0c1Ry
ZWUpOworICAgIGR1bXBOYXZpZ2F0b3JUcmVlT3V0bGluZShuYXZpZ2F0b3IuX2NvbnRlbnRTY3Jp
cHRzVmlldy5fc2NyaXB0c1RyZWUpOwogCiAgICAgZnVuY3Rpb24gZHVtcE5hdmlnYXRvclRyZWVF
bGVtZW50KHByZWZpeCwgdHJlZUVsZW1lbnQpCiAgICAgewo=
</data>
<flag name="review"
          id="143337"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>