<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>444001</bug_id>
          
          <creation_ts>2021-10-18 22:18:36 +0000</creation_ts>
          <short_desc>Performance stagger in animation and rendering when hovering over grouped Icons-Only Task Manager; given that the grouped windows contain more than 3-5 windows.</short_desc>
          <delta_ts>2021-10-28 16:22:11 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Plasma</classification>
          <product>plasmashell</product>
          <component>Task Manager and Icons-Only Task Manager widgets</component>
          <version>master</version>
          <rep_platform>Manjaro</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.kde.org/show_bug.cgi?id=433907</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>efficiency-and-performance, usability, wayland-only</keywords>
          <priority>NOR</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>1.0</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Quartz">thomwalker732</reporter>
          <assigned_to name="Eike Hein">hein</assigned_to>
          <cc>aleixpol</cc>
    
    <cc>bharadwaj.raju777</cc>
    
    <cc>bugs-kde</cc>
    
    <cc>nate</cc>
    
    <cc>plasma-bugs-null</cc>
    
    <cc>qydwhotmail</cc>
    
    <cc>vlad.zahorodnii</cc>
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin>5.24</cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2069960</commentid>
    <comment_count>0</comment_count>
    <who name="Quartz">thomwalker732</who>
    <bug_when>2021-10-18 22:18:36 +0000</bug_when>
    <thetext>SUMMARY

When having more than 3-5 windows (of the same type) open on the taskbar and they get grouped together [such as 15 firefox windows minimized]...

...shine hover animation becomes evidently and noticeably impacted framerate wise and the cursor, as well as the icon itself starts to stagger.

STEPS TO REPRODUCE
1. Open 10, 20 or more windows of the same program (in my case, it was firefox)
2. Let them group.
3. While having other running programs, attempt to hover left and right between each and observe what happens when going over the program with lots of grouped windows.

OBSERVED RESULT

Slow, staggered animation, possibly even slowed cursor?
Unnatural animation transition.

Becomes an annoyance when working with multiple windows.

EXPECTED RESULT

Smooth animation transition between icons on the taskbar without staggering.

SOFTWARE/OS VERSIONS

OS: Manjaro Linux x86_64 
Host: TUF Gaming FX505DY_FX505DY 1.0 
Kernel: 5.13.19-2-MANJARO 
Uptime: 3 hours, 23 mins 
Packages: 1548 (pacman), 4 (flatpak) 
Shell: bash 5.1.8 
Resolution: 1920x1080 
DE: Plasma 5.22.5 
WM: KWin 
Theme: Breath2 2021 Light [Plasma], Breeze [GTK2/3] 
Icons: [Plasma], breath2 [GTK2/3] 
Terminal: konsole 
CPU: AMD Ryzen 5 3550H with Radeon Vega Mobile Gfx (8) @ 2.100GHz 
GPU: AMD ATI 05:00.0 Picasso 
GPU: AMD ATI Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X 
Memory: 11126MiB / 15688MiB 

KDE Plasma Version: 5.22.5
KDE Frameworks Version: 5.87.0
Qt Version: 5.15.2

ADDITIONAL INFORMATION

Compositor is off/disabled.

GPU drivers are installed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069963</commentid>
    <comment_count>1</comment_count>
    <who name="Quartz">thomwalker732</who>
    <bug_when>2021-10-18 22:30:28 +0000</bug_when>
    <thetext>Workflow, especially with multiple windows gets slowed down and gives overall poor usability and experience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069966</commentid>
    <comment_count>2</comment_count>
    <who name="Quartz">thomwalker732</who>
    <bug_when>2021-10-18 22:42:43 +0000</bug_when>
    <thetext>Machine is not thrashing or under performance load for this to occur. It occurs under normal circumstances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069971</commentid>
    <comment_count>3</comment_count>
    <who name="Quartz">thomwalker732</who>
    <bug_when>2021-10-18 23:00:01 +0000</bug_when>
    <thetext>****** This issue also occurs on the Task Manager (not just the icons only widget) taskbar widget when items are grouped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2070599</commentid>
    <comment_count>4</comment_count>
    <who name="Bharadwaj Raju">bharadwaj.raju777</who>
    <bug_when>2021-10-20 14:53:35 +0000</bug_when>
    <thetext>What happens if you do enable the compositor? Does that improve or worsen this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2070625</commentid>
    <comment_count>5</comment_count>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-20 15:11:23 +0000</bug_when>
    <thetext>The animation was made by Macro Martin according to &quot;Desktop Effects&quot; settings. But I think it&apos;s not about the animation, but scripts in ToolTipInstance.qml are likely to take a long time to execute if there are many windows in a group.

That&apos;s another reason why we need https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/609, to really disable tooltips to avoid the unresponsiveness caused by tooltips.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2070689</commentid>
    <comment_count>6</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2021-10-20 16:57:01 +0000</bug_when>
    <thetext>Git commit 80928f4344af159f58e61225a02ea7a874cb5493 by Nate Graham, on behalf of Fushan Wen.
Committed on 20/10/2021 at 16:56.
Pushed by ngraham into branch &apos;master&apos;.

taskmanager: Ensure tooltips are really disabled when &quot;Show tooltips&quot; is unchecked

Before frameworks/plasma-framework!358, if enabled is not set (default
true), when the tooltip is disabled in the settings, plasmashell will
still crash at showing window thumbnails, which means the content in
the tooltip is just not visible, but the relevant code is still
executed.

This ensures tooltips are really disabled when &quot;Show tooltips&quot; is not
checked, which is beneficial for people who want to extend the battery
life or avoid the unresponsiveness caused by tooltips.
Related: bug 444015

M  +2    -1    applets/taskmanager/package/contents/ui/Task.qml

https://invent.kde.org/plasma/plasma-desktop/commit/80928f4344af159f58e61225a02ea7a874cb5493</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2070884</commentid>
    <comment_count>7</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2021-10-21 09:11:14 +0000</bug_when>
    <thetext>A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071066</commentid>
    <comment_count>8</comment_count>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-21 15:46:26 +0000</bug_when>
    <thetext>Git commit 12373d31a0400bf5d4b7d6abdb29268c360156bf by Fushan Wen.
Committed on 21/10/2021 at 09:10.
Pushed by ngraham into branch &apos;master&apos;.

taskmanager: Prevent useless component creation/destruction for grouped tooltips

The binding of &quot;model&quot; property of DelegateModel in ToolTipDelegate.qml
will trigger useless component creation/destruction when &quot;rootIndex&quot; is
changed but is not undefined. Make the ternary operator depend on
&quot;hasRootIndex&quot; bool property to avoid that.

In Task.qml, only assign different values to &quot;parentTask&quot; and &quot;rootIndex&quot;
to avoid unnecessary component creation/destruction for the second time
hovering on the same task.
Related: bug 433907

M  +10   -2    applets/taskmanager/package/contents/ui/Task.qml
M  +4    -1    applets/taskmanager/package/contents/ui/ToolTipDelegate.qml

https://invent.kde.org/plasma/plasma-desktop/commit/12373d31a0400bf5d4b7d6abdb29268c360156bf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071068</commentid>
    <comment_count>9</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2021-10-21 15:47:38 +0000</bug_when>
    <thetext>Git commit 2f27fc9f05462076a77254c0df17fa07ee8228a8 by Nate Graham, on behalf of Fushan Wen.
Committed on 21/10/2021 at 15:47.
Pushed by ngraham into branch &apos;Plasma/5.23&apos;.

taskmanager: Prevent useless component creation/destruction for grouped tooltips

The binding of &quot;model&quot; property of DelegateModel in ToolTipDelegate.qml
will trigger useless component creation/destruction when &quot;rootIndex&quot; is
changed but is not undefined. Make the ternary operator depend on
&quot;hasRootIndex&quot; bool property to avoid that.

In Task.qml, only assign different values to &quot;parentTask&quot; and &quot;rootIndex&quot;
to avoid unnecessary component creation/destruction for the second time
hovering on the same task.
Related: bug 433907


(cherry picked from commit 12373d31a0400bf5d4b7d6abdb29268c360156bf)

M  +10   -2    applets/taskmanager/package/contents/ui/Task.qml
M  +4    -1    applets/taskmanager/package/contents/ui/ToolTipDelegate.qml

https://invent.kde.org/plasma/plasma-desktop/commit/2f27fc9f05462076a77254c0df17fa07ee8228a8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071348</commentid>
    <comment_count>10</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2021-10-22 15:04:24 +0000</bug_when>
    <thetext>A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/631</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071749</commentid>
    <comment_count>11</comment_count>
      <attachid>142819</attachid>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-24 13:42:31 +0000</bug_when>
    <thetext>Created attachment 142819
Task.qml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071754</commentid>
    <comment_count>12</comment_count>
      <attachid>142820</attachid>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-24 13:47:23 +0000</bug_when>
    <thetext>Created attachment 142820
ToolTipDelegate.qml

The bug seems different from bug 433907, because on a 1080p screen a tooltip can show up to 7 windows. But it says when a tooltip contains more than 3-5 windows the performance starts staggering.

Could you help me test https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/631 ? 

I have uploaded patched Task.qml and ToolTipDelegate.qml, so after you download the two files, copy them into 

/usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/

(or if Task.qml and ToolTipDelegate.qml do not exist in the folder, run `find /usr -name ToolTipDelegate.qml` to locate the folder)

and run `plasmashell --replace` to see if the bug is fixed.

Thank you in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071756</commentid>
    <comment_count>13</comment_count>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-24 13:51:25 +0000</bug_when>
    <thetext>Change the status to NEEDSINFO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071757</commentid>
    <comment_count>14</comment_count>
      <attachid>142821</attachid>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-24 13:54:01 +0000</bug_when>
    <thetext>Created attachment 142821
ToolTipInstance.qml

If the bug is not fixed by the two files, please also copy ToolTipInstance.qml to the same folder to test again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071865</commentid>
    <comment_count>15</comment_count>
      <attachid>142839</attachid>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-25 01:44:52 +0000</bug_when>
    <thetext>Created attachment 142839
ToolTipDelegate.qml

Update ToolTipDelegate.qml, please use the latest version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071872</commentid>
    <comment_count>16</comment_count>
      <attachid>142843</attachid>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-25 02:50:49 +0000</bug_when>
    <thetext>Created attachment 142843
ToolTipDelegate.qml

Update again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071877</commentid>
    <comment_count>17</comment_count>
      <attachid>142844</attachid>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-25 04:31:14 +0000</bug_when>
    <thetext>Created attachment 142844
ToolTipDelegate.qml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071878</commentid>
    <comment_count>18</comment_count>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-25 04:32:19 +0000</bug_when>
    <thetext>I can reproduce the bug on Wayland even with these files. Are you using Wayland? Please also try X11 to see if the bug still persist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071913</commentid>
    <comment_count>19</comment_count>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-25 07:59:02 +0000</bug_when>
    <thetext>The problem is in PipeWireThumbnail.qml and its library.

Should ScreencastingRequest::create run in a new thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2071927</commentid>
    <comment_count>20</comment_count>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2021-10-25 08:53:35 +0000</bug_when>
    <thetext>Can the tooltip use KWinComponents.WindowThumbnailItem? It seems much faster than PipeWireThumbnail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2072495</commentid>
    <comment_count>21</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2021-10-26 19:16:37 +0000</bug_when>
    <thetext>Git commit b63a6c9b16f261ecac99e5d1abbd72c52349cb95 by Nate Graham, on behalf of Fushan Wen.
Committed on 26/10/2021 at 19:15.
Pushed by ngraham into branch &apos;master&apos;.

taskmanager: Replace Repeater with ListView for task group list

Unlike Repeater ListView loads only visible items. This behaviour
leads to huge performance improvement.
Related: bug 433907

M  +2    -14   applets/taskmanager/package/contents/ui/Task.qml
M  +30   -33   applets/taskmanager/package/contents/ui/ToolTipDelegate.qml

https://invent.kde.org/plasma/plasma-desktop/commit/b63a6c9b16f261ecac99e5d1abbd72c52349cb95</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2072497</commentid>
    <comment_count>22</comment_count>
    <who name="Vlad Zahorodnii">vlad.zahorodnii</who>
    <bug_when>2021-10-26 19:21:36 +0000</bug_when>
    <thetext>(In reply to qydwhotmail from comment #20)
&gt; Can the tooltip use KWinComponents.WindowThumbnailItem? It seems much faster
&gt; than PipeWireThumbnail.

Huh, a shot in the dark: it&apos;s because window thumbnails are not shared using dma-buf anymore due to recent pipewire shenanigans.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2072975</commentid>
    <comment_count>23</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2021-10-28 16:19:38 +0000</bug_when>
    <thetext>Should be pretty much fixed now with those changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2072977</commentid>
    <comment_count>24</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2021-10-28 16:22:11 +0000</bug_when>
    <thetext>*** Bug 429502 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>142819</attachid>
            <date>2021-10-24 13:42:31 +0000</date>
            <delta_ts>2021-10-24 13:42:31 +0000</delta_ts>
            <desc>Task.qml</desc>
            <filename>Task.qml</filename>
            <type>text/x-qml</type>
            <size>19927</size>
            <attacher name="Fushan Wen">qydwhotmail</attacher>
            
              <data encoding="base64">LyoKICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMTItMjAxMyBFaWtlIEhlaW4gPGhlaW5A
a2RlLm9yZz4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgoq
LwoKaW1wb3J0IFF0UXVpY2sgMi4wCgppbXBvcnQgb3JnLmtkZS5wbGFzbWEuY29yZSAyLjAgYXMg
UGxhc21hQ29yZQppbXBvcnQgb3JnLmtkZS5wbGFzbWEuY29tcG9uZW50cyAyLjAgYXMgUGxhc21h
Q29tcG9uZW50cwppbXBvcnQgb3JnLmtkZS5kcmFnYW5kZHJvcCAyLjAKCmltcG9ydCBvcmcua2Rl
LnBsYXNtYS5wcml2YXRlLnRhc2ttYW5hZ2VyIDAuMSBhcyBUYXNrTWFuYWdlckFwcGxldAoKaW1w
b3J0ICJjb2RlL2xheW91dC5qcyIgYXMgTGF5b3V0TWFuYWdlcgppbXBvcnQgImNvZGUvdG9vbHMu
anMiIGFzIFRhc2tUb29scwoKTW91c2VBcmVhIHsKICAgIGlkOiB0YXNrCgogICAgd2lkdGg6IGdy
b3VwRGlhbG9nLmNvbnRlbnRXaWR0aAogICAgaGVpZ2h0OiBNYXRoLm1heCh0aGVtZS5tU2l6ZSh0
aGVtZS5kZWZhdWx0Rm9udCkuaGVpZ2h0LCBQbGFzbWFDb3JlLlVuaXRzLmljb25TaXplcy5tZWRp
dW0pICsgTGF5b3V0TWFuYWdlci52ZXJ0aWNhbE1hcmdpbnMoKQoKICAgIHZpc2libGU6IGZhbHNl
CgogICAgTGF5b3V0TWlycm9yaW5nLmVuYWJsZWQ6IChRdC5hcHBsaWNhdGlvbi5sYXlvdXREaXJl
Y3Rpb24gPT0gUXQuUmlnaHRUb0xlZnQpCiAgICBMYXlvdXRNaXJyb3JpbmcuY2hpbGRyZW5Jbmhl
cml0OiAoUXQuYXBwbGljYXRpb24ubGF5b3V0RGlyZWN0aW9uID09IFF0LlJpZ2h0VG9MZWZ0KQoK
ICAgIHJlYWRvbmx5IHByb3BlcnR5IHZhciBtOiBtb2RlbAoKICAgIHJlYWRvbmx5IHByb3BlcnR5
IGludCBwaWQ6IG1vZGVsLkFwcFBpZCAhPT0gdW5kZWZpbmVkID8gbW9kZWwuQXBwUGlkIDogMAog
ICAgcmVhZG9ubHkgcHJvcGVydHkgc3RyaW5nIGFwcE5hbWU6IG1vZGVsLkFwcE5hbWUKICAgIHJl
YWRvbmx5IHByb3BlcnR5IHZhcmlhbnQgd2luSWRMaXN0OiBtb2RlbC5XaW5JZExpc3QKICAgIHBy
b3BlcnR5IGludCBpdGVtSW5kZXg6IGluZGV4CiAgICBwcm9wZXJ0eSBib29sIGluUG9wdXA6IGZh
bHNlCiAgICBwcm9wZXJ0eSBib29sIGlzV2luZG93OiBtb2RlbC5Jc1dpbmRvdyA9PT0gdHJ1ZQog
ICAgcHJvcGVydHkgaW50IGNoaWxkQ291bnQ6IG1vZGVsLkNoaWxkQ291bnQgIT09IHVuZGVmaW5l
ZCA/IG1vZGVsLkNoaWxkQ291bnQgOiAwCiAgICBwcm9wZXJ0eSBpbnQgcHJldmlvdXNDaGlsZENv
dW50OiAwCiAgICBwcm9wZXJ0eSBhbGlhcyBsYWJlbFRleHQ6IGxhYmVsLnRleHQKICAgIHByb3Bl
cnR5IGJvb2wgcHJlc3NlZDogZmFsc2UKICAgIHByb3BlcnR5IGludCBwcmVzc1g6IC0xCiAgICBw
cm9wZXJ0eSBpbnQgcHJlc3NZOiAtMQogICAgcHJvcGVydHkgUXRPYmplY3QgY29udGV4dE1lbnU6
IG51bGwKICAgIHByb3BlcnR5IGludCB3aGVlbERlbHRhOiAwCiAgICByZWFkb25seSBwcm9wZXJ0
eSBib29sIHNtYXJ0TGF1bmNoZXJFbmFibGVkOiAhaW5Qb3B1cCAmJiBtb2RlbC5Jc1N0YXJ0dXAg
IT09IHRydWUKICAgIHByb3BlcnR5IFF0T2JqZWN0IHNtYXJ0TGF1bmNoZXJJdGVtOiBudWxsCiAg
ICBwcm9wZXJ0eSBhbGlhcyB0b29sVGlwQXJlYUl0ZW06IHRvb2xUaXBBcmVhCiAgICBwcm9wZXJ0
eSBhbGlhcyBhdWRpb1N0cmVhbUljb25Mb2FkZXJJdGVtOiBhdWRpb1N0cmVhbUljb25Mb2FkZXIK
CiAgICBwcm9wZXJ0eSBJdGVtIGF1ZGlvU3RyZWFtT3ZlcmxheQogICAgcHJvcGVydHkgdmFyIGF1
ZGlvU3RyZWFtczogW10KICAgIHByb3BlcnR5IGJvb2wgZGVsYXlBdWRpb1N0cmVhbUluZGljYXRv
cjogZmFsc2UKICAgIHJlYWRvbmx5IHByb3BlcnR5IGJvb2wgYXVkaW9JbmRpY2F0b3JzRW5hYmxl
ZDogcGxhc21vaWQuY29uZmlndXJhdGlvbi5pbmRpY2F0ZUF1ZGlvU3RyZWFtcwogICAgcmVhZG9u
bHkgcHJvcGVydHkgYm9vbCBoYXNBdWRpb1N0cmVhbTogYXVkaW9TdHJlYW1zLmxlbmd0aCA+IDAK
ICAgIHJlYWRvbmx5IHByb3BlcnR5IGJvb2wgcGxheWluZ0F1ZGlvOiBoYXNBdWRpb1N0cmVhbSAm
JiBhdWRpb1N0cmVhbXMuc29tZShmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiAhaXRl
bS5jb3JrZWQKICAgIH0pCiAgICByZWFkb25seSBwcm9wZXJ0eSBib29sIG11dGVkOiBoYXNBdWRp
b1N0cmVhbSAmJiBhdWRpb1N0cmVhbXMuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICBy
ZXR1cm4gaXRlbS5tdXRlZAogICAgfSkKCiAgICByZWFkb25seSBwcm9wZXJ0eSBib29sIGhpZ2hs
aWdodGVkOiAoaW5Qb3B1cCAmJiBhY3RpdmVGb2N1cykgfHwgKCFpblBvcHVwICYmIGNvbnRhaW5z
TW91c2UpCiAgICAgICAgfHwgKHRhc2suY29udGV4dE1lbnUgJiYgdGFzay5jb250ZXh0TWVudS5z
dGF0dXMgPT09IFBsYXNtYUNvbXBvbmVudHMuRGlhbG9nU3RhdHVzLk9wZW4pCiAgICAgICAgfHwg
KGdyb3VwRGlhbG9nLnZpc2libGUgJiYgZ3JvdXBEaWFsb2cudmlzdWFsUGFyZW50ID09PSB0YXNr
KQoKICAgIG9uSGlnaGxpZ2h0ZWRDaGFuZ2VkOiB7CiAgICAgICAgLy8gZW5zdXJlIGl0IGRvZXNu
J3QgZ2V0IHN0dWNrIHdpdGggYSB3aW5kb3cgaGlnaGxpZ2h0ZWQKICAgICAgICBiYWNrZW5kLmNh
bmNlbEhpZ2hsaWdodFdpbmRvd3MoKTsKICAgIH0KCiAgICBmdW5jdGlvbiBzaG93VG9vbFRpcCgp
IHsKICAgICAgICB0b29sVGlwQXJlYS5zaG93VG9vbFRpcCgpOwogICAgfQogICAgZnVuY3Rpb24g
aGlkZVRvb2xUaXBUZW1wb3JhcmlseSgpIHsKICAgICAgICB0b29sVGlwQXJlYS5oaWRlVG9vbFRp
cCgpOwogICAgfQoKICAgIGFjY2VwdGVkQnV0dG9uczogUXQuTGVmdEJ1dHRvbiB8IFF0LlJpZ2h0
QnV0dG9uIHwgUXQuTWlkQnV0dG9uIHwgUXQuQmFja0J1dHRvbiB8IFF0LkZvcndhcmRCdXR0b24K
CiAgICBvblBpZENoYW5nZWQ6IHVwZGF0ZUF1ZGlvU3RyZWFtcyh7ZGVsYXk6IGZhbHNlfSkKICAg
IG9uQXBwTmFtZUNoYW5nZWQ6IHVwZGF0ZUF1ZGlvU3RyZWFtcyh7ZGVsYXk6IGZhbHNlfSkKCiAg
ICBvbklzV2luZG93Q2hhbmdlZDogewogICAgICAgIGlmIChpc1dpbmRvdykgewogICAgICAgICAg
ICB0YXNrSW5pdENvbXBvbmVudC5jcmVhdGVPYmplY3QodGFzayk7CiAgICAgICAgfQogICAgfQoK
ICAgIG9uQ2hpbGRDb3VudENoYW5nZWQ6IHsKICAgICAgICBpZiAoIWNoaWxkQ291bnQgJiYgZ3Jv
dXBEaWFsb2cudmlzdWFsUGFyZW50ID09IHRhc2spIHsKICAgICAgICAgICAgZ3JvdXBEaWFsb2cu
dmlzaWJsZSA9IGZhbHNlOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAg
aWYgKGNvbnRhaW5zTW91c2UpIHsKICAgICAgICAgICAgZ3JvdXBEaWFsb2cuYWN0aXZlVGFzayA9
IG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoY2hpbGRDb3VudCA+IHByZXZpb3VzQ2hpbGRD
b3VudCkgewogICAgICAgICAgICB0YXNrc01vZGVsLnJlcXVlc3RQdWJsaXNoRGVsZWdhdGVHZW9t
ZXRyeShtb2RlbEluZGV4KCksIGJhY2tlbmQuZ2xvYmFsUmVjdCh0YXNrKSwgdGFzayk7CiAgICAg
ICAgfQoKICAgICAgICBwcmV2aW91c0NoaWxkQ291bnQgPSBjaGlsZENvdW50OwogICAgfQoKICAg
IG9uSXRlbUluZGV4Q2hhbmdlZDogewogICAgICAgIGhpZGVUb29sVGlwVGVtcG9yYXJpbHkoKTsK
CiAgICAgICAgaWYgKCFpblBvcHVwICYmICF0YXNrcy52ZXJ0aWNhbAogICAgICAgICAgICAmJiAo
TGF5b3V0TWFuYWdlci5jYWxjdWxhdGVTdHJpcGVzKCkgPiAxIHx8ICFwbGFzbW9pZC5jb25maWd1
cmF0aW9uLnNlcGFyYXRlTGF1bmNoZXJzKSkgewogICAgICAgICAgICB0YXNrcy5yZXF1ZXN0TGF5
b3V0KCk7CiAgICAgICAgfQogICAgfQoKICAgIG9uQ29udGFpbnNNb3VzZUNoYW5nZWQ6ICB7CiAg
ICAgICAgaWYgKGNvbnRhaW5zTW91c2UpIHsKICAgICAgICAgICAgaWYgKGluUG9wdXApIHsKICAg
ICAgICAgICAgICAgIGZvcmNlQWN0aXZlRm9jdXMoKTsKICAgICAgICAgICAgfQogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgIHByZXNzZWQgPSBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAg
b25QcmVzc2VkOiB7CiAgICAgICAgaWYgKG1vdXNlLmJ1dHRvbiA9PSBRdC5MZWZ0QnV0dG9uIHx8
IG1vdXNlLmJ1dHRvbiA9PSBRdC5NaWRCdXR0b24gfHwgbW91c2UuYnV0dG9uID09PSBRdC5CYWNr
QnV0dG9uIHx8IG1vdXNlLmJ1dHRvbiA9PT0gUXQuRm9yd2FyZEJ1dHRvbikgewogICAgICAgICAg
ICBwcmVzc2VkID0gdHJ1ZTsKICAgICAgICAgICAgcHJlc3NYID0gbW91c2UueDsKICAgICAgICAg
ICAgcHJlc3NZID0gbW91c2UueTsKICAgICAgICB9IGVsc2UgaWYgKG1vdXNlLmJ1dHRvbiA9PSBR
dC5SaWdodEJ1dHRvbikgewogICAgICAgICAgICAvLyBXaGVuIHdlJ3JlIGEgbGF1bmNoZXIsIHRo
ZXJlJ3Mgbm8gd2luZG93IGNvbnRyb2xzLCBzbyB3ZSBjYW4gc2hvdyBhbGwKICAgICAgICAgICAg
Ly8gcGxhY2VzIHdpdGhvdXQgdGhlIG1lbnUgZ2V0dGluZyBzdXBlciBodWdlLgogICAgICAgICAg
ICBpZiAobW9kZWwuSXNMYXVuY2hlciA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgc2hvd0Nv
bnRleHRNZW51KHtzaG93QWxsUGxhY2VzOiB0cnVlfSkKICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgIHNob3dDb250ZXh0TWVudSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQog
ICAgfQoKICAgIG9uUmVsZWFzZWQ6IHsKICAgICAgICBpZiAocHJlc3NlZCkgewogICAgICAgICAg
ICBpZiAobW91c2UuYnV0dG9uID09IFF0Lk1pZEJ1dHRvbikgewogICAgICAgICAgICAgICAgaWYg
KHBsYXNtb2lkLmNvbmZpZ3VyYXRpb24ubWlkZGxlQ2xpY2tBY3Rpb24gPT09IFRhc2tNYW5hZ2Vy
QXBwbGV0LkJhY2tlbmQuTmV3SW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICAgICB0YXNrc01v
ZGVsLnJlcXVlc3ROZXdJbnN0YW5jZShtb2RlbEluZGV4KCkpOwogICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChwbGFzbW9pZC5jb25maWd1cmF0aW9uLm1pZGRsZUNsaWNrQWN0aW9uID09PSBUYXNr
TWFuYWdlckFwcGxldC5CYWNrZW5kLkNsb3NlKSB7CiAgICAgICAgICAgICAgICAgICAgdGFza3Mu
dGFza0Nsb3NlZFdpdGhNb3VzZU1pZGRsZUJ1dHRvbiA9IHdpbklkTGlzdC5zbGljZSgpCiAgICAg
ICAgICAgICAgICAgICAgdGFza3NNb2RlbC5yZXF1ZXN0Q2xvc2UobW9kZWxJbmRleCgpKTsKICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhc21vaWQuY29uZmlndXJhdGlvbi5taWRkbGVDbGlj
a0FjdGlvbiA9PT0gVGFza01hbmFnZXJBcHBsZXQuQmFja2VuZC5Ub2dnbGVNaW5pbWl6ZWQpIHsK
ICAgICAgICAgICAgICAgICAgICB0YXNrc01vZGVsLnJlcXVlc3RUb2dnbGVNaW5pbWl6ZWQobW9k
ZWxJbmRleCgpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhc21vaWQuY29uZmlndXJh
dGlvbi5taWRkbGVDbGlja0FjdGlvbiA9PT0gVGFza01hbmFnZXJBcHBsZXQuQmFja2VuZC5Ub2dn
bGVHcm91cGluZykgewogICAgICAgICAgICAgICAgICAgIHRhc2tzTW9kZWwucmVxdWVzdFRvZ2ds
ZUdyb3VwaW5nKG1vZGVsSW5kZXgoKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBsYXNt
b2lkLmNvbmZpZ3VyYXRpb24ubWlkZGxlQ2xpY2tBY3Rpb24gPT09IFRhc2tNYW5hZ2VyQXBwbGV0
LkJhY2tlbmQuQnJpbmdUb0N1cnJlbnREZXNrdG9wKSB7CiAgICAgICAgICAgICAgICAgICAgdGFz
a3NNb2RlbC5yZXF1ZXN0VmlydHVhbERlc2t0b3BzKG1vZGVsSW5kZXgoKSwgW3ZpcnR1YWxEZXNr
dG9wSW5mby5jdXJyZW50RGVza3RvcF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
IGVsc2UgaWYgKG1vdXNlLmJ1dHRvbiA9PSBRdC5MZWZ0QnV0dG9uKSB7CiAgICAgICAgICAgICAg
ICBpZiAocGxhc21vaWQuY29uZmlndXJhdGlvbi5zaG93VG9vbFRpcHMgJiYgdG9vbFRpcEFyZWEu
YWN0aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgaGlkZVRvb2xUaXBUZW1wb3JhcmlseSgpOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgVGFza1Rvb2xzLmFjdGl2YXRlVGFzayht
b2RlbEluZGV4KCksIG1vZGVsLCBtb3VzZS5tb2RpZmllcnMsIHRhc2spOwogICAgICAgICAgICB9
IGVsc2UgaWYgKG1vdXNlLmJ1dHRvbiA9PT0gUXQuQmFja0J1dHRvbiB8fCBtb3VzZS5idXR0b24g
PT09IFF0LkZvcndhcmRCdXR0b24pIHsKICAgICAgICAgICAgICAgIHZhciBzb3VyY2VOYW1lID0g
bXByaXMyU291cmNlLnNvdXJjZU5hbWVGb3JMYXVuY2hlclVybChtb2RlbC5MYXVuY2hlclVybFdp
dGhvdXRJY29uLCBtb2RlbC5BcHBQaWQpOwogICAgICAgICAgICAgICAgaWYgKHNvdXJjZU5hbWUp
IHsKICAgICAgICAgICAgICAgICAgICBpZiAobW91c2UuYnV0dG9uID09PSBRdC5CYWNrQnV0dG9u
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1wcmlzMlNvdXJjZS5nb1ByZXZpb3VzKHNvdXJj
ZU5hbWUpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIG1wcmlzMlNvdXJjZS5nb05leHQoc291cmNlTmFtZSk7CiAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtb3VzZS5hY2Nl
cHRlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAg
ICBiYWNrZW5kLmNhbmNlbEhpZ2hsaWdodFdpbmRvd3MoKTsKICAgICAgICB9CgogICAgICAgIHBy
ZXNzZWQgPSBmYWxzZTsKICAgICAgICBwcmVzc1ggPSAtMTsKICAgICAgICBwcmVzc1kgPSAtMTsK
ICAgIH0KCiAgICBvblBvc2l0aW9uQ2hhbmdlZDogewogICAgICAgIC8vIG1vdXNlLmJ1dHRvbiBp
cyBhbHdheXMgMCBoZXJlLCBoZW5jZSBjaGVja2luZyB3aXRoIG1vdXNlLmJ1dHRvbnMKICAgICAg
ICBpZiAocHJlc3NYICE9IC0xICYmIG1vdXNlLmJ1dHRvbnMgPT0gUXQuTGVmdEJ1dHRvbiAmJiBk
cmFnSGVscGVyLmlzRHJhZyhwcmVzc1gsIHByZXNzWSwgbW91c2UueCwgbW91c2UueSkpIHsKICAg
ICAgICAgICAgdGFza3MuZHJhZ1NvdXJjZSA9IHRhc2s7CiAgICAgICAgICAgIGRyYWdIZWxwZXIu
c3RhcnREcmFnKHRhc2ssIG1vZGVsLk1pbWVUeXBlLCBtb2RlbC5NaW1lRGF0YSwKICAgICAgICAg
ICAgICAgIG1vZGVsLkxhdW5jaGVyVXJsV2l0aG91dEljb24sIG1vZGVsLmRlY29yYXRpb24pOwog
ICAgICAgICAgICBwcmVzc1ggPSAtMTsKICAgICAgICAgICAgcHJlc3NZID0gLTE7CgogICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG9uV2hlZWw6IHsKICAgICAgICBpZiAo
cGxhc21vaWQuY29uZmlndXJhdGlvbi53aGVlbEVuYWJsZWQgJiYgKCFpblBvcHVwIHx8ICFncm91
cERpYWxvZy5vdmVyZmxvd2luZykpIHsKICAgICAgICAgICAgd2hlZWxEZWx0YSA9IFRhc2tUb29s
cy53aGVlbEFjdGl2YXRlTmV4dFByZXZUYXNrKHRhc2ssIHdoZWVsRGVsdGEsIHdoZWVsLmFuZ2xl
RGVsdGEueSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2hlZWwuYWNjZXB0ZWQgPSBm
YWxzZTsKICAgICAgICB9CiAgICB9CgogICAgb25TbWFydExhdW5jaGVyRW5hYmxlZENoYW5nZWQ6
IHsKICAgICAgICBpZiAoc21hcnRMYXVuY2hlckVuYWJsZWQgJiYgIXNtYXJ0TGF1bmNoZXJJdGVt
KSB7CiAgICAgICAgICAgIHZhciBzbWFydExhdW5jaGVyID0gUXQuY3JlYXRlUW1sT2JqZWN0KCIK
ICAgIGltcG9ydCBvcmcua2RlLnBsYXNtYS5wcml2YXRlLnRhc2ttYW5hZ2VyIDAuMSBhcyBUYXNr
TWFuYWdlckFwcGxldDsKICAgIFRhc2tNYW5hZ2VyQXBwbGV0LlNtYXJ0TGF1bmNoZXJJdGVtIHsg
fSIsIHRhc2spOwoKICAgICAgICAgICAgc21hcnRMYXVuY2hlci5sYXVuY2hlclVybCA9IFF0LmJp
bmRpbmcoKCkgPT4gbW9kZWwuTGF1bmNoZXJVcmxXaXRob3V0SWNvbik7CgogICAgICAgICAgICBz
bWFydExhdW5jaGVySXRlbSA9IHNtYXJ0TGF1bmNoZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9u
SGFzQXVkaW9TdHJlYW1DaGFuZ2VkOiB7CiAgICAgICAgYXVkaW9TdHJlYW1JY29uTG9hZGVyLmFj
dGl2ZSA9IGhhc0F1ZGlvU3RyZWFtICYmIGF1ZGlvSW5kaWNhdG9yc0VuYWJsZWQ7CiAgICB9Cgog
ICAgb25BdWRpb0luZGljYXRvcnNFbmFibGVkQ2hhbmdlZDogewogICAgICAgIGF1ZGlvU3RyZWFt
SWNvbkxvYWRlci5hY3RpdmUgPSBoYXNBdWRpb1N0cmVhbSAmJiBhdWRpb0luZGljYXRvcnNFbmFi
bGVkOwogICAgfQoKICAgIEtleXMub25SZXR1cm5QcmVzc2VkOiBUYXNrVG9vbHMuYWN0aXZhdGVU
YXNrKG1vZGVsSW5kZXgoKSwgbW9kZWwsIGV2ZW50Lm1vZGlmaWVycywgdGFzaykKICAgIEtleXMu
b25FbnRlclByZXNzZWQ6IEtleXMub25SZXR1cm5QcmVzc2VkKGV2ZW50KTsKCiAgICBmdW5jdGlv
biBtb2RlbEluZGV4KCkgewogICAgICAgIHJldHVybiAoaW5Qb3B1cCA/IHRhc2tzTW9kZWwubWFr
ZU1vZGVsSW5kZXgoZ3JvdXBEaWFsb2cudmlzdWFsUGFyZW50Lml0ZW1JbmRleCwgaW5kZXgpCiAg
ICAgICAgICAgIDogdGFza3NNb2RlbC5tYWtlTW9kZWxJbmRleChpbmRleCkpOwogICAgfQoKICAg
IGZ1bmN0aW9uIHNob3dDb250ZXh0TWVudShhcmdzKSB7CiAgICAgICAgdG9vbFRpcEFyZWEuaGlk
ZUltbWVkaWF0ZWx5KCk7CiAgICAgICAgY29udGV4dE1lbnUgPSB0YXNrcy5jcmVhdGVDb250ZXh0
TWVudSh0YXNrLCBtb2RlbEluZGV4KCksIGFyZ3MpOwogICAgICAgIGNvbnRleHRNZW51LnNob3co
KTsKICAgIH0KCiAgICBmdW5jdGlvbiB1cGRhdGVBdWRpb1N0cmVhbXMoYXJncykgewogICAgICAg
IGlmIChhcmdzKSB7CiAgICAgICAgICAgIC8vIFdoZW4gdGhlIHRhc2sganVzdCBhcHBlYXJlZCAo
ZS5nLiB2aXJ0dWFsIGRlc2t0b3Agc3dpdGNoKSwgc2hvdyB0aGUgYXVkaW8gaW5kaWNhdG9yCiAg
ICAgICAgICAgIC8vIHJpZ2h0IGF3YXkuIE9ubHkgd2hlbiBhdWRpbyBzdHJlYW1zIGNoYW5nZSBk
dXJpbmcgdGhlIGxpZmV0aW1lIG9mIHRoaXMgdGFzaywgZGVsYXkKICAgICAgICAgICAgLy8gc2hv
d2luZyB0aGF0IHRvIGF2b2lkIGRpc3RyYWN0aW9uLgogICAgICAgICAgICBkZWxheUF1ZGlvU3Ry
ZWFtSW5kaWNhdG9yID0gISFhcmdzLmRlbGF5OwogICAgICAgIH0KCiAgICAgICAgdmFyIHBhID0g
cHVsc2VBdWRpby5pdGVtOwogICAgICAgIGlmICghcGEpIHsKICAgICAgICAgICAgdGFzay5hdWRp
b1N0cmVhbXMgPSBbXTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFy
IHN0cmVhbXMgPSBwYS5zdHJlYW1zRm9yUGlkKHRhc2sucGlkKTsKICAgICAgICBpZiAoc3RyZWFt
cy5sZW5ndGgpIHsKICAgICAgICAgICAgcGEucmVnaXN0ZXJQaWRNYXRjaCh0YXNrLmFwcE5hbWUp
OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBmYWxsIGJh
Y2sgdG8gYXBwTmFtZSBtYXRjaGluZyBpZiB3ZSBuZXZlciBtYW5hZ2VkIHRvIG1hcAogICAgICAg
ICAgICAvLyBhIFBJRCB0byBhbiBhdWRpbyBzdHJlYW0gd2luZG93LiBPdGhlcndpc2UgaWYgeW91
IGhhdmUgdHdvIGluc3RhbmNlcyBvZgogICAgICAgICAgICAvLyBhbiBhcHBsaWNhdGlvbiwgb25l
IHBsYXlpbmcgYW5kIHRoZSBvdGhlciBub3QsIGl0IHdpbGwgbG9vayB1cCBhcHBOYW1lCiAgICAg
ICAgICAgIC8vIGZvciB0aGUgbm9uLXBsYXlpbmcgaW5zdGFuY2UgYW5kIGVycm9uZW91c2x5IHNo
b3cgYW4gaW5kaWNhdG9yIG9uIGJvdGguCiAgICAgICAgICAgIGlmICghcGEuaGFzUGlkTWF0Y2go
dGFzay5hcHBOYW1lKSkgewogICAgICAgICAgICAgICAgc3RyZWFtcyA9IHBhLnN0cmVhbXNGb3JB
cHBOYW1lKHRhc2suYXBwTmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRh
c2suYXVkaW9TdHJlYW1zID0gc3RyZWFtczsKICAgIH0KCiAgICBmdW5jdGlvbiB0b2dnbGVNdXRl
ZCgpIHsKICAgICAgICBpZiAobXV0ZWQpIHsKICAgICAgICAgICAgdGFzay5hdWRpb1N0cmVhbXMu
Zm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgeyBpdGVtLnVubXV0ZSgpOyB9KTsKICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICB0YXNrLmF1ZGlvU3RyZWFtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVt
KSB7IGl0ZW0ubXV0ZSgpOyB9KTsKICAgICAgICB9CiAgICB9CgogICAgQ29ubmVjdGlvbnMgewog
ICAgICAgIHRhcmdldDogcHVsc2VBdWRpby5pdGVtCiAgICAgICAgaWdub3JlVW5rbm93blNpZ25h
bHM6IHRydWUgLy8gUGxhc21hLVBBIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUKICAgICAgICBmdW5j
dGlvbiBvblN0cmVhbXNDaGFuZ2VkKCkgewogICAgICAgICAgICB0YXNrLnVwZGF0ZUF1ZGlvU3Ry
ZWFtcyh7ZGVsYXk6IHRydWV9KQogICAgICAgIH0KICAgIH0KCiAgICBDb21wb25lbnQgewogICAg
ICAgIGlkOiB0YXNrSW5pdENvbXBvbmVudAoKICAgICAgICBUaW1lciB7CiAgICAgICAgICAgIGlk
OiB0aW1lcgoKICAgICAgICAgICAgaW50ZXJ2YWw6IFBsYXNtYUNvcmUuVW5pdHMubG9uZ0R1cmF0
aW9uCiAgICAgICAgICAgIHJlcGVhdDogZmFsc2UKCiAgICAgICAgICAgIG9uVHJpZ2dlcmVkOiB7
CiAgICAgICAgICAgICAgICBwYXJlbnQuaG92ZXJFbmFibGVkID0gdHJ1ZTsKCiAgICAgICAgICAg
ICAgICBpZiAocGFyZW50LmlzV2luZG93KSB7CiAgICAgICAgICAgICAgICAgICAgdGFza3NNb2Rl
bC5yZXF1ZXN0UHVibGlzaERlbGVnYXRlR2VvbWV0cnkocGFyZW50Lm1vZGVsSW5kZXgoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgYmFja2VuZC5nbG9iYWxSZWN0KHBhcmVudCksIHBhcmVudCk7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGltZXIuZGVzdHJveSgpOwogICAg
ICAgICAgICB9CgogICAgICAgICAgICBDb21wb25lbnQub25Db21wbGV0ZWQ6IHRpbWVyLnN0YXJ0
KCkKICAgICAgICB9CiAgICB9CgogICAgUGxhc21hQ29yZS5GcmFtZVN2Z0l0ZW0gewogICAgICAg
IGlkOiBmcmFtZQoKICAgICAgICBhbmNob3JzIHsKICAgICAgICAgICAgZmlsbDogcGFyZW50Cgog
ICAgICAgICAgICB0b3BNYXJnaW46ICghdGFza3MudmVydGljYWwgJiYgdGFza0xpc3Qucm93cyA+
IDEpID8gUGxhc21hQ29yZS5Vbml0cy5zbWFsbFNwYWNpbmcgLyA0IDogMAogICAgICAgICAgICBi
b3R0b21NYXJnaW46ICghdGFza3MudmVydGljYWwgJiYgdGFza0xpc3Qucm93cyA+IDEpID8gUGxh
c21hQ29yZS5Vbml0cy5zbWFsbFNwYWNpbmcgLyA0IDogMAogICAgICAgICAgICBsZWZ0TWFyZ2lu
OiAoKGluUG9wdXAgfHwgdGFza3MudmVydGljYWwpICYmIHRhc2tMaXN0LmNvbHVtbnMgPiAxKSA/
IFBsYXNtYUNvcmUuVW5pdHMuc21hbGxTcGFjaW5nIC8gNCA6IDAKICAgICAgICAgICAgcmlnaHRN
YXJnaW46ICgoaW5Qb3B1cCB8fCB0YXNrcy52ZXJ0aWNhbCkgJiYgdGFza0xpc3QuY29sdW1ucyA+
IDEpID8gUGxhc21hQ29yZS5Vbml0cy5zbWFsbFNwYWNpbmcgLyA0IDogMAogICAgICAgIH0KCiAg
ICAgICAgaW1hZ2VQYXRoOiAid2lkZ2V0cy90YXNrcyIKICAgICAgICBwcm9wZXJ0eSBib29sIGlz
SG92ZXJlZDogdGFzay5oaWdobGlnaHRlZCAmJiBwbGFzbW9pZC5jb25maWd1cmF0aW9uLnRhc2tI
b3ZlckVmZmVjdAogICAgICAgIHByb3BlcnR5IHN0cmluZyBiYXNlUHJlZml4OiAibm9ybWFsIgog
ICAgICAgIHByZWZpeDogaXNIb3ZlcmVkID8gVGFza1Rvb2xzLnRhc2tQcmVmaXhIb3ZlcmVkKGJh
c2VQcmVmaXgpIDogVGFza1Rvb2xzLnRhc2tQcmVmaXgoYmFzZVByZWZpeCkKCiAgICAgICAgUGxh
c21hQ29yZS5Ub29sVGlwQXJlYSB7CiAgICAgICAgICAgIGlkOiB0b29sVGlwQXJlYQoKICAgICAg
ICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKICAgICAgICAgICAgbG9jYXRpb246IHBsYXNtb2lk
LmxvY2F0aW9uCgogICAgICAgICAgICBlbmFibGVkOiBwbGFzbW9pZC5jb25maWd1cmF0aW9uLnNo
b3dUb29sVGlwcwogICAgICAgICAgICBhY3RpdmU6ICFpblBvcHVwICYmICFncm91cERpYWxvZy52
aXNpYmxlCiAgICAgICAgICAgIGludGVyYWN0aXZlOiBtb2RlbC5Jc1dpbmRvdyA9PT0gdHJ1ZSB8
fCBtYWluSXRlbS5oYXNQbGF5ZXIKCiAgICAgICAgICAgIG1haW5JdGVtOiAobW9kZWwuSXNXaW5k
b3cgPT09IHRydWUpID8gb3BlbldpbmRvd1Rvb2xUaXBEZWxlZ2F0ZSA6IHBpbm5lZEFwcFRvb2xU
aXBEZWxlZ2F0ZQoKICAgICAgICAgICAgb25Db250YWluc01vdXNlQ2hhbmdlZDogIHsKICAgICAg
ICAgICAgICAgIGlmIChjb250YWluc01vdXNlKSB7CiAgICAgICAgICAgICAgICAgICAgbWFpbkl0
ZW0ucGFyZW50VGFzayA9IHRhc2s7CiAgICAgICAgICAgICAgICAgICAgbWFpbkl0ZW0ucm9vdElu
ZGV4ID0gdGFza3NNb2RlbC5tYWtlTW9kZWxJbmRleChpdGVtSW5kZXgsIC0xKTsKCiAgICAgICAg
ICAgICAgICAgICAgbWFpbkl0ZW0uYXBwTmFtZSA9IFF0LmJpbmRpbmcoKCkgPT4gbW9kZWwuQXBw
TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgbWFpbkl0ZW0ucGlkUGFyZW50ID0gUXQuYmluZGlu
ZygoKSA9PiBtb2RlbC5BcHBQaWQgIT09IHVuZGVmaW5lZCA/IG1vZGVsLkFwcFBpZCA6IDApOwog
ICAgICAgICAgICAgICAgICAgIG1haW5JdGVtLndpbmRvd3MgPSBRdC5iaW5kaW5nKCgpID0+IG1v
ZGVsLldpbklkTGlzdCk7CiAgICAgICAgICAgICAgICAgICAgbWFpbkl0ZW0uaXNHcm91cCA9IFF0
LmJpbmRpbmcoKCkgPT4gbW9kZWwuSXNHcm91cFBhcmVudCA9PT0gdHJ1ZSk7CiAgICAgICAgICAg
ICAgICAgICAgbWFpbkl0ZW0uaWNvbiA9IFF0LmJpbmRpbmcoKCkgPT4gbW9kZWwuZGVjb3JhdGlv
bik7CiAgICAgICAgICAgICAgICAgICAgbWFpbkl0ZW0ubGF1bmNoZXJVcmwgPSBRdC5iaW5kaW5n
KCgpID0+IG1vZGVsLkxhdW5jaGVyVXJsV2l0aG91dEljb24pOwogICAgICAgICAgICAgICAgICAg
IG1haW5JdGVtLmlzTGF1bmNoZXIgPSBRdC5iaW5kaW5nKCgpID0+IG1vZGVsLklzTGF1bmNoZXIg
PT09IHRydWUpOwogICAgICAgICAgICAgICAgICAgIG1haW5JdGVtLmlzTWluaW1pemVkUGFyZW50
ID0gUXQuYmluZGluZygoKSA9PiBtb2RlbC5Jc01pbmltaXplZCA9PT0gdHJ1ZSk7CiAgICAgICAg
ICAgICAgICAgICAgbWFpbkl0ZW0uZGlzcGxheVBhcmVudCA9IFF0LmJpbmRpbmcoKCkgPT4gbW9k
ZWwuZGlzcGxheSk7CiAgICAgICAgICAgICAgICAgICAgbWFpbkl0ZW0uZ2VuZXJpY05hbWUgPSBR
dC5iaW5kaW5nKCgpID0+IG1vZGVsLkdlbmVyaWNOYW1lKTsKICAgICAgICAgICAgICAgICAgICBt
YWluSXRlbS52aXJ0dWFsRGVza3RvcFBhcmVudCA9IFF0LmJpbmRpbmcoKCkgPT4KICAgICAgICAg
ICAgICAgICAgICAgICAgKG1vZGVsLlZpcnR1YWxEZXNrdG9wcyAhPT0gdW5kZWZpbmVkICYmIG1v
ZGVsLlZpcnR1YWxEZXNrdG9wcy5sZW5ndGggPiAwKSA/IG1vZGVsLlZpcnR1YWxEZXNrdG9wcyA6
IFswXSk7CiAgICAgICAgICAgICAgICAgICAgbWFpbkl0ZW0uaXNPbkFsbFZpcnR1YWxEZXNrdG9w
c1BhcmVudCA9IFF0LmJpbmRpbmcoKCkgPT4gbW9kZWwuSXNPbkFsbFZpcnR1YWxEZXNrdG9wcyA9
PT0gdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgbWFpbkl0ZW0uYWN0aXZpdGllc1BhcmVudCA9
IFF0LmJpbmRpbmcoKCkgPT4gbW9kZWwuQWN0aXZpdGllcyk7CgogICAgICAgICAgICAgICAgICAg
IG1haW5JdGVtLnNtYXJ0TGF1bmNoZXJDb3VudFZpc2libGUgPSBRdC5iaW5kaW5nKCgpID0+IHRh
c2suc21hcnRMYXVuY2hlckl0ZW0gJiYgdGFzay5zbWFydExhdW5jaGVySXRlbS5jb3VudFZpc2li
bGUpOwogICAgICAgICAgICAgICAgICAgIG1haW5JdGVtLnNtYXJ0TGF1bmNoZXJDb3VudCA9IFF0
LmJpbmRpbmcoKCkgPT4gbWFpbkl0ZW0uc21hcnRMYXVuY2hlckNvdW50VmlzaWJsZSA/IHRhc2su
c21hcnRMYXVuY2hlckl0ZW0uY291bnQgOiAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfQogICAgICAgIH0KICAgIH0KCiAgICBMb2FkZXIgewogICAgICAgIGFuY2hvcnMuZmlsbDog
ZnJhbWUKICAgICAgICBhc3luY2hyb25vdXM6IHRydWUKICAgICAgICBzb3VyY2U6ICJUYXNrUHJv
Z3Jlc3NPdmVybGF5LnFtbCIKICAgICAgICBhY3RpdmU6IHRhc2suaXNXaW5kb3cgJiYgdGFzay5z
bWFydExhdW5jaGVySXRlbSAmJiB0YXNrLnNtYXJ0TGF1bmNoZXJJdGVtLnByb2dyZXNzVmlzaWJs
ZQogICAgfQoKICAgIEl0ZW0gewogICAgICAgIGlkOiBpY29uQm94CgogICAgICAgIGFuY2hvcnMg
ewogICAgICAgICAgICBsZWZ0OiBwYXJlbnQubGVmdAogICAgICAgICAgICBsZWZ0TWFyZ2luOiBh
ZGp1c3RNYXJnaW4odHJ1ZSwgcGFyZW50LndpZHRoLCB0YXNrRnJhbWUubWFyZ2lucy5sZWZ0KQog
ICAgICAgICAgICB0b3A6IHBhcmVudC50b3AKICAgICAgICAgICAgdG9wTWFyZ2luOiBhZGp1c3RN
YXJnaW4oZmFsc2UsIHBhcmVudC5oZWlnaHQsIHRhc2tGcmFtZS5tYXJnaW5zLnRvcCkKICAgICAg
ICB9CgogICAgICAgIHdpZHRoOiBoZWlnaHQKICAgICAgICBoZWlnaHQ6IChwYXJlbnQuaGVpZ2h0
IC0gYWRqdXN0TWFyZ2luKGZhbHNlLCBwYXJlbnQuaGVpZ2h0LCB0YXNrRnJhbWUubWFyZ2lucy50
b3ApCiAgICAgICAgICAgIC0gYWRqdXN0TWFyZ2luKGZhbHNlLCBwYXJlbnQuaGVpZ2h0LCB0YXNr
RnJhbWUubWFyZ2lucy5ib3R0b20pKQoKICAgICAgICBmdW5jdGlvbiBhZGp1c3RNYXJnaW4odmVy
dCwgc2l6ZSwgbWFyZ2luKSB7CiAgICAgICAgICAgIGlmICghc2l6ZSkgewogICAgICAgICAgICAg
ICAgcmV0dXJuIG1hcmdpbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIG1hcmdpbnMg
PSB2ZXJ0ID8gTGF5b3V0TWFuYWdlci5ob3Jpem9udGFsTWFyZ2lucygpIDogTGF5b3V0TWFuYWdl
ci52ZXJ0aWNhbE1hcmdpbnMoKTsKCiAgICAgICAgICAgIGlmICgoc2l6ZSAtIG1hcmdpbnMpIDwg
UGxhc21hQ29yZS5Vbml0cy5pY29uU2l6ZXMuc21hbGwpIHsKICAgICAgICAgICAgICAgIHJldHVy
biBNYXRoLmNlaWwoKG1hcmdpbiAqIChQbGFzbWFDb3JlLlVuaXRzLmljb25TaXplcy5zbWFsbCAv
IHNpemUpKSAvIDIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbWFyZ2luOwog
ICAgICAgIH0KCiAgICAgICAgLy93aWR0aDogaW5Qb3B1cCA/IFBsYXNtYUNvcmUuVW5pdHMuaWNv
blNpemVzLnNtYWxsIDogTWF0aC5taW4oaGVpZ2h0LCBwYXJlbnQud2lkdGggLSBMYXlvdXRNYW5h
Z2VyLmhvcml6b250YWxNYXJnaW5zKCkpCgogICAgICAgIFBsYXNtYUNvcmUuSWNvbkl0ZW0gewog
ICAgICAgICAgICBpZDogaWNvbgoKICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKCiAg
ICAgICAgICAgIGFjdGl2ZTogdGFzay5oaWdobGlnaHRlZAogICAgICAgICAgICBlbmFibGVkOiB0
cnVlCiAgICAgICAgICAgIHVzZXNQbGFzbWFUaGVtZTogZmFsc2UKCiAgICAgICAgICAgIHNvdXJj
ZTogbW9kZWwuZGVjb3JhdGlvbgogICAgICAgIH0KCiAgICAgICAgTG9hZGVyIHsKICAgICAgICAg
ICAgLy8gUVRCVUcgYW5jaG9ycy5maWxsIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIExvYWRlciBk
b2Vzbid0IHJlbGlhYmx5IHdvcmsgb24gY3JlYXRpb246CiAgICAgICAgICAgIC8vIGhhdmUgYSB3
aW5kb3cgd2l0aCBhIGJhZGdlLCBtb3ZlIGl0IGZyb20gb25lIHNjcmVlbiB0byBhbm90aGVyLCB0
aGUgbmV3IHRhc2sgaXRlbSBvbiB0aGUKICAgICAgICAgICAgLy8gb3RoZXIgc2NyZWVuIHdpbGwg
bm93IGhhdmUgYSBnbGl0Y2hlZCBvdXQgYmFkZ2UgbWFzay4KICAgICAgICAgICAgd2lkdGg6IHBh
cmVudC53aWR0aAogICAgICAgICAgICBoZWlnaHQ6IHBhcmVudC5oZWlnaHQKICAgICAgICAgICAg
YXN5bmNocm9ub3VzOiB0cnVlCiAgICAgICAgICAgIHNvdXJjZTogIlRhc2tCYWRnZU92ZXJsYXku
cW1sIgogICAgICAgICAgICBhY3RpdmU6IGhlaWdodCA+PSBQbGFzbWFDb3JlLlVuaXRzLmljb25T
aXplcy5zbWFsbAogICAgICAgICAgICAgICAgICAgICYmIHRhc2suc21hcnRMYXVuY2hlckl0ZW0g
JiYgdGFzay5zbWFydExhdW5jaGVySXRlbS5jb3VudFZpc2libGUKICAgICAgICB9CgogICAgICAg
IHN0YXRlczogWwogICAgICAgICAgICAvLyBVc2luZyBhIHN0YXRlIHRyYW5zaXRpb24gYXZvaWRz
IGEgYmluZGluZyBsb29wIGJldHdlZW4gbGFiZWwudmlzaWJsZSBhbmQKICAgICAgICAgICAgLy8g
dGhlIHRleHQgbGFiZWwgbWFyZ2luLCB3aGljaCBkZXJpdmVzIGZyb20gdGhlIGljb24gd2lkdGgu
CiAgICAgICAgICAgIFN0YXRlIHsKICAgICAgICAgICAgICAgIG5hbWU6ICJzdGFuZGFsb25lIgog
ICAgICAgICAgICAgICAgd2hlbjogIWxhYmVsLnZpc2libGUKCiAgICAgICAgICAgICAgICBBbmNo
b3JDaGFuZ2VzIHsKICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGljb25Cb3gKICAgICAgICAg
ICAgICAgICAgICBhbmNob3JzLmxlZnQ6IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgIGFu
Y2hvcnMuaG9yaXpvbnRhbENlbnRlcjogcGFyZW50Lmhvcml6b250YWxDZW50ZXIKICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICBQcm9wZXJ0eUNoYW5nZXMgewogICAgICAgICAgICAg
ICAgICAgIHRhcmdldDogaWNvbkJveAogICAgICAgICAgICAgICAgICAgIGFuY2hvcnMubGVmdE1h
cmdpbjogMAogICAgICAgICAgICAgICAgICAgIHdpZHRoOiBwYXJlbnQud2lkdGggLSBhZGp1c3RN
YXJnaW4odHJ1ZSwgdGFzay53aWR0aCwgdGFza0ZyYW1lLm1hcmdpbnMubGVmdCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYWRqdXN0TWFyZ2luKHRydWUsIHRhc2su
d2lkdGgsIHRhc2tGcmFtZS5tYXJnaW5zLnJpZ2h0KQogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgXQoKICAgICAgICBMb2FkZXIgewogICAgICAgICAgICBhbmNob3JzLmZp
bGw6IHBhcmVudAoKICAgICAgICAgICAgYWN0aXZlOiBtb2RlbC5Jc1N0YXJ0dXAgPT09IHRydWUK
ICAgICAgICAgICAgc291cmNlQ29tcG9uZW50OiBidXN5SW5kaWNhdG9yCiAgICAgICAgfQoKICAg
ICAgICBDb21wb25lbnQgewogICAgICAgICAgICBpZDogYnVzeUluZGljYXRvcgoKICAgICAgICAg
ICAgUGxhc21hQ29tcG9uZW50cy5CdXN5SW5kaWNhdG9yIHsgYW5jaG9ycy5maWxsOiBwYXJlbnQg
fQogICAgICAgIH0KICAgIH0KCiAgICBMb2FkZXIgewogICAgICAgIGlkOiBhdWRpb1N0cmVhbUlj
b25Mb2FkZXIKCiAgICAgICAgcmVhZG9ubHkgcHJvcGVydHkgYm9vbCBzaG93bjogaXRlbSAmJiBp
dGVtLnZpc2libGUKICAgICAgICByZWFkb25seSBwcm9wZXJ0eSB2YXIgaW5kaWNhdG9yU2NhbGU6
IDEuMgoKICAgICAgICBzb3VyY2U6ICJBdWRpb1N0cmVhbS5xbWwiCiAgICAgICAgd2lkdGg6IE1h
dGgubWluKE1hdGgubWluKGljb25Cb3gud2lkdGgsIGljb25Cb3guaGVpZ2h0KSAqIDAuNCwgUGxh
c21hQ29yZS5Vbml0cy5pY29uU2l6ZXMuc21hbGxNZWRpdW0pCiAgICAgICAgaGVpZ2h0OiB3aWR0
aAoKICAgICAgICBhbmNob3JzIHsKICAgICAgICAgICAgcmlnaHQ6IGZyYW1lLnJpZ2h0CiAgICAg
ICAgICAgIHRvcDogZnJhbWUudG9wCiAgICAgICAgICAgIHJpZ2h0TWFyZ2luOiB0YXNrRnJhbWUu
bWFyZ2lucy5yaWdodAogICAgICAgICAgICB0b3BNYXJnaW46IE1hdGgucm91bmQodGFza0ZyYW1l
Lm1hcmdpbnMudG9wICogaW5kaWNhdG9yU2NhbGUpCiAgICAgICAgfQogICAgfQoKICAgIFBsYXNt
YUNvbXBvbmVudHMuTGFiZWwgewogICAgICAgIGlkOiBsYWJlbAoKICAgICAgICB2aXNpYmxlOiAo
aW5Qb3B1cCB8fCAhaWNvbnNPbmx5ICYmIG1vZGVsLklzTGF1bmNoZXIgIT09IHRydWUKICAgICAg
ICAgICAgJiYgKHBhcmVudC53aWR0aCAtIGljb25Cb3guaGVpZ2h0IC0gUGxhc21hQ29yZS5Vbml0
cy5zbWFsbFNwYWNpbmcpID49ICh0aGVtZS5tU2l6ZSh0aGVtZS5kZWZhdWx0Rm9udCkud2lkdGgg
KiBMYXlvdXRNYW5hZ2VyLm1pbmltdW1NQ29sdW1ucygpKSkKCiAgICAgICAgYW5jaG9ycyB7CiAg
ICAgICAgICAgIGZpbGw6IHBhcmVudAogICAgICAgICAgICBsZWZ0TWFyZ2luOiB0YXNrRnJhbWUu
bWFyZ2lucy5sZWZ0ICsgaWNvbkJveC53aWR0aCArIFBsYXNtYUNvcmUuVW5pdHMuc21hbGxTcGFj
aW5nCiAgICAgICAgICAgIHRvcE1hcmdpbjogdGFza0ZyYW1lLm1hcmdpbnMudG9wCiAgICAgICAg
ICAgIHJpZ2h0TWFyZ2luOiB0YXNrRnJhbWUubWFyZ2lucy5yaWdodCArIChhdWRpb1N0cmVhbUlj
b25Mb2FkZXIuc2hvd24gPyAoYXVkaW9TdHJlYW1JY29uTG9hZGVyLndpZHRoICsgUGxhc21hQ29y
ZS5Vbml0cy5zbWFsbFNwYWNpbmcpIDogMCkKICAgICAgICAgICAgYm90dG9tTWFyZ2luOiB0YXNr
RnJhbWUubWFyZ2lucy5ib3R0b20KICAgICAgICB9CgogICAgICAgIHRleHQ6IG1vZGVsLmRpc3Bs
YXkKICAgICAgICB3cmFwTW9kZTogKG1heGltdW1MaW5lQ291bnQgPT0gMSkgPyBUZXh0Lk5vV3Jh
cCA6IFRleHQuV3JhcAogICAgICAgIGVsaWRlOiBUZXh0LkVsaWRlUmlnaHQKICAgICAgICB0ZXh0
Rm9ybWF0OiBUZXh0LlBsYWluVGV4dAogICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiBUZXh0LkFs
aWduVkNlbnRlcgogICAgICAgIG1heGltdW1MaW5lQ291bnQ6IHBsYXNtb2lkLmNvbmZpZ3VyYXRp
b24ubWF4VGV4dExpbmVzIHx8IHVuZGVmaW5lZAogICAgfQoKICAgIHN0YXRlczogWwogICAgICAg
IFN0YXRlIHsKICAgICAgICAgICAgbmFtZTogImxhdW5jaGVyIgogICAgICAgICAgICB3aGVuOiBt
b2RlbC5Jc0xhdW5jaGVyID09PSB0cnVlCgogICAgICAgICAgICBQcm9wZXJ0eUNoYW5nZXMgewog
ICAgICAgICAgICAgICAgdGFyZ2V0OiBmcmFtZQogICAgICAgICAgICAgICAgYmFzZVByZWZpeDog
IiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgU3RhdGUgewogICAgICAgICAgICBu
YW1lOiAiYXR0ZW50aW9uIgogICAgICAgICAgICB3aGVuOiBtb2RlbC5Jc0RlbWFuZGluZ0F0dGVu
dGlvbiA9PT0gdHJ1ZSB8fCAodGFzay5zbWFydExhdW5jaGVySXRlbSAmJiB0YXNrLnNtYXJ0TGF1
bmNoZXJJdGVtLnVyZ2VudCkKCiAgICAgICAgICAgIFByb3BlcnR5Q2hhbmdlcyB7CiAgICAgICAg
ICAgICAgICB0YXJnZXQ6IGZyYW1lCiAgICAgICAgICAgICAgICBiYXNlUHJlZml4OiAiYXR0ZW50
aW9uIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBTdGF0ZSB7CiAgICAgICAgICAg
IG5hbWU6ICJtaW5pbWl6ZWQiCiAgICAgICAgICAgIHdoZW46IG1vZGVsLklzTWluaW1pemVkID09
PSB0cnVlCgogICAgICAgICAgICBQcm9wZXJ0eUNoYW5nZXMgewogICAgICAgICAgICAgICAgdGFy
Z2V0OiBmcmFtZQogICAgICAgICAgICAgICAgYmFzZVByZWZpeDogIm1pbmltaXplZCIKICAgICAg
ICAgICAgfQogICAgICAgIH0sCiAgICAgICAgU3RhdGUgewogICAgICAgICAgICBuYW1lOiAiYWN0
aXZlIgogICAgICAgICAgICB3aGVuOiBtb2RlbC5Jc0FjdGl2ZSA9PT0gdHJ1ZQoKICAgICAgICAg
ICAgUHJvcGVydHlDaGFuZ2VzIHsKICAgICAgICAgICAgICAgIHRhcmdldDogZnJhbWUKICAgICAg
ICAgICAgICAgIGJhc2VQcmVmaXg6ICJmb2N1cyIKICAgICAgICAgICAgfQogICAgICAgIH0KICAg
IF0KCiAgICBDb21wb25lbnQub25Db21wbGV0ZWQ6IHsKICAgICAgICBpZiAoIWluUG9wdXAgJiYg
bW9kZWwuSXNXaW5kb3cgPT09IHRydWUpIHsKICAgICAgICAgICAgdmFyIGNvbXBvbmVudCA9IFF0
LmNyZWF0ZUNvbXBvbmVudCgiR3JvdXBFeHBhbmRlck92ZXJsYXkucW1sIik7CiAgICAgICAgICAg
IGNvbXBvbmVudC5jcmVhdGVPYmplY3QodGFzayk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWlu
UG9wdXAgJiYgbW9kZWwuSXNXaW5kb3cgIT09IHRydWUpIHsKICAgICAgICAgICAgdGFza0luaXRD
b21wb25lbnQuY3JlYXRlT2JqZWN0KHRhc2spOwogICAgICAgIH0KCiAgICAgICAgdXBkYXRlQXVk
aW9TdHJlYW1zKHtkZWxheTogZmFsc2V9KQogICAgfQp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>142820</attachid>
            <date>2021-10-24 13:47:23 +0000</date>
            <delta_ts>2021-10-25 01:44:52 +0000</delta_ts>
            <desc>ToolTipDelegate.qml</desc>
            <filename>ToolTipDelegate.qml</filename>
            <type>text/x-qml</type>
            <size>5734</size>
            <attacher name="Fushan Wen">qydwhotmail</attacher>
            
              <data encoding="base64">LyoKICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMTMgU2ViYXN0aWFuIEvDvGdsZXIgPHNl
YmFzQGtkZS5vcmc+CiAgICBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDE0IE1hcnRpbiBHcsOk
w59saW4gPG1ncmFlc3NsaW5Aa2RlLm9yZz4KICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIw
MTYgS2FpIFV3ZSBCcm91bGlrIDxrZGVAcHJpdmF0LmJyb3VsaWsuZGU+CiAgICBTUERYLUZpbGVD
b3B5cmlnaHRUZXh0OiAyMDE3IFJvbWFuIEdpbGcgPHN1YmRpZmZAZ21haWwuY29tPgoKICAgIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMC1vci1sYXRlcgoqLwoKaW1wb3J0IFF0UXVp
Y2sgMi4wCmltcG9ydCBRdFF1aWNrLkxheW91dHMgMS4xCmltcG9ydCBRdFF1aWNrLldpbmRvdyAy
LjAKaW1wb3J0IFF0R3JhcGhpY2FsRWZmZWN0cyAxLjAKaW1wb3J0IFF0UW1sLk1vZGVscyAyLjIK
CmltcG9ydCBvcmcua2RlLnBsYXNtYS5jb3JlIDIuMCBhcyBQbGFzbWFDb3JlCmltcG9ydCBvcmcu
a2RlLnBsYXNtYS5jb21wb25lbnRzIDMuMCBhcyBQbGFzbWFDb21wb25lbnRzMwppbXBvcnQgb3Jn
LmtkZS5rcXVpY2tjb250cm9sc2FkZG9ucyAyLjAgYXMgS1F1aWNrQ29udHJvbHNBZGRvbnMKCmlt
cG9ydCBvcmcua2RlLnRhc2ttYW5hZ2VyIDAuMSBhcyBUYXNrTWFuYWdlcgoKUm93TGF5b3V0IHsK
ICAgIGlkOiB0b29sVGlwRGVsZWdhdGUKCiAgICBwcm9wZXJ0eSBJdGVtIHBhcmVudFRhc2sKICAg
IHByb3BlcnR5IHZhciByb290SW5kZXgKICAgIC8vIGhhc1Jvb3RJbmRleCBpcyBuZWVkZWQgdG8g
YXZvaWQgdW5uZWNlc3NhcnkgcmVldmFsdWF0aW9uIG9mIG1vZGVsIHByb3BlcnR5IGluIERlbGVn
YXRlTW9kZWwsCiAgICAvLyBiZWNhdXNlICEhdG9vbFRpcERlbGVnYXRlLnJvb3RJbmRleCB3aWxs
IG5vdCB3b3JrIGFzIGV4cGVjdGVkLgogICAgcmVhZG9ubHkgcHJvcGVydHkgYm9vbCBoYXNSb290
SW5kZXg6ICEhcm9vdEluZGV4CgogICAgcHJvcGVydHkgc3RyaW5nIGFwcE5hbWUKICAgIHByb3Bl
cnR5IGludCBwaWRQYXJlbnQKICAgIHByb3BlcnR5IGJvb2wgaXNHcm91cAoKICAgIHByb3BlcnR5
IHZhciB3aW5kb3dzCiAgICByZWFkb25seSBwcm9wZXJ0eSBib29sIGlzV2luOiB3aW5kb3dzICE9
PSB1bmRlZmluZWQKCiAgICBwcm9wZXJ0eSB2YXJpYW50IGljb24KICAgIHByb3BlcnR5IHVybCBs
YXVuY2hlclVybAogICAgcHJvcGVydHkgYm9vbCBpc0xhdW5jaGVyCiAgICBwcm9wZXJ0eSBib29s
IGlzTWluaW1pemVkUGFyZW50CgogICAgLy8gTmVlZGVkIGZvciBnZW5lcmF0ZVN1YnRleHQoKQog
ICAgcHJvcGVydHkgc3RyaW5nIGRpc3BsYXlQYXJlbnQKICAgIHByb3BlcnR5IHN0cmluZyBnZW5l
cmljTmFtZQogICAgcHJvcGVydHkgdmFyIHZpcnR1YWxEZXNrdG9wUGFyZW50CiAgICBwcm9wZXJ0
eSBib29sIGlzT25BbGxWaXJ0dWFsRGVza3RvcHNQYXJlbnQKICAgIHByb3BlcnR5IHZhciBhY3Rp
dml0aWVzUGFyZW50CiAgICAvLwogICAgcHJvcGVydHkgYm9vbCBzbWFydExhdW5jaGVyQ291bnRW
aXNpYmxlCiAgICBwcm9wZXJ0eSBpbnQgc21hcnRMYXVuY2hlckNvdW50CgogICAgcmVhZG9ubHkg
cHJvcGVydHkgYm9vbCBpc1ZlcnRpY2FsUGFuZWw6IHBsYXNtb2lkLmZvcm1GYWN0b3IgPT09IFBs
YXNtYUNvcmUuVHlwZXMuVmVydGljYWwKCiAgICByZWFkb25seSBwcm9wZXJ0eSBzdHJpbmcgbXBy
aXNTb3VyY2VOYW1lOiBtcHJpczJTb3VyY2Uuc291cmNlTmFtZUZvckxhdW5jaGVyVXJsKGxhdW5j
aGVyVXJsLCBwaWRQYXJlbnQpCiAgICByZWFkb25seSBwcm9wZXJ0eSB2YXIgcGxheWVyRGF0YTog
bXByaXNTb3VyY2VOYW1lICE9ICIiID8gbXByaXMyU291cmNlLmRhdGFbbXByaXNTb3VyY2VOYW1l
XSA6IDAKICAgIHJlYWRvbmx5IHByb3BlcnR5IGJvb2wgaGFzUGxheWVyOiAhIW1wcmlzU291cmNl
TmFtZSAmJiAhIXBsYXllckRhdGEKCiAgICBMYXlvdXQubWluaW11bVdpZHRoOiBpbXBsaWNpdFdp
ZHRoCiAgICBMYXlvdXQubWF4aW11bVdpZHRoOiBMYXlvdXQubWluaW11bVdpZHRoCgogICAgTGF5
b3V0Lm1pbmltdW1IZWlnaHQ6IGltcGxpY2l0SGVpZ2h0CiAgICBMYXlvdXQubWF4aW11bUhlaWdo
dDogTGF5b3V0Lm1pbmltdW1IZWlnaHQKCiAgICBMYXlvdXRNaXJyb3JpbmcuZW5hYmxlZDogUXQu
YXBwbGljYXRpb24ubGF5b3V0RGlyZWN0aW9uID09PSBRdC5SaWdodFRvTGVmdAogICAgTGF5b3V0
TWlycm9yaW5nLmNoaWxkcmVuSW5oZXJpdDogdHJ1ZQoKICAgIHByb3BlcnR5IGludCB0ZXh0V2lk
dGg6IFBsYXNtYUNvcmUuVGhlbWUubVNpemUoUGxhc21hQ29yZS5UaGVtZS5kZWZhdWx0Rm9udCku
d2lkdGggKiAyMAoKICAgIExvYWRlciB7CiAgICAgICAgaWQ6IGNvbnRlbnRJdGVtCgogICAgICAg
IGFjdGl2ZTogdG9vbFRpcERlbGVnYXRlLnJvb3RJbmRleCAhPT0gdW5kZWZpbmVkCiAgICAgICAg
YXN5bmNocm9ub3VzOiB0cnVlCgogICAgICAgIHNvdXJjZUNvbXBvbmVudDogaXNHcm91cCA/IGdy
b3VwVG9vbFRpcCA6IHNpbmdsZVRvb2x0aXAKCiAgICAgICAgQ29tcG9uZW50IHsKICAgICAgICAg
ICAgaWQ6IHNpbmdsZVRvb2x0aXAKCiAgICAgICAgICAgIFRvb2xUaXBJbnN0YW5jZSB7CiAgICAg
ICAgICAgICAgICBzdWJtb2RlbEluZGV4OiB0b29sVGlwRGVsZWdhdGUucm9vdEluZGV4CiAgICAg
ICAgICAgIH0KICAgICAgICB9CgogICAgICAgIENvbXBvbmVudCB7CiAgICAgICAgICAgIGlkOiBn
cm91cFRvb2xUaXAKCiAgICAgICAgICAgIFBsYXNtYUNvbXBvbmVudHMzLlNjcm9sbFZpZXcgewog
ICAgICAgICAgICAgICAgaW1wbGljaXRXaWR0aDogaXNWZXJ0aWNhbFBhbmVsID8gZ3JvdXBUb29s
VGlwTGlzdFZpZXcuaXRlbVdpZHRoICsgbGVmdFBhZGRpbmcgKyByaWdodFBhZGRpbmcKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChncm91cFRvb2xUaXBM
aXN0Vmlldy5jb3VudCA+IGdyb3VwVG9vbFRpcExpc3RWaWV3Lm1heFJvd0NvdW50ID8gU2NyZWVu
LmRlc2t0b3BBdmFpbGFibGVXaWR0aCAtIDIgKiBQbGFzbWFDb3JlLlVuaXRzLnNtYWxsU3BhY2lu
ZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiBncm91cFRvb2xUaXBMaXN0Vmlldy5pdGVtV2lkdGggKiBncm91cFRvb2xUaXBMaXN0Vmlldy5j
b3VudCArIGdyb3VwVG9vbFRpcExpc3RWaWV3LnNwYWNpbmcgKiAoZ3JvdXBUb29sVGlwTGlzdFZp
ZXcuY291bnQgLSAxKSkKICAgICAgICAgICAgICAgIGltcGxpY2l0SGVpZ2h0OiBpc1ZlcnRpY2Fs
UGFuZWwgPyAoZ3JvdXBUb29sVGlwTGlzdFZpZXcuY291bnQgPiBncm91cFRvb2xUaXBMaXN0Vmll
dy5tYXhSb3dDb3VudCA/IFNjcmVlbi5kZXNrdG9wQXZhaWxhYmxlSGVpZ2h0IC0gMiAqIFBsYXNt
YUNvcmUuVW5pdHMuc21hbGxTcGFjaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBncm91cFRvb2xUaXBMaXN0Vmlldy5pdGVtSGVpZ2h0
ICogZ3JvdXBUb29sVGlwTGlzdFZpZXcuY291bnQgKyBncm91cFRvb2xUaXBMaXN0Vmlldy5zcGFj
aW5nICogKGdyb3VwVG9vbFRpcExpc3RWaWV3LmNvdW50IC0gMSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ3JvdXBUb29sVGlwTGlzdFZpZXcuaXRl
bUhlaWdodCArIGJvdHRvbVBhZGRpbmcKCiAgICAgICAgICAgICAgICBMaXN0VmlldyB7CiAgICAg
ICAgICAgICAgICAgICAgaWQ6IGdyb3VwVG9vbFRpcExpc3RWaWV3CgogICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5IGludCBpdGVtV2lkdGg6IGN1cnJlbnRJdGVtID8gY3VycmVudEl0ZW0ud2lk
dGggOiAwCiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgaW50IGl0ZW1IZWlnaHQ6IGN1cnJl
bnRJdGVtID8gY3VycmVudEl0ZW0uaGVpZ2h0IDogMAogICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5IGludCBtYXhSb3dDb3VudDogTWF0aC5mbG9vcigoKGlzVmVydGljYWxQYW5lbCA/IFNjcmVl
bi5kZXNrdG9wQXZhaWxhYmxlSGVpZ2h0IDogU2NyZWVuLmRlc2t0b3BBdmFpbGFibGVXaWR0aCkg
KyBzcGFjaW5nKSAvICgoaXNWZXJ0aWNhbFBhbmVsID8gaXRlbUhlaWdodCA6IGl0ZW1XaWR0aCkg
KyBzcGFjaW5nKSkKCiAgICAgICAgICAgICAgICAgICAgbW9kZWw6IERlbGVnYXRlTW9kZWwgewog
ICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDogdG9vbFRpcERlbGVnYXRlLmhhc1Jvb3RJbmRl
eCA/IHRhc2tzTW9kZWwgOiBudWxsCgogICAgICAgICAgICAgICAgICAgICAgICByb290SW5kZXg6
IHRvb2xUaXBEZWxlZ2F0ZS5yb290SW5kZXgKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVn
YXRlOiBUb29sVGlwSW5zdGFuY2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9k
ZWxJbmRleDogdGFza3NNb2RlbC5tYWtlTW9kZWxJbmRleCh0b29sVGlwRGVsZWdhdGUucm9vdElu
ZGV4LnJvdywgaW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uOiBpc1ZlcnRpY2FsUGFuZWwg
PyBMaXN0Vmlldy5WZXJ0aWNhbCA6IExpc3RWaWV3Lkhvcml6b250YWwKICAgICAgICAgICAgICAg
ICAgICBzcGFjaW5nOiBQbGFzbWFDb3JlLlVuaXRzLmxhcmdlU3BhY2luZwogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIC8vIEhBQ0s6IG92ZXJjb21lIHRoZSBiaW5kaW5nIGxvb3Ag
d2FybmluZyAod2hpY2ggbWFrZXMgdGhlIGhlaWdodCBpbmNvcnJlY3Qgd2hlbiB0aGUgbW91c2Ug
bW92ZXMgZnJvbSBhIGdyb3VwZWQgdG9vbHRpcCB3aXRoIGEgc2Nyb2xsYmFyIHRvIGFub3RoZXIg
Z3JvdXBlZCB0b29sdGlwIHdpdGhvdXQgYSBzY3JvbGxiYXIpCiAgICAgICAgICAgICAgICBvbkJv
dHRvbVBhZGRpbmdDaGFuZ2VkOiBpbXBsaWNpdEhlaWdodCA9IFF0LmJpbmRpbmcoKCkgPT4gaXNW
ZXJ0aWNhbFBhbmVsID8gKGdyb3VwVG9vbFRpcExpc3RWaWV3LmNvdW50ID4gZ3JvdXBUb29sVGlw
TGlzdFZpZXcubWF4Um93Q291bnQgPyBTY3JlZW4uZGVza3RvcEF2YWlsYWJsZUhlaWdodCAtIDIg
KiBQbGFzbWFDb3JlLlVuaXRzLnNtYWxsU3BhY2luZwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogZ3JvdXBUb29sVGlwTGlzdFZpZXcuaXRlbUhlaWdodCAqIGdyb3Vw
VG9vbFRpcExpc3RWaWV3LmNvdW50ICsgZ3JvdXBUb29sVGlwTGlzdFZpZXcuc3BhY2luZyAqIChn
cm91cFRvb2xUaXBMaXN0Vmlldy5jb3VudCAtIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IGdyb3VwVG9vbFRpcExpc3RWaWV3Lml0ZW1IZWlnaHQgKyBib3R0b21QYWRkaW5n
KQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>142821</attachid>
            <date>2021-10-24 13:54:01 +0000</date>
            <delta_ts>2021-10-24 13:54:01 +0000</delta_ts>
            <desc>ToolTipInstance.qml</desc>
            <filename>ToolTipInstance.qml</filename>
            <type>text/x-qml</type>
            <size>18452</size>
            <attacher name="Fushan Wen">qydwhotmail</attacher>
            
              <data encoding="base64">LyoKICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMTMgU2ViYXN0aWFuIEvDvGdsZXIgPHNl
YmFzQGtkZS5vcmc+CiAgICBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDE0IE1hcnRpbiBHcsOk
w59saW4gPG1ncmFlc3NsaW5Aa2RlLm9yZz4KICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIw
MTYgS2FpIFV3ZSBCcm91bGlrIDxrZGVAcHJpdmF0LmJyb3VsaWsuZGU+CiAgICBTUERYLUZpbGVD
b3B5cmlnaHRUZXh0OiAyMDE3IFJvbWFuIEdpbGcgPHN1YmRpZmZAZ21haWwuY29tPgogICAgU1BE
WC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyMCBOYXRlIEdyYWhhbSA8bmF0ZUBrZGUub3JnPgoKICAg
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMC1vci1sYXRlcgoqLwoKaW1wb3J0IFF0
UXVpY2sgMi42CmltcG9ydCBRdFF1aWNrLkxheW91dHMgMS4xCmltcG9ydCBRdEdyYXBoaWNhbEVm
ZmVjdHMgMS4wCmltcG9ydCBRdFFtbC5Nb2RlbHMgMi4yCgppbXBvcnQgb3JnLmtkZS5wbGFzbWEu
Y29yZSAyLjAgYXMgUGxhc21hQ29yZQovLyBmb3IgSGlnaGxpZ2h0CmltcG9ydCBvcmcua2RlLnBs
YXNtYS5jb21wb25lbnRzIDIuMCBhcyBQbGFzbWFDb21wb25lbnRzCmltcG9ydCBvcmcua2RlLnBs
YXNtYS5jb21wb25lbnRzIDMuMCBhcyBQbGFzbWFDb21wb25lbnRzMwppbXBvcnQgb3JnLmtkZS5w
bGFzbWEuZXh0cmFzIDIuMCBhcyBQbGFzbWFFeHRyYXMKaW1wb3J0IG9yZy5rZGUua3F1aWNrY29u
dHJvbHNhZGRvbnMgMi4wIGFzIEtRdWlja0NvbnRyb2xzQWRkb25zCgpDb2x1bW5MYXlvdXQgewog
ICAgcHJvcGVydHkgdmFyIHN1Ym1vZGVsSW5kZXgKICAgIHByb3BlcnR5IGludCBmbGF0SW5kZXg6
IGlzR3JvdXAgJiYgaW5kZXggIT0gdW5kZWZpbmVkID8gaW5kZXggOiAwCgogICAgcmVhZG9ubHkg
cHJvcGVydHkgYm9vbCBwbGF5aW5nOiBoYXNQbGF5ZXIgJiYgcGxheWVyRGF0YS5QbGF5YmFja1N0
YXR1cyA9PT0gIlBsYXlpbmciCiAgICByZWFkb25seSBwcm9wZXJ0eSBib29sIGNhbkNvbnRyb2w6
IGhhc1BsYXllciAmJiBwbGF5ZXJEYXRhLkNhbkNvbnRyb2wKICAgIHJlYWRvbmx5IHByb3BlcnR5
IGJvb2wgY2FuUGxheTogaGFzUGxheWVyICYmIHBsYXllckRhdGEuQ2FuUGxheQogICAgcmVhZG9u
bHkgcHJvcGVydHkgYm9vbCBjYW5QYXVzZTogaGFzUGxheWVyICYmIHBsYXllckRhdGEuQ2FuUGF1
c2UKICAgIHJlYWRvbmx5IHByb3BlcnR5IGJvb2wgY2FuR29CYWNrOiBoYXNQbGF5ZXIgJiYgcGxh
eWVyRGF0YS5DYW5Hb1ByZXZpb3VzCiAgICByZWFkb25seSBwcm9wZXJ0eSBib29sIGNhbkdvTmV4
dDogaGFzUGxheWVyICYmIHBsYXllckRhdGEuQ2FuR29OZXh0CiAgICByZWFkb25seSBwcm9wZXJ0
eSBib29sIGNhblJhaXNlOiBoYXNQbGF5ZXIgJiYgcGxheWVyRGF0YS5DYW5SYWlzZQogICAgcmVh
ZG9ubHkgcHJvcGVydHkgdmFyIGN1cnJlbnRNZXRhZGF0YTogaGFzUGxheWVyID8gcGxheWVyRGF0
YS5NZXRhZGF0YSA6ICh7fSkKCiAgICByZWFkb25seSBwcm9wZXJ0eSBzdHJpbmcgdHJhY2s6IHsK
ICAgICAgICB2YXIgeGVzYW1UaXRsZSA9IGN1cnJlbnRNZXRhZGF0YVsieGVzYW06dGl0bGUiXQog
ICAgICAgIGlmICh4ZXNhbVRpdGxlKSB7CiAgICAgICAgICAgIHJldHVybiB4ZXNhbVRpdGxlOwog
ICAgICAgIH0KICAgICAgICAvLyBpZiBubyB0cmFjayB0aXRsZSBpcyBnaXZlbiwgcHJpbnQgb3V0
IHRoZSBmaWxlIG5hbWUKICAgICAgICB2YXIgeGVzYW1VcmwgPSBjdXJyZW50TWV0YWRhdGFbInhl
c2FtOnVybCJdID8gY3VycmVudE1ldGFkYXRhWyJ4ZXNhbTp1cmwiXS50b1N0cmluZygpIDogIiIK
ICAgICAgICBpZiAoIXhlc2FtVXJsKSB7CiAgICAgICAgICAgIHJldHVybiAiIjsKICAgICAgICB9
CiAgICAgICAgdmFyIGxhc3RTbGFzaFBvcyA9IHhlc2FtVXJsLmxhc3RJbmRleE9mKCcvJykKICAg
ICAgICBpZiAobGFzdFNsYXNoUG9zIDwgMCkgewogICAgICAgICAgICByZXR1cm4gIiI7CiAgICAg
ICAgfQogICAgICAgIHZhciBsYXN0VXJsUGFydCA9IHhlc2FtVXJsLnN1YnN0cmluZyhsYXN0U2xh
c2hQb3MgKyAxKQogICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQobGFzdFVybFBhcnQp
IHx8ICIiOwogICAgfQogICAgcmVhZG9ubHkgcHJvcGVydHkgc3RyaW5nIGFydGlzdDogY3VycmVu
dE1ldGFkYXRhWyJ4ZXNhbTphcnRpc3QiXSB8fCAiIgogICAgcmVhZG9ubHkgcHJvcGVydHkgc3Ry
aW5nIGFsYnVtQXJ0OiBjdXJyZW50TWV0YWRhdGFbIm1wcmlzOmFydFVybCJdIHx8ICIiCgogICAg
c3BhY2luZzogUGxhc21hQ29yZS5Vbml0cy5zbWFsbFNwYWNpbmcKCiAgICAvLyB0ZXh0IGxhYmVs
cyArIGNsb3NlIGJ1dHRvbgogICAgUm93TGF5b3V0IHsKICAgICAgICBpZDogaGVhZGVyCiAgICAg
ICAgLy8gbWF0Y2ggc3BhY2luZyBvZiBEZWZhdWx0VG9vbFRpcC5xbWwgaW4gcGxhc21hLWZyYW1l
d29yawogICAgICAgIHNwYWNpbmc6IGlzV2luID8gUGxhc21hQ29yZS5Vbml0cy5zbWFsbFNwYWNp
bmcgOiBQbGFzbWFDb3JlLlVuaXRzLmxhcmdlU3BhY2luZwoKICAgICAgICAvLyBUaGlzIG51bWJl
ciBjb250cm9scyB0aGUgb3ZlcmFsbCBzaXplIG9mIHRoZSB3aW5kb3cgdG9vbHRpcHMKICAgICAg
ICBMYXlvdXQubWF4aW11bVdpZHRoOiBQbGFzbWFDb3JlLlVuaXRzLmdyaWRVbml0ICogMTYKICAg
ICAgICBMYXlvdXQubWluaW11bVdpZHRoOiBpc1dpbiA/IExheW91dC5tYXhpbXVtV2lkdGggOiAw
CiAgICAgICAgTGF5b3V0LmFsaWdubWVudDogUXQuQWxpZ25IQ2VudGVyIHwgUXQuQWxpZ25WQ2Vu
dGVyCiAgICAgICAgLy8gbWF0Y2ggbWFyZ2lucyBvZiBEZWZhdWx0VG9vbFRpcC5xbWwgaW4gcGxh
c21hLWZyYW1ld29yawogICAgICAgIExheW91dC5tYXJnaW5zOiBpc1dpbiA/IDAgOiBQbGFzbWFD
b3JlLlVuaXRzLmdyaWRVbml0IC8gMgoKICAgICAgICAvLyBhbGwgdGV4dGxhYmVscwogICAgICAg
IENvbHVtbkxheW91dCB7CiAgICAgICAgICAgIHNwYWNpbmc6IDAKICAgICAgICAgICAgLy8gYXBw
IG5hbWUKICAgICAgICAgICAgUGxhc21hRXh0cmFzLkhlYWRpbmcgewogICAgICAgICAgICAgICAg
aWQ6IGFwcE5hbWVIZWFkaW5nCiAgICAgICAgICAgICAgICBsZXZlbDogMwogICAgICAgICAgICAg
ICAgbWF4aW11bUxpbmVDb3VudDogMQogICAgICAgICAgICAgICAgbGluZUhlaWdodDogaXNXaW4g
PyAxIDogYXBwTmFtZUhlYWRpbmcubGluZUhlaWdodAogICAgICAgICAgICAgICAgTGF5b3V0LmZp
bGxXaWR0aDogdHJ1ZQogICAgICAgICAgICAgICAgZWxpZGU6IFRleHQuRWxpZGVSaWdodAogICAg
ICAgICAgICAgICAgdGV4dDogYXBwTmFtZQogICAgICAgICAgICAgICAgb3BhY2l0eTogZmxhdElu
ZGV4ID09IDAKICAgICAgICAgICAgICAgIHZpc2libGU6IHRleHQubGVuZ3RoICE9PSAwCiAgICAg
ICAgICAgICAgICB0ZXh0Rm9ybWF0OiBUZXh0LlBsYWluVGV4dAogICAgICAgICAgICB9CiAgICAg
ICAgICAgIC8vIHdpbmRvdyB0aXRsZQogICAgICAgICAgICBQbGFzbWFDb21wb25lbnRzLkxhYmVs
IHsKICAgICAgICAgICAgICAgIHJlYWRvbmx5IHByb3BlcnR5IHN0cmluZyB0aXRsZTogZ2VuZXJh
dGVUaXRsZSgpCiAgICAgICAgICAgICAgICBpZDogd2luVGl0bGUKICAgICAgICAgICAgICAgIG1h
eGltdW1MaW5lQ291bnQ6IDEKICAgICAgICAgICAgICAgIExheW91dC5maWxsV2lkdGg6IHRydWUK
ICAgICAgICAgICAgICAgIGVsaWRlOiBUZXh0LkVsaWRlUmlnaHQKICAgICAgICAgICAgICAgIHRl
eHQ6ICghaGFzUGxheWVyIHx8ICF0aXRsZS5pbmNsdWRlcyh0cmFjaykpID8gdGl0bGUgOiAiIgog
ICAgICAgICAgICAgICAgb3BhY2l0eTogMC43NQogICAgICAgICAgICAgICAgdmlzaWJsZTogdGl0
bGUubGVuZ3RoICE9PSAwICYmIHRpdGxlICE9PSBhcHBOYW1lSGVhZGluZy50ZXh0CiAgICAgICAg
ICAgICAgICB0ZXh0Rm9ybWF0OiBUZXh0LlBsYWluVGV4dAogICAgICAgICAgICB9CiAgICAgICAg
ICAgIC8vIHN1YnRleHQKICAgICAgICAgICAgUGxhc21hQ29tcG9uZW50cy5MYWJlbCB7CiAgICAg
ICAgICAgICAgICBpZDogc3VidGV4dAogICAgICAgICAgICAgICAgbWF4aW11bUxpbmVDb3VudDog
MQogICAgICAgICAgICAgICAgTGF5b3V0LmZpbGxXaWR0aDogdHJ1ZQogICAgICAgICAgICAgICAg
ZWxpZGU6IFRleHQuRWxpZGVSaWdodAogICAgICAgICAgICAgICAgdGV4dDogaXNXaW4gPyBnZW5l
cmF0ZVN1YlRleHQoKSA6ICIiCiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjYKICAgICAgICAg
ICAgICAgIHZpc2libGU6IHRleHQubGVuZ3RoICE9PSAwICYmIHRleHQgIT09IGFwcE5hbWVIZWFk
aW5nLnRleHQKICAgICAgICAgICAgICAgIHRleHRGb3JtYXQ6IFRleHQuUGxhaW5UZXh0CiAgICAg
ICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIENvdW50IGJhZGdlLgogICAgICAgIC8vIFRo
ZSBiYWRnZSBpdHNlbGYgaXMgaW5zaWRlIGFuIGl0ZW0gdG8gYmV0dGVyIGNlbnRlciB0aGUgdGV4
dCBpbiB0aGUgYnViYmxlCiAgICAgICAgSXRlbSB7CiAgICAgICAgICAgIExheW91dC5hbGlnbm1l
bnQ6IFF0LkFsaWduUmlnaHQgfCBRdC5BbGlnblRvcAogICAgICAgICAgICBMYXlvdXQucHJlZmVy
cmVkSGVpZ2h0OiBjbG9zZUJ1dHRvbi5oZWlnaHQKICAgICAgICAgICAgTGF5b3V0LnByZWZlcnJl
ZFdpZHRoOiBjbG9zZUJ1dHRvbi53aWR0aAogICAgICAgICAgICB2aXNpYmxlOiBmbGF0SW5kZXgg
PT09IDAgJiYgc21hcnRMYXVuY2hlckNvdW50VmlzaWJsZQoKICAgICAgICAgICAgQmFkZ2Ugewog
ICAgICAgICAgICAgICAgYW5jaG9ycy5jZW50ZXJJbjogcGFyZW50CiAgICAgICAgICAgICAgICBo
ZWlnaHQ6IFBsYXNtYUNvcmUuVW5pdHMuaWNvblNpemVzLnNtYWxsTWVkaXVtCiAgICAgICAgICAg
ICAgICBudW1iZXI6IHNtYXJ0TGF1bmNoZXJDb3VudAogICAgICAgICAgICB9CiAgICAgICAgfQoK
ICAgICAgICAvLyBjbG9zZSBidXR0b24KICAgICAgICBQbGFzbWFDb21wb25lbnRzMy5Ub29sQnV0
dG9uIHsKICAgICAgICAgICAgaWQ6IGNsb3NlQnV0dG9uCiAgICAgICAgICAgIExheW91dC5hbGln
bm1lbnQ6IFF0LkFsaWduUmlnaHQgfCBRdC5BbGlnblRvcAogICAgICAgICAgICB2aXNpYmxlOiBp
c1dpbgogICAgICAgICAgICBpY29uLm5hbWU6ICJ3aW5kb3ctY2xvc2UiCiAgICAgICAgICAgIG9u
Q2xpY2tlZDogewogICAgICAgICAgICAgICAgYmFja2VuZC5jYW5jZWxIaWdobGlnaHRXaW5kb3dz
KCk7CiAgICAgICAgICAgICAgICB0YXNrc01vZGVsLnJlcXVlc3RDbG9zZShzdWJtb2RlbEluZGV4
KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLyB0aHVtYm5haWwgY29udGFp
bmVyCiAgICBJdGVtIHsKICAgICAgICBpZDogdGh1bWJuYWlsU291cmNlSXRlbQoKICAgICAgICBM
YXlvdXQubWluaW11bVdpZHRoOiBoZWFkZXIud2lkdGgKICAgICAgICBMYXlvdXQucHJlZmVycmVk
SGVpZ2h0OiBoZWFkZXIud2lkdGggLyAyCgogICAgICAgIGNsaXA6IHRydWUKICAgICAgICB2aXNp
YmxlOiB0b29sVGlwRGVsZWdhdGUuaXNXaW4KCiAgICAgICAgcmVhZG9ubHkgcHJvcGVydHkgYm9v
bCBpc01pbmltaXplZDogaXNHcm91cCA/IElzTWluaW1pemVkID09IHRydWUgOiBpc01pbmltaXpl
ZFBhcmVudAogICAgICAgIC8vIFRPRE86IHRoaXMgY2F1c2VzIFhDQiBlcnJvciBtZXNzYWdlIHdo
ZW4gYmVpbmcgdmlzaWJsZSB0aGUgZmlyc3QgdGltZQogICAgICAgIHJlYWRvbmx5IHByb3BlcnR5
IHZhciB3aW5JZDogdG9vbFRpcERlbGVnYXRlLmlzV2luICYmIHRvb2xUaXBEZWxlZ2F0ZS53aW5k
b3dzW2ZsYXRJbmRleF0gIT09IHVuZGVmaW5lZCA/IHRvb2xUaXBEZWxlZ2F0ZS53aW5kb3dzW2Zs
YXRJbmRleF0gOiAwCgogICAgICAgIC8vIFRoZXJlJ3Mgbm8gUGxhc21hQ29tcG9uZW50czMgdmVy
c2lvbgogICAgICAgIFBsYXNtYUNvbXBvbmVudHMuSGlnaGxpZ2h0IHsKICAgICAgICAgICAgYW5j
aG9ycy5maWxsOiBob3ZlckhhbmRsZXIKICAgICAgICAgICAgdmlzaWJsZTogaG92ZXJIYW5kbGVy
LmNvbnRhaW5zTW91c2UKICAgICAgICAgICAgcHJlc3NlZDogaG92ZXJIYW5kbGVyLmNvbnRhaW5z
UHJlc3MKICAgICAgICB9CgogICAgICAgIExvYWRlciB7CiAgICAgICAgICAgIGlkOiB4MTFUaHVt
Ym5haWwKICAgICAgICAgICAgYWN0aXZlOiAhYWxidW1BcnRJbWFnZS52aXNpYmxlICYmICF0aHVt
Ym5haWxTb3VyY2VJdGVtLmlzTWluaW1pemVkICYmIE51bWJlci5pc0ludGVnZXIodGh1bWJuYWls
U291cmNlSXRlbS53aW5JZCkgJiYgZmxhdEluZGV4ICE9PSAtMSAvLyBBdm9pZCBsb2FkaW5nIHdo
ZW4gdGhlIGluc3RhbmNlIGlzIGdvaW5nIHRvIGJlIGRlc3Ryb3llZAogICAgICAgICAgICBhc3lu
Y2hyb25vdXM6IHRydWUKICAgICAgICAgICAgdmlzaWJsZTogYWN0aXZlCiAgICAgICAgICAgIGFu
Y2hvcnMuZmlsbDogaG92ZXJIYW5kbGVyCiAgICAgICAgICAgIC8vIEluZGVudCBhIGxpdHRsZSBi
aXQgc28gdGhhdCBuZWl0aGVyIHRoZSB0aHVtYm5haWwgbm9yIHRoZSBkcm9wCiAgICAgICAgICAg
IC8vIHNoYWRvdyBjYW4gY292ZXIgdXAgdGhlIGhpZ2hsaWdodAogICAgICAgICAgICBhbmNob3Jz
Lm1hcmdpbnM6IFBsYXNtYUNvcmUuVW5pdHMuc21hbGxTcGFjaW5nICogMgoKICAgICAgICAgICAg
c291cmNlQ29tcG9uZW50OiBQbGFzbWFDb3JlLldpbmRvd1RodW1ibmFpbCB7CiAgICAgICAgICAg
ICAgICB3aW5JZDogTnVtYmVyLmlzSW50ZWdlcih0aHVtYm5haWxTb3VyY2VJdGVtLndpbklkKSA/
IHRodW1ibmFpbFNvdXJjZUl0ZW0ud2luSWQgOiAwCiAgICAgICAgICAgIH0KICAgICAgICB9Cgog
ICAgICAgIExvYWRlciB7CiAgICAgICAgICAgIGlkOiBwaXBlV2lyZUxvYWRlcgogICAgICAgICAg
ICBhbmNob3JzLmZpbGw6IGhvdmVySGFuZGxlcgogICAgICAgICAgICAvLyBJbmRlbnQgYSBsaXR0
bGUgYml0IHNvIHRoYXQgbmVpdGhlciB0aGUgdGh1bWJuYWlsIG5vciB0aGUgZHJvcAogICAgICAg
ICAgICAvLyBzaGFkb3cgY2FuIGNvdmVyIHVwIHRoZSBoaWdobGlnaHQKICAgICAgICAgICAgYW5j
aG9ycy5tYXJnaW5zOiBQbGFzbWFDb3JlLlVuaXRzLnNtYWxsU3BhY2luZyAqIDIKCiAgICAgICAg
ICAgIGFjdGl2ZTogIWFsYnVtQXJ0SW1hZ2UudmlzaWJsZSAmJiAhTnVtYmVyLmlzSW50ZWdlcih0
aHVtYm5haWxTb3VyY2VJdGVtLndpbklkKQoKICAgICAgICAgICAgLy9JbiBhIGxvYWRlciBzaW5j
ZSB3ZSBtaWdodCBub3QgaGF2ZSBQaXBlV2lyZSBhdmFpbGFibGUgeWV0CiAgICAgICAgICAgIHNv
dXJjZTogIlBpcGVXaXJlVGh1bWJuYWlsLnFtbCIKICAgICAgICB9CgogICAgICAgIERyb3BTaGFk
b3cgewogICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBpcGVXaXJlTG9hZGVyLmFjdGl2ZSA/IHBp
cGVXaXJlTG9hZGVyIDogeDExVGh1bWJuYWlsCiAgICAgICAgICAgIHZpc2libGU6IHBpcGVXaXJl
TG9hZGVyLmFjdGl2ZSA/IHBpcGVXaXJlTG9hZGVyLml0ZW0udmlzaWJsZSA6IHgxMVRodW1ibmFp
bC52aXNpYmxlCiAgICAgICAgICAgIGhvcml6b250YWxPZmZzZXQ6IDAKICAgICAgICAgICAgdmVy
dGljYWxPZmZzZXQ6IE1hdGgucm91bmQoMyAqIFBsYXNtYUNvcmUuVW5pdHMuZGV2aWNlUGl4ZWxS
YXRpbykKICAgICAgICAgICAgcmFkaXVzOiBNYXRoLnJvdW5kKDguMCAqIFBsYXNtYUNvcmUuVW5p
dHMuZGV2aWNlUGl4ZWxSYXRpbykKICAgICAgICAgICAgc2FtcGxlczogTWF0aC5yb3VuZChyYWRp
dXMgKiAxLjUpCiAgICAgICAgICAgIGNvbG9yOiAiQmxhY2siCiAgICAgICAgICAgIHNvdXJjZTog
cGlwZVdpcmVMb2FkZXIuYWN0aXZlID8gcGlwZVdpcmVMb2FkZXIuaXRlbSA6IHgxMVRodW1ibmFp
bAogICAgICAgIH0KCiAgICAgICAgTG9hZGVyIHsKICAgICAgICAgICAgYWN0aXZlOiBhbGJ1bUFy
dEltYWdlLnZpc2libGUgJiYgYWxidW1BcnRJbWFnZS5zdGF0dXMgPT09IEltYWdlLlJlYWR5ICYm
IGZsYXRJbmRleCAhPT0gLTEgLy8gQXZvaWQgbG9hZGluZyB3aGVuIHRoZSBpbnN0YW5jZSBpcyBn
b2luZyB0byBiZSBkZXN0cm95ZWQKICAgICAgICAgICAgYXN5bmNocm9ub3VzOiB0cnVlCiAgICAg
ICAgICAgIHZpc2libGU6IGFjdGl2ZQogICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBob3Zl
ckhhbmRsZXIKCiAgICAgICAgICAgIHNvdXJjZUNvbXBvbmVudDogU2hhZGVyRWZmZWN0IHsKICAg
ICAgICAgICAgICAgIGlkOiBhbGJ1bUFydEJhY2tncm91bmQKICAgICAgICAgICAgICAgIHJlYWRv
bmx5IHByb3BlcnR5IEltYWdlIHNvdXJjZTogYWxidW1BcnRJbWFnZQoKICAgICAgICAgICAgICAg
IC8vIE1hbnVhbCBpbXBsZW1lbnRhdGlvbiBvZiBJbWFnZS5QcmVzZXJ2ZUFzcGVjdENyb3AKICAg
ICAgICAgICAgICAgIHdpZHRoOiAoc291cmNlLnBhaW50ZWRXaWR0aCAvIHNvdXJjZS5wYWludGVk
SGVpZ2h0KSA8PSAoaG92ZXJIYW5kbGVyLndpZHRoIC8gaG92ZXJIYW5kbGVyLmhlaWdodCkgPyBo
b3ZlckhhbmRsZXIud2lkdGggOiBob3ZlckhhbmRsZXIuaGVpZ2h0ICogKHNvdXJjZS5wYWludGVk
V2lkdGggLyBzb3VyY2UucGFpbnRlZEhlaWdodCkKICAgICAgICAgICAgICAgIGhlaWdodDogKHNv
dXJjZS5wYWludGVkV2lkdGggLyBzb3VyY2UucGFpbnRlZEhlaWdodCkgPD0gKGhvdmVySGFuZGxl
ci53aWR0aCAvIGhvdmVySGFuZGxlci5oZWlnaHQpID8gaG92ZXJIYW5kbGVyLndpZHRoICogKHNv
dXJjZS5wYWludGVkSGVpZ2h0IC8gc291cmNlLnBhaW50ZWRXaWR0aCkgOiBob3ZlckhhbmRsZXIu
aGVpZ2h0CiAgICAgICAgICAgICAgICBsYXllci5lbmFibGVkOiB0cnVlCiAgICAgICAgICAgICAg
ICBvcGFjaXR5OiAwLjI1CiAgICAgICAgICAgICAgICBsYXllci5lZmZlY3Q6IEZhc3RCbHVyIHsK
ICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IGFsYnVtQXJ0QmFja2dyb3VuZAogICAgICAgICAg
ICAgICAgICAgIGFuY2hvcnMuZmlsbDogc291cmNlCiAgICAgICAgICAgICAgICAgICAgcmFkaXVz
OiAzMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBJ
bWFnZSB7CiAgICAgICAgICAgIGlkOiBhbGJ1bUFydEltYWdlCiAgICAgICAgICAgIC8vIGFsc28g
SW1hZ2UuTG9hZGluZyB0byBwcmV2ZW50IGxvYWRpbmcgdGh1bWJuYWlscyBqdXN0IGJlY2F1c2Ug
dGhlIGFsYnVtIGFydCB0YWtlcyBhIHNwbGl0IHNlY29uZCB0byBsb2FkCiAgICAgICAgICAgIC8v
IGRvbid0IHNob3cgYWxidW0gYXJ0IGlmIHdpbmRvdyB0aXRsZSBkb2Vzbid0IGluY2x1ZGUgbWVk
aWEgdGl0bGUgKGVnIHdlJ3JlIGluIGEgZGlmZmVyZW50IGJyb3dzZXIgdGFiKQogICAgICAgICAg
ICByZWFkb25seSBwcm9wZXJ0eSBib29sIGF2YWlsYWJsZTogKHN0YXR1cyA9PT0gSW1hZ2UuUmVh
ZHkgfHwgc3RhdHVzID09PSBJbWFnZS5Mb2FkaW5nKSAmJiBnZW5lcmF0ZVRpdGxlKCkuaW5jbHVk
ZXModHJhY2spCgogICAgICAgICAgICBhbmNob3JzLmZpbGw6IGhvdmVySGFuZGxlcgogICAgICAg
ICAgICAvLyBJbmRlbnQgYnkgb25lIHBpeGVsIHRvIG1ha2Ugc3VyZSB3ZSBuZXZlciBjb3ZlciB1
cCB0aGUgZW50aXJlIGhpZ2hsaWdodAogICAgICAgICAgICBhbmNob3JzLm1hcmdpbnM6IDEKICAg
ICAgICAgICAgc291cmNlU2l6ZTogUXQuc2l6ZShwYXJlbnQud2lkdGgsIHBhcmVudC5oZWlnaHQp
CgogICAgICAgICAgICBhc3luY2hyb25vdXM6IHRydWUKICAgICAgICAgICAgc291cmNlOiBhbGJ1
bUFydAogICAgICAgICAgICBmaWxsTW9kZTogSW1hZ2UuUHJlc2VydmVBc3BlY3RGaXQKICAgICAg
ICAgICAgdmlzaWJsZTogYXZhaWxhYmxlCiAgICAgICAgfQoKICAgICAgICAvLyB3aGVuIG1pbmlt
aXplZCwgd2UgZG9uJ3QgaGF2ZSBhIHByZXZpZXcgb24gWDExLCBzbyBzaG93IHRoZSBpY29uCiAg
ICAgICAgTG9hZGVyIHsKICAgICAgICAgICAgYWN0aXZlOiAhcGlwZVdpcmVMb2FkZXIuYWN0aXZl
ICYmIHRodW1ibmFpbFNvdXJjZUl0ZW0uaXNNaW5pbWl6ZWQgJiYgIWFsYnVtQXJ0SW1hZ2Uudmlz
aWJsZSAmJiBOdW1iZXIuaXNJbnRlZ2VyKHRodW1ibmFpbFNvdXJjZUl0ZW0ud2luSWQpICYmIGZs
YXRJbmRleCAhPT0gLTEgLy8gQXZvaWQgbG9hZGluZyB3aGVuIHRoZSBpbnN0YW5jZSBpcyBnb2lu
ZyB0byBiZSBkZXN0cm95ZWQKICAgICAgICAgICAgYXN5bmNocm9ub3VzOiB0cnVlCiAgICAgICAg
ICAgIHZpc2libGU6IGFjdGl2ZSAmJiBpdGVtLnZhbGlkCiAgICAgICAgICAgIGFuY2hvcnMuZmls
bDogaG92ZXJIYW5kbGVyCgogICAgICAgICAgICBzb3VyY2VDb21wb25lbnQ6IFBsYXNtYUNvcmUu
SWNvbkl0ZW0gewogICAgICAgICAgICAgICAgYW5jaG9ycy5ob3Jpem9udGFsQ2VudGVyOiBwYXJl
bnQuaG9yaXpvbnRhbENlbnRlcgogICAgICAgICAgICAgICAgc291cmNlOiBpY29uCiAgICAgICAg
ICAgICAgICBhbmltYXRlZDogZmFsc2UKICAgICAgICAgICAgICAgIHVzZXNQbGFzbWFUaGVtZTog
ZmFsc2UKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgVG9vbFRpcFdpbmRvd01vdXNl
QXJlYSB7CiAgICAgICAgICAgIGlkOiBob3ZlckhhbmRsZXIKICAgICAgICAgICAgYW5jaG9ycy5m
aWxsOiBwYXJlbnQKICAgICAgICAgICAgcm9vdFRhc2s6IHBhcmVudFRhc2sKICAgICAgICAgICAg
bW9kZWxJbmRleDogc3VibW9kZWxJbmRleAogICAgICAgICAgICB3aW5JZDogdGh1bWJuYWlsU291
cmNlSXRlbS53aW5JZAogICAgICAgIH0KICAgIH0KCiAgICAvLyBQbGF5ZXIgY29udHJvbHMgcm93
LCBsb2FkIG9uIGRlbWFuZCBzbyBncm91cCB0b29sdGlwcyBjb3VsZCBiZSBsb2FkZWQgZmFzdGVy
CiAgICBMb2FkZXIgewogICAgICAgIGFjdGl2ZTogaGFzUGxheWVyICYmIGZsYXRJbmRleCAhPT0g
LTEgLy8gQXZvaWQgbG9hZGluZyB3aGVuIHRoZSBpbnN0YW5jZSBpcyBnb2luZyB0byBiZSBkZXN0
cm95ZWQKICAgICAgICBhc3luY2hyb25vdXM6IHRydWUKICAgICAgICB2aXNpYmxlOiBhY3RpdmUK
ICAgICAgICBMYXlvdXQuZmlsbFdpZHRoOiB0cnVlCiAgICAgICAgTGF5b3V0Lm1heGltdW1XaWR0
aDogaGVhZGVyLkxheW91dC5tYXhpbXVtV2lkdGgKICAgICAgICBMYXlvdXQubGVmdE1hcmdpbjog
aGVhZGVyLkxheW91dC5tYXJnaW5zCiAgICAgICAgTGF5b3V0LnJpZ2h0TWFyZ2luOiBoZWFkZXIu
TGF5b3V0Lm1hcmdpbnMKCiAgICAgICAgc291cmNlQ29tcG9uZW50OiBSb3dMYXlvdXQgewogICAg
ICAgICAgICBlbmFibGVkOiBjYW5Db250cm9sCgogICAgICAgICAgICBDb2x1bW5MYXlvdXQgewog
ICAgICAgICAgICAgICAgTGF5b3V0LmZpbGxXaWR0aDogdHJ1ZQogICAgICAgICAgICAgICAgTGF5
b3V0LnRvcE1hcmdpbjogUGxhc21hQ29yZS5Vbml0cy5zbWFsbFNwYWNpbmcKICAgICAgICAgICAg
ICAgIExheW91dC5ib3R0b21NYXJnaW46IFBsYXNtYUNvcmUuVW5pdHMuc21hbGxTcGFjaW5nCiAg
ICAgICAgICAgICAgICBMYXlvdXQucmlnaHRNYXJnaW46IGlzV2luID8gUGxhc21hQ29yZS5Vbml0
cy5zbWFsbFNwYWNpbmcgOiBQbGFzbWFDb3JlLlVuaXRzLmxhcmdlU3BhY2luZwogICAgICAgICAg
ICAgICAgc3BhY2luZzogMAoKICAgICAgICAgICAgICAgICBTY3JvbGxhYmxlVGV4dFdyYXBwZXIg
ewogICAgICAgICAgICAgICAgICAgIGlkOiBzb25nVGV4dFdyYXBwZXIKCiAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0LmZpbGxXaWR0aDogdHJ1ZQogICAgICAgICAgICAgICAgICAgIExheW91dC5w
cmVmZXJyZWRIZWlnaHQ6IHNvbmdUZXh0LmhlaWdodAogICAgICAgICAgICAgICAgICAgIGltcGxp
Y2l0V2lkdGg6IHNvbmdUZXh0LmltcGxpY2l0V2lkdGgKCiAgICAgICAgICAgICAgICAgICAgUGxh
c21hQ29tcG9uZW50czMuTGFiZWwgewogICAgICAgICAgICAgICAgICAgICAgICBpZDogc29uZ1Rl
eHQKICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBzb25nVGV4dFdyYXBwZXIKICAgICAg
ICAgICAgICAgICAgICAgICAgd2lkdGg6IHBhcmVudC53aWR0aAogICAgICAgICAgICAgICAgICAg
ICAgICBoZWlnaHQ6IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0
OiAxCiAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1MaW5lQ291bnQ6IGFydGlzdFRleHQu
dmlzaWJsZT8gMSA6IDIKICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE1vZGU6IFRleHQuTm9X
cmFwCiAgICAgICAgICAgICAgICAgICAgICAgIGVsaWRlOiBwYXJlbnQuc3RhdGUgPyBUZXh0LkVs
aWRlTm9uZSA6IFRleHQuRWxpZGVSaWdodAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0
cmFjawogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Rm9ybWF0OiBUZXh0LlBsYWluVGV4dAog
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
U2Nyb2xsYWJsZVRleHRXcmFwcGVyIHsKICAgICAgICAgICAgICAgICAgICBpZDogYXJ0aXN0VGV4
dFdyYXBwZXIKCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0LmZpbGxXaWR0aDogdHJ1ZQogICAg
ICAgICAgICAgICAgICAgIExheW91dC5wcmVmZXJyZWRIZWlnaHQ6IGFydGlzdFRleHQuaGVpZ2h0
CiAgICAgICAgICAgICAgICAgICAgaW1wbGljaXRXaWR0aDogYXJ0aXN0VGV4dC5pbXBsaWNpdFdp
ZHRoCiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogYXJ0aXN0VGV4dC50ZXh0ICE9PSAiIgoK
ICAgICAgICAgICAgICAgICAgICBQbGFzbWFFeHRyYXMuRGVzY3JpcHRpdmVMYWJlbCB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlkOiBhcnRpc3RUZXh0CiAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmVudDogYXJ0aXN0VGV4dFdyYXBwZXIKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6
IHBhcmVudC53aWR0aAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHVuZGVmaW5lZAog
ICAgICAgICAgICAgICAgICAgICAgICB3cmFwTW9kZTogVGV4dC5Ob1dyYXAKICAgICAgICAgICAg
ICAgICAgICAgICAgbGluZUhlaWdodDogMQogICAgICAgICAgICAgICAgICAgICAgICBlbGlkZTog
cGFyZW50LnN0YXRlID8gVGV4dC5FbGlkZU5vbmUgOiBUZXh0LkVsaWRlUmlnaHQKICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dDogYXJ0aXN0IHx8ICIiCiAgICAgICAgICAgICAgICAgICAgICAg
IGZvbnQ6IFBsYXNtYUNvcmUuVGhlbWUuc21hbGxlc3RGb250CiAgICAgICAgICAgICAgICAgICAg
ICAgIHRleHRGb3JtYXQ6IFRleHQuUGxhaW5UZXh0CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBQbGFzbWFDb21wb25lbnRz
My5Ub29sQnV0dG9uIHsKICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGNhbkdvQmFjawogICAgICAg
ICAgICAgICAgaWNvbi5uYW1lOiBMYXlvdXRNaXJyb3JpbmcuZW5hYmxlZCA/ICJtZWRpYS1za2lw
LWZvcndhcmQiIDogIm1lZGlhLXNraXAtYmFja3dhcmQiCiAgICAgICAgICAgICAgICBvbkNsaWNr
ZWQ6IG1wcmlzMlNvdXJjZS5nb1ByZXZpb3VzKG1wcmlzU291cmNlTmFtZSkKICAgICAgICAgICAg
fQoKICAgICAgICAgICAgUGxhc21hQ29tcG9uZW50czMuVG9vbEJ1dHRvbiB7CiAgICAgICAgICAg
ICAgICBlbmFibGVkOiBwbGF5aW5nID8gY2FuUGF1c2UgOiBjYW5QbGF5CiAgICAgICAgICAgICAg
ICBpY29uLm5hbWU6IHBsYXlpbmcgPyAibWVkaWEtcGxheWJhY2stcGF1c2UiIDogIm1lZGlhLXBs
YXliYWNrLXN0YXJ0IgogICAgICAgICAgICAgICAgb25DbGlja2VkOiB7CiAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwbGF5aW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1wcmlzMlNvdXJj
ZS5wbGF5KG1wcmlzU291cmNlTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgbXByaXMyU291cmNlLnBhdXNlKG1wcmlzU291cmNlTmFtZSk7
CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9Cgog
ICAgICAgICAgICBQbGFzbWFDb21wb25lbnRzMy5Ub29sQnV0dG9uIHsKICAgICAgICAgICAgICAg
IGVuYWJsZWQ6IGNhbkdvTmV4dAogICAgICAgICAgICAgICAgaWNvbi5uYW1lOiBMYXlvdXRNaXJy
b3JpbmcuZW5hYmxlZCA/ICJtZWRpYS1za2lwLWJhY2t3YXJkIiA6ICJtZWRpYS1za2lwLWZvcndh
cmQiCiAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6IG1wcmlzMlNvdXJjZS5nb05leHQobXByaXNT
b3VyY2VOYW1lKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGdl
bmVyYXRlVGl0bGUoKSB7CiAgICAgICAgaWYgKCFpc1dpbikgewogICAgICAgICAgICByZXR1cm4g
Z2VuZXJpY05hbWUgIT0gdW5kZWZpbmVkID8gZ2VuZXJpY05hbWUgOiAiIjsKICAgICAgICB9Cgog
ICAgICAgIHZhciB0ZXh0OwogICAgICAgIGlmIChpc0dyb3VwKSB7CiAgICAgICAgICAgIGlmICht
b2RlbC5kaXNwbGF5ID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiIjsK
ICAgICAgICAgICAgfQogICAgICAgICAgICB0ZXh0ID0gbW9kZWwuZGlzcGxheS50b1N0cmluZygp
OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRleHQgPSBkaXNwbGF5UGFyZW50OwogICAg
ICAgIH0KCiAgICAgICAgLy8gS1dpbiBhcHBlbmRzIGluY3JlYXNpbmcgaW50ZWdlcnMgaW4gYmV0
d2VlbiBwb2ludHkgYnJhY2tldHMgdG8gb3RoZXJ3aXNlIGVxdWFsIHdpbmRvdyB0aXRsZXMuCiAg
ICAgICAgLy8gSW4gdGhpcyBjYXNlIHNhdmUgPCNudW1iZXI+IGFzIGNvdW50ZXIgYW5kIGRlbGV0
ZSBpdCBhdCB0aGUgZW5kIG9mIHRleHQuCiAgICAgICAgdmFyIGNvdW50ZXIgPSB0ZXh0Lm1hdGNo
KC88XGQrPlxXKiQvKTsKICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9ccyo8XGQrPlxXKiQv
LCAiIik7CgogICAgICAgIC8vIFJlbW92ZSBhcHBOYW1lIGZyb20gdGhlIGVuZCBvZiB0ZXh0Lgog
ICAgICAgIHZhciBhcHBOYW1lUmVnZXggPSBuZXcgUmVnRXhwKGFwcE5hbWUgKyAiJCIsICJpIik7
CiAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShhcHBOYW1lUmVnZXgsICIiKTsKICAgICAgICB0
ZXh0ID0gdGV4dC5yZXBsYWNlKC9ccyooPzotfOKAlCkqXHMqJC8sICIiKTsKCiAgICAgICAgLy8g
QWRkIGNvdW50ZXIgYmFjayBhdCB0aGUgZW5kLgogICAgICAgIGlmIChjb3VudGVyICE9PSBudWxs
KSB7CiAgICAgICAgICAgIGlmICh0ZXh0ID09PSAiIikgewogICAgICAgICAgICAgICAgdGV4dCA9
IGNvdW50ZXI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4
dCArICIgIiArIGNvdW50ZXI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIElu
IGNhc2UgdGhlIHdpbmRvdyB0aXRsZSBoYWQgb25seSByZWR1bmRhbnQgaW5mb3JtYXRpb24gKGku
ZS4gYXBwTmFtZSksIHRleHQgaXMgbm93IGVtcHR5LgogICAgICAgIC8vIEFkZCBhIGh5cGhlbiB0
byBpbmRpY2F0ZSB0aGF0IGFuZCBhdm9pZCBlbXB0eSBzcGFjZS4KICAgICAgICBpZiAodGV4dCA9
PT0gIiIpIHsKICAgICAgICAgICAgdGV4dCA9ICLigJQiOwogICAgICAgIH0KICAgICAgICByZXR1
cm4gdGV4dC50b1N0cmluZygpOwogICAgfQoKICAgIGZ1bmN0aW9uIGdlbmVyYXRlU3ViVGV4dCgp
IHsKICAgICAgICBpZiAoYWN0aXZpdGllc1BhcmVudCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAg
ICAgIHJldHVybiAiIjsKICAgICAgICB9CgogICAgICAgIHZhciBzdWJUZXh0RW50cmllcyA9IFtd
OwoKICAgICAgICB2YXIgb25BbGxEZXNrdG9wcyA9IChpc0dyb3VwID8gSXNPbkFsbFZpcnR1YWxE
ZXNrdG9wcyA6IGlzT25BbGxWaXJ0dWFsRGVza3RvcHNQYXJlbnQpID09PSB0cnVlOwogICAgICAg
IGlmICghcGxhc21vaWQuY29uZmlndXJhdGlvbi5zaG93T25seUN1cnJlbnREZXNrdG9wICYmIHZp
cnR1YWxEZXNrdG9wSW5mby5udW1iZXJPZkRlc2t0b3BzID4gMSkgewogICAgICAgICAgICB2YXIg
dmlydHVhbERlc2t0b3BzID0gaXNHcm91cCA/IFZpcnR1YWxEZXNrdG9wcyA6IHZpcnR1YWxEZXNr
dG9wUGFyZW50OwoKICAgICAgICAgICAgaWYgKCFvbkFsbERlc2t0b3BzICYmIHZpcnR1YWxEZXNr
dG9wcyAhPT0gdW5kZWZpbmVkICYmIHZpcnR1YWxEZXNrdG9wcy5sZW5ndGggPiAwKSB7CiAgICAg
ICAgICAgICAgICB2YXIgdmlydHVhbERlc2t0b3BOYW1lTGlzdCA9IG5ldyBBcnJheSgpOwoKICAg
ICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlydHVhbERlc2t0b3BzLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICAgICAgICAgdmlydHVhbERlc2t0b3BOYW1lTGlzdC5wdXNoKHZp
cnR1YWxEZXNrdG9wSW5mby5kZXNrdG9wTmFtZXNbdmlydHVhbERlc2t0b3BJbmZvLmRlc2t0b3BJ
ZHMuaW5kZXhPZih2aXJ0dWFsRGVza3RvcHNbaV0pXSk7CiAgICAgICAgICAgICAgICB9CgogICAg
ICAgICAgICAgICAgc3ViVGV4dEVudHJpZXMucHVzaChpMThuYygiQ29tbWEtc2VwYXJhdGVkIGxp
c3Qgb2YgZGVza3RvcHMiLCAiT24gJTEiLAogICAgICAgICAgICAgICAgICAgIHZpcnR1YWxEZXNr
dG9wTmFtZUxpc3Quam9pbigiLCAiKSkpOwogICAgICAgICAgICB9IGVsc2UgaWYgKG9uQWxsRGVz
a3RvcHMpIHsKICAgICAgICAgICAgICAgIHN1YlRleHRFbnRyaWVzLnB1c2goaTE4bmMoIkNvbW1h
LXNlcGFyYXRlZCBsaXN0IG9mIGRlc2t0b3BzIiwgIlBpbm5lZCB0byBhbGwgZGVza3RvcHMiKSk7
CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBhY3QgPSBpc0dyb3VwID8gQWN0
aXZpdGllcyA6IGFjdGl2aXRpZXNQYXJlbnQ7CiAgICAgICAgaWYgKGFjdCA9PT0gdW5kZWZpbmVk
KSB7CiAgICAgICAgICAgIHJldHVybiBzdWJUZXh0RW50cmllcy5qb2luKCJcbiIpOwogICAgICAg
IH0KCiAgICAgICAgaWYgKGFjdC5sZW5ndGggPT09IDAgJiYgYWN0aXZpdHlJbmZvLm51bWJlck9m
UnVubmluZ0FjdGl2aXRpZXMgPiAxKSB7CiAgICAgICAgICAgIHN1YlRleHRFbnRyaWVzLnB1c2go
aTE4bmMoIldoaWNoIHZpcnR1YWwgZGVza3RvcCBhIHdpbmRvdyBpcyBjdXJyZW50bHkgb24iLAog
ICAgICAgICAgICAgICAgIkF2YWlsYWJsZSBvbiBhbGwgYWN0aXZpdGllcyIpKTsKICAgICAgICB9
IGVsc2UgaWYgKGFjdC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgdmFyIGFjdGl2aXR5TmFtZXMg
PSBbXTsKCiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0Lmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdHkgPSBhY3RbaV07CiAgICAgICAgICAgICAgICB2
YXIgYWN0aXZpdHlOYW1lID0gYWN0aXZpdHlJbmZvLmFjdGl2aXR5TmFtZShhY3RbaV0pOwogICAg
ICAgICAgICAgICAgaWYgKGFjdGl2aXR5TmFtZSA9PT0gIiIpIHsKICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChwbGFzbW9p
ZC5jb25maWd1cmF0aW9uLnNob3dPbmx5Q3VycmVudEFjdGl2aXR5KSB7CiAgICAgICAgICAgICAg
ICAgICAgaWYgKGFjdGl2aXR5ICE9PSBhY3Rpdml0eUluZm8uY3VycmVudEFjdGl2aXR5KSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5TmFtZXMucHVzaChhY3Rpdml0eU5hbWUpOwog
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aXZpdHkg
IT09IGFjdGl2aXR5SW5mby5jdXJyZW50QWN0aXZpdHkpIHsKICAgICAgICAgICAgICAgICAgICBh
Y3Rpdml0eU5hbWVzLnB1c2goYWN0aXZpdHlOYW1lKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgaWYgKHBsYXNtb2lkLmNvbmZpZ3VyYXRpb24uc2hvd09ubHlD
dXJyZW50QWN0aXZpdHkpIHsKICAgICAgICAgICAgICAgIGlmIChhY3Rpdml0eU5hbWVzLmxlbmd0
aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICBzdWJUZXh0RW50cmllcy5wdXNoKGkxOG5jKCJB
Y3Rpdml0aWVzIGEgd2luZG93IGlzIGN1cnJlbnRseSBvbiAoYXBhcnQgZnJvbSB0aGUgY3VycmVu
dCBvbmUpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkFsc28gYXZhaWxhYmxlIG9uICUxIiwg
YWN0aXZpdHlOYW1lcy5qb2luKCIsICIpKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0gZWxzZSBpZiAoYWN0aXZpdHlOYW1lcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBz
dWJUZXh0RW50cmllcy5wdXNoKGkxOG5jKCJXaGljaCBhY3Rpdml0aWVzIGEgd2luZG93IGlzIGN1
cnJlbnRseSBvbiIsCiAgICAgICAgICAgICAgICAgICAgIkF2YWlsYWJsZSBvbiAlMSIsIGFjdGl2
aXR5TmFtZXMuam9pbigiLCAiKSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBy
ZXR1cm4gc3ViVGV4dEVudHJpZXMuam9pbigiXG4iKTsKICAgIH0KfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>142839</attachid>
            <date>2021-10-25 01:44:52 +0000</date>
            <delta_ts>2021-10-25 02:50:49 +0000</delta_ts>
            <desc>ToolTipDelegate.qml</desc>
            <filename>ToolTipDelegate.qml</filename>
            <type>text/x-qml</type>
            <size>4089</size>
            <attacher name="Fushan Wen">qydwhotmail</attacher>
            
              <data encoding="base64">LyoKICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMTMgU2ViYXN0aWFuIEvDvGdsZXIgPHNl
YmFzQGtkZS5vcmc+CiAgICBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDE0IE1hcnRpbiBHcsOk
w59saW4gPG1ncmFlc3NsaW5Aa2RlLm9yZz4KICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIw
MTYgS2FpIFV3ZSBCcm91bGlrIDxrZGVAcHJpdmF0LmJyb3VsaWsuZGU+CiAgICBTUERYLUZpbGVD
b3B5cmlnaHRUZXh0OiAyMDE3IFJvbWFuIEdpbGcgPHN1YmRpZmZAZ21haWwuY29tPgoKICAgIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMC1vci1sYXRlcgoqLwoKaW1wb3J0IFF0UXVp
Y2sgMi44CmltcG9ydCBRdFF1aWNrLkxheW91dHMgMS4xCmltcG9ydCBRdFF1aWNrLldpbmRvdyAy
LjAKaW1wb3J0IFF0R3JhcGhpY2FsRWZmZWN0cyAxLjAKaW1wb3J0IFF0UW1sLk1vZGVscyAyLjIK
CmltcG9ydCBvcmcua2RlLnBsYXNtYS5jb3JlIDIuMCBhcyBQbGFzbWFDb3JlCmltcG9ydCBvcmcu
a2RlLnBsYXNtYS5jb21wb25lbnRzIDMuMCBhcyBQbGFzbWFDb21wb25lbnRzMwppbXBvcnQgb3Jn
LmtkZS5rcXVpY2tjb250cm9sc2FkZG9ucyAyLjAgYXMgS1F1aWNrQ29udHJvbHNBZGRvbnMKCmlt
cG9ydCBvcmcua2RlLnRhc2ttYW5hZ2VyIDAuMSBhcyBUYXNrTWFuYWdlcgoKUm93TGF5b3V0IHsK
ICAgIGlkOiB0b29sVGlwRGVsZWdhdGUKCiAgICBwcm9wZXJ0eSBJdGVtIHBhcmVudFRhc2sKICAg
IHByb3BlcnR5IHZhciByb290SW5kZXgKICAgIC8vIGhhc1Jvb3RJbmRleCBpcyBuZWVkZWQgdG8g
YXZvaWQgdW5uZWNlc3NhcnkgcmVldmFsdWF0aW9uIG9mIG1vZGVsIHByb3BlcnR5IGluIERlbGVn
YXRlTW9kZWwsCiAgICAvLyBiZWNhdXNlICEhdG9vbFRpcERlbGVnYXRlLnJvb3RJbmRleCB3aWxs
IG5vdCB3b3JrIGFzIGV4cGVjdGVkLgogICAgcmVhZG9ubHkgcHJvcGVydHkgYm9vbCBoYXNSb290
SW5kZXg6ICEhcm9vdEluZGV4CgogICAgcHJvcGVydHkgc3RyaW5nIGFwcE5hbWUKICAgIHByb3Bl
cnR5IGludCBwaWRQYXJlbnQKICAgIHByb3BlcnR5IGJvb2wgaXNHcm91cAoKICAgIHByb3BlcnR5
IHZhciB3aW5kb3dzCiAgICByZWFkb25seSBwcm9wZXJ0eSBib29sIGlzV2luOiB3aW5kb3dzICE9
PSB1bmRlZmluZWQKCiAgICBwcm9wZXJ0eSB2YXJpYW50IGljb24KICAgIHByb3BlcnR5IHVybCBs
YXVuY2hlclVybAogICAgcHJvcGVydHkgYm9vbCBpc0xhdW5jaGVyCiAgICBwcm9wZXJ0eSBib29s
IGlzTWluaW1pemVkUGFyZW50CgogICAgLy8gTmVlZGVkIGZvciBnZW5lcmF0ZVN1YnRleHQoKQog
ICAgcHJvcGVydHkgc3RyaW5nIGRpc3BsYXlQYXJlbnQKICAgIHByb3BlcnR5IHN0cmluZyBnZW5l
cmljTmFtZQogICAgcHJvcGVydHkgdmFyIHZpcnR1YWxEZXNrdG9wUGFyZW50CiAgICBwcm9wZXJ0
eSBib29sIGlzT25BbGxWaXJ0dWFsRGVza3RvcHNQYXJlbnQKICAgIHByb3BlcnR5IHZhciBhY3Rp
dml0aWVzUGFyZW50CiAgICAvLwogICAgcHJvcGVydHkgYm9vbCBzbWFydExhdW5jaGVyQ291bnRW
aXNpYmxlCiAgICBwcm9wZXJ0eSBpbnQgc21hcnRMYXVuY2hlckNvdW50CgogICAgcmVhZG9ubHkg
cHJvcGVydHkgYm9vbCBpc1ZlcnRpY2FsUGFuZWw6IHBsYXNtb2lkLmZvcm1GYWN0b3IgPT09IFBs
YXNtYUNvcmUuVHlwZXMuVmVydGljYWwKCiAgICByZWFkb25seSBwcm9wZXJ0eSBzdHJpbmcgbXBy
aXNTb3VyY2VOYW1lOiBtcHJpczJTb3VyY2Uuc291cmNlTmFtZUZvckxhdW5jaGVyVXJsKGxhdW5j
aGVyVXJsLCBwaWRQYXJlbnQpCiAgICByZWFkb25seSBwcm9wZXJ0eSB2YXIgcGxheWVyRGF0YTog
bXByaXNTb3VyY2VOYW1lICE9ICIiID8gbXByaXMyU291cmNlLmRhdGFbbXByaXNTb3VyY2VOYW1l
XSA6IDAKICAgIHJlYWRvbmx5IHByb3BlcnR5IGJvb2wgaGFzUGxheWVyOiAhIW1wcmlzU291cmNl
TmFtZSAmJiAhIXBsYXllckRhdGEKCiAgICBCaW5kaW5nIG9uIExheW91dC5taW5pbXVtV2lkdGgg
ewogICAgICAgIHZhbHVlOiBpbXBsaWNpdFdpZHRoCiAgICAgICAgZGVsYXllZDogdHJ1ZSAvLyBQ
cmV2ZW50IGVhcmx5IGhpZGUgb2YgdG9vbHRpcCAoQlVHNDM5NTIyKQogICAgfQogICAgTGF5b3V0
Lm1heGltdW1XaWR0aDogTGF5b3V0Lm1pbmltdW1XaWR0aAoKICAgIEJpbmRpbmcgb24gTGF5b3V0
Lm1pbmltdW1IZWlnaHQgewogICAgICAgIHZhbHVlOiBpbXBsaWNpdEhlaWdodAogICAgICAgIGRl
bGF5ZWQ6IHRydWUgLy8gUHJldmVudCBlYXJseSBoaWRlIG9mIHRvb2x0aXAgKEJVRzQzOTUyMikK
ICAgIH0KICAgIExheW91dC5tYXhpbXVtSGVpZ2h0OiBMYXlvdXQubWluaW11bUhlaWdodAoKICAg
IExheW91dE1pcnJvcmluZy5lbmFibGVkOiBRdC5hcHBsaWNhdGlvbi5sYXlvdXREaXJlY3Rpb24g
PT09IFF0LlJpZ2h0VG9MZWZ0CiAgICBMYXlvdXRNaXJyb3JpbmcuY2hpbGRyZW5Jbmhlcml0OiB0
cnVlCgogICAgcHJvcGVydHkgaW50IHRleHRXaWR0aDogUGxhc21hQ29yZS5UaGVtZS5tU2l6ZShQ
bGFzbWFDb3JlLlRoZW1lLmRlZmF1bHRGb250KS53aWR0aCAqIDIwCgogICAgTG9hZGVyIHsKICAg
ICAgICBpZDogY29udGVudEl0ZW0KCiAgICAgICAgYWN0aXZlOiB0b29sVGlwRGVsZWdhdGUucm9v
dEluZGV4ICE9PSB1bmRlZmluZWQKICAgICAgICBhc3luY2hyb25vdXM6IHRydWUKCiAgICAgICAg
c291cmNlQ29tcG9uZW50OiBpc0dyb3VwID8gZ3JvdXBUb29sVGlwIDogc2luZ2xlVG9vbHRpcAoK
ICAgICAgICBDb21wb25lbnQgewogICAgICAgICAgICBpZDogc2luZ2xlVG9vbHRpcAoKICAgICAg
ICAgICAgVG9vbFRpcEluc3RhbmNlIHsKICAgICAgICAgICAgICAgIHN1Ym1vZGVsSW5kZXg6IHRv
b2xUaXBEZWxlZ2F0ZS5yb290SW5kZXgKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAg
Q29tcG9uZW50IHsKICAgICAgICAgICAgaWQ6IGdyb3VwVG9vbFRpcAoKICAgICAgICAgICAgUGxh
c21hQ29tcG9uZW50czMuU2Nyb2xsVmlldyB7CiAgICAgICAgICAgICAgICBpbXBsaWNpdFdpZHRo
OiBpc1ZlcnRpY2FsUGFuZWwgPyBjb250ZW50SXRlbS5jb250ZW50SXRlbS5jaGlsZHJlblJlY3Qu
d2lkdGggKyBsZWZ0UGFkZGluZyArIHJpZ2h0UGFkZGluZyA6IE1hdGgubWluKFNjcmVlbi5kZXNr
dG9wQXZhaWxhYmxlV2lkdGggLSAyICogUGxhc21hQ29yZS5Vbml0cy5zbWFsbFNwYWNpbmcsIGNv
bnRlbnRJdGVtLmNvbnRlbnRJdGVtLmNoaWxkcmVuUmVjdC53aWR0aCkKICAgICAgICAgICAgICAg
IGltcGxpY2l0SGVpZ2h0OiBpc1ZlcnRpY2FsUGFuZWwgPyBNYXRoLm1pbihTY3JlZW4uZGVza3Rv
cEF2YWlsYWJsZUhlaWdodCAtIDIgKiBQbGFzbWFDb3JlLlVuaXRzLnNtYWxsU3BhY2luZywgY29u
dGVudEl0ZW0uY29udGVudEl0ZW0uY2hpbGRyZW5SZWN0LmhlaWdodCkgOiBjb250ZW50SXRlbS5j
b250ZW50SXRlbS5jaGlsZHJlblJlY3QuaGVpZ2h0ICsgYm90dG9tUGFkZGluZwoKICAgICAgICAg
ICAgICAgIExpc3RWaWV3IHsKICAgICAgICAgICAgICAgICAgICBtb2RlbDogRGVsZWdhdGVNb2Rl
bCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB0b29sVGlwRGVsZWdhdGUuaGFzUm9v
dEluZGV4ID8gdGFza3NNb2RlbCA6IG51bGwKCiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RJ
bmRleDogdG9vbFRpcERlbGVnYXRlLnJvb3RJbmRleAoKICAgICAgICAgICAgICAgICAgICAgICAg
ZGVsZWdhdGU6IFRvb2xUaXBJbnN0YW5jZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dWJtb2RlbEluZGV4OiB0YXNrc01vZGVsLm1ha2VNb2RlbEluZGV4KHRvb2xUaXBEZWxlZ2F0ZS5y
b290SW5kZXgucm93LCBpbmRleCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb246IGlzVmVydGljYWxQ
YW5lbCA/IExpc3RWaWV3LlZlcnRpY2FsIDogTGlzdFZpZXcuSG9yaXpvbnRhbAogICAgICAgICAg
ICAgICAgICAgIHNwYWNpbmc6IFBsYXNtYUNvcmUuVW5pdHMubGFyZ2VTcGFjaW5nCiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>142843</attachid>
            <date>2021-10-25 02:50:49 +0000</date>
            <delta_ts>2021-10-25 04:31:14 +0000</delta_ts>
            <desc>ToolTipDelegate.qml</desc>
            <filename>ToolTipDelegate.qml</filename>
            <type>text/x-qml</type>
            <size>4600</size>
            <attacher name="Fushan Wen">qydwhotmail</attacher>
            
              <data encoding="base64">LyoKICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMTMgU2ViYXN0aWFuIEvDvGdsZXIgPHNl
YmFzQGtkZS5vcmc+CiAgICBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDE0IE1hcnRpbiBHcsOk
w59saW4gPG1ncmFlc3NsaW5Aa2RlLm9yZz4KICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIw
MTYgS2FpIFV3ZSBCcm91bGlrIDxrZGVAcHJpdmF0LmJyb3VsaWsuZGU+CiAgICBTUERYLUZpbGVD
b3B5cmlnaHRUZXh0OiAyMDE3IFJvbWFuIEdpbGcgPHN1YmRpZmZAZ21haWwuY29tPgoKICAgIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMC1vci1sYXRlcgoqLwoKaW1wb3J0IFF0UXVp
Y2sgMi44CmltcG9ydCBRdFF1aWNrLkxheW91dHMgMS4xCmltcG9ydCBRdFF1aWNrLldpbmRvdyAy
LjAKaW1wb3J0IFF0R3JhcGhpY2FsRWZmZWN0cyAxLjAKaW1wb3J0IFF0UW1sLk1vZGVscyAyLjIK
CmltcG9ydCBvcmcua2RlLnBsYXNtYS5jb3JlIDIuMCBhcyBQbGFzbWFDb3JlCmltcG9ydCBvcmcu
a2RlLnBsYXNtYS5jb21wb25lbnRzIDMuMCBhcyBQbGFzbWFDb21wb25lbnRzMwppbXBvcnQgb3Jn
LmtkZS5rcXVpY2tjb250cm9sc2FkZG9ucyAyLjAgYXMgS1F1aWNrQ29udHJvbHNBZGRvbnMKCmlt
cG9ydCBvcmcua2RlLnRhc2ttYW5hZ2VyIDAuMSBhcyBUYXNrTWFuYWdlcgoKUm93TGF5b3V0IHsK
ICAgIGlkOiB0b29sVGlwRGVsZWdhdGUKCiAgICBwcm9wZXJ0eSBJdGVtIHBhcmVudFRhc2sKICAg
IHByb3BlcnR5IHZhciByb290SW5kZXgKICAgIC8vIGhhc1Jvb3RJbmRleCBpcyBuZWVkZWQgdG8g
YXZvaWQgdW5uZWNlc3NhcnkgcmVldmFsdWF0aW9uIG9mIG1vZGVsIHByb3BlcnR5IGluIERlbGVn
YXRlTW9kZWwsCiAgICAvLyBiZWNhdXNlICEhdG9vbFRpcERlbGVnYXRlLnJvb3RJbmRleCB3aWxs
IG5vdCB3b3JrIGFzIGV4cGVjdGVkLgogICAgcmVhZG9ubHkgcHJvcGVydHkgYm9vbCBoYXNSb290
SW5kZXg6ICEhcm9vdEluZGV4CgogICAgcHJvcGVydHkgc3RyaW5nIGFwcE5hbWUKICAgIHByb3Bl
cnR5IGludCBwaWRQYXJlbnQKICAgIHByb3BlcnR5IGJvb2wgaXNHcm91cAoKICAgIHByb3BlcnR5
IHZhciB3aW5kb3dzCiAgICByZWFkb25seSBwcm9wZXJ0eSBib29sIGlzV2luOiB3aW5kb3dzICE9
PSB1bmRlZmluZWQKCiAgICBwcm9wZXJ0eSB2YXJpYW50IGljb24KICAgIHByb3BlcnR5IHVybCBs
YXVuY2hlclVybAogICAgcHJvcGVydHkgYm9vbCBpc0xhdW5jaGVyCiAgICBwcm9wZXJ0eSBib29s
IGlzTWluaW1pemVkUGFyZW50CgogICAgLy8gTmVlZGVkIGZvciBnZW5lcmF0ZVN1YnRleHQoKQog
ICAgcHJvcGVydHkgc3RyaW5nIGRpc3BsYXlQYXJlbnQKICAgIHByb3BlcnR5IHN0cmluZyBnZW5l
cmljTmFtZQogICAgcHJvcGVydHkgdmFyIHZpcnR1YWxEZXNrdG9wUGFyZW50CiAgICBwcm9wZXJ0
eSBib29sIGlzT25BbGxWaXJ0dWFsRGVza3RvcHNQYXJlbnQKICAgIHByb3BlcnR5IHZhciBhY3Rp
dml0aWVzUGFyZW50CiAgICAvLwogICAgcHJvcGVydHkgYm9vbCBzbWFydExhdW5jaGVyQ291bnRW
aXNpYmxlCiAgICBwcm9wZXJ0eSBpbnQgc21hcnRMYXVuY2hlckNvdW50CgogICAgcmVhZG9ubHkg
cHJvcGVydHkgYm9vbCBpc1ZlcnRpY2FsUGFuZWw6IHBsYXNtb2lkLmZvcm1GYWN0b3IgPT09IFBs
YXNtYUNvcmUuVHlwZXMuVmVydGljYWwKCiAgICByZWFkb25seSBwcm9wZXJ0eSBzdHJpbmcgbXBy
aXNTb3VyY2VOYW1lOiBtcHJpczJTb3VyY2Uuc291cmNlTmFtZUZvckxhdW5jaGVyVXJsKGxhdW5j
aGVyVXJsLCBwaWRQYXJlbnQpCiAgICByZWFkb25seSBwcm9wZXJ0eSB2YXIgcGxheWVyRGF0YTog
bXByaXNTb3VyY2VOYW1lICE9ICIiID8gbXByaXMyU291cmNlLmRhdGFbbXByaXNTb3VyY2VOYW1l
XSA6IDAKICAgIHJlYWRvbmx5IHByb3BlcnR5IGJvb2wgaGFzUGxheWVyOiAhIW1wcmlzU291cmNl
TmFtZSAmJiAhIXBsYXllckRhdGEKCiAgICBCaW5kaW5nIG9uIExheW91dC5taW5pbXVtV2lkdGgg
ewogICAgICAgIHZhbHVlOiBpbXBsaWNpdFdpZHRoCiAgICAgICAgZGVsYXllZDogdHJ1ZSAvLyBQ
cmV2ZW50IGVhcmx5IGhpZGUgb2YgdG9vbHRpcCAoQlVHNDM5NTIyKQogICAgfQogICAgTGF5b3V0
Lm1heGltdW1XaWR0aDogTGF5b3V0Lm1pbmltdW1XaWR0aAoKICAgIEJpbmRpbmcgb24gTGF5b3V0
Lm1pbmltdW1IZWlnaHQgewogICAgICAgIHZhbHVlOiBpbXBsaWNpdEhlaWdodAogICAgICAgIGRl
bGF5ZWQ6IHRydWUgLy8gUHJldmVudCBlYXJseSBoaWRlIG9mIHRvb2x0aXAgKEJVRzQzOTUyMikK
ICAgIH0KICAgIExheW91dC5tYXhpbXVtSGVpZ2h0OiBMYXlvdXQubWluaW11bUhlaWdodAoKICAg
IExheW91dE1pcnJvcmluZy5lbmFibGVkOiBRdC5hcHBsaWNhdGlvbi5sYXlvdXREaXJlY3Rpb24g
PT09IFF0LlJpZ2h0VG9MZWZ0CiAgICBMYXlvdXRNaXJyb3JpbmcuY2hpbGRyZW5Jbmhlcml0OiB0
cnVlCgogICAgcHJvcGVydHkgaW50IHRleHRXaWR0aDogUGxhc21hQ29yZS5UaGVtZS5tU2l6ZShQ
bGFzbWFDb3JlLlRoZW1lLmRlZmF1bHRGb250KS53aWR0aCAqIDIwCgogICAgTG9hZGVyIHsKICAg
ICAgICBpZDogY29udGVudEl0ZW0KCiAgICAgICAgYWN0aXZlOiB0b29sVGlwRGVsZWdhdGUucm9v
dEluZGV4ICE9PSB1bmRlZmluZWQKICAgICAgICBhc3luY2hyb25vdXM6IHRydWUKCiAgICAgICAg
c291cmNlQ29tcG9uZW50OiBpc0dyb3VwID8gZ3JvdXBUb29sVGlwIDogc2luZ2xlVG9vbHRpcAoK
ICAgICAgICBDb21wb25lbnQgewogICAgICAgICAgICBpZDogc2luZ2xlVG9vbHRpcAoKICAgICAg
ICAgICAgVG9vbFRpcEluc3RhbmNlIHsKICAgICAgICAgICAgICAgIHN1Ym1vZGVsSW5kZXg6IHRv
b2xUaXBEZWxlZ2F0ZS5yb290SW5kZXgKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAg
Q29tcG9uZW50IHsKICAgICAgICAgICAgaWQ6IGdyb3VwVG9vbFRpcAoKICAgICAgICAgICAgUGxh
c21hQ29tcG9uZW50czMuU2Nyb2xsVmlldyB7CiAgICAgICAgICAgICAgICBpbXBsaWNpdFdpZHRo
OiBpc1ZlcnRpY2FsUGFuZWwgPyBjb250ZW50SXRlbS5jb250ZW50SXRlbS5jaGlsZHJlblJlY3Qu
d2lkdGggKyBsZWZ0UGFkZGluZyArIHJpZ2h0UGFkZGluZyA6IE1hdGgubWluKFNjcmVlbi5kZXNr
dG9wQXZhaWxhYmxlV2lkdGggLSAyICogUGxhc21hQ29yZS5Vbml0cy5zbWFsbFNwYWNpbmcsIGNv
bnRlbnRJdGVtLmNoaWxkcmVuV2lkdGgpCiAgICAgICAgICAgICAgICBpbXBsaWNpdEhlaWdodDog
aXNWZXJ0aWNhbFBhbmVsID8gTWF0aC5taW4oU2NyZWVuLmRlc2t0b3BBdmFpbGFibGVIZWlnaHQg
LSAyICogUGxhc21hQ29yZS5Vbml0cy5zbWFsbFNwYWNpbmcsIGNvbnRlbnRJdGVtLmNoaWxkcmVu
SGVpZ2h0KSA6IGNvbnRlbnRJdGVtLmNvbnRlbnRJdGVtLmNoaWxkcmVuUmVjdC5oZWlnaHQgKyBi
b3R0b21QYWRkaW5nCgogICAgICAgICAgICAgICAgTGlzdFZpZXcgewogICAgICAgICAgICAgICAg
ICAgIC8vIE5lZWQgdG8gZGVsYXkgYmluZGluZyB0byBhdm9pZCB2aXN1YWwgZ2xpdGNoZXMgKHdo
ZW4gdGhlIG1vdXNlIG1vdmVzIGZyb20gYSB0b29sdGlwIHdpdGggYSBzY3JvbGxiYXIgTU9WRUQg
dG8gYW5vdGhlciB0b29sdGlwIHdpdGhvdXQgYSBzY3JvbGxiYXIsIHNlZSBodHRwczovL2ludmVu
dC5rZGUub3JnL3BsYXNtYS9wbGFzbWEtZGVza3RvcC8tL21lcmdlX3JlcXVlc3RzLzYzMSNub3Rl
XzMyODYxNyBmb3IgdGhlIHZpZGVvIGRlbW9uc3RyYXRpb24pCiAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHkgaW50IGNoaWxkcmVuV2lkdGg7IEJpbmRpbmcgb24gY2hpbGRyZW5XaWR0aCB7IHZh
bHVlOiBjb250ZW50SXRlbS5jaGlsZHJlblJlY3Qud2lkdGg7IGRlbGF5ZWQ6IHRydWUgfQogICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5IGludCBjaGlsZHJlbkhlaWdodDsgQmluZGluZyBvbiBj
aGlsZHJlbkhlaWdodCB7IHZhbHVlOiBjb250ZW50SXRlbS5jaGlsZHJlblJlY3QuaGVpZ2h0OyBk
ZWxheWVkOiB0cnVlIH0KCiAgICAgICAgICAgICAgICAgICAgbW9kZWw6IERlbGVnYXRlTW9kZWwg
ewogICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDogdG9vbFRpcERlbGVnYXRlLmhhc1Jvb3RJ
bmRleCA/IHRhc2tzTW9kZWwgOiBudWxsCgogICAgICAgICAgICAgICAgICAgICAgICByb290SW5k
ZXg6IHRvb2xUaXBEZWxlZ2F0ZS5yb290SW5kZXgKCiAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGVnYXRlOiBUb29sVGlwSW5zdGFuY2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
bW9kZWxJbmRleDogdGFza3NNb2RlbC5tYWtlTW9kZWxJbmRleCh0b29sVGlwRGVsZWdhdGUucm9v
dEluZGV4LnJvdywgaW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uOiBpc1ZlcnRpY2FsUGFu
ZWwgPyBMaXN0Vmlldy5WZXJ0aWNhbCA6IExpc3RWaWV3Lkhvcml6b250YWwKICAgICAgICAgICAg
ICAgICAgICBzcGFjaW5nOiBQbGFzbWFDb3JlLlVuaXRzLmxhcmdlU3BhY2luZwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>142844</attachid>
            <date>2021-10-25 04:31:14 +0000</date>
            <delta_ts>2021-10-25 04:31:14 +0000</delta_ts>
            <desc>ToolTipDelegate.qml</desc>
            <filename>ToolTipDelegate.qml</filename>
            <type>text/x-qml</type>
            <size>4349</size>
            <attacher name="Fushan Wen">qydwhotmail</attacher>
            
              <data encoding="base64">LyoKICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMTMgU2ViYXN0aWFuIEvDvGdsZXIgPHNl
YmFzQGtkZS5vcmc+CiAgICBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDE0IE1hcnRpbiBHcsOk
w59saW4gPG1ncmFlc3NsaW5Aa2RlLm9yZz4KICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIw
MTYgS2FpIFV3ZSBCcm91bGlrIDxrZGVAcHJpdmF0LmJyb3VsaWsuZGU+CiAgICBTUERYLUZpbGVD
b3B5cmlnaHRUZXh0OiAyMDE3IFJvbWFuIEdpbGcgPHN1YmRpZmZAZ21haWwuY29tPgoKICAgIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMC1vci1sYXRlcgoqLwoKaW1wb3J0IFF0UXVp
Y2sgMi44CmltcG9ydCBRdFF1aWNrLkxheW91dHMgMS4xCmltcG9ydCBRdFF1aWNrLldpbmRvdyAy
LjAKaW1wb3J0IFF0R3JhcGhpY2FsRWZmZWN0cyAxLjAKaW1wb3J0IFF0UW1sLk1vZGVscyAyLjIK
CmltcG9ydCBvcmcua2RlLnBsYXNtYS5jb3JlIDIuMCBhcyBQbGFzbWFDb3JlCmltcG9ydCBvcmcu
a2RlLnBsYXNtYS5jb21wb25lbnRzIDMuMCBhcyBQbGFzbWFDb21wb25lbnRzMwppbXBvcnQgb3Jn
LmtkZS5rcXVpY2tjb250cm9sc2FkZG9ucyAyLjAgYXMgS1F1aWNrQ29udHJvbHNBZGRvbnMKCmlt
cG9ydCBvcmcua2RlLnRhc2ttYW5hZ2VyIDAuMSBhcyBUYXNrTWFuYWdlcgoKUm93TGF5b3V0IHsK
ICAgIGlkOiB0b29sVGlwRGVsZWdhdGUKCiAgICBwcm9wZXJ0eSBJdGVtIHBhcmVudFRhc2sKICAg
IHByb3BlcnR5IHZhciByb290SW5kZXgKICAgIC8vIGhhc1Jvb3RJbmRleCBpcyBuZWVkZWQgdG8g
YXZvaWQgdW5uZWNlc3NhcnkgcmVldmFsdWF0aW9uIG9mIG1vZGVsIHByb3BlcnR5IGluIERlbGVn
YXRlTW9kZWwsCiAgICAvLyBiZWNhdXNlICEhdG9vbFRpcERlbGVnYXRlLnJvb3RJbmRleCB3aWxs
IG5vdCB3b3JrIGFzIGV4cGVjdGVkLgogICAgcmVhZG9ubHkgcHJvcGVydHkgYm9vbCBoYXNSb290
SW5kZXg6ICEhcm9vdEluZGV4CgogICAgcHJvcGVydHkgc3RyaW5nIGFwcE5hbWUKICAgIHByb3Bl
cnR5IGludCBwaWRQYXJlbnQKICAgIHByb3BlcnR5IGJvb2wgaXNHcm91cAoKICAgIHByb3BlcnR5
IHZhciB3aW5kb3dzCiAgICByZWFkb25seSBwcm9wZXJ0eSBib29sIGlzV2luOiB3aW5kb3dzICE9
PSB1bmRlZmluZWQKCiAgICBwcm9wZXJ0eSB2YXJpYW50IGljb24KICAgIHByb3BlcnR5IHVybCBs
YXVuY2hlclVybAogICAgcHJvcGVydHkgYm9vbCBpc0xhdW5jaGVyCiAgICBwcm9wZXJ0eSBib29s
IGlzTWluaW1pemVkUGFyZW50CgogICAgLy8gTmVlZGVkIGZvciBnZW5lcmF0ZVN1YnRleHQoKQog
ICAgcHJvcGVydHkgc3RyaW5nIGRpc3BsYXlQYXJlbnQKICAgIHByb3BlcnR5IHN0cmluZyBnZW5l
cmljTmFtZQogICAgcHJvcGVydHkgdmFyIHZpcnR1YWxEZXNrdG9wUGFyZW50CiAgICBwcm9wZXJ0
eSBib29sIGlzT25BbGxWaXJ0dWFsRGVza3RvcHNQYXJlbnQKICAgIHByb3BlcnR5IHZhciBhY3Rp
dml0aWVzUGFyZW50CiAgICAvLwogICAgcHJvcGVydHkgYm9vbCBzbWFydExhdW5jaGVyQ291bnRW
aXNpYmxlCiAgICBwcm9wZXJ0eSBpbnQgc21hcnRMYXVuY2hlckNvdW50CgogICAgcmVhZG9ubHkg
cHJvcGVydHkgYm9vbCBpc1ZlcnRpY2FsUGFuZWw6IHBsYXNtb2lkLmZvcm1GYWN0b3IgPT09IFBs
YXNtYUNvcmUuVHlwZXMuVmVydGljYWwKCiAgICByZWFkb25seSBwcm9wZXJ0eSBzdHJpbmcgbXBy
aXNTb3VyY2VOYW1lOiBtcHJpczJTb3VyY2Uuc291cmNlTmFtZUZvckxhdW5jaGVyVXJsKGxhdW5j
aGVyVXJsLCBwaWRQYXJlbnQpCiAgICByZWFkb25seSBwcm9wZXJ0eSB2YXIgcGxheWVyRGF0YTog
bXByaXNTb3VyY2VOYW1lICE9ICIiID8gbXByaXMyU291cmNlLmRhdGFbbXByaXNTb3VyY2VOYW1l
XSA6IDAKICAgIHJlYWRvbmx5IHByb3BlcnR5IGJvb2wgaGFzUGxheWVyOiAhIW1wcmlzU291cmNl
TmFtZSAmJiAhIXBsYXllckRhdGEKCiAgICBCaW5kaW5nIG9uIExheW91dC5taW5pbXVtV2lkdGgg
ewogICAgICAgIHZhbHVlOiBpbXBsaWNpdFdpZHRoCiAgICAgICAgZGVsYXllZDogdHJ1ZSAvLyBQ
cmV2ZW50IGVhcmx5IGhpZGUgb2YgdG9vbHRpcCAoQlVHNDM5NTIyKQogICAgfQogICAgTGF5b3V0
Lm1heGltdW1XaWR0aDogTGF5b3V0Lm1pbmltdW1XaWR0aAoKICAgIEJpbmRpbmcgb24gTGF5b3V0
Lm1pbmltdW1IZWlnaHQgewogICAgICAgIHZhbHVlOiBpbXBsaWNpdEhlaWdodAogICAgICAgIGRl
bGF5ZWQ6IHRydWUgLy8gUHJldmVudCBlYXJseSBoaWRlIG9mIHRvb2x0aXAgKEJVRzQzOTUyMikK
ICAgIH0KICAgIExheW91dC5tYXhpbXVtSGVpZ2h0OiBMYXlvdXQubWluaW11bUhlaWdodAoKICAg
IExheW91dE1pcnJvcmluZy5lbmFibGVkOiBRdC5hcHBsaWNhdGlvbi5sYXlvdXREaXJlY3Rpb24g
PT09IFF0LlJpZ2h0VG9MZWZ0CiAgICBMYXlvdXRNaXJyb3JpbmcuY2hpbGRyZW5Jbmhlcml0OiB0
cnVlCgogICAgcHJvcGVydHkgaW50IHRleHRXaWR0aDogUGxhc21hQ29yZS5UaGVtZS5tU2l6ZShQ
bGFzbWFDb3JlLlRoZW1lLmRlZmF1bHRGb250KS53aWR0aCAqIDIwCgogICAgTG9hZGVyIHsKICAg
ICAgICBpZDogY29udGVudEl0ZW0KCiAgICAgICAgYWN0aXZlOiB0b29sVGlwRGVsZWdhdGUucm9v
dEluZGV4ICE9PSB1bmRlZmluZWQKICAgICAgICBhc3luY2hyb25vdXM6IHRydWUKCiAgICAgICAg
c291cmNlQ29tcG9uZW50OiBpc0dyb3VwID8gZ3JvdXBUb29sVGlwIDogc2luZ2xlVG9vbHRpcAoK
ICAgICAgICBDb21wb25lbnQgewogICAgICAgICAgICBpZDogc2luZ2xlVG9vbHRpcAoKICAgICAg
ICAgICAgVG9vbFRpcEluc3RhbmNlIHsKICAgICAgICAgICAgICAgIHN1Ym1vZGVsSW5kZXg6IHRv
b2xUaXBEZWxlZ2F0ZS5yb290SW5kZXgKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAg
Q29tcG9uZW50IHsKICAgICAgICAgICAgaWQ6IGdyb3VwVG9vbFRpcAoKICAgICAgICAgICAgUGxh
c21hQ29tcG9uZW50czMuU2Nyb2xsVmlldyB7CiAgICAgICAgICAgICAgICBpbXBsaWNpdFdpZHRo
OiBpc1ZlcnRpY2FsUGFuZWwgPyBjb250ZW50SXRlbS5jb250ZW50SXRlbS5jaGlsZHJlblJlY3Qu
d2lkdGggKyBsZWZ0UGFkZGluZyArIHJpZ2h0UGFkZGluZyA6IE1hdGgubWluKFNjcmVlbi5kZXNr
dG9wQXZhaWxhYmxlV2lkdGggLSAyICogUGxhc21hQ29yZS5Vbml0cy5zbWFsbFNwYWNpbmcsIGNv
bnRlbnRJdGVtLmNvbnRlbnRJdGVtLmNoaWxkcmVuUmVjdC53aWR0aCkKICAgICAgICAgICAgICAg
IGltcGxpY2l0SGVpZ2h0OiBpc1ZlcnRpY2FsUGFuZWwgPyBNYXRoLm1pbihTY3JlZW4uZGVza3Rv
cEF2YWlsYWJsZUhlaWdodCAtIDIgKiBQbGFzbWFDb3JlLlVuaXRzLnNtYWxsU3BhY2luZywgY29u
dGVudEl0ZW0uY29udGVudEl0ZW0uY2hpbGRyZW5SZWN0LmhlaWdodCkgOiBjb250ZW50SXRlbS5j
b250ZW50SXRlbS5jaGlsZHJlblJlY3QuaGVpZ2h0ICsgYm90dG9tUGFkZGluZwoKICAgICAgICAg
ICAgICAgIExpc3RWaWV3IHsKICAgICAgICAgICAgICAgICAgICBpZDogZ3JvdXBUb29sVGlwTGlz
dFZpZXcKCiAgICAgICAgICAgICAgICAgICAgbW9kZWw6IERlbGVnYXRlTW9kZWwgewogICAgICAg
ICAgICAgICAgICAgICAgICBtb2RlbDogdG9vbFRpcERlbGVnYXRlLmhhc1Jvb3RJbmRleCA/IHRh
c2tzTW9kZWwgOiBudWxsCgogICAgICAgICAgICAgICAgICAgICAgICByb290SW5kZXg6IHRvb2xU
aXBEZWxlZ2F0ZS5yb290SW5kZXgKICAgICAgICAgICAgICAgICAgICAgICAgb25Sb290SW5kZXhD
aGFuZ2VkOiBncm91cFRvb2xUaXBMaXN0Vmlldy5wb3NpdGlvblZpZXdBdEJlZ2lubmluZygpIC8v
IEZpeCBhIHZpc3VhbCBnbGl0Y2ggKHdoZW4gdGhlIG1vdXNlIG1vdmVzIGZyb20gYSB0b29sdGlw
IHdpdGggYSBzY3JvbGxiYXIgTU9WRUQgdG8gYW5vdGhlciB0b29sdGlwIHdpdGhvdXQgYSBzY3Jv
bGxiYXIpCgogICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogVG9vbFRpcEluc3RhbmNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1vZGVsSW5kZXg6IHRhc2tzTW9kZWwu
bWFrZU1vZGVsSW5kZXgodG9vbFRpcERlbGVnYXRlLnJvb3RJbmRleC5yb3csIGluZGV4KQogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICAgICBvcmllbnRhdGlvbjogaXNWZXJ0aWNhbFBhbmVsID8gTGlzdFZpZXcuVmVydGljYWwg
OiBMaXN0Vmlldy5Ib3Jpem9udGFsCiAgICAgICAgICAgICAgICAgICAgc3BhY2luZzogUGxhc21h
Q29yZS5Vbml0cy5sYXJnZVNwYWNpbmcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgIH0KfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>