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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>6571</bug_id>
          
          <creation_ts>2006-01-15 16:53:19 -0800</creation_ts>
          <short_desc>New Web (DOM) Inspector</short_desc>
          <delta_ts>2006-01-15 18:42:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>28533</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-01-15 16:53:19 -0800</bug_when>
    <thetext>Add a DOM inspector that lives in WebKit and is accessible from any WebView.

The inspector should allow the following:
 * View and walk the DOM tree.
 * View serialized HTML from a DOM sub-tree.
 * View CSS rules and computed style for elements.
 * View properties for nodes.
 * View metrics for nodes, including absolute position, parent relative position, padding, margin, etc.
 * Highlight nodes in the WebView.
 * Search for nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28534</commentid>
    <comment_count>1</comment_count>
      <attachid>5707</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-01-15 16:57:40 -0800</bug_when>
    <thetext>Created attachment 5707
Inspector Patch (first cut)

This patch gets the Inspector working and living in WebKit. Accessible from a
contextual menu when the WebKitEnableInspectElementContextMenuItem default is
true or you have a development build. Browsing the tree, serialized HTML and
CSS rules work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28535</commentid>
    <comment_count>2</comment_count>
      <attachid>5708</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-01-15 17:01:59 -0800</bug_when>
    <thetext>Created attachment 5708
Images (First Cut)

Images that go with the first cut patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28542</commentid>
    <comment_count>3</comment_count>
      <attachid>5707</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-15 17:37:13 -0800</bug_when>
    <thetext>Comment on attachment 5707
Inspector Patch (first cut)

+  scrollIntoViewIfNeeded	DOMElement::ScrollIntoView     
DontDelete|Function 1

Bug on this line. Needs to say DOMElement::ScrollIntoViewIfNeeded.

+	 return rects;
+    } else if(!firstChild())
+	 return QValueList&lt;IntRect&gt;();

No need for else after return. Need space after if.

+    RenderObject *child = firstChild();
+    while (child) {

More elegant to write the above as a for loop.

+	 return IntRect(0,0,0,0);

Should use spaces after commas.

-@interface DOMElement (DOMElementExtensions)
-- (void)focus;
-- (void)blur;
-@end
-
Not good to move public API out of a public header DOMExtensions.h. Should put
the new stuff in a new category temporarily and leave the already-public stuff
public.

Are we going to make this localizable?

+	     return [_private-&gt;searchResults count];
+	 else if (!item)
+	     return 1;

No need for else after return.

+	     return [_private-&gt;searchResults objectAtIndex:index];
+	 else if (!item)
+	     return _private-&gt;rootNode;

Again.

+    DOMNode *currentNode = [node parentNode];
+    while (currentNode) {
+	 if ([self isSameNode:currentNode])
+	     return YES;
+	 currentNode = [currentNode parentNode];
+    }

Above looks like it should be a for loop.

Looks like a great start. At least that very first thing I mentioned should be
fixed before landing, but I&apos;m going to be loose here and say review+. Lets get
that first cut in there!

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28544</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-01-15 18:42:39 -0800</bug_when>
    <thetext>Modified per the comments from Darin, Eric and Maciej. Committed in r12122.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5707</attachid>
            <date>2006-01-15 16:57:40 -0800</date>
            <delta_ts>2006-01-15 17:37:13 -0800</delta_ts>
            <desc>Inspector Patch (first cut)</desc>
            <filename>WebInspector.patch</filename>
            <type>text/plain</type>
            <size>164111</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL3htbC9kb21fZWxlbWVudGltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC94
bWwvZG9tX2VsZW1lbnRpbXBsLmgJKHJldmlzaW9uIDEyMTE0KQorKysga2h0bWwveG1sL2RvbV9l
bGVtZW50aW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0QXR0cmlidXRlTlMoY29uc3QgRE9NU3RyaW5nICZuYW1lc3BhY2VVUkksIGNv
bnN0IERPTVN0cmluZyAmcXVhbGlmaWVkTmFtZSwgY29uc3QgRE9NU3RyaW5nICZ2YWx1ZSwgaW50
ICZleGNlcHRpb24pOwogCiAgICAgdm9pZCBzY3JvbGxJbnRvVmlldyAoYm9vbCBhbGlnblRvVG9w
KTsKLSAgICAKKyAgICB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9vbCBjZW50ZXJJZk5l
ZWRlZCk7CisKICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcgJm5hbWUs
IGludCAmZXhjZXB0aW9uKSB7IHJlbW92ZUF0dHJpYnV0ZU5TKERPTVN0cmluZygpLCBuYW1lLCBl
eGNlcHRpb24pOyB9CiAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBET01TdHJpbmcg
Jm5hbWVzcGFjZVVSSSwgY29uc3QgRE9NU3RyaW5nICZsb2NhbE5hbWUsIGludCAmZXhjZXB0aW9u
KTsKIApJbmRleDoga2h0bWwveG1sL2RvbV9lbGVtZW50aW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2h0bWwveG1sL2RvbV9lbGVtZW50aW1wbC5jcHAJKHJldmlzaW9uIDEyMTE0KQorKysga2h0bWwv
eG1sL2RvbV9lbGVtZW50aW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw2ICszNjEsMTcg
QEAgdm9pZCBFbGVtZW50SW1wbDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbAogICAgIH0KIH0KIAor
dm9pZCBFbGVtZW50SW1wbDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChib29sIGNlbnRlcklmTmVl
ZGVkKQoreworICAgIEludFJlY3QgYm91bmRzID0gdGhpcy0+Z2V0UmVjdCgpOyAgICAKKyAgICBp
ZiAobV9yZW5kZXIpIHsKKyAgICAgICAgaWYgKGNlbnRlcklmTmVlZGVkKQorICAgICAgICAgICAg
bV9yZW5kZXItPmVuY2xvc2luZ0xheWVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYm91bmRzLCBS
ZW5kZXJMYXllcjo6Z0FsaWduQ2VudGVySWZOZWVkZWQsIFJlbmRlckxheWVyOjpnQWxpZ25DZW50
ZXJJZk5lZWRlZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcmVuZGVyLT5lbmNsb3Np
bmdMYXllcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kcywgUmVuZGVyTGF5ZXI6OmdBbGln
blRvRWRnZUlmTmVlZGVkLCBSZW5kZXJMYXllcjo6Z0FsaWduVG9FZGdlSWZOZWVkZWQpOworICAg
IH0KK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50SW1wbDo6Z2V0QXR0cmlidXRlTlMo
Y29uc3QgRE9NU3RyaW5nICZuYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBET01TdHJpbmcgJmxvY2FsTmFtZSkgY29uc3QK
IHsKSW5kZXg6IGtodG1sL2VjbWEva2pzX2RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNt
YS9ranNfZG9tLmNwcAkocmV2aXNpb24gMTIxMTQpCisrKyBraHRtbC9lY21hL2tqc19kb20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEwLDYgKzExMTAsNyBAQCBKU1ZhbHVlICpET01Eb2N1bWVu
dFByb3RvRnVuYzo6Y2FsbEFzRnVuCiAgIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMgRE9NRWxlbWVu
dDo6R2V0RWxlbWVudHNCeVRhZ05hbWVOUwlEb250RGVsZXRlfEZ1bmN0aW9uIDIKICAgaGFzQXR0
cmlidXRlTlMJRE9NRWxlbWVudDo6SGFzQXR0cmlidXRlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAy
CiAgIHNjcm9sbEludG9WaWV3ICAgICAgICBET01FbGVtZW50OjpTY3JvbGxJbnRvVmlldyAgICAg
IERvbnREZWxldGV8RnVuY3Rpb24gMQorICBzY3JvbGxJbnRvVmlld0lmTmVlZGVkCURPTUVsZW1l
bnQ6OlNjcm9sbEludG9WaWV3ICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCiAgIGZvY3VzICAg
ICAgICAgICAgICAgICBET01FbGVtZW50OjpFbGVtZW50Rm9jdXMgICAgICAgIERvbnREZWxldGV8
RnVuY3Rpb24gMAogICBibHVyICAgICAgICAgICAgICAgICAgRE9NRWxlbWVudDo6RWxlbWVudEJs
dXIgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDAKIApAQCAtMTI0Myw2ICsxMjQ0LDkgQEAg
SlNWYWx1ZSAqRE9NRWxlbWVudFByb3RvRnVuYzo6Y2FsbEFzRnVuYwogICAgIGNhc2UgRE9NRWxl
bWVudDo6U2Nyb2xsSW50b1ZpZXc6IAogICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KGFy
Z3NbMF0tPmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJnc1swXS0+dG9Cb29sZWFuKGV4ZWMpKTsK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgY2FzZSBET01FbGVtZW50OjpTY3Jv
bGxJbnRvVmlld0lmTmVlZGVkOiAKKyAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVl
ZGVkKGFyZ3NbMF0tPmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJnc1swXS0+dG9Cb29sZWFuKGV4
ZWMpKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgY2FzZSBET01FbGVtZW50
OjpTY3JvbGxCeUxpbmVzOgogICAgIGNhc2UgRE9NRWxlbWVudDo6U2Nyb2xsQnlQYWdlczoKICAg
ICAgIGlmIChEb2N1bWVudEltcGwqIGRvYyA9IGVsZW1lbnQuZ2V0RG9jdW1lbnQoKSkgewpJbmRl
eDoga2h0bWwvZWNtYS9ranNfZG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9ranNfZG9t
LmgJKHJldmlzaW9uIDEyMTE0KQorKysga2h0bWwvZWNtYS9ranNfZG9tLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgICAgIE9uTW91c2VN
b3ZlLCBPbk1vdXNlT3V0LCBPbk1vdXNlT3ZlciwgT25Nb3VzZVVwLCBPbk1vdXNlV2hlZWwsIE9u
TW92ZSwgT25SZXNldCwKICAgICAgICAgICAgT25SZXNpemUsIE9uU2Nyb2xsLCBPblNlYXJjaCwg
T25TZWxlY3QsIE9uU3VibWl0LCBPblVubG9hZCwKICAgICAgICAgICAgT2Zmc2V0TGVmdCwgT2Zm
c2V0VG9wLCBPZmZzZXRXaWR0aCwgT2Zmc2V0SGVpZ2h0LCBPZmZzZXRQYXJlbnQsCi0gICAgICAg
ICAgIENsaWVudFdpZHRoLCBDbGllbnRIZWlnaHQsIFNjcm9sbExlZnQsIFNjcm9sbFRvcCwgU2Ny
b2xsV2lkdGgsIFNjcm9sbEhlaWdodCwgU2Nyb2xsSW50b1ZpZXcgfTsKKyAgICAgICAgICAgQ2xp
ZW50V2lkdGgsIENsaWVudEhlaWdodCwgU2Nyb2xsTGVmdCwgU2Nyb2xsVG9wLCBTY3JvbGxXaWR0
aCwgU2Nyb2xsSGVpZ2h0LAorICAgICAgICAgICBTY3JvbGxJbnRvVmlldywgU2Nyb2xsSW50b1Zp
ZXdJZk5lZWRlZCB9OwogCiAgIHByb3RlY3RlZDoKICAgICAvLyBDb25zdHJ1Y3RvciBmb3IgaW5o
ZXJpdGVkIGNsYXNzZXM7IGRvZXNuJ3Qgc2V0IHVwIGEgcHJvdG90eXBlLgpJbmRleDoga2h0bWwv
cmVuZGVyaW5nL3JlbmRlcl9jb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9yZW5kZXJp
bmcvcmVuZGVyX2NvbnRhaW5lci5oCShyZXZpc2lvbiAxMjExNCkKKysrIGtodG1sL3JlbmRlcmlu
Zy9yZW5kZXJfY29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDggQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlUHNldWRvQ2hpbGQoUmVuZGVyU3R5bGU6OlBzZXVkb0lkIHR5
cGUsIFJlbmRlck9iamVjdCogY2hpbGQpOwogCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24g
cG9zaXRpb25Gb3JDb29yZGluYXRlcyhpbnQgeCwgaW50IHkpOworICAgIAorICAgIHZpcnR1YWwg
UVZhbHVlTGlzdDxJbnRSZWN0PiBsaW5lQm94UmVjdHMoKTsKIAogcHJvdGVjdGVkOgogICAgIHZv
aWQgc2V0Rmlyc3RDaGlsZChSZW5kZXJPYmplY3QgKmZpcnN0KSB7IG1fZmlyc3QgPSBmaXJzdDsg
fQpJbmRleDoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jb250YWluZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfY29udGFpbmVyLmNwcAkocmV2aXNpb24gMTIxMTQp
CisrKyBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2NvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5MCw1ICs0OTAsMzAgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckNvbnRhaW5lcjo6cG9z
aXRpbwogICAgIAogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZWxlbWVudCgpLCAwLCBET1dO
U1RSRUFNKTsKIH0KLSAgICAKKworUVZhbHVlTGlzdDxJbnRSZWN0PiBSZW5kZXJDb250YWluZXI6
OmxpbmVCb3hSZWN0cygpCit7CisgICAgaWYgKCFmaXJzdENoaWxkKCkgJiYgKGlzSW5saW5lKCkg
fHwgaXNBbm9ueW1vdXNCbG9jaygpKSkgeworICAgICAgICBRVmFsdWVMaXN0PEludFJlY3Q+IHJl
Y3RzOworICAgICAgICBpbnQgeCA9IDAsIHkgPSAwOworICAgICAgICBhYnNvbHV0ZVBvc2l0aW9u
KHgsIHkpOworICAgICAgICBhYnNvbHV0ZVJlY3RzKHJlY3RzLCB4LCB5KTsKKyAgICAgICAgcmV0
dXJuIHJlY3RzOworICAgIH0gZWxzZSBpZighZmlyc3RDaGlsZCgpKQorICAgICAgICByZXR1cm4g
UVZhbHVlTGlzdDxJbnRSZWN0PigpOworCisgICAgUVZhbHVlTGlzdDxJbnRSZWN0PiByZWN0czsK
KyAgICBSZW5kZXJPYmplY3QgKmNoaWxkID0gZmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChjaGls
ZCkgeworICAgICAgICBpZihjaGlsZC0+aXNUZXh0KCkgfHwgY2hpbGQtPmlzSW5saW5lKCkgfHwg
Y2hpbGQtPmlzQW5vbnltb3VzQmxvY2soKSkgeworICAgICAgICAgICAgaW50IHggPSAwLCB5ID0g
MDsKKyAgICAgICAgICAgIGNoaWxkLT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOworICAgICAgICAg
ICAgY2hpbGQtPmFic29sdXRlUmVjdHMocmVjdHMsIHgsIHkpOworICAgICAgICB9CisgICAgICAg
IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlY3Rz
OworfQorCiAjdW5kZWYgREVCVUdfTEFZT1VUCkluZGV4OiBraHRtbC9yZW5kZXJpbmcvcmVuZGVy
X29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmgJ
KHJldmlzaW9uIDEyMTE0KQorKysga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNjcxLDYgKzY3MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBi
b3JkZXJMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyTGVmdFdpZHRoKCk7IH0K
ICAgICB2aXJ0dWFsIGludCBib3JkZXJSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmJv
cmRlclJpZ2h0V2lkdGgoKTsgfQogCisgICAgdmlydHVhbCBRVmFsdWVMaXN0PEludFJlY3Q+IGxp
bmVCb3hSZWN0cygpOworCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoUVZhbHVlTGlz
dDxJbnRSZWN0PiYgcmVjdHMsIGludCBfdHgsIGludCBfdHkpOwogICAgIEludFJlY3QgYWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKTsKICAgICAKSW5kZXg6IGtodG1sL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJl
dmlzaW9uIDEyMTE0KQorKysga2h0bWwvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTEsNiArMjExLDE1IEBAIHZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0
cyhRVmFsdWVMaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+aGVpZ2h0KCkpKTsK
IH0KIAorUVZhbHVlTGlzdDxJbnRSZWN0PiBSZW5kZXJUZXh0OjpsaW5lQm94UmVjdHMoKQorewor
ICAgIFFWYWx1ZUxpc3Q8SW50UmVjdD4gcmVjdHM7CisgICAgaW50IHggPSAwLCB5ID0gMDsKKyAg
ICBhYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOworICAgIGFic29sdXRlUmVjdHMocmVjdHMsIHgsIHkp
OworICAgIHJldHVybiByZWN0czsKK30KKwogSW5saW5lVGV4dEJveCogUmVuZGVyVGV4dDo6Zmlu
ZE5leHRJbmxpbmVUZXh0Qm94KGludCBvZmZzZXQsIGludCAmcG9zKSBjb25zdAogewogICAgIC8v
IFRoZSB0ZXh0IHJ1bnMgcG9pbnQgdG8gcGFydHMgb2YgdGhlIHJlbmRlcnRleHQncyBzdHIgc3Ry
aW5nCkluZGV4OiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX29iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuY3BwCShyZXZpc2lvbiAxMjExNCkKKysr
IGtodG1sL3JlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3
MSw2ICsxMjcxLDEyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpwYWludEJvcmRlcihRUGFpbnRlciAK
ICAgICAgICAgcC0+cmVzdG9yZSgpOyAvLyBVbmRvIHRoZSBjbGlwLgogfQogCitRVmFsdWVMaXN0
PEludFJlY3Q+IFJlbmRlck9iamVjdDo6bGluZUJveFJlY3RzKCkKK3sKKyAgICBRVmFsdWVMaXN0
PEludFJlY3Q+IHJlc3VsdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIFJlbmRlck9i
amVjdDo6YWJzb2x1dGVSZWN0cyhRVmFsdWVMaXN0PEludFJlY3Q+JiByZWN0cywgaW50IF90eCwg
aW50IF90eSkKIHsKICAgICAvLyBGb3IgYmxvY2tzIGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVh
ZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQpAQCAt
MTI5Myw3ICsxMjk5LDEwIEBAIEludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5n
Qm8KICAgICBhYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOwogICAgIFFWYWx1ZUxpc3Q8SW50UmVjdD4g
cmVjdHM7CiAgICAgYWJzb2x1dGVSZWN0cyhyZWN0cywgeCwgeSk7Ci0gICAgCisKKyAgICBpZiAo
cmVjdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gSW50UmVjdCgwLDAsMCwwKTsKKwogICAg
IFFWYWx1ZUxpc3Q8SW50UmVjdD46OkNvbnN0SXRlcmF0b3IgaXQgPSByZWN0cy5iZWdpbigpOwog
ICAgIEludFJlY3QgcmVzdWx0ID0gKml0OwogICAgIHdoaWxlICgrK2l0ICE9IHJlY3RzLmVuZCgp
KSB7CkluZGV4OiBraHRtbC9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGto
dG1sL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHJldmlzaW9uIDEyMTE0KQorKysga2h0bWwvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFj
dGlvbikgeyBhc3NlcnQoZmFsc2UpOyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFFWYWx1ZUxpc3Q8SW50UmVjdD4mIHJlY3RzLCBpbnQgX3R4LCBpbnQg
X3R5KTsKKyAgICB2aXJ0dWFsIFFWYWx1ZUxpc3Q8SW50UmVjdD4gUmVuZGVyVGV4dDo6bGluZUJv
eFJlY3RzKCk7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvckNvb3Jk
aW5hdGVzKGludCB4LCBpbnQgeSk7CiAKSW5kZXg6IGt3cS9ET01FeHRlbnNpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga3dxL0RPTUV4dGVuc2lvbnMuaAkocmV2aXNpb24gMTIxMTQpCisrKyBrd3EvRE9N
RXh0ZW5zaW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsNiBAQAogLSAoRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiAqKWNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb247CiBAZW5kCiAKLUBp
bnRlcmZhY2UgRE9NRWxlbWVudCAoRE9NRWxlbWVudEV4dGVuc2lvbnMpCi0tICh2b2lkKWZvY3Vz
OwotLSAodm9pZClibHVyOwotQGVuZAotCiBAaW50ZXJmYWNlIERPTUhUTUxFbGVtZW50IChET01I
VE1MRWxlbWVudEV4dGVuc2lvbnMpCiAtIChOU1N0cmluZyAqKWlubmVySFRNTDsKIC0gKHZvaWQp
c2V0SW5uZXJIVE1MOihOU1N0cmluZyAqKWlubmVySFRNTDsKSW5kZXg6IGt3cS9ET01Qcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga3dxL0RPTVByaXZhdGUuaAkocmV2aXNpb24gMTIxMTQpCisrKyBr
d3EvRE9NUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwyOCBAQAogLSAoTlNT
dHJpbmcgKilnZXRQcm9wZXJ0eVNob3J0aGFuZDooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWU7CiAt
IChCT09MKWlzUHJvcGVydHlJbXBsaWNpdDooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWU7CiBAZW5k
CisKK0BpbnRlcmZhY2UgRE9NTm9kZSAoRE9NTm9kZVBlbmRpbmdQdWJsaWMpCistIChCT09MKWlz
U2FtZU5vZGU6KERPTU5vZGUgKikgb3RoZXI7CistIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2Rl
ICopIG90aGVyOworCistIChOU1JlY3QpYm91bmRpbmdCb3g7CistIChOU0FycmF5ICopbGluZUJv
eFJlY3RzOworCistIChOU1N0cmluZyAqKXRleHRDb250ZW50OworLSAodm9pZClzZXRUZXh0Q29u
dGVudDooTlNTdHJpbmcgKil0ZXh0OworCistICh2b2lkKWFkZEV2ZW50TGlzdGVuZXI6KE5TU3Ry
aW5nICopdHlwZSA6KGlkIDxET01FdmVudExpc3RlbmVyPilsaXN0ZW5lciA6KEJPT0wpdXNlQ2Fw
dHVyZTsKKy0gKHZvaWQpcmVtb3ZlRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBlIDooaWQg
PERPTUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJlOworLSAoQk9PTClk
aXNwYXRjaEV2ZW50OihET01FdmVudCAqKWV2ZW50OworQGVuZAorCitAaW50ZXJmYWNlIERPTUVs
ZW1lbnQgKERPTUVsZW1lbnRFeHRlbnNpb25zKQorLSAodm9pZClmb2N1czsKKy0gKHZvaWQpYmx1
cjsKKy0gKHZvaWQpc2Nyb2xsSW50b1ZpZXc6KEJPT0wpYWxpZ25Ub3A7CistICh2b2lkKXNjcm9s
bEludG9WaWV3SWZOZWVkZWQ6KEJPT0wpY2VudGVySWZOZWVkZWQ7CitAZW5kCiAvLyBFTkQKIAog
Ly8gUGVuZGluZyBET00zIEFQSXMKSW5kZXg6IGt3cS9ET00ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3dx
L0RPTS5tbQkocmV2aXNpb24gMTIxMTQpCisrKyBrd3EvRE9NLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00MDQsNiArNDA0LDI5IEBAIHN0YXRpYyBMaXN0ZW5lck1hcCAqbGlzdGVuZXJNYXA7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorLSAoTlNSZWN0KWJvdW5kaW5nQm94Cit7CisgICAga2h0bWw6
OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZUltcGxdLT5yZW5kZXJlcigpOwor
ICAgIGlmIChyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCgpOworICAgIHJldHVybiBOU1plcm9SZWN0OworfQorCistIChOU0FycmF5ICop
bGluZUJveFJlY3RzCit7CisgICAga2h0bWw6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2Vs
ZiBfbm9kZUltcGxdLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5kZXJlcikgeworICAgICAgICBO
U011dGFibGVBcnJheSAqcmVzdWx0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwor
ICAgICAgICBRVmFsdWVMaXN0PEludFJlY3Q+IHJlY3RzID0gcmVuZGVyZXItPmxpbmVCb3hSZWN0
cygpOworICAgICAgICBpZiAoIXJlY3RzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZm9yIChR
VmFsdWVMaXN0PEludFJlY3Q+OjpDb25zdEl0ZXJhdG9yIGl0ID0gcmVjdHMuYmVnaW4oKTsgaXQg
IT0gcmVjdHMuZW5kKCk7ICsraXQpCisgICAgICAgICAgICAgICAgW3Jlc3VsdHMgYWRkT2JqZWN0
OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Kml0XV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IFtyZXN1bHRzIGF1dG9yZWxlYXNlXTsKKyAgICB9CisgICAgcmV0dXJuIG5pbDsKK30KKwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoV2ViQ29yZUludGVybmFsKQpAQCAtMTQzNiw2
ICsxNDU5LDE2IEBAIHN0YXRpYyBMaXN0ZW5lck1hcCAqbGlzdGVuZXJNYXA7CiAgICAgW3NlbGYg
X2VsZW1lbnRJbXBsXS0+Ymx1cigpOwogfQogCistICh2b2lkKXNjcm9sbEludG9WaWV3OihCT09M
KWFsaWduVG9wCit7CisgICAgW3NlbGYgX2VsZW1lbnRJbXBsXS0+c2Nyb2xsSW50b1ZpZXcoYWxp
Z25Ub3ApOworfQorCistICh2b2lkKXNjcm9sbEludG9WaWV3SWZOZWVkZWQ6KEJPT0wpY2VudGVy
SWZOZWVkZWQKK3sKKyAgICBbc2VsZiBfZWxlbWVudEltcGxdLT5zY3JvbGxJbnRvVmlld0lmTmVl
ZGVkKGNlbnRlcklmTmVlZGVkKTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gRE9NRWxl
bWVudCAoV2ViQ29yZUludGVybmFsKQpJbmRleDoga3dxL0RPTUNvcmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBrd3EvRE9NQ29yZS5oCShyZXZpc2lvbiAxMjExNCkKKysrIGt3cS9ET01Db3JlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAKIEBjbGFzcyBET01FbGVtZW50OwogQGNsYXNzIERP
TU5hbWVkTm9kZU1hcDsKIEBjbGFzcyBET01Ob2RlTGlzdDsKK0BjbGFzcyBET01FdmVudDsKIAor
QHByb3RvY29sIERPTUV2ZW50TGlzdGVuZXI7CiBAcHJvdG9jb2wgRE9NRXZlbnRUYXJnZXQ7CiAK
IHR5cGVkZWYgc3RydWN0IERPTU9iamVjdEludGVybmFsIERPTU9iamVjdEludGVybmFsOwpJbmRl
eDogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTE0KQorKysgV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxOCBAQAog
CW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTFDNjhG
NjY3MDk1QjVGQzEwMEMyOTg0RSAvKiB3ZWJJbnNwZWN0b3IgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjhGNjQwMDk1QjVGQzEwMEMyOTg0RSAvKiB3
ZWJJbnNwZWN0b3IgKi87IH07CisJCTFDNjhGNjY4MDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJJbnNw
ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
NjhGNjVDMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQzY4RjY2OTA5NUI1RkMxMDBDMjk4
NEUgLyogV2ViSW5zcGVjdG9yLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzY4RjY1RDA5NUI1RkMxMDBDMjk4NEUgLyogV2ViSW5zcGVjdG9yLm0gKi87
IH07CisJCTFDNjhGNjZBMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3JJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2OEY2NUUw
OTVCNUZDMTAwQzI5ODRFIC8qIFdlYkluc3BlY3RvckludGVybmFsLmggKi87IH07CisJCTFDNjhG
NjZCMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2OEY2NUYwOTVCNUZDMTAw
QzI5ODRFIC8qIFdlYkluc3BlY3Rvck91dGxpbmVWaWV3LmggKi87IH07CisJCTFDNjhGNjZDMDk1
QjVGQzEwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2OEY2NjAwOTVCNUZDMTAwQzI5ODRF
IC8qIFdlYkluc3BlY3Rvck91dGxpbmVWaWV3Lm0gKi87IH07CisJCTFDNjhGNjZEMDk1QjVGQzEw
MEMyOTg0RSAvKiBXZWJJbnNwZWN0b3JQYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2OEY2NjEwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYkluc3Bl
Y3RvclBhbmVsLmggKi87IH07CisJCTFDNjhGNjZFMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJJbnNw
ZWN0b3JQYW5lbC5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM2OEY2NjIwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYkluc3BlY3RvclBhbmVsLm0gKi87IH07
CisJCTFDNjhGNjZGMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJOb2RlSGlnaGxpZ2h0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzY4RjY2MzA5NUI1RkMx
MDBDMjk4NEUgLyogV2ViTm9kZUhpZ2hsaWdodC5oICovOyB9OworCQkxQzY4RjY3MDA5NUI1RkMx
MDBDMjk4NEUgLyogV2ViTm9kZUhpZ2hsaWdodC5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2OEY2NjQwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYk5vZGVI
aWdobGlnaHQubSAqLzsgfTsKKwkJMUM2OEY2NzEwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYk5vZGVI
aWdobGlnaHRWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzY4RjY2NTA5NUI1RkMxMDBDMjk4NEUgLyogV2ViTm9kZUhpZ2hsaWdodFZpZXcuaCAq
LzsgfTsKKwkJMUM2OEY2NzIwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYk5vZGVIaWdobGlnaHRWaWV3
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzY4RjY2
NjA5NUI1RkMxMDBDMjk4NEUgLyogV2ViTm9kZUhpZ2hsaWdodFZpZXcubSAqLzsgfTsKIAkJMjIw
Mzk4NzcwOTIyRDgxNjAwOUMzRkZDIC8qIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXdJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjIwMzk4
NEEwOTIyRDc2NTAwOUMzRkZDIC8qIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXdJbnRlcm5hbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTIyNDEwMEYzMDkxODE4
RDkwMEQyRDI2NiAvKiBXZWJQbHVnaW5zUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI0MTAwRjIwOTE4MThEOTAwRDJEMjY2IC8qIFdlYlBs
dWdpbnNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMjI0MTAwRjkwOTE4MTkwMTAwRDJEMjY2IC8qIFdlYlBsdWdpbnNQcml2YXRlLm0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjQxMDBGODA5
MTgxOTAxMDBEMkQyNjYgLyogV2ViUGx1Z2luc1ByaXZhdGUubSAqLzsgfTsKQEAgLTMyOCw2ICsz
NDAsMTggQEAKIC8qIEVuZCBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTFDNjhGNjQwMDk1QjVGQzEwMEMyOTg0RSAvKiB3
ZWJJbnNwZWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBmb2xkZXI7IG5hbWUgPSB3ZWJJbnNwZWN0b3I7IHBhdGggPSBXZWJJbnNwZWN0b3Iuc3Vi
cHJvai93ZWJJbnNwZWN0b3I7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJMUM2OEY2
NUMwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYkluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3Rvci5oOyBwYXRoID0gV2Vi
SW5zcGVjdG9yLnN1YnByb2ovV2ViSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTFDNjhGNjVEMDk1QjVGQzEwMEMy
OTg0RSAvKiBXZWJJbnNwZWN0b3IubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLm9iamM7IG5hbWUgPSBXZWJJbnNwZWN0b3IubTsgcGF0aCA9IFdlYkluc3BlY3Rvci5z
dWJwcm9qL1dlYkluc3BlY3Rvci5tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQkxQzY4RjY1RTA5NUI1RkMxMDBDMjk4NEUgLyogV2Vi
SW5zcGVjdG9ySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JJbnRlcm5hbC5oOyBwYXRoID0gV2ViSW5zcGVjdG9y
LnN1YnByb2ovV2ViSW5zcGVjdG9ySW50ZXJuYWwuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJMUM2OEY2NUYwOTVCNUZDMTAwQzI5
ODRFIC8qIFdlYkluc3BlY3Rvck91dGxpbmVWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yT3V0bGluZVZpZXcuaDsgcGF0
aCA9IFdlYkluc3BlY3Rvci5zdWJwcm9qL1dlYkluc3BlY3Rvck91dGxpbmVWaWV3Lmg7IHNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTFD
NjhGNjYwMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IFdlYkluc3Bl
Y3Rvck91dGxpbmVWaWV3Lm07IHBhdGggPSBXZWJJbnNwZWN0b3Iuc3VicHJvai9XZWJJbnNwZWN0
b3JPdXRsaW5lVmlldy5tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OworCQkxQzY4RjY2MTA5NUI1RkMxMDBDMjk4NEUgLyogV2ViSW5zcGVj
dG9yUGFuZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJJbnNwZWN0b3JQYW5lbC5oOyBwYXRoID0gV2ViSW5zcGVjdG9yLnN1YnByb2ovV2Vi
SW5zcGVjdG9yUGFuZWwuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKKwkJMUM2OEY2NjIwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYkluc3Bl
Y3RvclBhbmVsLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpj
OyBuYW1lID0gV2ViSW5zcGVjdG9yUGFuZWwubTsgcGF0aCA9IFdlYkluc3BlY3Rvci5zdWJwcm9q
L1dlYkluc3BlY3RvclBhbmVsLm07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTFDNjhGNjYzMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJO
b2RlSGlnaGxpZ2h0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViTm9kZUhpZ2hsaWdodC5oOyBwYXRoID0gV2ViSW5zcGVjdG9yLnN1YnByb2ov
V2ViTm9kZUhpZ2hsaWdodC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB3cmFwc0xpbmVzID0gMDsgfTsKKwkJMUM2OEY2NjQwOTVCNUZDMTAw
QzI5ODRFIC8qIFdlYk5vZGVIaWdobGlnaHQubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBXZWJOb2RlSGlnaGxpZ2h0Lm07IHBhdGggPSBXZWJJ
bnNwZWN0b3Iuc3VicHJvai9XZWJOb2RlSGlnaGxpZ2h0Lm07IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTFDNjhGNjY1MDk1QjVGQzEw
MEMyOTg0RSAvKiBXZWJOb2RlSGlnaGxpZ2h0Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYk5vZGVIaWdobGlnaHRWaWV3Lmg7IHBhdGgg
PSBXZWJJbnNwZWN0b3Iuc3VicHJvai9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5oOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQkxQzY4RjY2
NjA5NUI1RkMxMDBDMjk4NEUgLyogV2ViTm9kZUhpZ2hsaWdodFZpZXcubSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBXZWJOb2RlSGlnaGxpZ2h0
Vmlldy5tOyBwYXRoID0gV2ViSW5zcGVjdG9yLnN1YnByb2ovV2ViTm9kZUhpZ2hsaWdodFZpZXcu
bTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJMjIwMzk4NEEwOTIyRDc2NTAwOUMzRkZDIC8qIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXdJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXdJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJMjI0MTAwRjIwOTE4
MThEOTAwRDJEMjY2IC8qIFdlYlBsdWdpbnNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGx1Z2luc1ByaXZhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTIyNDEw
MEY4MDkxODE5MDEwMEQyRDI2NiAvKiBXZWJQbHVnaW5zUHJpdmF0ZS5tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYlBsdWdpbnNQcml2YXRl
Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwpAQCAtNjUwLDYgKzY3NCw3IEBACiAJCQkJRjVFQkM0NTIwMjEzNEJCNjAxQ0ExNTIwIC8qIFBs
dWdpbnMgKi8sCiAJCQkJRjVCMzZCNDAwMjgxREU4NzAxODYzNUNCIC8qIFdlYkNvcmUgU3VwcG9y
dCAqLywKIAkJCQk5QzdDQUJCQjAxOTBBMzdDMEVDQTE2RUEgLyogV2ViVmlldyAqLywKKwkJCQkx
QzY4RjYzRjA5NUI1RjlDMDBDMjk4NEUgLyogV2ViIEluc3BlY3RvciAqLywKIAkJCQlGN0VCRUU1
OTAzRjlEQjIyMDNDQTBERTYgLyogQ2FyYm9uIFN1cHBvcnQgKi8sCiAJCQkJMDg5QzE2NjVGRTg0
MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywKIAkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFD
MDcgLyogRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovLApAQCAtNjkxLDYgKzcxNiwyNiBAQAog
CQkJbmFtZSA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsKIAkJfTsK
KwkJMUM2OEY2M0YwOTVCNUY5QzAwQzI5ODRFIC8qIFdlYiBJbnNwZWN0b3IgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNjhGNjQwMDk1QjVGQzEwMEMy
OTg0RSAvKiB3ZWJJbnNwZWN0b3IgKi8sCisJCQkJMUM2OEY2NUMwOTVCNUZDMTAwQzI5ODRFIC8q
IFdlYkluc3BlY3Rvci5oICovLAorCQkJCTFDNjhGNjVEMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJJ
bnNwZWN0b3IubSAqLywKKwkJCQkxQzY4RjY1RTA5NUI1RkMxMDBDMjk4NEUgLyogV2ViSW5zcGVj
dG9ySW50ZXJuYWwuaCAqLywKKwkJCQkxQzY4RjY1RjA5NUI1RkMxMDBDMjk4NEUgLyogV2ViSW5z
cGVjdG9yT3V0bGluZVZpZXcuaCAqLywKKwkJCQkxQzY4RjY2MDA5NUI1RkMxMDBDMjk4NEUgLyog
V2ViSW5zcGVjdG9yT3V0bGluZVZpZXcubSAqLywKKwkJCQkxQzY4RjY2MTA5NUI1RkMxMDBDMjk4
NEUgLyogV2ViSW5zcGVjdG9yUGFuZWwuaCAqLywKKwkJCQkxQzY4RjY2MjA5NUI1RkMxMDBDMjk4
NEUgLyogV2ViSW5zcGVjdG9yUGFuZWwubSAqLywKKwkJCQkxQzY4RjY2MzA5NUI1RkMxMDBDMjk4
NEUgLyogV2ViTm9kZUhpZ2hsaWdodC5oICovLAorCQkJCTFDNjhGNjY0MDk1QjVGQzEwMEMyOTg0
RSAvKiBXZWJOb2RlSGlnaGxpZ2h0Lm0gKi8sCisJCQkJMUM2OEY2NjUwOTVCNUZDMTAwQzI5ODRF
IC8qIFdlYk5vZGVIaWdobGlnaHRWaWV3LmggKi8sCisJCQkJMUM2OEY2NjYwOTVCNUZDMTAwQzI5
ODRFIC8qIFdlYk5vZGVIaWdobGlnaHRWaWV3Lm0gKi8sCisJCQkpOworCQkJbmFtZSA9ICJXZWIg
SW5zcGVjdG9yIjsKKwkJCXBhdGggPSBXZWJWaWV3LnN1YnByb2o7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OwogCQkyNTREQzMzNDAxNkUxRDNGMEVDQTE0OUUgLyogTWlzYyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMjU2LDYgKzEzMDEs
MTIgQEAKIAkJCQkyMkYyMTlDQzA4RDIzNjczMDAzMEUwNzggLyogV2ViQmFja0ZvcndhcmRMaXN0
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUJEREYyMEQwOEVCMEREQzAwMUUxMjQxIC8q
IFdlYkRvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTIyNDEwMEYzMDkxODE4
RDkwMEQyRDI2NiAvKiBXZWJQbHVnaW5zUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM2
OEY2NjgwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMUM2OEY2NkEwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYkluc3BlY3RvckludGVybmFsLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxQzY4RjY2QjA5NUI1RkMxMDBDMjk4NEUgLyogV2ViSW5zcGVjdG9y
T3V0bGluZVZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDNjhGNjZEMDk1QjVGQzEwMEMyOTg0
RSAvKiBXZWJJbnNwZWN0b3JQYW5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM2OEY2NkYwOTVC
NUZDMTAwQzI5ODRFIC8qIFdlYk5vZGVIaWdobGlnaHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFD
NjhGNjcxMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJOb2RlSGlnaGxpZ2h0Vmlldy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjVDN0Y0MkMwOTc5REU2NDAwMjJFNDUzIC8qIFdlYlBhZ2VCcmlkZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwpAQCAtMTQwMyw2ICsxNDU0LDcgQEAKIAkJCQk5Mzk4MTBCODA4MjRCRjAxMDA4REYw
MzggLyogbWlzc2luZ19pbWFnZS50aWZmIGluIFJlc291cmNlcyAqLywKIAkJCQk5Mzk4MTBCOTA4
MjRCRjAxMDA4REYwMzggLyogV2ViVmlld0VkaXRpbmdDb250ZXh0TWVudS5uaWIgaW4gUmVzb3Vy
Y2VzICovLAogCQkJCTkzOTgxMEJBMDgyNEJGMDEwMDhERjAzOCAvKiBJRE5TY3JpcHRXaGl0ZUxp
c3QudHh0IGluIFJlc291cmNlcyAqLywKKwkJCQkxQzY4RjY2NzA5NUI1RkMxMDBDMjk4NEUgLyog
d2ViSW5zcGVjdG9yIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE3ODAsNiArMTgzMiwxMSBAQAogCQkJ
CTdFNkZFRjAyMDg5ODVBM0UwMEM0NEMzRiAvKiBXZWJEZWZhdWx0U2NyaXB0RGVidWdEZWxlZ2F0
ZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U2RkVGMDkwODk4NUE3MjAwQzQ0QzNGIC8qIFdlYlNj
cmlwdERlYnVnRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLAogCQkJCTIyNDEwMEY5MDkxODE5MDEw
MEQyRDI2NiAvKiBXZWJQbHVnaW5zUHJpdmF0ZS5tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM2OEY2
NjkwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYkluc3BlY3Rvci5tIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUM2OEY2NkMwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYkluc3BlY3Rvck91dGxpbmVWaWV3Lm0gaW4g
U291cmNlcyAqLywKKwkJCQkxQzY4RjY2RTA5NUI1RkMxMDBDMjk4NEUgLyogV2ViSW5zcGVjdG9y
UGFuZWwubSBpbiBTb3VyY2VzICovLAorCQkJCTFDNjhGNjcwMDk1QjVGQzEwMEMyOTg0RSAvKiBX
ZWJOb2RlSGlnaGxpZ2h0Lm0gaW4gU291cmNlcyAqLywKKwkJCQkxQzY4RjY3MjA5NUI1RkMxMDBD
Mjk4NEUgLyogV2ViTm9kZUhpZ2hsaWdodFZpZXcubSBpbiBTb3VyY2VzICovLAogCQkJCTY1QzdG
NDJEMDk3OURFNjQwMDIyRTQ1MyAvKiBXZWJQYWdlQnJpZGdlLm0gaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFdl
Ykluc3BlY3Rvci5zdWJwcm9qL1dlYkluc3BlY3Rvci5tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkluc3Bl
Y3Rvci5zdWJwcm9qL1dlYkluc3BlY3Rvci5tCShyZXZpc2lvbiAwKQorKysgV2ViSW5zcGVjdG9y
LnN1YnByb2ovV2ViSW5zcGVjdG9yLm0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI4NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgorI2ltcG9ydCA8V2ViS2l0
L1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViSFRNTFZpZXcuaD4KKyNpbXBv
cnQgPFdlYktpdC9XZWJGcmFtZS5oPgorI2ltcG9ydCA8V2ViS2l0L0RPTUNvcmUuaD4KKyNpbXBv
cnQgPFdlYktpdC9ET01FdmVudHMuaD4KKyNpbXBvcnQgPFdlYktpdC9ET01IVE1MLmg+CisjaW1w
b3J0IDxXZWJLaXQvRE9NQ1NTLmg+CisjaW1wb3J0IDxXZWJLaXQvRE9NVHJhdmVyc2FsLmg+Cisj
aW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5oPgorI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJJbnNwZWN0b3IuaD4KKyNpbXBvcnQgPFdlYktpdC9X
ZWJJbnNwZWN0b3JJbnRlcm5hbC5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkxvY2FsaXphYmxlU3Ry
aW5ncy5oPgorCisjaW1wb3J0ICJXZWJLaXROU1N0cmluZ0V4dHJhcy5oIgorI2ltcG9ydCAiV2Vi
Tm9kZUhpZ2hsaWdodC5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9yUGFuZWwuaCIKKyNpbXBvcnQg
IldlYkluc3BlY3Rvck91dGxpbmVWaWV3LmgiCisKK3N0YXRpYyBOU01hcFRhYmxlICpsZW5ndGhJ
Z25vcmluZ1doaXRlc3BhY2VDYWNoZSA9IE5VTEw7CitzdGF0aWMgTlNNYXBUYWJsZSAqbGFzdENo
aWxkSW5kZXhJZ25vcmluZ1doaXRlc3BhY2VDYWNoZSA9IE5VTEw7CitzdGF0aWMgTlNNYXBUYWJs
ZSAqbGFzdENoaWxkSWdub3JpbmdXaGl0ZXNwYWNlQ2FjaGUgPSBOVUxMOworCitAaW1wbGVtZW50
YXRpb24gV2ViSW5zcGVjdG9yCisrIChXZWJJbnNwZWN0b3IgKilzaGFyZWRXZWJJbnNwZWN0b3IK
K3sKKyAgICBzdGF0aWMgV2ViSW5zcGVjdG9yICpfc2hhcmVkV2ViSW5zcGVjdG9yID0gbmlsOwor
ICAgIGlmICghX3NoYXJlZFdlYkluc3BlY3RvcikgeworICAgICAgICBfc2hhcmVkV2ViSW5zcGVj
dG9yID0gW1tzZWxmIGFsbG9jXSBpbml0V2l0aFdlYkZyYW1lOm5pbF07CisgICAgICAgIF9zaGFy
ZWRXZWJJbnNwZWN0b3ItPl9wcml2YXRlLT5pc1NoYXJlZEluc3BlY3RvciA9IFlFUzsKKyAgICB9
CisgICAgcmV0dXJuIF9zaGFyZWRXZWJJbnNwZWN0b3I7Cit9CisKKyNwcmFnbWEgbWFyayAtCisK
Ky0gKGlkKWluaXQKK3sKKyAgICBpZiAoIVtzdXBlciBpbml0V2l0aFdpbmRvdzpuaWxdKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgW3NlbGYgc2V0V2luZG93RnJhbWVBdXRvc2F2ZU5hbWU6
QCJXZWIgSW5zcGVjdG9yIl07CisKKyAgICBfcHJpdmF0ZSA9IFtbV2ViSW5zcGVjdG9yUHJpdmF0
ZSBhbGxvY10gaW5pdF07CisgICAgX3ByaXZhdGUtPmlnbm9yZVdoaXRlc3BhY2UgPSBZRVM7CisK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoaWQpaW5pdFdpdGhXZWJGcmFtZTooV2ViRnJhbWUg
Kikgd2ViRnJhbWUKK3sKKyAgICBpZiAoIVtzZWxmIGluaXRdKQorICAgICAgICByZXR1cm4gbmls
OworICAgIFtzZWxmIHNldFdlYkZyYW1lOndlYkZyYW1lXTsKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAodm9pZClkZWFsbG9jCit7CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6QCJXZWJOb2RlSGlnaGxpZ2h0RXhwaXJl
ZCIgb2JqZWN0Om5pbF07CisgICAgW19wcml2YXRlIHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFs
bG9jXTsKK30KKworI3ByYWdtYSBtYXJrIC0KKworLSAoTlNXaW5kb3cgKil3aW5kb3cKK3sKKyAg
ICBOU1dpbmRvdyAqd2luZG93ID0gW3N1cGVyIHdpbmRvd107CisgICAgaWYgKCF3aW5kb3cpIHsK
KyAgICAgICAgTlNQYW5lbCAqd2luZG93ID0gW1tXZWJJbnNwZWN0b3JQYW5lbCBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDYwLjAsIDIwMC4wLCAzNTAuMCwgNTUwLjApIHN0
eWxlTWFzazooTlNCb3JkZXJsZXNzV2luZG93TWFzayB8IE5TVXRpbGl0eVdpbmRvd01hc2spIGJh
Y2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOworICAgICAgICBbd2luZG93
IHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07CisgICAgICAgIFt3aW5k
b3cgc2V0T3BhcXVlOk5PXTsKKyAgICAgICAgW3dpbmRvdyBzZXRIYXNTaGFkb3c6WUVTXTsKKyAg
ICAgICAgW3dpbmRvdyBfc2V0Q29udGVudEhhc1NoYWRvdzpOT107CisgICAgICAgIFt3aW5kb3cg
c2V0V29ya3NXaGVuTW9kYWw6WUVTXTsKKyAgICAgICAgW3dpbmRvdyBzZXRBY2NlcHRzTW91c2VN
b3ZlZEV2ZW50czpZRVNdOworICAgICAgICBbd2luZG93IHNldElnbm9yZXNNb3VzZUV2ZW50czpO
T107CisgICAgICAgIFt3aW5kb3cgc2V0RmxvYXRpbmdQYW5lbDpZRVNdOworICAgICAgICBbd2lu
ZG93IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpZRVNdOworICAgICAgICBbd2luZG93IHNldE1vdmFi
bGVCeVdpbmRvd0JhY2tncm91bmQ6WUVTXTsKKyAgICAgICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpz
ZWxmXTsKKyAgICAgICAgW3dpbmRvdyBzZXRNaW5TaXplOk5TTWFrZVNpemUoMjgwLjAsIDQ1MC4w
KV07CisgICAgICAgIFt3aW5kb3cgc2V0TWF4U2l6ZTpOU01ha2VTaXplKDYwMC4wLCA3MDAuMCld
OworCisgICAgICAgIF9wcml2YXRlLT53ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOltbd2luZG93IGNvbnRlbnRWaWV3XSBmcmFtZV0gZnJhbWVOYW1lOm5pbCBncm91cE5h
bWU6bmlsXTsKKyAgICAgICAgW19wcml2YXRlLT53ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRl
OnNlbGZdOworICAgICAgICBbX3ByaXZhdGUtPndlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsK
KyAgICAgICAgW19wcml2YXRlLT53ZWJWaWV3IHNldERyYXdzQmFja2dyb3VuZDpOT107CisgICAg
ICAgIFtfcHJpdmF0ZS0+d2ViVmlldyBfc2V0RGFzaGJvYXJkQmVoYXZpb3I6V2ViRGFzaGJvYXJk
QmVoYXZpb3JBbHdheXNTZW5kTW91c2VFdmVudHNUb0FsbFdpbmRvd3MgdG86WUVTXTsKKyAgICAg
ICAgW19wcml2YXRlLT53ZWJWaWV3IF9zZXREYXNoYm9hcmRCZWhhdmlvcjpXZWJEYXNoYm9hcmRC
ZWhhdmlvckFsd2F5c0FjY2VwdHNGaXJzdE1vdXNlIHRvOllFU107CisgICAgICAgIFtbX3ByaXZh
dGUtPndlYlZpZXcgd2luZG93U2NyaXB0T2JqZWN0XSBzZXRWYWx1ZTpzZWxmIGZvcktleTpAIklu
c3BlY3RvciJdOworCisgICAgICAgIFt3aW5kb3cgc2V0Q29udGVudFZpZXc6X3ByaXZhdGUtPndl
YlZpZXddOworCisgICAgICAgIE5TU3RyaW5nICpwYXRoID0gW1tOU0J1bmRsZSBidW5kbGVGb3JD
bGFzczpbc2VsZiBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAImluc3BlY3RvciIgb2ZUeXBlOkAi
aHRtbCIgaW5EaXJlY3Rvcnk6QCJ3ZWJJbnNwZWN0b3IiXTsKKyAgICAgICAgW1tfcHJpdmF0ZS0+
d2ViVmlldyBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5p
dFdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXV0gYXV0b3JlbGVhc2VdXTsKKwor
ICAgICAgICBbc2VsZiBzZXRXaW5kb3c6d2luZG93XTsKKyAgICAgICAgW3NlbGYgd2luZG93RGlk
TG9hZF07CisgICAgICAgIHJldHVybiB3aW5kb3c7CisgICAgfQorCisgICAgcmV0dXJuIHdpbmRv
dzsKK30KKworLSAodm9pZCl3aW5kb3dEaWRMb2FkCit7CisgICAgaWYgKF9wcml2YXRlLT53aW5k
b3dMb2FkZWQpCisgICAgICAgIHJldHVybjsKKyAgICBfcHJpdmF0ZS0+d2luZG93TG9hZGVkID0g
WUVTOworCisgICAgX3ByaXZhdGUtPnJpZ2h0QXJyb3dJbWFnZSA9IFtbTlNJbWFnZSBhbGxvY10g
aW5pdFdpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNs
YXNzXV0gcGF0aEZvclJlc291cmNlOkAicmlnaHRUcmlhbmdsZSIgb2ZUeXBlOkAicG5nIiBpbkRp
cmVjdG9yeTpAIndlYkluc3BlY3Rvci9JbWFnZXMiXV07CisgICAgX3ByaXZhdGUtPmRvd25BcnJv
d0ltYWdlID0gW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5k
bGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJkb3duVHJp
YW5nbGUiIG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rvcnk6QCJ3ZWJJbnNwZWN0b3IvSW1hZ2VzIl1d
OworCisgICAgaWYgKFtfcHJpdmF0ZS0+c2VhcmNoUXVlcnkgbGVuZ3RoXSkgeworICAgICAgICBb
c2VsZiBfc2hvd1NlYXJjaFJlc3VsdHM6WUVTXTsKKyAgICAgICAgW3NlbGYgX3JlZnJlc2hTZWFy
Y2hdOworICAgIH0KKworICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2hpZ2hs
aWdodE5vZGU6KSB3aXRoT2JqZWN0Ol9wcml2YXRlLT5mb2N1c2VkTm9kZSBhZnRlckRlbGF5OjAu
MF07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfbm9kZUhpZ2hsaWdodEV4cGlyZWQ6KSBuYW1lOkAi
V2ViTm9kZUhpZ2hsaWdodEV4cGlyZWQiIG9iamVjdDpuaWxdOworfQorCistICh2b2lkKXdpbmRv
d1dpbGxDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBpZiAoIV9w
cml2YXRlLT5pc1NoYXJlZEluc3BlY3RvcikKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07Cit9CisK
Ky0gKElCQWN0aW9uKXNob3dXaW5kb3c6KGlkKSBzZW5kZXIKK3sKKyAgICBbc2VsZiBfdXBkYXRl
XTsKKyAgICBbc3VwZXIgc2hvd1dpbmRvdzpzZW5kZXJdOworfQorCisjcHJhZ21hIG1hcmsgLQor
CistICh2b2lkKXNldFdlYkZyYW1lOihXZWJGcmFtZSAqKSB3ZWJGcmFtZQoreworICAgIGlmIChb
d2ViRnJhbWUgaXNFcXVhbDpfcHJpdmF0ZS0+d2ViRnJhbWVdKQorICAgICAgICByZXR1cm47CisK
KyAgICBbd2ViRnJhbWUgcmV0YWluXTsKKyAgICBbX3ByaXZhdGUtPndlYkZyYW1lIHJlbGVhc2Vd
OworICAgIF9wcml2YXRlLT53ZWJGcmFtZSA9IHdlYkZyYW1lOworCisgICAgW3NlbGYgc2V0Rm9j
dXNlZERPTU5vZGU6W3dlYkZyYW1lIERPTURvY3VtZW50XV07Cit9CisKKy0gKFdlYkZyYW1lICop
d2ViRnJhbWUKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPndlYkZyYW1lOworfQorCisjcHJhZ21h
IG1hcmsgLQorCistICh2b2lkKXNldFJvb3RET01Ob2RlOihET01Ob2RlICopIG5vZGUKK3sKKyAg
ICBpZiAoIVtub2RlIGhhc0NoaWxkTm9kZXNdIHx8IFtub2RlIGlzU2FtZU5vZGU6X3ByaXZhdGUt
PnJvb3ROb2RlXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW25vZGUgcmV0YWluXTsKKyAgICBb
X3ByaXZhdGUtPnJvb3ROb2RlIHJlbGVhc2VdOworICAgIF9wcml2YXRlLT5yb290Tm9kZSA9IG5v
ZGU7CisKKyAgICBbc2VsZiBfdXBkYXRlUm9vdF07Cit9CisKKy0gKERPTU5vZGUgKilyb290RE9N
Tm9kZQoreworICAgIHJldHVybiBfcHJpdmF0ZS0+cm9vdE5vZGU7Cit9CisKKyNwcmFnbWEgbWFy
ayAtCisKKy0gKHZvaWQpc2V0Rm9jdXNlZERPTU5vZGU6KERPTU5vZGUgKikgbm9kZQoreworICAg
IGlmIChbbm9kZSBpc1NhbWVOb2RlOl9wcml2YXRlLT5mb2N1c2VkTm9kZV0pCisgICAgICAgIHJl
dHVybjsKKworICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBjYW5jZWxQZXJmb3JtU2Vs
ZWN0b3I6QHNlbGVjdG9yKF9oaWdobGlnaHROb2RlOikgdGFyZ2V0OnNlbGYgYXJndW1lbnQ6X3By
aXZhdGUtPmZvY3VzZWROb2RlXTsKKworICAgIFtub2RlIHJldGFpbl07CisgICAgW19wcml2YXRl
LT5mb2N1c2VkTm9kZSByZWxlYXNlXTsKKyAgICBfcHJpdmF0ZS0+Zm9jdXNlZE5vZGUgPSBub2Rl
OworCisgICAgRE9NTm9kZSAqcm9vdCA9IF9wcml2YXRlLT5yb290Tm9kZTsKKyAgICBpZiAoIXJv
b3QgfHwgKCFbcm9vdCBpc1NhbWVOb2RlOm5vZGVdICYmICFbcm9vdCBfaXNBbmNlc3Rvck9mTm9k
ZTpub2RlXSkpCisgICAgICAgIFtzZWxmIHNldFJvb3RET01Ob2RlOm5vZGVdOworCisgICAgaWYg
KCFfcHJpdmF0ZS0+d2ViVmlld0xvYWRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgW3NlbGYg
X3JldmVhbEFuZFNlbGVjdE5vZGVJblRyZWU6bm9kZV07CisgICAgW3NlbGYgX3VwZGF0ZV07CisK
KyAgICBpZiAoIV9wcml2YXRlLT5wcmV2ZW50SGlnaGxpZ2h0KSB7CisgICAgICAgIE5TUmVjdCBi
b3VuZHMgPSBbbm9kZSBib3VuZGluZ0JveF07CisgICAgICAgIGlmICghTlNJc0VtcHR5UmVjdChi
b3VuZHMpKSB7CisgICAgICAgICAgICBOU1JlY3QgdmlzaWJsZSA9IFtbW19wcml2YXRlLT53ZWJG
cmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gdmlzaWJsZVJlY3RdOworICAgICAgICAgICAg
Qk9PTCBuZWVkc1Njcm9sbCA9ICFOU0NvbnRhaW5zUmVjdCh2aXNpYmxlLCBib3VuZHMpICYmICFO
U0NvbnRhaW5zUmVjdChib3VuZHMsIHZpc2libGUpOworCisgICAgICAgICAgICAvLyBvbmx5IHNj
cm9sbCBpZiB0aGUgYm91bmRzIGlzbid0IGluIHRoZSB2aXNpYmxlIHJlY3QgYW5kIGRvc2VuJ3Qg
Y29udGFpbiB0aGUgdmlzaWJsZSByZWN0CisgICAgICAgICAgICBpZiAobmVlZHNTY3JvbGwpIHsK
KyAgICAgICAgICAgICAgICAvLyBzY3JvbGwgdG8gdGhlIHBhcmVudCBlbGVtZW50IGlmIHdlIGFy
bid0IGZvY3VlZCBvbiBhbiBlbGVtZW50CisgICAgICAgICAgICAgICAgRE9NRWxlbWVudCAqZWxl
bWVudCA9IChET01FbGVtZW50ICopX3ByaXZhdGUtPmZvY3VzZWROb2RlOworICAgICAgICAgICAg
ICAgIGlmICghW2VsZW1lbnQgaXNLaW5kT2ZDbGFzczpbRE9NRWxlbWVudCBjbGFzc11dKQorICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50ID0gKERPTUVsZW1lbnQgKilbZWxlbWVudCBwYXJlbnRO
b2RlXTsKKworICAgICAgICAgICAgICAgIGlmIChbZWxlbWVudCBpc0tpbmRPZkNsYXNzOltET01F
bGVtZW50IGNsYXNzXV0pCisgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50IHNjcm9sbEludG9W
aWV3SWZOZWVkZWQ6WUVTXTsKKworICAgICAgICAgICAgICAgIC8vIGdpdmUgdGltZSBmb3IgdGhl
IHNjcm9sbCB0byBoYXBwZW4KKyAgICAgICAgICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6
QHNlbGVjdG9yKF9oaWdobGlnaHROb2RlOikgd2l0aE9iamVjdDpub2RlIGFmdGVyRGVsYXk6MC4y
NV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFtzZWxmIF9oaWdobGln
aHROb2RlOm5vZGVdOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgW19wcml2YXRlLT5jdXJyZW50SGlnaGxpZ2h0IGV4cGlyZV07CisgICAgICAgIH0KKyAgICB9
Cit9CisKKy0gKERPTU5vZGUgKilmb2N1c2VkRE9NTm9kZQoreworICAgIHJldHVybiBfcHJpdmF0
ZS0+Zm9jdXNlZE5vZGU7Cit9CisKKyNwcmFnbWEgbWFyayAtCisKKy0gKHZvaWQpc2V0U2VhcmNo
UXVlcnk6KE5TU3RyaW5nICopIHF1ZXJ5Cit7CisgICAgaWYgKFtxdWVyeSBpc0VxdWFsVG9TdHJp
bmc6X3ByaXZhdGUtPnNlYXJjaFF1ZXJ5XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW3F1ZXJ5
IHJldGFpbl07CisgICAgW19wcml2YXRlLT5zZWFyY2hRdWVyeSByZWxlYXNlXTsKKyAgICBfcHJp
dmF0ZS0+c2VhcmNoUXVlcnkgPSBxdWVyeTsKKworICAgIGlmIChfcHJpdmF0ZS0+d2ViVmlld0xv
YWRlZCkgeworICAgICAgICBET01IVE1MSW5wdXRFbGVtZW50ICpzZWFyY2ggPSAoRE9NSFRNTElu
cHV0RWxlbWVudCAqKVtfcHJpdmF0ZS0+ZG9tRG9jdW1lbnQgZ2V0RWxlbWVudEJ5SWQ6QCJzZWFy
Y2giXTsKKyAgICAgICAgW3NlYXJjaCBzZXRWYWx1ZToocXVlcnkgPyBxdWVyeSA6IEAiIildOwor
ICAgICAgICBbc2VsZiBfc2hvd1NlYXJjaFJlc3VsdHM6KFtxdWVyeSBsZW5ndGhdID8gWUVTIDog
Tk8pXTsKKyAgICAgICAgW3NlbGYgX3JlZnJlc2hTZWFyY2hdOworICAgIH0KK30KKworLSAoTlNT
dHJpbmcgKilzZWFyY2hRdWVyeQoreworICAgIHJldHVybiBfcHJpdmF0ZS0+c2VhcmNoUXVlcnk7
Cit9CisKKyNwcmFnbWEgbWFyayAtCisKKy0gKE5TQXJyYXkgKilzZWFyY2hSZXN1bHRzCit7Cisg
ICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aEFycmF5Ol9wcml2YXRlLT5zZWFyY2hSZXN1bHRz
XTsKK30KK0BlbmQKKworI3ByYWdtYSBtYXJrIC0KKworQGltcGxlbWVudGF0aW9uIFdlYkluc3Bl
Y3RvciAoV2ViSW5zcGVjdG9yU2NyaXB0aW5nKQorLSAodm9pZClzaG93T3B0aW9uc01lbnUKK3sK
KyAgICBOU01lbnUgKm1lbnUgPSBbW05TTWVudSBhbGxvY10gaW5pdF07CisgICAgW21lbnUgc2V0
QXV0b2VuYWJsZXNJdGVtczpOT107CisKKyAgICBOU01lbnVJdGVtICppdGVtID0gW1tbTlNNZW51
SXRlbSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFtpdGVtIHNldFRpdGxlOkAiSWdu
b3JlIFdoaXRlc3BhY2UiXTsKKyAgICBbaXRlbSBzZXRUYXJnZXQ6c2VsZl07CisgICAgW2l0ZW0g
c2V0QWN0aW9uOkBzZWxlY3RvcihfdG9nZ2xlSWdub3JlV2hpdGVzcGFjZTopXTsKKyAgICBbaXRl
bSBzZXRTdGF0ZTpfcHJpdmF0ZS0+aWdub3JlV2hpdGVzcGFjZV07CisgICAgW21lbnUgYWRkSXRl
bTppdGVtXTsKKworICAgIFtOU01lbnUgcG9wVXBDb250ZXh0TWVudTptZW51IHdpdGhFdmVudDpb
W3NlbGYgd2luZG93XSBjdXJyZW50RXZlbnRdIGZvclZpZXc6X3ByaXZhdGUtPndlYlZpZXddOwor
ICAgIFttZW51IHJlbGVhc2VdOworCisgICAgLy8gaGFjayB0byBmb3JjZSBhIGxheW91dCBhbmQg
YmFsYW5jZSBtb3VzZSBldmVudHMKKyAgICBOU0V2ZW50ICpjdXJyZW50RXZlbnQgPSBbW3NlbGYg
d2luZG93XSBjdXJyZW50RXZlbnRdOworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91
c2VFdmVudFdpdGhUeXBlOk5TTGVmdE1vdXNlVXAgbG9jYXRpb246W2N1cnJlbnRFdmVudCBsb2Nh
dGlvbkluV2luZG93XSBtb2RpZmllckZsYWdzOltjdXJyZW50RXZlbnQgbW9kaWZpZXJGbGFnc10g
dGltZXN0YW1wOltjdXJyZW50RXZlbnQgdGltZXN0YW1wXSB3aW5kb3dOdW1iZXI6W1tjdXJyZW50
RXZlbnQgd2luZG93XSB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6W2N1cnJlbnRFdmVudCBjb250ZXh0
XSBldmVudE51bWJlcjpbY3VycmVudEV2ZW50IGV2ZW50TnVtYmVyXSBjbGlja0NvdW50OltjdXJy
ZW50RXZlbnQgY2xpY2tDb3VudF0gcHJlc3N1cmU6W2N1cnJlbnRFdmVudCBwcmVzc3VyZV1dOwor
ICAgIFtbW1tfcHJpdmF0ZS0+d2ViVmlldyBtYWluRnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRW
aWV3XSBtb3VzZVVwOmV2ZW50XTsKK30KKworLSAodm9pZClzZWxlY3ROZXdSb290OihET01IVE1M
U2VsZWN0RWxlbWVudCAqKSBwb3B1cAoreworICAgIHVuc2lnbmVkIGluZGV4ID0gW3BvcHVwIHNl
bGVjdGVkSW5kZXhdOworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKworICAgIERPTU5vZGUgKmN1
cnJlbnROb2RlID0gX3ByaXZhdGUtPnJvb3ROb2RlOworICAgIHdoaWxlIChjdXJyZW50Tm9kZSkg
eworICAgICAgICBpZiAoY291bnQgPT0gaW5kZXgpIHsKKyAgICAgICAgICAgIFtzZWxmIHNldFJv
b3RET01Ob2RlOmN1cnJlbnROb2RlXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNvdW50Kys7CisgICAgICAgIGN1cnJlbnROb2RlID0gW2N1cnJlbnROb2RlIHBhcmVu
dE5vZGVdOworICAgIH0KK30KKworLSAodm9pZClyZXNpemVUb3BBcmVhOihET01FdmVudCAqKSBk
b21FdmVudAoreworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOworICAgIE5T
RXZlbnQgKmV2ZW50ID0gW3dpbmRvdyBjdXJyZW50RXZlbnRdOworICAgIE5TUG9pbnQgbGFzdExv
Y2F0aW9uID0gW3dpbmRvdyBjb252ZXJ0QmFzZVRvU2NyZWVuOltldmVudCBsb2NhdGlvbkluV2lu
ZG93XV07CisgICAgTlNSZWN0IGxhc3RGcmFtZSA9IFt3aW5kb3cgZnJhbWVdOworICAgIE5TU2l6
ZSBtaW5TaXplID0gW3dpbmRvdyBtaW5TaXplXTsKKyAgICBOU1NpemUgbWF4U2l6ZSA9IFt3aW5k
b3cgbWF4U2l6ZV07CisgICAgQk9PTCBtb3VzZVVwT2NjdXJyZWQgPSBOTzsKKworICAgIERPTUhU
TUxFbGVtZW50ICp0b3BBcmVhID0gKERPTUhUTUxFbGVtZW50ICopW19wcml2YXRlLT5kb21Eb2N1
bWVudCBnZXRFbGVtZW50QnlJZDpAInRvcCJdOworICAgIERPTUhUTUxFbGVtZW50ICpzcGxpdHRl
ciA9IChET01IVE1MRWxlbWVudCAqKVtfcHJpdmF0ZS0+ZG9tRG9jdW1lbnQgZ2V0RWxlbWVudEJ5
SWQ6QCJzcGxpdHRlciJdOworICAgIERPTUhUTUxFbGVtZW50ICpib3R0b21BcmVhID0gKERPTUhU
TUxFbGVtZW50ICopW19wcml2YXRlLT5kb21Eb2N1bWVudCBnZXRFbGVtZW50QnlJZDpAImJvdHRv
bSJdOworCisgICAgd2hpbGUgKCFtb3VzZVVwT2NjdXJyZWQpIHsKKyAgICAgICAgLy8gc2V0IG1v
dXNlVXAgZmxhZyBoZXJlLCBidXQgcHJvY2VzcyBsb2NhdGlvbiBvZiBldmVudCBiZWZvcmUgZXhp
dGluZyBmcm9tIGxvb3AsIGxlYXZlIG1vdXNlVXAgaW4gcXVldWUKKyAgICAgICAgZXZlbnQgPSBb
d2luZG93IG5leHRFdmVudE1hdGNoaW5nTWFzazooTlNMZWZ0TW91c2VEcmFnZ2VkTWFzayB8IE5T
TGVmdE1vdXNlVXBNYXNrKSB1bnRpbERhdGU6W05TRGF0ZSBkaXN0YW50RnV0dXJlXSBpbk1vZGU6
TlNFdmVudFRyYWNraW5nUnVuTG9vcE1vZGUgZGVxdWV1ZTpZRVNdOworCisgICAgICAgIGlmIChb
ZXZlbnQgdHlwZV0gPT0gTlNMZWZ0TW91c2VVcCkKKyAgICAgICAgICAgIG1vdXNlVXBPY2N1cnJl
ZCA9IFlFUzsKKworICAgICAgICBOU1BvaW50IG5ld0xvY2F0aW9uID0gW3dpbmRvdyBjb252ZXJ0
QmFzZVRvU2NyZWVuOltldmVudCBsb2NhdGlvbkluV2luZG93XV07CisgICAgICAgIGlmIChOU0Vx
dWFsUG9pbnRzKG5ld0xvY2F0aW9uLCBsYXN0TG9jYXRpb24pKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgTlNSZWN0IHByb3Bvc2VkUmVjdCA9IGxhc3RGcmFtZTsKKyAgICAgICAg
bG9uZyBkZWx0YSA9IG5ld0xvY2F0aW9uLnkgLSBsYXN0TG9jYXRpb24ueTsKKyAgICAgICAgcHJv
cG9zZWRSZWN0LnNpemUuaGVpZ2h0IC09IGRlbHRhOworICAgICAgICBwcm9wb3NlZFJlY3Qub3Jp
Z2luLnkgKz0gZGVsdGE7CisKKyAgICAgICAgaWYgKHByb3Bvc2VkUmVjdC5zaXplLmhlaWdodCA8
IG1pblNpemUuaGVpZ2h0KSB7CisgICAgICAgICAgICBwcm9wb3NlZFJlY3Qub3JpZ2luLnkgLT0g
bWluU2l6ZS5oZWlnaHQgLSBwcm9wb3NlZFJlY3Quc2l6ZS5oZWlnaHQ7CisgICAgICAgICAgICBw
cm9wb3NlZFJlY3Quc2l6ZS5oZWlnaHQgPSBtaW5TaXplLmhlaWdodDsKKyAgICAgICAgfSBlbHNl
IGlmIChwcm9wb3NlZFJlY3Quc2l6ZS5oZWlnaHQgPiBtYXhTaXplLmhlaWdodCkgeworICAgICAg
ICAgICAgcHJvcG9zZWRSZWN0Lm9yaWdpbi55IC09IG1heFNpemUuaGVpZ2h0IC0gcHJvcG9zZWRS
ZWN0LnNpemUuaGVpZ2h0OworICAgICAgICAgICAgcHJvcG9zZWRSZWN0LnNpemUuaGVpZ2h0ID0g
bWF4U2l6ZS5oZWlnaHQ7CisgICAgICAgIH0KKworICAgICAgICBOU051bWJlciAqYmFzZVZhbHVl
ID0gW3RvcEFyZWEgdmFsdWVGb3JLZXk6QCJvZmZzZXRIZWlnaHQiXTsKKyAgICAgICAgTlNTdHJp
bmcgKm5ld1ZhbHVlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlZHB4IiwgW2Jhc2VW
YWx1ZSB1bnNpZ25lZExvbmdWYWx1ZV0gLSBkZWx0YV07CisgICAgICAgIFtbdG9wQXJlYSBzdHls
ZV0gc2V0UHJvcGVydHk6QCJoZWlnaHQiIDpuZXdWYWx1ZSA6QCIiXTsKKworICAgICAgICBiYXNl
VmFsdWUgPSBbc3BsaXR0ZXIgdmFsdWVGb3JLZXk6QCJvZmZzZXRUb3AiXTsKKyAgICAgICAgbmV3
VmFsdWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVkcHgiLCBbYmFzZVZhbHVlIHVu
c2lnbmVkTG9uZ1ZhbHVlXSAtIGRlbHRhXTsKKyAgICAgICAgW1tzcGxpdHRlciBzdHlsZV0gc2V0
UHJvcGVydHk6QCJ0b3AiIDpuZXdWYWx1ZSA6QCIiXTsKKworICAgICAgICBiYXNlVmFsdWUgPSBb
Ym90dG9tQXJlYSB2YWx1ZUZvcktleTpAIm9mZnNldFRvcCJdOworICAgICAgICBuZXdWYWx1ZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJWRweCIsIFtiYXNlVmFsdWUgdW5zaWduZWRM
b25nVmFsdWVdIC0gZGVsdGFdOworICAgICAgICBbW2JvdHRvbUFyZWEgc3R5bGVdIHNldFByb3Bl
cnR5OkAidG9wIiA6bmV3VmFsdWUgOkAiIl07CisKKyAgICAgICAgW3dpbmRvdyBzZXRGcmFtZTpw
cm9wb3NlZFJlY3QgZGlzcGxheTpZRVNdOworICAgICAgICBsYXN0TG9jYXRpb24gPSBuZXdMb2Nh
dGlvbjsKKyAgICAgICAgbGFzdEZyYW1lID0gcHJvcG9zZWRSZWN0OworCisgICAgICAgIFtzZWxm
IF91cGRhdGVUcmVlU2Nyb2xsYmFyXTsKKyAgICB9CisKKyAgICAvLyBwb3N0IHRoZSBtb3VzZSB1
cCBldmVudCBiYWNrIHRvIHRoZSBxdWV1ZSBzbyB0aGUgV2ViVmlldyBjYW4gZ2V0IGl0CisgICAg
W3dpbmRvdyBwb3N0RXZlbnQ6ZXZlbnQgYXRTdGFydDpZRVNdOworfQorCistICh2b2lkKXRyZWVW
aWV3U2Nyb2xsVG86KGZsb2F0KSBudW1iZXIKK3sKKyAgICBmbG9hdCBib3R0b20gPSBOU0hlaWdo
dChbX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBmcmFtZV0pIC0gTlNIZWlnaHQoW19wcml2YXRl
LT50cmVlU2Nyb2xsVmlldyBkb2N1bWVudFZpc2libGVSZWN0XSk7CisgICAgbnVtYmVyID0gTUFY
KDAuMCwgTUlOKGJvdHRvbSwgbnVtYmVyKSk7CisgICAgW1tfcHJpdmF0ZS0+dHJlZVNjcm9sbFZp
ZXcgY29udGVudFZpZXddIHNjcm9sbFRvUG9pbnQ6TlNNYWtlUG9pbnQoMC4wLCBudW1iZXIpXTsK
K30KKworLSAoZmxvYXQpdHJlZVZpZXdPZmZzZXRUb3AKK3sKKyAgICByZXR1cm4gTlNNaW5ZKFtf
cHJpdmF0ZS0+dHJlZVNjcm9sbFZpZXcgZG9jdW1lbnRWaXNpYmxlUmVjdF0pOworfQorCistIChm
bG9hdCl0cmVlVmlld1Njcm9sbEhlaWdodAoreworICAgIHJldHVybiBOU0hlaWdodChbX3ByaXZh
dGUtPnRyZWVPdXRsaW5lVmlldyBmcmFtZV0pOworfQorCistICh2b2lkKXRyYXZlcnNlVHJlZToo
Qk9PTCkgZm9yd2FyZAoreworICAgIGlmIChfcHJpdmF0ZS0+c2VhcmNoUmVzdWx0c1Zpc2libGUp
IHsKKyAgICAgICAgLy8gaWYgd2UgaGF2ZSBhIHNlYXJjaCBzaG93aW5nLCB3ZSB3aWxsIG9ubHkg
d2FsayB1cCBhbmQgZG93biB0aGUgcmVzdWx0cworICAgICAgICBpbnQgcm93ID0gW19wcml2YXRl
LT50cmVlT3V0bGluZVZpZXcgc2VsZWN0ZWRSb3ddOworICAgICAgICBpZiAocm93ID09IC0xKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoZm9yd2FyZCAmJiAocm93ICsgMSkgPCAo
aW50KVtfcHJpdmF0ZS0+c2VhcmNoUmVzdWx0cyBjb3VudF0pIHsKKyAgICAgICAgICAgIHJvdysr
OworICAgICAgICAgICAgW19wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgc2VsZWN0Um93SW5kZXhl
czpbTlNJbmRleFNldCBpbmRleFNldFdpdGhJbmRleDpyb3ddIGJ5RXh0ZW5kaW5nU2VsZWN0aW9u
Ok5PXTsKKyAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNjcm9sbFJvd1Rv
VmlzaWJsZTpyb3ddOworICAgICAgICB9IGVsc2UgaWYgKCFmb3J3YXJkICYmIChyb3cgLSAxKSA+
PSAwKSB7CisgICAgICAgICAgICByb3ctLTsKKyAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91
dGxpbmVWaWV3IHNlbGVjdFJvd0luZGV4ZXM6W05TSW5kZXhTZXQgaW5kZXhTZXRXaXRoSW5kZXg6
cm93XSBieUV4dGVuZGluZ1NlbGVjdGlvbjpOT107CisgICAgICAgICAgICBbX3ByaXZhdGUtPnRy
ZWVPdXRsaW5lVmlldyBzY3JvbGxSb3dUb1Zpc2libGU6cm93XTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgRE9NTm9kZSAqbm9kZSA9ICBuaWw7CisgICAgaWYgKGZv
cndhcmQpIHsKKyAgICAgICAgLy8gdHJhdmVyc2UgZm9yd2FyZCwgaG9sZGluZyBvcHRvbiB3aWxs
IHRyYXZlcnNlIG9ubHkgdG8gdGhlIG5leHQgc2libGluZworICAgICAgICBpZiAoW1tbc2VsZiB3
aW5kb3ddIGN1cnJlbnRFdmVudF0gbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2sp
IHsKKyAgICAgICAgICAgIGlmICghX3ByaXZhdGUtPmlnbm9yZVdoaXRlc3BhY2UpCisgICAgICAg
ICAgICAgICAgbm9kZSA9IFtfcHJpdmF0ZS0+Zm9jdXNlZE5vZGUgbmV4dFNpYmxpbmddOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5vZGUgPSBbX3ByaXZhdGUtPmZvY3VzZWRO
b2RlIF9uZXh0U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZV07CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBpZiAoIV9wcml2YXRlLT5pZ25vcmVXaGl0ZXNwYWNlKQorICAgICAgICAgICAg
ICAgIG5vZGUgPSBbX3ByaXZhdGUtPmZvY3VzZWROb2RlIF90cmF2ZXJzZU5leHROb2RlU3RheWlu
Z1dpdGhpbjpuaWxdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5vZGUgPSBb
X3ByaXZhdGUtPmZvY3VzZWROb2RlIF90cmF2ZXJzZU5leHROb2RlU2tpcHBpbmdXaGl0ZXNwYWNl
U3RheWluZ1dpdGhpbjpuaWxdOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
dHJhdmVyc2UgYmFja3dhcmQsIGhvbGRpbmcgb3B0b24gd2lsbCB0cmF2ZXJzZSBvbmx5IHRvIHRo
ZSBwcmV2aW91cyBzaWJsaW5nCisgICAgICAgIGlmIChbW1tzZWxmIHdpbmRvd10gY3VycmVudEV2
ZW50XSBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykgeworICAgICAgICAgICAg
aWYgKCFfcHJpdmF0ZS0+aWdub3JlV2hpdGVzcGFjZSkKKyAgICAgICAgICAgICAgICBub2RlID0g
W19wcml2YXRlLT5mb2N1c2VkTm9kZSBwcmV2aW91c1NpYmxpbmddOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIG5vZGUgPSBbX3ByaXZhdGUtPmZvY3VzZWROb2RlIF9wcmV2aW91
c1NpYmxpbmdTa2lwcGluZ1doaXRlc3BhY2VdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKCFfcHJpdmF0ZS0+aWdub3JlV2hpdGVzcGFjZSkKKyAgICAgICAgICAgICAgICBub2Rl
ID0gW19wcml2YXRlLT5mb2N1c2VkTm9kZSBfdHJhdmVyc2VQcmV2aW91c05vZGVdOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5vZGUgPSBbX3ByaXZhdGUtPmZvY3VzZWROb2Rl
IF90cmF2ZXJzZVByZXZpb3VzTm9kZVNraXBwaW5nV2hpdGVzcGFjZV07CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAobm9kZSkgeworICAgICAgICBET01Ob2RlICpyb290ID0gX3ByaXZhdGUt
PnJvb3ROb2RlOworICAgICAgICBpZiAoIVtyb290IGlzU2FtZU5vZGU6bm9kZV0gJiYgIVtyb290
IF9pc0FuY2VzdG9yT2ZOb2RlOm5vZGVdKQorICAgICAgICAgICAgW3NlbGYgc2V0Um9vdERPTU5v
ZGU6W19wcml2YXRlLT5mb2N1c2VkTm9kZSBfZmlyc3RBbmNlc3RvckNvbW1vbldpdGhOb2RlOm5v
ZGVdXTsKKyAgICAgICAgW3NlbGYgc2V0Rm9jdXNlZERPTU5vZGU6bm9kZV07CisgICAgfQorfQor
QGVuZAorCisjcHJhZ21hIG1hcmsgLQorCitAaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yIChX
ZWJJbnNwZWN0b3JQcml2YXRlKQorLSAoSUJBY3Rpb24pX3RvZ2dsZUlnbm9yZVdoaXRlc3BhY2U6
KGlkKSBzZW5kZXIKK3sKKyAgICBfcHJpdmF0ZS0+aWdub3JlV2hpdGVzcGFjZSA9ICFfcHJpdmF0
ZS0+aWdub3JlV2hpdGVzcGFjZTsKKyAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyByZWxv
YWREYXRhXTsKK30KKworLSAodm9pZClfaGlnaGxpZ2h0Tm9kZTooRE9NTm9kZSAqKSBub2RlCit7
CisgICAgaWYgKF9wcml2YXRlLT5jdXJyZW50SGlnaGxpZ2h0KSB7CisgICAgICAgIFtfcHJpdmF0
ZS0+Y3VycmVudEhpZ2hsaWdodCBleHBpcmVdOworICAgICAgICBbX3ByaXZhdGUtPmN1cnJlbnRI
aWdobGlnaHQgcmVsZWFzZV07CisgICAgICAgIF9wcml2YXRlLT5jdXJyZW50SGlnaGxpZ2h0ID0g
bmlsOworICAgIH0KKworICAgIE5TVmlldyAqdmlldyA9IFtbX3ByaXZhdGUtPndlYkZyYW1lIGZy
YW1lVmlld10gZG9jdW1lbnRWaWV3XTsKKyAgICBOU1JlY3QgYm91bmRzID0gTlNJbnRlcnNlY3Rp
b25SZWN0KFtub2RlIGJvdW5kaW5nQm94XSwgW3ZpZXcgdmlzaWJsZVJlY3RdKTsKKyAgICBpZiAo
IU5TSXNFbXB0eVJlY3QoYm91bmRzKSkgeworICAgICAgICBOU0FycmF5ICpyZWN0cyA9IG5pbDsK
KyAgICAgICAgaWYgKFtub2RlIGlzS2luZE9mQ2xhc3M6W0RPTUVsZW1lbnQgY2xhc3NdXSkgewor
ICAgICAgICAgICAgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqc3R5bGUgPSBbX3ByaXZhdGUtPmRv
bURvY3VtZW50IGdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKilub2RlIDpAIiJdOworICAg
ICAgICAgICAgaWYgKFtbc3R5bGUgZ2V0UHJvcGVydHlWYWx1ZTpAImRpc3BsYXkiXSBpc0VxdWFs
VG9TdHJpbmc6QCJpbmxpbmUiXSkKKyAgICAgICAgICAgICAgICByZWN0cyA9IFtub2RlIGxpbmVC
b3hSZWN0c107CisgICAgICAgIH0gZWxzZSBpZiAoW25vZGUgaXNLaW5kT2ZDbGFzczpbRE9NVGV4
dCBjbGFzc11dKQorICAgICAgICAgICAgcmVjdHMgPSBbbm9kZSBsaW5lQm94UmVjdHNdOworCisg
ICAgICAgIGlmICghW3JlY3RzIGNvdW50XSkKKyAgICAgICAgICAgIHJlY3RzID0gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Ym91bmRzXV07CisKKyAgICAg
ICAgX3ByaXZhdGUtPmN1cnJlbnRIaWdobGlnaHQgPSBbW1dlYk5vZGVIaWdobGlnaHQgYWxsb2Nd
IGluaXRXaXRoQm91bmRzOmJvdW5kcyBhbmRSZWN0czpyZWN0cyBmb3JWaWV3OnZpZXddOworICAg
IH0KK30KKworLSAodm9pZClfbm9kZUhpZ2hsaWdodEV4cGlyZWQ6KE5TTm90aWZpY2F0aW9uICop
IG5vdGlmaWNhdGlvbgoreworICAgIGlmIChfcHJpdmF0ZS0+Y3VycmVudEhpZ2hsaWdodCA9PSBb
bm90aWZpY2F0aW9uIG9iamVjdF0pIHsKKyAgICAgICAgW19wcml2YXRlLT5jdXJyZW50SGlnaGxp
Z2h0IHJlbGVhc2VdOworICAgICAgICBfcHJpdmF0ZS0+Y3VycmVudEhpZ2hsaWdodCA9IG5pbDsK
KyAgICB9Cit9CisKKy0gKHZvaWQpX2ZvY3VzUm9vdE5vZGU6KGlkKSBzZW5kZXIKK3sKKyAgICBp
ZCBub2RlID0gbmlsOworICAgIGlmIChbc2VuZGVyIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0g
Y2xhc3NdXSkgeworICAgICAgICBub2RlID0gW3NlbmRlciByZXByZXNlbnRlZE9iamVjdF07Cisg
ICAgfSBlbHNlIGlmKHNlbmRlciA9PSBfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3KSB7CisgICAg
ICAgIGludCBpbmRleCA9IFtzZW5kZXIgc2VsZWN0ZWRSb3ddOworICAgICAgICBpZiAoaW5kZXgg
PT0gLTEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5vZGUgPSBbc2VuZGVyIGl0ZW1B
dFJvdzppbmRleF07CisgICAgfQorCisgICAgaWYgKCFbbm9kZSBpc1NhbWVOb2RlOl9wcml2YXRl
LT5yb290Tm9kZV0pIHsKKyAgICAgICAgW3NlbGYgc2V0Um9vdERPTU5vZGU6bm9kZV07CisgICAg
ICAgIFtzZWxmIHNldFNlYXJjaFF1ZXJ5Om5pbF07IC8vIGV4aXQgc2VhcmNoIG1vZGUKKyAgICB9
Cit9CisKKy0gKHZvaWQpX3JldmVhbEFuZFNlbGVjdE5vZGVJblRyZWU6KERPTU5vZGUgKikgbm9k
ZQoreworCisgICAgaWYgKCFfcHJpdmF0ZS0+d2ViVmlld0xvYWRlZCB8fCAhbm9kZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFfcHJpdmF0ZS0+cHJldmVudFJldmVhbE9uRm9jdXMpIHsK
KyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmFuY2VzdG9ycyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdOworICAgICAgICBET01Ob2RlICpjdXJyZW50Tm9kZSA9IFtub2RlIHBhcmVudE5v
ZGVdOworICAgICAgICB3aGlsZSAoY3VycmVudE5vZGUpIHsKKyAgICAgICAgICAgIFthbmNlc3Rv
cnMgYWRkT2JqZWN0OmN1cnJlbnROb2RlXTsKKyAgICAgICAgICAgIGlmIChbY3VycmVudE5vZGUg
aXNTYW1lTm9kZTpfcHJpdmF0ZS0+cm9vdE5vZGVdKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY3VycmVudE5vZGUgPSBbY3VycmVudE5vZGUgcGFyZW50Tm9kZV07CisgICAg
ICAgIH0KKworICAgICAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBbYW5jZXN0b3JzIHJl
dmVyc2VPYmplY3RFbnVtZXJhdG9yXTsKKyAgICAgICAgd2hpbGUgKChjdXJyZW50Tm9kZSA9IFtl
bnVtZXJhdG9yIG5leHRPYmplY3RdKSkKKyAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxp
bmVWaWV3IGV4cGFuZEl0ZW06Y3VycmVudE5vZGVdOworCisgICAgICAgIFthbmNlc3RvcnMgcmVs
ZWFzZV07CisgICAgfQorCisgICAgaW50IGluZGV4ID0gW19wcml2YXRlLT50cmVlT3V0bGluZVZp
ZXcgcm93Rm9ySXRlbTpub2RlXTsKKyAgICBpZiAoaW5kZXggIT0gLTEpIHsKKyAgICAgICAgW19w
cml2YXRlLT50cmVlT3V0bGluZVZpZXcgc2VsZWN0Um93SW5kZXhlczpbTlNJbmRleFNldCBpbmRl
eFNldFdpdGhJbmRleDppbmRleF0gYnlFeHRlbmRpbmdTZWxlY3Rpb246Tk9dOworICAgICAgICBb
X3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBzY3JvbGxSb3dUb1Zpc2libGU6aW5kZXhdOworICAg
IH0KK30KKworLSAodm9pZClfc2hvd1NlYXJjaFJlc3VsdHM6KEJPT0wpIHNob3cKK3sKKyAgICBp
ZiAoc2hvdyA9PSBfcHJpdmF0ZS0+c2VhcmNoUmVzdWx0c1Zpc2libGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIERPTUhUTUxFbGVtZW50ICp0cmVlUG9wdXAgPSAoRE9NSFRNTEVsZW1lbnQgKilb
X3ByaXZhdGUtPmRvbURvY3VtZW50IGdldEVsZW1lbnRCeUlkOkAidHJlZVBvcHVwIl07CisgICAg
RE9NSFRNTEVsZW1lbnQgKnNlYXJjaEZpZWxkID0gKERPTUhUTUxFbGVtZW50ICopW19wcml2YXRl
LT5kb21Eb2N1bWVudCBnZXRFbGVtZW50QnlJZDpAInNlYXJjaCJdOworICAgIERPTUhUTUxFbGVt
ZW50ICpzZWFyY2hDb3VudCA9IChET01IVE1MRWxlbWVudCAqKVtfcHJpdmF0ZS0+ZG9tRG9jdW1l
bnQgZ2V0RWxlbWVudEJ5SWQ6QCJzZWFyY2hDb3VudCJdOworCisgICAgaWYgKHNob3cpIHsKKyAg
ICAgICAgW1t0cmVlUG9wdXAgc3R5bGVdIHNldERpc3BsYXk6QCJub25lIl07CisgICAgICAgIFtb
c2VhcmNoQ291bnQgc3R5bGVdIHNldERpc3BsYXk6QCJibG9jayJdOworICAgICAgICBbW3NlYXJj
aEZpZWxkIHN0eWxlXSBzZXRXaWR0aDpAIjE1MHB4Il07CisgICAgfSBlbHNlIHsKKyAgICAgICAg
W1t0cmVlUG9wdXAgc3R5bGVdIHJlbW92ZVByb3BlcnR5OkAiZGlzcGxheSJdOworICAgICAgICBb
W3NlYXJjaENvdW50IHN0eWxlXSByZW1vdmVQcm9wZXJ0eTpAImRpc3BsYXkiXTsKKyAgICAgICAg
W1tzZWFyY2hGaWVsZCBzdHlsZV0gc2V0V2lkdGg6QCI5MHB4Il07CisgICAgfQorCisgICAgX3By
aXZhdGUtPnByZXZlbnRSZXZlYWxPbkZvY3VzID0gc2hvdzsKKyAgICBfcHJpdmF0ZS0+c2VhcmNo
UmVzdWx0c1Zpc2libGUgPSBzaG93OworfQorCistICh2b2lkKV9yZWZyZXNoU2VhcmNoCit7Cisg
ICAgaWYgKCFfcHJpdmF0ZS0+c2VhcmNoUmVzdWx0cykKKyAgICAgICAgX3ByaXZhdGUtPnNlYXJj
aFJlc3VsdHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjEwMF07
CisgICAgZWxzZQorICAgICAgICBbX3ByaXZhdGUtPnNlYXJjaFJlc3VsdHMgcmVtb3ZlQWxsT2Jq
ZWN0c107CisKKyAgICBOU1N0cmluZyAqcXVlcnkgPSBfcHJpdmF0ZS0+c2VhcmNoUXVlcnk7Cisg
ICAgaWYgKCFbcXVlcnkgbGVuZ3RoXSkgeworICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5l
VmlldyByZWxvYWREYXRhXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEJPT0wgbWF0
Y2hlZCA9IE5POworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICBET01Ob2RlICpub2RlID0g
W19wcml2YXRlLT53ZWJGcmFtZSBET01Eb2N1bWVudF07CisgICAgd2hpbGUgKChub2RlID0gW25v
ZGUgX3RyYXZlcnNlTmV4dE5vZGVTdGF5aW5nV2l0aGluOm5pbF0pKSB7CisgICAgICAgIGlmIChb
W25vZGUgbm9kZU5hbWVdIF93ZWJraXRfaGFzQ2FzZUluc2Vuc2l0aXZlU3Vic3RyaW5nOnF1ZXJ5
XSkKKyAgICAgICAgICAgIG1hdGNoZWQgPSBZRVM7CisgICAgICAgIGVsc2UgaWYgKFtub2RlIG5v
ZGVUeXBlXSA9PSBET01fVEVYVF9OT0RFICYmIFtbbm9kZSBub2RlVmFsdWVdIF93ZWJraXRfaGFz
Q2FzZUluc2Vuc2l0aXZlU3Vic3RyaW5nOnF1ZXJ5XSkKKyAgICAgICAgICAgIG1hdGNoZWQgPSBZ
RVM7CisgICAgICAgIGVsc2UgaWYgKFtub2RlIGlzS2luZE9mQ2xhc3M6W0RPTUhUTUxFbGVtZW50
IGNsYXNzXV0gJiYgW1soRE9NSFRNTEVsZW1lbnQgKilub2RlIGlkTmFtZV0gX3dlYmtpdF9oYXND
YXNlSW5zZW5zaXRpdmVTdWJzdHJpbmc6cXVlcnldKQorICAgICAgICAgICAgbWF0Y2hlZCA9IFlF
UzsKKyAgICAgICAgZWxzZSBpZiAoW25vZGUgaXNLaW5kT2ZDbGFzczpbRE9NSFRNTEVsZW1lbnQg
Y2xhc3NdXSAmJiBbWyhET01IVE1MRWxlbWVudCAqKW5vZGUgY2xhc3NOYW1lXSBfd2Via2l0X2hh
c0Nhc2VJbnNlbnNpdGl2ZVN1YnN0cmluZzpxdWVyeV0pCisgICAgICAgICAgICBtYXRjaGVkID0g
WUVTOworICAgICAgICBpZiAobWF0Y2hlZCkgeworICAgICAgICAgICAgW19wcml2YXRlLT5zZWFy
Y2hSZXN1bHRzIGFkZE9iamVjdDpub2RlXTsKKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAg
ICAgICBtYXRjaGVkID0gTk87CisgICAgICAgIH0KKyAgICB9CisKKyAgICBET01IVE1MRWxlbWVu
dCAqc2VhcmNoQ291bnQgPSAoRE9NSFRNTEVsZW1lbnQgKilbX3ByaXZhdGUtPmRvbURvY3VtZW50
IGdldEVsZW1lbnRCeUlkOkAic2VhcmNoQ291bnQiXTsKKyAgICBpZiAoY291bnQgPT0gMSkKKyAg
ICAgICAgW3NlYXJjaENvdW50IHNldElubmVyVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpVSV9TVFJJTkcoIjEgbm9kZSIsICJ3ZWIgaW5zcGVjdG9yIG5vZGUgc2VhcmNoIHJlc3VsdHMg
Y291bnQgd2l0aCAxIHJlc3VsdCIpLCBjb3VudF1dOworICAgIGVsc2UKKyAgICAgICAgW3NlYXJj
aENvdW50IHNldElubmVyVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpVSV9TVFJJTkco
IiV1IG5vZGVzIiwgIndlYiBpbnNwZWN0b3Igbm9kZSBzZWFyY2ggcmVzdWx0cyBjb3VudCB3aXRo
IHplcm8gb3IgbW9yZSB0aGFuIDEgcmVzdWx0cyIpLCBjb3VudF1dOworCisgICAgW19wcml2YXRl
LT50cmVlT3V0bGluZVZpZXcgcmVsb2FkRGF0YV07Cit9CisKKy0gKHZvaWQpX3VwZGF0ZQorewor
ICAgIGlmICghX3ByaXZhdGUtPndlYlZpZXdMb2FkZWQgfHwgIV9wcml2YXRlLT5mb2N1c2VkTm9k
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW1tfcHJpdmF0ZS0+d2ViVmlldyB3aW5kb3dTY3Jp
cHRPYmplY3RdIGNhbGxXZWJTY3JpcHRNZXRob2Q6QCJ1cGRhdGVQYW5lcyIgd2l0aEFyZ3VtZW50
czpuaWxdOworCisgICAgRE9NTm9kZSAqbm9kZSA9IF9wcml2YXRlLT5mb2N1c2VkTm9kZTsKKyAg
ICBET01IVE1MQnV0dG9uRWxlbWVudCAqYmFjayA9IChET01IVE1MQnV0dG9uRWxlbWVudCAqKVtf
cHJpdmF0ZS0+ZG9tRG9jdW1lbnQgZ2V0RWxlbWVudEJ5SWQ6QCJ0cmF2ZXJzZVVwIl07CisgICAg
RE9NSFRNTEJ1dHRvbkVsZW1lbnQgKmZvcndhcmQgPSAoRE9NSFRNTEJ1dHRvbkVsZW1lbnQgKilb
X3ByaXZhdGUtPmRvbURvY3VtZW50IGdldEVsZW1lbnRCeUlkOkAidHJhdmVyc2VEb3duIl07Cisg
ICAgaWYgKF9wcml2YXRlLT5zZWFyY2hSZXN1bHRzVmlzaWJsZSkgeworICAgICAgICBpbnQgcm93
ID0gW19wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgc2VsZWN0ZWRSb3ddOworICAgICAgICBpZiAo
cm93ICE9IC0xKSB7CisgICAgICAgICAgICBbZm9yd2FyZCBzZXREaXNhYmxlZDohKChyb3cgKyAx
KSA8IChpbnQpW19wcml2YXRlLT5zZWFyY2hSZXN1bHRzIGNvdW50XSldOworICAgICAgICAgICAg
W2JhY2sgc2V0RGlzYWJsZWQ6ISgocm93IC0gMSkgPj0gMCldOworICAgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKCFfcHJpdmF0ZS0+aWdub3JlV2hpdGVzcGFjZSkKKyAgICAgICAg
ICAgIG5vZGUgPSBbX3ByaXZhdGUtPmZvY3VzZWROb2RlIF90cmF2ZXJzZU5leHROb2RlU3RheWlu
Z1dpdGhpbjpuaWxdOworICAgICAgICBlbHNlCisgICAgICAgICAgICBub2RlID0gW19wcml2YXRl
LT5mb2N1c2VkTm9kZSBfdHJhdmVyc2VOZXh0Tm9kZVNraXBwaW5nV2hpdGVzcGFjZVN0YXlpbmdX
aXRoaW46bmlsXTsKKyAgICAgICAgW2ZvcndhcmQgc2V0RGlzYWJsZWQ6IW5vZGVdOworCisgICAg
ICAgIGlmICghX3ByaXZhdGUtPmlnbm9yZVdoaXRlc3BhY2UpCisgICAgICAgICAgICBub2RlID0g
W19wcml2YXRlLT5mb2N1c2VkTm9kZSBfdHJhdmVyc2VQcmV2aW91c05vZGVdOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBub2RlID0gW19wcml2YXRlLT5mb2N1c2VkTm9kZSBfdHJhdmVyc2VQ
cmV2aW91c05vZGVTa2lwcGluZ1doaXRlc3BhY2VdOworICAgICAgICBbYmFjayBzZXREaXNhYmxl
ZDohbm9kZV07CisgICAgfQorfQorCistICh2b2lkKV91cGRhdGVSb290Cit7CisgICAgaWYgKCFf
cHJpdmF0ZS0+d2ViVmlld0xvYWRlZCB8fCAhX3ByaXZhdGUtPnJvb3ROb2RlIHx8IF9wcml2YXRl
LT5zZWFyY2hSZXN1bHRzVmlzaWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE9NSFRNTEVs
ZW1lbnQgKnRpdGxlQXJlYSA9IChET01IVE1MRWxlbWVudCAqKVtfcHJpdmF0ZS0+ZG9tRG9jdW1l
bnQgZ2V0RWxlbWVudEJ5SWQ6QCJ0cmVlUG9wdXBUaXRsZUFyZWEiXTsKKyAgICBbdGl0bGVBcmVh
IHNldFRleHRDb250ZW50OltfcHJpdmF0ZS0+cm9vdE5vZGUgX2Rpc3BsYXlOYW1lXV07CisKKyAg
ICBET01IVE1MRWxlbWVudCAqcG9wdXAgPSAoRE9NSFRNTEVsZW1lbnQgKilbX3ByaXZhdGUtPmRv
bURvY3VtZW50IGdldEVsZW1lbnRCeUlkOkAicmVhbFRyZWVQb3B1cCJdOworICAgIFtwb3B1cCBz
ZXRJbm5lckhUTUw6QCIiXTsgLy8gcmVzZXQgdGhlIGxpc3QKKworICAgIERPTU5vZGUgKmN1cnJl
bnROb2RlID0gX3ByaXZhdGUtPnJvb3ROb2RlOworICAgIHdoaWxlIChjdXJyZW50Tm9kZSkgewor
ICAgICAgICBET01IVE1MT3B0aW9uRWxlbWVudCAqb3B0aW9uID0gKERPTUhUTUxPcHRpb25FbGVt
ZW50ICopW19wcml2YXRlLT5kb21Eb2N1bWVudCBjcmVhdGVFbGVtZW50OkAib3B0aW9uIl07Cisg
ICAgICAgIFtvcHRpb24gc2V0VGV4dENvbnRlbnQ6W2N1cnJlbnROb2RlIF9kaXNwbGF5TmFtZV1d
OworICAgICAgICBbcG9wdXAgYXBwZW5kQ2hpbGQ6b3B0aW9uXTsKKyAgICAgICAgY3VycmVudE5v
ZGUgPSBbY3VycmVudE5vZGUgcGFyZW50Tm9kZV07CisgICAgfQorCisgICAgX3ByaXZhdGUtPnBy
ZXZlbnRTZWxlY3Rpb25SZWZvY3VzID0gWUVTOworICAgIERPTU5vZGUgKmZvY3VzZWROb2RlID0g
W19wcml2YXRlLT5mb2N1c2VkTm9kZSByZXRhaW5dOworICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxp
bmVWaWV3IHJlbG9hZERhdGFdOworICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IGV4cGFu
ZEl0ZW06X3ByaXZhdGUtPnJvb3ROb2RlXTsKKyAgICBbc2VsZiBfcmV2ZWFsQW5kU2VsZWN0Tm9k
ZUluVHJlZTpmb2N1c2VkTm9kZV07CisgICAgW2ZvY3VzZWROb2RlIHJlbGVhc2VdOworICAgIF9w
cml2YXRlLT5wcmV2ZW50U2VsZWN0aW9uUmVmb2N1cyA9IE5POworfQorCistICh2b2lkKV91cGRh
dGVUcmVlU2Nyb2xsYmFyCit7CisgICAgW1tfcHJpdmF0ZS0+d2ViVmlldyB3aW5kb3dTY3JpcHRP
YmplY3RdIGV2YWx1YXRlV2ViU2NyaXB0OkAidHJlZVNjcm9sbGJhci5yZWZyZXNoKCkiXTsKK30K
KworI3ByYWdtYSBtYXJrIC0KKworKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2Ny
aXB0OihTRUwpYVNlbGVjdG9yCit7CisgICAgcmV0dXJuIE5POworfQorCisrIChOU1N0cmluZyAq
KXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooU0VMKWFTZWxlY3RvciB7CisgICAgTlNNdXRhYmxl
U3RyaW5nICpuYW1lID0gW1tOU1N0cmluZ0Zyb21TZWxlY3RvcihhU2VsZWN0b3IpIG11dGFibGVD
b3B5XSBhdXRvcmVsZWFzZV07CisgICAgW25hbWUgcmVwbGFjZU9jY3VycmVuY2VzT2ZTdHJpbmc6
QCI6IiB3aXRoU3RyaW5nOkAiXyIgb3B0aW9uczpOU0xpdGVyYWxTZWFyY2ggcmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgW25hbWUgbGVuZ3RoXSldOworICAgIGlmIChbbmFtZSBoYXNTdWZmaXg6QCJfIl0p
CisgICAgICAgIHJldHVybiBbbmFtZSBzdWJzdHJpbmdUb0luZGV4OltuYW1lIGxlbmd0aF0gLSAx
XTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworKyAoQk9PTClpc0tleUV4Y2x1ZGVkRnJvbVdlYlNj
cmlwdDooY29uc3QgY2hhciAqKW5hbWUKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKyNwcmFnbWEg
bWFyayAtCisKKy0gKHZvaWQpaGFuZGxlRXZlbnQ6KERPTUV2ZW50ICopZXZlbnQKK3sKKyAgICBp
ZiAoW1tldmVudCB0eXBlXSBpc0VxdWFsVG9TdHJpbmc6QCJzZWFyY2giXSAmJiBbW2V2ZW50IHRh
cmdldF0gaXNLaW5kT2ZDbGFzczpbRE9NSFRNTElucHV0RWxlbWVudCBjbGFzc11dKSB7CisgICAg
ICAgIERPTUhUTUxJbnB1dEVsZW1lbnQgKnNlYXJjaCA9IChET01IVE1MSW5wdXRFbGVtZW50ICop
W2V2ZW50IHRhcmdldF07CisgICAgICAgIFtzZWxmIHNldFNlYXJjaFF1ZXJ5OltzZWFyY2ggdmFs
dWVdXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKSBzZW5kZXIgZGlk
RmluaXNoTG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKSBmcmFtZQoreworICAgIF9wcml2YXRlLT53
ZWJWaWV3TG9hZGVkID0gWUVTOworICAgIFtbc2VuZGVyIHdpbmRvd1NjcmlwdE9iamVjdF0gc2V0
VmFsdWU6c2VsZiBmb3JLZXk6QCJJbnNwZWN0b3IiXTsKKworICAgIFtfcHJpdmF0ZS0+ZG9tRG9j
dW1lbnQgcmVsZWFzZV07CisgICAgX3ByaXZhdGUtPmRvbURvY3VtZW50ID0gKERPTUhUTUxEb2N1
bWVudCAqKVtbW3NlbmRlciBtYWluRnJhbWVdIERPTURvY3VtZW50XSByZXRhaW5dOworCisgICAg
W19wcml2YXRlLT5kb21Eb2N1bWVudCBhZGRFdmVudExpc3RlbmVyOkAic2VhcmNoIiA6c2VsZiA6
Tk9dOworCisgICAgaWYgKFtbc2VsZiBzZWFyY2hRdWVyeV0gbGVuZ3RoXSkgeworICAgICAgICBE
T01IVE1MSW5wdXRFbGVtZW50ICpzZWFyY2ggPSAoRE9NSFRNTElucHV0RWxlbWVudCAqKVtfcHJp
dmF0ZS0+ZG9tRG9jdW1lbnQgZ2V0RWxlbWVudEJ5SWQ6QCJzZWFyY2giXTsKKyAgICAgICAgW3Nl
YXJjaCBzZXRWYWx1ZTpbc2VsZiBzZWFyY2hRdWVyeV1dOworICAgICAgICBbc2VsZiBfc2hvd1Nl
YXJjaFJlc3VsdHM6WUVTXTsKKyAgICAgICAgW3NlbGYgX3JlZnJlc2hTZWFyY2hdOworICAgIH0K
KworICAgIFtzZWxmIF91cGRhdGVdOworICAgIFtzZWxmIF91cGRhdGVSb290XTsKKyAgICBbW3Nl
bGYgd2luZG93XSBpbnZhbGlkYXRlU2hhZG93XTsKK30KKworLSAoTlNWaWV3ICopd2ViVmlldzoo
V2ViVmlldyAqKSBzZW5kZXIgcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAq
KSBhcmd1bWVudHMKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbYXJndW1lbnRz
IG9iamVjdEZvcktleTpAIldlYlBsdWdJbkF0dHJpYnV0ZXNLZXkiXTsKKyAgICBpZiAoW1thdHRy
aWJ1dGVzIG9iamVjdEZvcktleTpAInR5cGUiXSBpc0VxdWFsVG9TdHJpbmc6QCJhcHBsaWNhdGlv
bi94LWluc3BlY3Rvci10cmVlIl0pIHsKKyAgICAgICAgaWYgKCFfcHJpdmF0ZS0+dHJlZU91dGxp
bmVWaWV3KSB7CisgICAgICAgICAgICBfcHJpdmF0ZS0+bm9kZUNhY2hlID0gW1tOU011dGFibGVT
ZXQgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgX3ByaXZhdGUtPnRyZWVTY3JvbGxWaWV3ID0g
W1tOU1Njcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLjAsIDAuMCwg
MjUwLjAsIDEwMC4wKV07CisgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVTY3JvbGxWaWV3IHNl
dERyYXdzQmFja2dyb3VuZDpOT107CisgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVTY3JvbGxW
aWV3IHNldEJvcmRlclR5cGU6TlNOb0JvcmRlcl07CisgICAgICAgICAgICBbX3ByaXZhdGUtPnRy
ZWVTY3JvbGxWaWV3IHNldFZlcnRpY2FsU2Nyb2xsZXI6Tk9dOworICAgICAgICAgICAgW19wcml2
YXRlLT50cmVlU2Nyb2xsVmlldyBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsZXI6Tk9dOworICAgICAg
ICAgICAgW19wcml2YXRlLT50cmVlU2Nyb2xsVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOihOU1Zp
ZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlKV07CisgICAgICAgICAgICBbX3By
aXZhdGUtPnRyZWVTY3JvbGxWaWV3IHNldEZvY3VzUmluZ1R5cGU6TlNGb2N1c1JpbmdUeXBlTm9u
ZV07CisKKyAgICAgICAgICAgIF9wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgPSBbW1dlYkluc3Bl
Y3Rvck91dGxpbmVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltfcHJpdmF0ZS0+dHJlZVNjcm9s
bFZpZXcgZnJhbWVdXTsKKyAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNl
dEhlYWRlclZpZXc6bmlsXTsKKyAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3
IHNldEFsbG93c011bHRpcGxlU2VsZWN0aW9uOk5PXTsKKyAgICAgICAgICAgIFtfcHJpdmF0ZS0+
dHJlZU91dGxpbmVWaWV3IHNldEFsbG93c0VtcHR5U2VsZWN0aW9uOk5PXTsKKyAgICAgICAgICAg
IFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNldERlbGVnYXRlOnNlbGZdOworICAgICAgICAg
ICAgW19wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgc2V0RGF0YVNvdXJjZTpzZWxmXTsKKyAgICAg
ICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3IHNlbmRBY3Rpb25PbjooTlNMZWZ0TW91
c2VVcE1hc2sgfCBOU0xlZnRNb3VzZURvd25NYXNrIHwgTlNMZWZ0TW91c2VEcmFnZ2VkTWFzayld
OworICAgICAgICAgICAgW19wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgc2V0Rm9jdXNSaW5nVHlw
ZTpOU0ZvY3VzUmluZ1R5cGVOb25lXTsKKyAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZU91dGxp
bmVWaWV3IHNldEF1dG9yZXNpemVzT3V0bGluZUNvbHVtbjpOT107CisgICAgICAgICAgICBbX3By
aXZhdGUtPnRyZWVPdXRsaW5lVmlldyBzZXRSb3dIZWlnaHQ6MTUuMF07CisgICAgICAgICAgICBb
X3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBzZXRUYXJnZXQ6c2VsZl07CisgICAgICAgICAgICBb
X3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBzZXREb3VibGVBY3Rpb246QHNlbGVjdG9yKF9mb2N1
c1Jvb3ROb2RlOildOworICAgICAgICAgICAgW19wcml2YXRlLT50cmVlT3V0bGluZVZpZXcgc2V0
SW5kZW50YXRpb25QZXJMZXZlbDoxMi4wXTsKKyAgICAgICAgICAgIFtfcHJpdmF0ZS0+dHJlZVNj
cm9sbFZpZXcgc2V0RG9jdW1lbnRWaWV3Ol9wcml2YXRlLT50cmVlT3V0bGluZVZpZXddOworCisg
ICAgICAgICAgICBOU0NlbGwgKmhlYWRlckNlbGwgPSBbW05TQ2VsbCBhbGxvY10gaW5pdFRleHRD
ZWxsOkAiIl07CisgICAgICAgICAgICBOU0NlbGwgKmRhdGFDZWxsID0gW1tOU0NlbGwgYWxsb2Nd
IGluaXRUZXh0Q2VsbDpAIiJdOworICAgICAgICAgICAgW2RhdGFDZWxsIHNldEZvbnQ6W05TRm9u
dCBzeXN0ZW1Gb250T2ZTaXplOjExLjBdXTsKKworICAgICAgICAgICAgTlNUYWJsZUNvbHVtbiAq
dGFibGVDb2x1bW4gPSBbW05TVGFibGVDb2x1bW4gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpA
Im5vZGUiXTsKKyAgICAgICAgICAgIFt0YWJsZUNvbHVtbiBzZXRIZWFkZXJDZWxsOmhlYWRlckNl
bGxdOworICAgICAgICAgICAgW3RhYmxlQ29sdW1uIHNldERhdGFDZWxsOmRhdGFDZWxsXTsKKyAg
ICAgICAgICAgIFt0YWJsZUNvbHVtbiBzZXRNaW5XaWR0aDo1MF07CisgICAgICAgICAgICBbdGFi
bGVDb2x1bW4gc2V0V2lkdGg6MzAwXTsKKyAgICAgICAgICAgIFt0YWJsZUNvbHVtbiBzZXRFZGl0
YWJsZTpOT107CisgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBhZGRUYWJs
ZUNvbHVtbjp0YWJsZUNvbHVtbl07CisgICAgICAgICAgICBbX3ByaXZhdGUtPnRyZWVPdXRsaW5l
VmlldyBzZXRPdXRsaW5lVGFibGVDb2x1bW46dGFibGVDb2x1bW5dOworCisgICAgICAgICAgICBb
X3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyBzaXplTGFzdENvbHVtblRvRml0XTsKKworICAgICAg
ICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfdXBkYXRlVHJlZVNjcm9sbGJhcikgbmFtZTpOU1ZpZXdG
cmFtZURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6X3ByaXZhdGUtPnRyZWVPdXRsaW5lVmll
d107IAorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFtfcHJpdmF0ZS0+dHJlZU91dGxpbmVW
aWV3IGVuY2xvc2luZ1Njcm9sbFZpZXddOworICAgIH0KKworICAgIHJldHVybiBuaWw7Cit9CisK
KyNwcmFnbWEgbWFyayAtCisKKy0gKGludClvdXRsaW5lVmlldzooTlNPdXRsaW5lVmlldyAqKSBv
dXRsaW5lVmlldyBudW1iZXJPZkNoaWxkcmVuT2ZJdGVtOihpZCkgaXRlbQoreworICAgIGlmIChv
dXRsaW5lVmlldyA9PSBfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3KSB7CisgICAgICAgIGlmICgh
aXRlbSAmJiBfcHJpdmF0ZS0+c2VhcmNoUmVzdWx0c1Zpc2libGUpCisgICAgICAgICAgICByZXR1
cm4gW19wcml2YXRlLT5zZWFyY2hSZXN1bHRzIGNvdW50XTsKKyAgICAgICAgZWxzZSBpZiAoIWl0
ZW0pCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKCFfcHJpdmF0ZS0+aWdub3Jl
V2hpdGVzcGFjZSkKKyAgICAgICAgICAgIHJldHVybiBbW2l0ZW0gY2hpbGROb2Rlc10gbGVuZ3Ro
XTsKKyAgICAgICAgcmV0dXJuIFtpdGVtIF9sZW5ndGhPZkNoaWxkTm9kZXNJZ25vcmluZ1doaXRl
c3BhY2VdOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLSAoQk9PTClvdXRsaW5lVmlldzoo
TlNPdXRsaW5lVmlldyAqKSBvdXRsaW5lVmlldyBpc0l0ZW1FeHBhbmRhYmxlOihpZCkgaXRlbQor
eworICAgIGlmIChvdXRsaW5lVmlldyA9PSBfcHJpdmF0ZS0+dHJlZU91dGxpbmVWaWV3KSB7Cisg
ICAgICAgIGlmICghX3ByaXZhdGUtPmlnbm9yZVdoaXRlc3BhY2UpCisgICAgICAgICAgICByZXR1
cm4gW2l0ZW0gaGFzQ2hpbGROb2Rlc107CisgICAgICAgIHJldHVybiAoW2l0ZW0gX2ZpcnN0Q2hp
bGRTa2lwcGluZ1doaXRlc3BhY2VdID8gWUVTIDogTk8pOworICAgIH0KKyAgICByZXR1cm4gTk87
Cit9CisKKy0gKGlkKW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICopIG91dGxpbmVWaWV3IGNo
aWxkOihpbnQpIGluZGV4IG9mSXRlbTooaWQpIGl0ZW0KK3sKKyAgICBpZiAob3V0bGluZVZpZXcg
PT0gX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldykgeworICAgICAgICBpZiAoIWl0ZW0gJiYgX3By
aXZhdGUtPnNlYXJjaFJlc3VsdHNWaXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuIFtfcHJpdmF0
ZS0+c2VhcmNoUmVzdWx0cyBvYmplY3RBdEluZGV4OmluZGV4XTsKKyAgICAgICAgZWxzZSBpZiAo
IWl0ZW0pCisgICAgICAgICAgICByZXR1cm4gX3ByaXZhdGUtPnJvb3ROb2RlOworICAgICAgICBp
ZCBub2RlID0gbmlsOworICAgICAgICBpZiAoIV9wcml2YXRlLT5pZ25vcmVXaGl0ZXNwYWNlKQor
ICAgICAgICAgICAgbm9kZSA9IFtbaXRlbSBjaGlsZE5vZGVzXSBpdGVtOmluZGV4XTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbm9kZSA9IFtpdGVtIF9jaGlsZE5vZGVBdEluZGV4SWdub3Jp
bmdXaGl0ZXNwYWNlOmluZGV4XTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICAgICAgLy8gY2FjaGUgdGhlIG5vZGUgYmVjYXVzZSBOU091dGxpbmVWaWV3
IGFzc3VtZXMgd2UgaG9sZCBvbiB0byBpdAorICAgICAgICAvLyBpZiB3ZSBkb24ndCBob2xkIG9u
IHRvIHRoZSBub2RlIGl0IHdpbGwgYmUgcmVsZWFzZWQgYmVmb3JlIHRoZSBuZXh0IHRpbWUgdGhl
IE5TT3V0bGluZVZpZXcgbmVlZHMgaXQKKyAgICAgICAgW19wcml2YXRlLT5ub2RlQ2FjaGUgYWRk
T2JqZWN0Om5vZGVdOworICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisgICAgcmV0dXJuIG5p
bDsKK30KKworLSAoaWQpb3V0bGluZVZpZXc6KE5TT3V0bGluZVZpZXcgKikgb3V0bGluZVZpZXcg
b2JqZWN0VmFsdWVGb3JUYWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKSB0YWJsZUNvbHVtbiBi
eUl0ZW06KGlkKSBpdGVtCit7CisgICAgaWYgKG91dGxpbmVWaWV3ID09IF9wcml2YXRlLT50cmVl
T3V0bGluZVZpZXcgJiYgaXRlbSkgeworICAgICAgICBOU1NoYWRvdyAqc2hhZG93ID0gW1tOU1No
YWRvdyBhbGxvY10gaW5pdF07CisgICAgICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6W05TQ29s
b3IgYmxhY2tDb2xvcl1dOworICAgICAgICBbc2hhZG93IHNldFNoYWRvd0JsdXJSYWRpdXM6Mi4w
XTsKKyAgICAgICAgW3NoYWRvdyBzZXRTaGFkb3dPZmZzZXQ6TlNNYWtlU2l6ZSgyLjAsLTIuMCld
OworICAgICAgICBOU011dGFibGVQYXJhZ3JhcGhTdHlsZSAqcGFyYSA9IFtbTlNQYXJhZ3JhcGhT
dHlsZSBkZWZhdWx0UGFyYWdyYXBoU3R5bGVdIG11dGFibGVDb3B5XTsKKyAgICAgICAgW3BhcmEg
c2V0TGluZUJyZWFrTW9kZTpOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWxdOworICAgICAgICAK
KyAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRycyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aE9iamVjdHNBbmRLZXlzOltOU0NvbG9yIHdoaXRlQ29sb3JdLCBOU0ZvcmVncm91bmRDb2xv
ckF0dHJpYnV0ZU5hbWUsIHNoYWRvdywgTlNTaGFkb3dBdHRyaWJ1dGVOYW1lLCBwYXJhLCBOU1Bh
cmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZSwgbmlsXTsKKyAgICAgICAgTlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nID0gW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpbaXRlbSBfZGlzcGxheU5hbWVdIGF0dHJpYnV0ZXM6YXR0cnNdOworICAg
ICAgICBbYXR0cnMgcmVsZWFzZV07CisKKyAgICAgICAgaWYgKFtpdGVtIGhhc0NoaWxkTm9kZXNd
ICYmICFbb3V0bGluZVZpZXcgaXNJdGVtRXhwYW5kZWQ6aXRlbV0pIHsKKyAgICAgICAgICAgIGF0
dHJzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6W05TQ29s
b3IgY29sb3JXaXRoQ2FsaWJyYXRlZFJlZDoxLjAgZ3JlZW46MS4wIGJsdWU6MS4wIGFscGhhOjAu
NV0sIE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSwgc2hhZG93LCBOU1NoYWRvd0F0dHJp
YnV0ZU5hbWUsIHBhcmEsIE5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lLCBuaWxdOworICAg
ICAgICAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpwcmV2aWV3ID0gW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOltpdGVtIF9jb250ZW50UHJldmlld10gYXR0cmlidXRl
czphdHRyc107CisgICAgICAgICAgICBbc3RyaW5nIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6cHJl
dmlld107CisgICAgICAgICAgICBbYXR0cnMgcmVsZWFzZV07CisgICAgICAgICAgICBbcHJldmll
dyByZWxlYXNlXTsKKyAgICAgICAgfQorCisgICAgICAgIFtwYXJhIHJlbGVhc2VdOworICAgICAg
ICBbc2hhZG93IHJlbGVhc2VdOworICAgICAgICByZXR1cm4gW3N0cmluZyBhdXRvcmVsZWFzZV07
CisgICAgfQorCisgICAgcmV0dXJuIG5pbDsKK30KKworLSAodm9pZClvdXRsaW5lVmlldzooTlNP
dXRsaW5lVmlldyAqKW91dGxpbmVWaWV3IHdpbGxEaXNwbGF5T3V0bGluZUNlbGw6KGlkKWNlbGwg
Zm9yVGFibGVDb2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbiBpdGVtOihpZClpdGVt
Cit7CisgICAgaWYgKG91dGxpbmVWaWV3ID09IF9wcml2YXRlLT50cmVlT3V0bGluZVZpZXcpCisg
ICAgICAgIFtjZWxsIHNldEltYWdlOihbY2VsbCBzdGF0ZV0gPyBfcHJpdmF0ZS0+ZG93bkFycm93
SW1hZ2UgOiBfcHJpdmF0ZS0+cmlnaHRBcnJvd0ltYWdlKV07Cit9CisKKy0gKHZvaWQpb3V0bGlu
ZVZpZXdJdGVtRGlkQ29sbGFwc2U6KE5TTm90aWZpY2F0aW9uICopIG5vdGlmaWNhdGlvbgorewor
ICAgIGlmIChbbm90aWZpY2F0aW9uIG9iamVjdF0gPT0gX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmll
dykgeworICAgICAgICBET01Ob2RlICpub2RlID0gW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9i
amVjdEZvcktleTpAIk5TT2JqZWN0Il07CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAvLyByZW1vdmUgYWxsIGNoaWxkIG5vZGVzIGZyb20gdGhlIG5v
ZGUgY2FjaGUgd2hlbiB0aGUgcGFyZW50IGNvbGxhcHNlcworICAgICAgICBub2RlID0gW25vZGUg
Zmlyc3RDaGlsZF07CisgICAgICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgICAgICBOU01hcFJl
bW92ZShsZW5ndGhJZ25vcmluZ1doaXRlc3BhY2VDYWNoZSwgbm9kZSk7CisgICAgICAgICAgICBO
U01hcFJlbW92ZShsYXN0Q2hpbGRJbmRleElnbm9yaW5nV2hpdGVzcGFjZUNhY2hlLCBub2RlKTsK
KyAgICAgICAgICAgIE5TTWFwUmVtb3ZlKGxhc3RDaGlsZElnbm9yaW5nV2hpdGVzcGFjZUNhY2hl
LCBub2RlKTsKKyAgICAgICAgICAgIFtfcHJpdmF0ZS0+bm9kZUNhY2hlIHJlbW92ZU9iamVjdDpu
b2RlXTsKKyAgICAgICAgICAgIG5vZGUgPSBbbm9kZSBuZXh0U2libGluZ107CisgICAgICAgIH0K
KyAgICB9Cit9CisKKy0gKHZvaWQpb3V0bGluZVZpZXdTZWxlY3Rpb25EaWRDaGFuZ2U6KE5TTm90
aWZpY2F0aW9uICopIG5vdGlmaWNhdGlvbgoreworICAgIGlmIChbbm90aWZpY2F0aW9uIG9iamVj
dF0gPT0gX3ByaXZhdGUtPnRyZWVPdXRsaW5lVmlldyAmJiAhX3ByaXZhdGUtPnByZXZlbnRTZWxl
Y3Rpb25SZWZvY3VzKSB7CisgICAgICAgIGludCBpbmRleCA9IFtfcHJpdmF0ZS0+dHJlZU91dGxp
bmVWaWV3IHNlbGVjdGVkUm93XTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBbc2VsZiBzZXRGb2N1c2VkRE9NTm9kZTpbX3ByaXZhdGUtPnRy
ZWVPdXRsaW5lVmlldyBpdGVtQXRSb3c6aW5kZXhdXTsKKyAgICAgICAgW3NlbGYgX3VwZGF0ZVRy
ZWVTY3JvbGxiYXJdOworICAgIH0KK30KK0BlbmQKKworI3ByYWdtYSBtYXJrIC0KKworQGltcGxl
bWVudGF0aW9uIFdlYkluc3BlY3RvclByaXZhdGUKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFt3
ZWJWaWV3IHJlbGVhc2VdOworICAgIFtkb21Eb2N1bWVudCByZWxlYXNlXTsKKyAgICBbd2ViRnJh
bWUgcmVsZWFzZV07CisgICAgW3Jvb3ROb2RlIHJlbGVhc2VdOworICAgIFtmb2N1c2VkTm9kZSBy
ZWxlYXNlXTsKKyAgICBbc2VhcmNoUXVlcnkgcmVsZWFzZV07CisgICAgW25vZGVDYWNoZSByZWxl
YXNlXTsKKyAgICBbdHJlZVNjcm9sbFZpZXcgcmVsZWFzZV07CisgICAgW3RyZWVPdXRsaW5lVmll
dyByZWxlYXNlXTsKKyAgICBbbWF0Y2hlZFJ1bGVzIHJlbGVhc2VdOworICAgIFtjdXJyZW50SGln
aGxpZ2h0IHJlbGVhc2VdOworICAgIFtyaWdodEFycm93SW1hZ2UgcmVsZWFzZV07CisgICAgW2Rv
d25BcnJvd0ltYWdlIHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KK0BlbmQKKwor
I3ByYWdtYSBtYXJrIC0KKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxFbGVtZW50IChET01IVE1M
RWxlbWVudEluc3BlY3RvckFkZGl0aW9ucykKKy0gKHZvaWQpX2FkZENsYXNzTmFtZTooTlNTdHJp
bmcgKikgbmFtZQoreworICAgIE5TU3RyaW5nICpjbGFzcyA9IFtzZWxmIGNsYXNzTmFtZV07Cisg
ICAgaWYgKFtjbGFzcyByYW5nZU9mU3RyaW5nOm5hbWVdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoW2NsYXNzIGxlbmd0aF0pIHsKKyAgICAgICAgTlNT
dHJpbmcgKm5ldyA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiJUAgJUAiLCBj
bGFzcywgbmFtZV07CisgICAgICAgIFtzZWxmIHNldENsYXNzTmFtZTpuZXddOworICAgICAgICBb
bmV3IHJlbGVhc2VdOworICAgIH0gZWxzZSB7CisgICAgICAgIFtzZWxmIHNldENsYXNzTmFtZTpu
YW1lXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpX3JlbW92ZUNsYXNzTmFtZTooTlNTdHJpbmcgKikg
bmFtZQoreworICAgIGlmIChbW3NlbGYgY2xhc3NOYW1lXSBpc0VxdWFsVG9TdHJpbmc6bmFtZV0p
IHsKKyAgICAgICAgW3NlbGYgc2V0Q2xhc3NOYW1lOkAiIl07CisgICAgfSBlbHNlIGlmIChbW3Nl
bGYgY2xhc3NOYW1lXSByYW5nZU9mU3RyaW5nOm5hbWVdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQp
IHsKKyAgICAgICAgTlNNdXRhYmxlU3RyaW5nICpjbGFzcyA9IFtbc2VsZiBjbGFzc05hbWVdIG11
dGFibGVDb3B5XTsKKyAgICAgICAgW2NsYXNzIHJlcGxhY2VPY2N1cnJlbmNlc09mU3RyaW5nOm5h
bWUgd2l0aFN0cmluZzpAIiIgb3B0aW9uczpOU0xpdGVyYWxTZWFyY2ggcmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgW2NsYXNzIGxlbmd0aF0pXTsKKyAgICAgICAgW3NlbGYgc2V0Q2xhc3NOYW1lOltjbGFz
cyBfd2Via2l0X3N0cmluZ0J5Q29sbGFwc2luZ1doaXRlc3BhY2VDaGFyYWN0ZXJzXV07CisgICAg
ICAgIFtjbGFzcyByZWxlYXNlXTsKKyAgICB9Cit9CitAZW5kCisKKyNwcmFnbWEgbWFyayAtCisK
K0BpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChET01Ob2RlSW5zcGVjdG9yQWRkaXRpb25zKQorLSAo
TlNTdHJpbmcgKilfY29udGVudFByZXZpZXcKK3sKKyAgICBpZiAoIVtzZWxmIGhhc0NoaWxkTm9k
ZXNdKQorICAgICAgICByZXR1cm4gQCIiOworCisgICAgdW5zaWduZWQgbGltaXQgPSAwOworICAg
IE5TTXV0YWJsZVN0cmluZyAqcHJldmlldyA9IFtbTlNNdXRhYmxlU3RyaW5nIGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OjEwMF07CisgICAgW3ByZXZpZXcgYXBwZW5kU3RyaW5nOkAiICJdOworCisg
ICAgLy8gYWx3YXlzIHNraXAgd2hpdGVzcGFjZSBoZXJlCisgICAgRE9NTm9kZSAqY3VycmVudE5v
ZGUgPSBbc2VsZiBfdHJhdmVyc2VOZXh0Tm9kZVNraXBwaW5nV2hpdGVzcGFjZVN0YXlpbmdXaXRo
aW46c2VsZl07CisgICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7CisgICAgICAgIGlmIChbY3VycmVu
dE5vZGUgbm9kZVR5cGVdID09IERPTV9URVhUX05PREUpCisgICAgICAgICAgICBbcHJldmlldyBh
cHBlbmRTdHJpbmc6W1tjdXJyZW50Tm9kZSBub2RlVmFsdWVdIF93ZWJraXRfc3RyaW5nQnlDb2xs
YXBzaW5nV2hpdGVzcGFjZUNoYXJhY3RlcnNdXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
W3ByZXZpZXcgYXBwZW5kU3RyaW5nOltjdXJyZW50Tm9kZSBfZGlzcGxheU5hbWVdXTsKKyAgICAg
ICAgY3VycmVudE5vZGUgPSBbY3VycmVudE5vZGUgX3RyYXZlcnNlTmV4dE5vZGVTdGF5aW5nV2l0
aGluOnNlbGZdOworICAgICAgICBpZiAoKytsaW1pdCA+IDQpIHsKKyAgICAgICAgICAgIHVuaWNo
YXIgZWxsaXBzaXMgPSAweDIwMjY7CisgICAgICAgICAgICBbcHJldmlldyBhcHBlbmRTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZlbGxpcHNpcyBsZW5ndGg6MV1dOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gW3ByZXZpZXcg
YXV0b3JlbGVhc2VdOworfQorCisjcHJhZ21hIG1hcmsgLQorCistIChCT09MKV9pc0FuY2VzdG9y
T2ZOb2RlOihET01Ob2RlICopIG5vZGUKK3sKKyAgICBET01Ob2RlICpjdXJyZW50Tm9kZSA9IFtu
b2RlIHBhcmVudE5vZGVdOworICAgIHdoaWxlIChjdXJyZW50Tm9kZSkgeworICAgICAgICBpZiAo
W3NlbGYgaXNTYW1lTm9kZTpjdXJyZW50Tm9kZV0pCisgICAgICAgICAgICByZXR1cm4gWUVTOwor
ICAgICAgICBjdXJyZW50Tm9kZSA9IFtjdXJyZW50Tm9kZSBwYXJlbnROb2RlXTsKKyAgICB9Cisg
ICAgcmV0dXJuIE5POworfQorCistIChCT09MKV9pc0Rlc2NlbmRhbnRPZk5vZGU6KERPTU5vZGUg
Kikgbm9kZQoreworICAgIHJldHVybiBbbm9kZSBfaXNBbmNlc3Rvck9mTm9kZTpzZWxmXTsKK30K
KworI3ByYWdtYSBtYXJrIC0KKworLSAoQk9PTClfaXNXaGl0ZXNwYWNlCit7CisgICAgc3RhdGlj
IE5TQ2hhcmFjdGVyU2V0ICpjaGFyYWN0ZXJzID0gbmlsOworICAgIGlmICghY2hhcmFjdGVycykK
KyAgICAgICAgY2hhcmFjdGVycyA9IFtbW05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VBbmROZXds
aW5lQ2hhcmFjdGVyU2V0XSBpbnZlcnRlZFNldF0gcmV0YWluXTsKKyAgICBOU1JhbmdlIHJhbmdl
ID0gW1tzZWxmIG5vZGVWYWx1ZV0gcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6Y2hhcmFjdGVyc107
CisgICAgcmV0dXJuIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKTsKK30KKworLSAodW5z
aWduZWQgbG9uZylfbGVuZ3RoT2ZDaGlsZE5vZGVzSWdub3JpbmdXaGl0ZXNwYWNlCit7CisgICAg
aWYgKCFsZW5ndGhJZ25vcmluZ1doaXRlc3BhY2VDYWNoZSkKKyAgICAgICAgbGVuZ3RoSWdub3Jp
bmdXaGl0ZXNwYWNlQ2FjaGUgPSBOU0NyZWF0ZU1hcFRhYmxlKE5TT2JqZWN0TWFwS2V5Q2FsbEJh
Y2tzLCBOU0ludE1hcFZhbHVlQ2FsbEJhY2tzLCAzMDApOworCisgICAgdm9pZCAqbG9va3VwID0g
TlNNYXBHZXQobGVuZ3RoSWdub3JpbmdXaGl0ZXNwYWNlQ2FjaGUsIHNlbGYpOworICAgIGlmIChs
b29rdXApCisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZylsb29rdXA7CisKKyAgICB1bnNp
Z25lZCBsb25nIGNvdW50ID0gMDsKKyAgICBET01Ob2RlICpub2RlID0gW3NlbGYgX2ZpcnN0Q2hp
bGRTa2lwcGluZ1doaXRlc3BhY2VdOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIG5vZGUg
PSBbbm9kZSBfbmV4dFNpYmxpbmdTa2lwcGluZ1doaXRlc3BhY2VdOworICAgICAgICBjb3VudCsr
OworICAgIH0KKworICAgIE5TTWFwSW5zZXJ0KGxlbmd0aElnbm9yaW5nV2hpdGVzcGFjZUNhY2hl
LCBzZWxmLCAodm9pZCAqKWNvdW50KTsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKKy0gKERPTU5v
ZGUgKilfY2hpbGROb2RlQXRJbmRleElnbm9yaW5nV2hpdGVzcGFjZToodW5zaWduZWQgbG9uZykg
bm9kZUluZGV4Cit7CisgICAgdW5zaWduZWQgbG9uZyBjb3VudCA9IDA7CisgICAgRE9NTm9kZSAq
bm9kZSA9IG5pbDsKKworICAgIGlmICghbGFzdENoaWxkSW5kZXhJZ25vcmluZ1doaXRlc3BhY2VD
YWNoZSkKKyAgICAgICAgbGFzdENoaWxkSW5kZXhJZ25vcmluZ1doaXRlc3BhY2VDYWNoZSA9IE5T
Q3JlYXRlTWFwVGFibGUoTlNPYmplY3RNYXBLZXlDYWxsQmFja3MsIE5TSW50TWFwVmFsdWVDYWxs
QmFja3MsIDMwMCk7CisgICAgaWYgKCFsYXN0Q2hpbGRJZ25vcmluZ1doaXRlc3BhY2VDYWNoZSkK
KyAgICAgICAgbGFzdENoaWxkSWdub3JpbmdXaGl0ZXNwYWNlQ2FjaGUgPSBOU0NyZWF0ZU1hcFRh
YmxlKE5TT2JqZWN0TWFwS2V5Q2FsbEJhY2tzLCBOU09iamVjdE1hcFZhbHVlQ2FsbEJhY2tzLCAz
MDApOworCisgICAgdm9pZCAqY2FjaGVkTGFzdEluZGV4ID0gTlNNYXBHZXQobGFzdENoaWxkSW5k
ZXhJZ25vcmluZ1doaXRlc3BhY2VDYWNoZSwgc2VsZik7CisgICAgaWYgKGNhY2hlZExhc3RJbmRl
eCkgeworICAgICAgICBET01Ob2RlICpsYXN0Q2hpbGQgPSAoRE9NTm9kZSAqKU5TTWFwR2V0KGxh
c3RDaGlsZElnbm9yaW5nV2hpdGVzcGFjZUNhY2hlLCBzZWxmKTsKKyAgICAgICAgaWYgKGxhc3RD
aGlsZCkgeworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjYWNoZWRJbmRleCA9ICh1bnNpZ25l
ZCBsb25nKWNhY2hlZExhc3RJbmRleDsKKyAgICAgICAgICAgIGlmIChub2RlSW5kZXggPT0gY2Fj
aGVkSW5kZXgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGFzdENoaWxkOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChub2RlSW5kZXggPiBjYWNoZWRJbmRleCkgeworICAgICAgICAgICAgICAg
IG5vZGUgPSBsYXN0Q2hpbGQ7CisgICAgICAgICAgICAgICAgY291bnQgPSBjYWNoZWRJbmRleDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbm9kZSkKKyAgICAg
ICAgbm9kZSA9IFtzZWxmIF9maXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNlXTsKKworICAgIHdo
aWxlIChub2RlICYmIGNvdW50IDwgbm9kZUluZGV4KSB7CisgICAgICAgIG5vZGUgPSBbbm9kZSBf
bmV4dFNpYmxpbmdTa2lwcGluZ1doaXRlc3BhY2VdOworICAgICAgICBjb3VudCsrOworICAgIH0K
KworICAgIGlmIChub2RlKSB7CisgICAgICAgIE5TTWFwSW5zZXJ0KGxhc3RDaGlsZEluZGV4SWdu
b3JpbmdXaGl0ZXNwYWNlQ2FjaGUsIHNlbGYsICh2b2lkICopY291bnQpOworICAgICAgICBOU01h
cEluc2VydChsYXN0Q2hpbGRJZ25vcmluZ1doaXRlc3BhY2VDYWNoZSwgc2VsZiwgbm9kZSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgTlNNYXBSZW1vdmUobGFzdENoaWxkSW5kZXhJZ25vcmluZ1do
aXRlc3BhY2VDYWNoZSwgc2VsZik7CisgICAgICAgIE5TTWFwUmVtb3ZlKGxhc3RDaGlsZElnbm9y
aW5nV2hpdGVzcGFjZUNhY2hlLCBzZWxmKTsKKyAgICB9CisKKyAgICByZXR1cm4gbm9kZTsKK30K
KworI3ByYWdtYSBtYXJrIC0KKworLSAoRE9NTm9kZSAqKV9uZXh0U2libGluZ1NraXBwaW5nV2hp
dGVzcGFjZQoreworICAgIERPTU5vZGUgKm5vZGUgPSBbc2VsZiBuZXh0U2libGluZ107CisgICAg
d2hpbGUgKFtub2RlIG5vZGVUeXBlXSA9PSBET01fVEVYVF9OT0RFICYmIFtub2RlIF9pc1doaXRl
c3BhY2VdKQorICAgICAgICBub2RlID0gW25vZGUgbmV4dFNpYmxpbmddOworICAgIHJldHVybiBu
b2RlOworfQorCistIChET01Ob2RlICopX3ByZXZpb3VzU2libGluZ1NraXBwaW5nV2hpdGVzcGFj
ZQoreworICAgIERPTU5vZGUgKm5vZGUgPSBbc2VsZiBwcmV2aW91c1NpYmxpbmddOworICAgIHdo
aWxlIChbbm9kZSBub2RlVHlwZV0gPT0gRE9NX1RFWFRfTk9ERSAmJiBbbm9kZSBfaXNXaGl0ZXNw
YWNlXSkKKyAgICAgICAgbm9kZSA9IFtub2RlIHByZXZpb3VzU2libGluZ107CisgICAgcmV0dXJu
IG5vZGU7Cit9CisKKy0gKERPTU5vZGUgKilfZmlyc3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZQor
eworICAgIERPTU5vZGUgKm5vZGUgPSBbc2VsZiBmaXJzdENoaWxkXTsKKyAgICB3aGlsZSAoW25v
ZGUgbm9kZVR5cGVdID09IERPTV9URVhUX05PREUgJiYgW25vZGUgX2lzV2hpdGVzcGFjZV0pCisg
ICAgICAgIG5vZGUgPSBbbm9kZSBfbmV4dFNpYmxpbmdTa2lwcGluZ1doaXRlc3BhY2VdOworICAg
IHJldHVybiBub2RlOworfQorCistIChET01Ob2RlICopX2xhc3RDaGlsZFNraXBwaW5nV2hpdGVz
cGFjZQoreworICAgIERPTU5vZGUgKm5vZGUgPSBbc2VsZiBsYXN0Q2hpbGRdOworICAgIHdoaWxl
IChbbm9kZSBub2RlVHlwZV0gPT0gRE9NX1RFWFRfTk9ERSAmJiBbbm9kZSBfaXNXaGl0ZXNwYWNl
XSkKKyAgICAgICAgbm9kZSA9IFtub2RlIF9wcmV2aW91c1NpYmxpbmdTa2lwcGluZ1doaXRlc3Bh
Y2VdOworICAgIHJldHVybiBub2RlOworfQorCisjcHJhZ21hIG1hcmsgLQorCistIChET01Ob2Rl
ICopX2ZpcnN0QW5jZXN0b3JDb21tb25XaXRoTm9kZTooRE9NTm9kZSAqKSBub2RlCit7CisgICAg
aWYgKFtbc2VsZiBwYXJlbnROb2RlXSBpc1NhbWVOb2RlOltub2RlIHBhcmVudE5vZGVdXSkKKyAg
ICAgICAgcmV0dXJuIFtzZWxmIHBhcmVudE5vZGVdOworCisgICAgTlNNdXRhYmxlQXJyYXkgKmFu
Y2VzdG9yc09uZSA9IFtbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
CisgICAgTlNNdXRhYmxlQXJyYXkgKmFuY2VzdG9yc1R3byA9IFtbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisKKyAgICBET01Ob2RlICpjdXJyZW50Tm9kZSA9IFtz
ZWxmIHBhcmVudE5vZGVdOworICAgIHdoaWxlIChjdXJyZW50Tm9kZSkgeworICAgICAgICBbYW5j
ZXN0b3JzT25lIGFkZE9iamVjdDpjdXJyZW50Tm9kZV07CisgICAgICAgIGN1cnJlbnROb2RlID0g
W2N1cnJlbnROb2RlIHBhcmVudE5vZGVdOworICAgIH0KKworICAgIGN1cnJlbnROb2RlID0gW25v
ZGUgcGFyZW50Tm9kZV07CisgICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7CisgICAgICAgIFthbmNl
c3RvcnNUd28gYWRkT2JqZWN0OmN1cnJlbnROb2RlXTsKKyAgICAgICAgY3VycmVudE5vZGUgPSBb
Y3VycmVudE5vZGUgcGFyZW50Tm9kZV07CisgICAgfQorCisgICAgcmV0dXJuIFthbmNlc3RvcnNP
bmUgZmlyc3RPYmplY3RDb21tb25XaXRoQXJyYXk6YW5jZXN0b3JzVHdvXTsKK30KKworI3ByYWdt
YSBtYXJrIC0KKworLSAoRE9NTm9kZSAqKV90cmF2ZXJzZU5leHROb2RlU3RheWluZ1dpdGhpbjoo
RE9NTm9kZSAqKSBzdGF5V2l0aGluCit7CisgICAgRE9NTm9kZSAqbm9kZSA9IFtzZWxmIGZpcnN0
Q2hpbGRdOworICAgIGlmIChub2RlKQorICAgICAgICByZXR1cm4gbm9kZTsKKworICAgIGlmIChb
c2VsZiBpc1NhbWVOb2RlOnN0YXlXaXRoaW5dKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG5v
ZGUgPSBbc2VsZiBuZXh0U2libGluZ107CisgICAgaWYgKG5vZGUpCisgICAgICAgIHJldHVybiBu
b2RlOworCisgICAgbm9kZSA9IHNlbGY7CisgICAgd2hpbGUgKG5vZGUgJiYgIVtub2RlIG5leHRT
aWJsaW5nXSAmJiAoIXN0YXlXaXRoaW4gfHwgIVtbbm9kZSBwYXJlbnROb2RlXSBpc1NhbWVOb2Rl
OnN0YXlXaXRoaW5dKSkKKyAgICAgICAgbm9kZSA9IFtub2RlIHBhcmVudE5vZGVdOworCisgICAg
cmV0dXJuIFtub2RlIG5leHRTaWJsaW5nXTsKK30KKworLSAoRE9NTm9kZSAqKV90cmF2ZXJzZU5l
eHROb2RlU2tpcHBpbmdXaGl0ZXNwYWNlU3RheWluZ1dpdGhpbjooRE9NTm9kZSAqKSBzdGF5V2l0
aGluCit7CisgICAgRE9NTm9kZSAqbm9kZSA9IFtzZWxmIF9maXJzdENoaWxkU2tpcHBpbmdXaGl0
ZXNwYWNlXTsKKyAgICBpZiAobm9kZSkKKyAgICAgICAgcmV0dXJuIG5vZGU7CisKKyAgICBpZiAo
W3NlbGYgaXNTYW1lTm9kZTpzdGF5V2l0aGluXSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBu
b2RlID0gW3NlbGYgX25leHRTaWJsaW5nU2tpcHBpbmdXaGl0ZXNwYWNlXTsKKyAgICBpZiAobm9k
ZSkKKyAgICAgICAgcmV0dXJuIG5vZGU7CisKKyAgICBub2RlID0gc2VsZjsKKyAgICB3aGlsZSAo
bm9kZSAmJiAhW25vZGUgX25leHRTaWJsaW5nU2tpcHBpbmdXaGl0ZXNwYWNlXSAmJiAoIXN0YXlX
aXRoaW4gfHwgIVtbbm9kZSBwYXJlbnROb2RlXSBpc1NhbWVOb2RlOnN0YXlXaXRoaW5dKSkKKyAg
ICAgICAgbm9kZSA9IFtub2RlIHBhcmVudE5vZGVdOworCisgICAgcmV0dXJuIFtub2RlIF9uZXh0
U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZV07Cit9CisKKy0gKERPTU5vZGUgKilfdHJhdmVyc2VQ
cmV2aW91c05vZGUKK3sKKyAgICBET01Ob2RlICpub2RlID0gW3NlbGYgcHJldmlvdXNTaWJsaW5n
XTsKKyAgICB3aGlsZSAoW25vZGUgbGFzdENoaWxkXSkKKyAgICAgICAgbm9kZSA9IFtub2RlIGxh
c3RDaGlsZF07CisgICAgaWYgKG5vZGUpCisgICAgICAgIHJldHVybiBub2RlOworICAgIHJldHVy
biBbc2VsZiBwYXJlbnROb2RlXTsKK30KKworLSAoRE9NTm9kZSAqKV90cmF2ZXJzZVByZXZpb3Vz
Tm9kZVNraXBwaW5nV2hpdGVzcGFjZQoreworICAgIERPTU5vZGUgKm5vZGUgPSBbc2VsZiBfcHJl
dmlvdXNTaWJsaW5nU2tpcHBpbmdXaGl0ZXNwYWNlXTsKKyAgICB3aGlsZSAoW25vZGUgX2xhc3RD
aGlsZFNraXBwaW5nV2hpdGVzcGFjZV0pCisgICAgICAgIG5vZGUgPSBbbm9kZSBfbGFzdENoaWxk
U2tpcHBpbmdXaGl0ZXNwYWNlXTsKKyAgICBpZiAobm9kZSkKKyAgICAgICAgcmV0dXJuIG5vZGU7
CisgICAgcmV0dXJuIFtzZWxmIHBhcmVudE5vZGVdOworfQorCisjcHJhZ21hIG1hcmsgLQorCist
IChOU1N0cmluZyAqKV9ub2RlVHlwZU5hbWUKK3sKKyAgICBzd2l0Y2goW3NlbGYgbm9kZVR5cGVd
KSB7CisgICAgICAgIGNhc2UgRE9NX0VMRU1FTlRfTk9ERTogcmV0dXJuIFVJX1NUUklORygiRWxl
bWVudCIsICJlbGVtZW50IG5vZGUgdHlwZSBuYW1lIik7CisgICAgICAgIGNhc2UgRE9NX0FUVFJJ
QlVURV9OT0RFOiByZXR1cm4gVUlfU1RSSU5HKCJBdHRyaWJ1dGUiLCAiYXR0cmlidXRlIG5vZGUg
dHlwZSBuYW1lIik7CisgICAgICAgIGNhc2UgRE9NX1RFWFRfTk9ERTogcmV0dXJuIFVJX1NUUklO
RygiVGV4dCIsICJ0ZXh0IG5vZGUgdHlwZSBuYW1lIik7CisgICAgICAgIGNhc2UgRE9NX0NEQVRB
X1NFQ1RJT05fTk9ERTogcmV0dXJuIFVJX1NUUklORygiQ2hhcmFjdGVyIERhdGEiLCAiY2hhcmFj
dGVyIGRhdGEgbm9kZSB0eXBlIG5hbWUiKTsKKyAgICAgICAgY2FzZSBET01fRU5USVRZX1JFRkVS
RU5DRV9OT0RFOiByZXR1cm4gVUlfU1RSSU5HKCJFbnRpdHkgUmVmZXJlbmNlIiwgImVudGl0eSBy
ZWZlcmVuY2Ugbm9kZSB0eXBlIG5hbWUiKTsKKyAgICAgICAgY2FzZSBET01fRU5USVRZX05PREU6
IHJldHVybiBVSV9TVFJJTkcoIkVudGl0eSIsICJlbnRpdHkgbm9kZSB0eXBlIG5hbWUiKTsKKyAg
ICAgICAgY2FzZSBET01fUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOiByZXR1cm4gVUlfU1RS
SU5HKCJQcm9jZXNzaW5nIEluc3RydWN0aW9uIiwgInByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9k
ZSB0eXBlIG5hbWUiKTsKKyAgICAgICAgY2FzZSBET01fQ09NTUVOVF9OT0RFOiByZXR1cm4gVUlf
U1RSSU5HKCJDb21tZW50IiwgImNvbW1lbnQgbm9kZSB0eXBlIG5hbWUiKTsKKyAgICAgICAgY2Fz
ZSBET01fRE9DVU1FTlRfTk9ERTogcmV0dXJuIFVJX1NUUklORygiRG9jdW1lbnQiLCAiZG9jdW1l
bnQgbm9kZSB0eXBlIG5hbWUiKTsKKyAgICAgICAgY2FzZSBET01fRE9DVU1FTlRfVFlQRV9OT0RF
OiByZXR1cm4gVUlfU1RSSU5HKCJEb2N1bWVudCBUeXBlIiwgImRvY3VtZW50IHR5cGUgbm9kZSB0
eXBlIG5hbWUiKTsKKyAgICAgICAgY2FzZSBET01fRE9DVU1FTlRfRlJBR01FTlRfTk9ERTogcmV0
dXJuIFVJX1NUUklORygiRG9jdW1lbnQgRnJhZ21lbnQiLCAiZG9jdW1lbnQgZnJhZ21lbnQgbm9k
ZSB0eXBlIG5hbWUiKTsKKyAgICAgICAgY2FzZSBET01fTk9UQVRJT05fTk9ERTogcmV0dXJuIFVJ
X1NUUklORygiTm90YXRpb24iLCAibm90YXRpb24gbm9kZSB0eXBlIG5hbWUiKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG5pbDsKK30KKworLSAoTlNTdHJpbmcgKilfc2hvcnREaXNwbGF5TmFtZQorewor
ICAgIGlmIChbc2VsZiBub2RlVHlwZV0gPT0gRE9NX1RFWFRfTk9ERSkKKyAgICAgICAgcmV0dXJu
IFVJX1NUUklORygiVGV4dCIsICJ0ZXh0IG5vZGUgdHlwZSBuYW1lIik7CisgICAgcmV0dXJuIFtz
ZWxmIF9kaXNwbGF5TmFtZV07Cit9CisKKy0gKE5TU3RyaW5nICopX2Rpc3BsYXlOYW1lCit7Cisg
ICAgc3dpdGNoKFtzZWxmIG5vZGVUeXBlXSkgeworICAgICAgICBjYXNlIERPTV9ET0NVTUVOVF9O
T0RFOgorICAgICAgICAgICAgcmV0dXJuIFVJX1NUUklORygiRG9jdW1lbnQiLCAiZG9jdW1lbnQg
bm9kZSBuYW1lIik7CisgICAgICAgIGNhc2UgRE9NX0VMRU1FTlRfTk9ERTogeworICAgICAgICAg
ICAgaWYgKFtzZWxmIGhhc0F0dHJpYnV0ZXNdKSB7CisgICAgICAgICAgICAgICAgTlNNdXRhYmxl
U3RyaW5nICpuYW1lID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIiwg
W1tzZWxmIG5vZGVOYW1lXSBsb3dlcmNhc2VTdHJpbmddXTsKKyAgICAgICAgICAgICAgICBOU1N0
cmluZyAqdmFsdWUgPSBbKERPTUVsZW1lbnQgKilzZWxmIGdldEF0dHJpYnV0ZTpAImlkIl07Cisg
ICAgICAgICAgICAgICAgaWYgKFt2YWx1ZSBsZW5ndGhdKQorICAgICAgICAgICAgICAgICAgICBb
bmFtZSBhcHBlbmRGb3JtYXQ6QCIgaWQ9XCIlQFwiIiwgdmFsdWVdOworICAgICAgICAgICAgICAg
IHZhbHVlID0gWyhET01FbGVtZW50ICopc2VsZiBnZXRBdHRyaWJ1dGU6QCJjbGFzcyJdOworICAg
ICAgICAgICAgICAgIGlmIChbdmFsdWUgbGVuZ3RoXSkKKyAgICAgICAgICAgICAgICAgICAgW25h
bWUgYXBwZW5kRm9ybWF0OkAiIGNsYXNzPVwiJUBcIiIsIHZhbHVlXTsKKyAgICAgICAgICAgICAg
ICBpZiAoW1tzZWxmIG5vZGVOYW1lXSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiYSJdID09IE5T
T3JkZXJlZFNhbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBbKERPTUVsZW1lbnQg
KilzZWxmIGdldEF0dHJpYnV0ZTpAIm5hbWUiXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFt2
YWx1ZSBsZW5ndGhdKQorICAgICAgICAgICAgICAgICAgICAgICAgW25hbWUgYXBwZW5kRm9ybWF0
OkAiIG5hbWU9XCIlQFwiIiwgdmFsdWVdOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFso
RE9NRWxlbWVudCAqKXNlbGYgZ2V0QXR0cmlidXRlOkAiaHJlZiJdOworICAgICAgICAgICAgICAg
ICAgICBpZiAoW3ZhbHVlIGxlbmd0aF0pCisgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZSBh
cHBlbmRGb3JtYXQ6QCIgaHJlZj1cIiVAXCIiLCB2YWx1ZV07CisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChbW3NlbGYgbm9kZU5hbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJpbWciXSA9
PSBOU09yZGVyZWRTYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gWyhET01FbGVt
ZW50ICopc2VsZiBnZXRBdHRyaWJ1dGU6QCJzcmMiXTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KFt2YWx1ZSBsZW5ndGhdKQorICAgICAgICAgICAgICAgICAgICAgICAgW25hbWUgYXBwZW5kRm9y
bWF0OkAiIHNyYz1cIiVAXCIiLCB2YWx1ZV07CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChb
W3NlbGYgbm9kZU5hbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJpZnJhbWUiXSA9PSBOU09y
ZGVyZWRTYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gWyhET01FbGVtZW50ICop
c2VsZiBnZXRBdHRyaWJ1dGU6QCJzcmMiXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFt2YWx1
ZSBsZW5ndGhdKQorICAgICAgICAgICAgICAgICAgICAgICAgW25hbWUgYXBwZW5kRm9ybWF0OkAi
IHNyYz1cIiVAXCIiLCB2YWx1ZV07CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChbW3NlbGYg
bm9kZU5hbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJpbnB1dCJdID09IE5TT3JkZXJlZFNh
bWUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBbKERPTUVsZW1lbnQgKilzZWxmIGdl
dEF0dHJpYnV0ZTpAIm5hbWUiXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFt2YWx1ZSBsZW5n
dGhdKQorICAgICAgICAgICAgICAgICAgICAgICAgW25hbWUgYXBwZW5kRm9ybWF0OkAiIG5hbWU9
XCIlQFwiIiwgdmFsdWVdOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFsoRE9NRWxlbWVu
dCAqKXNlbGYgZ2V0QXR0cmlidXRlOkAidHlwZSJdOworICAgICAgICAgICAgICAgICAgICBpZiAo
W3ZhbHVlIGxlbmd0aF0pCisgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZSBhcHBlbmRGb3Jt
YXQ6QCIgdHlwZT1cIiVAXCIiLCB2YWx1ZV07CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChb
W3NlbGYgbm9kZU5hbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJmb3JtIl0gPT0gTlNPcmRl
cmVkU2FtZSkgeworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFsoRE9NRWxlbWVudCAqKXNl
bGYgZ2V0QXR0cmlidXRlOkAiYWN0aW9uIl07CisgICAgICAgICAgICAgICAgICAgIGlmIChbdmFs
dWUgbGVuZ3RoXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lIGFwcGVuZEZvcm1hdDpA
IiBhY3Rpb249XCIlQFwiIiwgdmFsdWVdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBbbmFtZSBhcHBlbmRTdHJpbmc6QCI+Il07CisgICAgICAgICAgICAgICAgcmV0dXJuIG5h
bWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCI8JUA+IiwgW1tzZWxmIG5vZGVOYW1lXSBsb3dlcmNhc2VTdHJpbmddXTsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERPTV9URVhUX05PREU6IHsKKyAgICAgICAgICAgIGlmIChb
c2VsZiBfaXNXaGl0ZXNwYWNlXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCIo
d2hpdGVzcGFjZSkiLCAid2hpdGVzcGFjZSB0ZXh0IG5vZGUgbmFtZSIpOworICAgICAgICAgICAg
TlNTdHJpbmcgKnZhbHVlID0gW1tzZWxmIG5vZGVWYWx1ZV0gX3dlYmtpdF9zdHJpbmdCeUNvbGxh
cHNpbmdXaGl0ZXNwYWNlQ2hhcmFjdGVyc107CisgICAgICAgICAgICBDRlN0cmluZ1RyaW1XaGl0
ZXNwYWNlKChDRk11dGFibGVTdHJpbmdSZWYpdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklORygiXCIlQFwiIiwgInRleHQgbm9kZSBu
YW1lIHdpdGggdGV4dCBpbmNsdWRlZCIpLCB2YWx1ZV07CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIFtbc2VsZiBub2RlTmFtZV0gbG93ZXJjYXNlU3RyaW5nXTsKK30KK0BlbmQKSW5kZXg6
IFdlYkluc3BlY3Rvci5zdWJwcm9qL1dlYkluc3BlY3RvclBhbmVsLm0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViSW5zcGVjdG9yLnN1YnByb2ovV2ViSW5zcGVjdG9yUGFuZWwubQkocmV2aXNpb24gMCkKKysr
IFdlYkluc3BlY3Rvci5zdWJwcm9qL1dlYkluc3BlY3RvclBhbmVsLm0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkluc3BlY3RvclBhbmVs
LmgiCisKKyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmll
d1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJEYXNoYm9hcmRSZWdpb24uaD4KKyNpbXBv
cnQgPFdlYktpdC9ET01Db3JlLmg+CisjaW1wb3J0IDxXZWJLaXQvRE9NSFRNTC5oPgorI2ltcG9y
dCA8V2ViS2l0L0RPTUNTUy5oPgorCitAaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yUGFuZWwK
Ky0gKEJPT0wpY2FuQmVjb21lS2V5V2luZG93Cit7CisgICAgcmV0dXJuIFlFUzsKK30KKworLSAo
Qk9PTCljYW5CZWNvbWVNYWluV2luZG93Cit7CisgICAgcmV0dXJuIFlFUzsKK30KKworLSAodm9p
ZCltb3ZlV2luZG93OihOU0V2ZW50ICopIGV2ZW50Cit7CisgICAgTlNQb2ludCBzdGFydExvY2F0
aW9uID0gW2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddOworICAgIE5TUG9pbnQgbGFzdExvY2F0aW9u
ID0gc3RhcnRMb2NhdGlvbjsKKyAgICBCT09MIG1vdXNlVXBPY2N1cnJlZCA9IE5POworCisgICAg
d2hpbGUgKCFtb3VzZVVwT2NjdXJyZWQpIHsKKyAgICAgICAgLy8gc2V0IG1vdXNlVXAgZmxhZyBo
ZXJlLCBidXQgcHJvY2VzcyBsb2NhdGlvbiBvZiBldmVudCBiZWZvcmUgZXhpdGluZyBmcm9tIGxv
b3AsIGxlYXZlIG1vdXNlVXAgaW4gcXVldWUKKyAgICAgICAgZXZlbnQgPSBbc2VsZiBuZXh0RXZl
bnRNYXRjaGluZ01hc2s6KE5TTGVmdE1vdXNlRHJhZ2dlZE1hc2sgfCBOU0xlZnRNb3VzZVVwTWFz
aykgdW50aWxEYXRlOltOU0RhdGUgZGlzdGFudEZ1dHVyZV0gaW5Nb2RlOk5TRXZlbnRUcmFja2lu
Z1J1bkxvb3BNb2RlIGRlcXVldWU6WUVTXTsKKworICAgICAgICBpZiAoW2V2ZW50IHR5cGVdID09
IE5TTGVmdE1vdXNlVXApCisgICAgICAgICAgICBtb3VzZVVwT2NjdXJyZWQgPSBZRVM7CisKKyAg
ICAgICAgTlNQb2ludCBuZXdMb2NhdGlvbiA9IFtldmVudCBsb2NhdGlvbkluV2luZG93XTsKKyAg
ICAgICAgaWYgKE5TRXF1YWxQb2ludHMobmV3TG9jYXRpb24sIGxhc3RMb2NhdGlvbikpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU1BvaW50IG9yaWdpbiA9IFtzZWxmIGZyYW1l
XS5vcmlnaW47CisgICAgICAgIFtzZWxmIHNldEZyYW1lT3JpZ2luOk5TTWFrZVBvaW50KG9yaWdp
bi54ICsgbmV3TG9jYXRpb24ueCAtIHN0YXJ0TG9jYXRpb24ueCwgb3JpZ2luLnkgKyBuZXdMb2Nh
dGlvbi55IC0gc3RhcnRMb2NhdGlvbi55KV07CisgICAgICAgIGxhc3RMb2NhdGlvbiA9IG5ld0xv
Y2F0aW9uOworICAgIH0KK30KKworLSAodm9pZClyZXNpemVXaW5kb3c6KE5TRXZlbnQgKikgZXZl
bnQKK3sKKyAgICBOU1JlY3Qgc3RhcnRGcmFtZSA9IFtzZWxmIGZyYW1lXTsKKyAgICBOU1BvaW50
IHN0YXJ0TG9jYXRpb24gPSBbc2VsZiBjb252ZXJ0QmFzZVRvU2NyZWVuOltldmVudCBsb2NhdGlv
bkluV2luZG93XV07CisgICAgTlNQb2ludCBsYXN0TG9jYXRpb24gPSBzdGFydExvY2F0aW9uOwor
ICAgIE5TU2l6ZSBtaW5TaXplID0gW3NlbGYgbWluU2l6ZV07CisgICAgTlNTaXplIG1heFNpemUg
PSBbc2VsZiBtYXhTaXplXTsKKyAgICBCT09MIG1vdXNlVXBPY2N1cnJlZCA9IE5POworCisgICAg
d2hpbGUgKCFtb3VzZVVwT2NjdXJyZWQpIHsKKyAgICAgICAgLy8gc2V0IG1vdXNlVXAgZmxhZyBo
ZXJlLCBidXQgcHJvY2VzcyBsb2NhdGlvbiBvZiBldmVudCBiZWZvcmUgZXhpdGluZyBmcm9tIGxv
b3AsIGxlYXZlIG1vdXNlVXAgaW4gcXVldWUKKyAgICAgICAgZXZlbnQgPSBbc2VsZiBuZXh0RXZl
bnRNYXRjaGluZ01hc2s6KE5TTGVmdE1vdXNlRHJhZ2dlZE1hc2sgfCBOU0xlZnRNb3VzZVVwTWFz
aykgdW50aWxEYXRlOltOU0RhdGUgZGlzdGFudEZ1dHVyZV0gaW5Nb2RlOk5TRXZlbnRUcmFja2lu
Z1J1bkxvb3BNb2RlIGRlcXVldWU6WUVTXTsKKworICAgICAgICBpZiAoW2V2ZW50IHR5cGVdID09
IE5TTGVmdE1vdXNlVXApCisgICAgICAgICAgICBtb3VzZVVwT2NjdXJyZWQgPSBZRVM7CisKKyAg
ICAgICAgTlNQb2ludCBuZXdMb2NhdGlvbiA9IFtzZWxmIGNvbnZlcnRCYXNlVG9TY3JlZW46W2V2
ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKKyAgICAgICAgaWYgKE5TRXF1YWxQb2ludHMobmV3TG9j
YXRpb24sIGxhc3RMb2NhdGlvbikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBO
U1JlY3QgcHJvcG9zZWRSZWN0ID0gc3RhcnRGcmFtZTsKKyAgICAgICAgcHJvcG9zZWRSZWN0LnNp
emUud2lkdGggKz0gbmV3TG9jYXRpb24ueCAtIHN0YXJ0TG9jYXRpb24ueDs7CisgICAgICAgIHBy
b3Bvc2VkUmVjdC5zaXplLmhlaWdodCAtPSBuZXdMb2NhdGlvbi55IC0gc3RhcnRMb2NhdGlvbi55
OworICAgICAgICBwcm9wb3NlZFJlY3Qub3JpZ2luLnkgKz0gbmV3TG9jYXRpb24ueSAtIHN0YXJ0
TG9jYXRpb24ueTsKKworICAgICAgICBpZiAocHJvcG9zZWRSZWN0LnNpemUud2lkdGggPCBtaW5T
aXplLndpZHRoKSB7CisgICAgICAgICAgICBwcm9wb3NlZFJlY3Quc2l6ZS53aWR0aCA9IG1pblNp
emUud2lkdGg7CisgICAgICAgIH0gZWxzZSBpZiAocHJvcG9zZWRSZWN0LnNpemUud2lkdGggPiBt
YXhTaXplLndpZHRoKSB7CisgICAgICAgICAgICBwcm9wb3NlZFJlY3Quc2l6ZS53aWR0aCA9IG1h
eFNpemUud2lkdGg7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJvcG9zZWRSZWN0LnNpemUu
aGVpZ2h0IDwgbWluU2l6ZS5oZWlnaHQpIHsKKyAgICAgICAgICAgIHByb3Bvc2VkUmVjdC5vcmln
aW4ueSAtPSBtaW5TaXplLmhlaWdodCAtIHByb3Bvc2VkUmVjdC5zaXplLmhlaWdodDsKKyAgICAg
ICAgICAgIHByb3Bvc2VkUmVjdC5zaXplLmhlaWdodCA9IG1pblNpemUuaGVpZ2h0OworICAgICAg
ICB9IGVsc2UgaWYgKHByb3Bvc2VkUmVjdC5zaXplLmhlaWdodCA+IG1heFNpemUuaGVpZ2h0KSB7
CisgICAgICAgICAgICBwcm9wb3NlZFJlY3Qub3JpZ2luLnkgLT0gbWF4U2l6ZS5oZWlnaHQgLSBw
cm9wb3NlZFJlY3Quc2l6ZS5oZWlnaHQ7CisgICAgICAgICAgICBwcm9wb3NlZFJlY3Quc2l6ZS5o
ZWlnaHQgPSBtYXhTaXplLmhlaWdodDsKKyAgICAgICAgfQorCisgICAgICAgIFtzZWxmIHNldEZy
YW1lOnByb3Bvc2VkUmVjdCBkaXNwbGF5OllFU107CisgICAgICAgIGxhc3RMb2NhdGlvbiA9IG5l
d0xvY2F0aW9uOworICAgIH0KK30KKworLSAodm9pZClzZW5kRXZlbnQ6KE5TRXZlbnQgKikgZXZl
bnQKK3sKKyAgICBpZiAoX21vdXNlSW5SZWdpb24gJiYgW2V2ZW50IHR5cGVdID09IE5TTGVmdE1v
dXNlVXApCisgICAgICAgIF9tb3VzZUluUmVnaW9uID0gTk87CisKKyAgICBpZiAoKFtldmVudCB0
eXBlXSA9PSBOU0xlZnRNb3VzZURvd24gfHwgW2V2ZW50IHR5cGVdID09IE5TTGVmdE1vdXNlRHJh
Z2dlZCkgJiYgIV9tb3VzZUluUmVnaW9uKSB7CisgICAgICAgIE5TUG9pbnQgcG9pbnRJblZpZXcg
PSBbW1tbKFdlYlZpZXcgKilbc2VsZiBjb250ZW50Vmlld10gbWFpbkZyYW1lXSBmcmFtZVZpZXdd
IGRvY3VtZW50Vmlld10gY29udmVydFBvaW50OltldmVudCBsb2NhdGlvbkluV2luZG93XSBmcm9t
VmlldzpuaWxdOworICAgICAgICBOU0RpY3Rpb25hcnkgKnJlZ2lvbnMgPSBbKFdlYlZpZXcgKilb
c2VsZiBjb250ZW50Vmlld10gX2Rhc2hib2FyZFJlZ2lvbnNdOworCisgICAgICAgIFdlYkRhc2hi
b2FyZFJlZ2lvbiAqcmVnaW9uID0gW1tyZWdpb25zIG9iamVjdEZvcktleTpAInJlc2l6ZVRvcCJd
IGxhc3RPYmplY3RdOworICAgICAgICByZWdpb24gPSBbW3JlZ2lvbnMgb2JqZWN0Rm9yS2V5OkAi
cmVzaXplIl0gbGFzdE9iamVjdF07CisgICAgICAgIGlmIChyZWdpb24pIHsKKyAgICAgICAgICAg
IGlmIChOU1BvaW50SW5SZWN0KHBvaW50SW5WaWV3LCBbcmVnaW9uIGRhc2hib2FyZFJlZ2lvbkNs
aXBdKSkgeworICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBpbiBhIHJlc2l6ZSBjb250cm9sIHJl
Z2lvbiwgcmVzaXplIHRoZSB3aW5kb3cgbm93IGFuZCBlYXQgdGhlIGV2ZW50CisgICAgICAgICAg
ICAgICAgW3NlbGYgcmVzaXplV2luZG93OmV2ZW50XTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBOU0FycmF5ICpjb250cm9sUmVn
aW9ucyA9IFtyZWdpb25zIG9iamVjdEZvcktleTpAImNvbnRyb2wiXTsKKyAgICAgICAgTlNFbnVt
ZXJhdG9yICplbnVtZXJhdG9yID0gW2NvbnRyb2xSZWdpb25zIG9iamVjdEVudW1lcmF0b3JdOwor
ICAgICAgICB3aGlsZSAoKHJlZ2lvbiA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSkgeworICAg
ICAgICAgICAgaWYgKE5TUG9pbnRJblJlY3QocG9pbnRJblZpZXcsIFtyZWdpb24gZGFzaGJvYXJk
UmVnaW9uQ2xpcF0pKSB7CisgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGluIGEgY29udHJvbCBy
ZWdpb24sIGxldHMgcGFzcyB0aGUgZXZlbnQgZG93bgorICAgICAgICAgICAgICAgIF9tb3VzZUlu
UmVnaW9uID0gWUVTOworICAgICAgICAgICAgICAgIFtzdXBlciBzZW5kRXZlbnQ6ZXZlbnRdOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIC8vIGlmIHdlIGFyZSBkcmFnZ2luZyBhbmQgdGhlIG1vdXNlIGlzbid0IGluIGEgY29udHJv
bCByZWdpb24gbW92ZSB0aGUgd2luZG93CisgICAgICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNM
ZWZ0TW91c2VEcmFnZ2VkKSB7CisgICAgICAgICAgICBbc2VsZiBtb3ZlV2luZG93OmV2ZW50XTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFtzdXBlciBzZW5k
RXZlbnQ6ZXZlbnRdOworfQorQGVuZApJbmRleDogV2ViSW5zcGVjdG9yLnN1YnByb2ovV2ViTm9k
ZUhpZ2hsaWdodC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkluc3BlY3Rvci5zdWJwcm9qL1dlYk5vZGVI
aWdobGlnaHQuaAkocmV2aXNpb24gMCkKKysrIFdlYkluc3BlY3Rvci5zdWJwcm9qL1dlYk5vZGVI
aWdobGlnaHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitA
Y2xhc3MgV2ViTm9kZUhpZ2hsaWdodFZpZXc7CisKK0BpbnRlcmZhY2UgV2ViTm9kZUhpZ2hsaWdo
dCA6IE5TT2JqZWN0Cit7CisgICAgTlNXaW5kb3cgKl93ZWJOb2RlSGlnaGxpZ2h0V2luZG93Owor
ICAgIFdlYk5vZGVIaWdobGlnaHRWaWV3ICpfd2ViTm9kZUhpZ2hsaWdodFZpZXc7CisgICAgTlNU
aW1lciAqX3RpbWVyOworICAgIENGQWJzb2x1dGVUaW1lIF9zdGFydFRpbWU7CisgICAgQ0ZUaW1l
SW50ZXJ2YWwgX2R1cmF0aW9uOworfQorLSAoaWQpaW5pdFdpdGhCb3VuZHM6KE5TUmVjdCkgYm91
bmRzIGFuZFJlY3RzOihOU0FycmF5ICopIHJlY3RzIGZvclZpZXc6KE5TVmlldyAqKSB2aWV3Owor
LSAoZG91YmxlKWZyYWN0aW9uQ29tcGxldGU7CistICh2b2lkKWV4cGlyZTsKK0BlbmQKSW5kZXg6
IFdlYkluc3BlY3Rvci5zdWJwcm9qL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViSW5zcGVjdG9yLnN1YnByb2ovV2ViTm9kZUhpZ2hsaWdodFZpZXcubQkocmV2aXNpb24g
MCkKKysrIFdlYkluc3BlY3Rvci5zdWJwcm9qL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm0JKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYk5vZGVI
aWdobGlnaHQuaCIKKyNpbXBvcnQgIldlYk5vZGVIaWdobGlnaHRWaWV3LmgiCisjaW1wb3J0IDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKworQGltcGxlbWVudGF0aW9uIFdlYk5vZGVIaWdobGln
aHRWaWV3CistIChOU0JlemllclBhdGggKilyb3VuZGVkUmVjdDooTlNSZWN0KSByZWN0IHdpdGhS
YWRpdXM6KGZsb2F0KSByYWRpdXMKK3sKKyAgICBOU0JlemllclBhdGggKnBhdGggPSBbW05TQmV6
aWVyUGF0aCBhbGxvY10gaW5pdF07CisKKyAgICBOU1JlY3QgaXJlY3QgPSBOU0luc2V0UmVjdCgg
cmVjdCwgcmFkaXVzLCByYWRpdXMgKTsKKyAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aEFy
Y1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNaW5YKGlyZWN0KSwgTlNNaW5ZKGlyZWN0KSkgcmFk
aXVzOnJhZGl1cyBzdGFydEFuZ2xlOjE4MC4gZW5kQW5nbGU6MjcwLl07CisgICAgW3BhdGggYXBw
ZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5TTWF4WChpcmVjdCks
IE5TTWluWShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZToyNzAuIGVuZEFuZ2xlOjM2
MC5dOworICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpOU01ha2VQ
b2ludChOU01heFgoaXJlY3QpLCBOU01heFkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0YXJ0QW5n
bGU6MC4gZW5kQW5nbGU6OTAuXTsKKyAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aEFyY1dp
dGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNaW5YKGlyZWN0KSwgTlNNYXhZKGlyZWN0KSkgcmFkaXVz
OnJhZGl1cyBzdGFydEFuZ2xlOjkwLiBlbmRBbmdsZToxODAuXTsKKyAgICBbcGF0aCBjbG9zZVBh
dGhdOworCisgICAgcmV0dXJuIFtwYXRoIGF1dG9yZWxlYXNlXTsKK30KKworLSAoaWQpaW5pdFdp
dGhIaWdobGlnaHQ6KFdlYk5vZGVIaWdobGlnaHQgKiloaWdobGlnaHQgYW5kUmVjdHM6KE5TQXJy
YXkgKikgcmVjdHMgZm9yVmlldzooTlNWaWV3ICopIHZpZXcKK3sKKyAgICBpZiAoIVtzZWxmIGlu
aXRdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2hpZ2hsaWdodCA9IGhpZ2hsaWdodDsg
Ly8gZG9uJ3QgcmV0YWluLCB3b3VsZCBjYXVzZSBhIGNpcmN1bGFyIHJldGFpbgorCisgICAgTlNS
ZWN0IHZpc2libGVSZWN0ID0gW3ZpZXcgdmlzaWJsZVJlY3RdOworCisgICAgTlNSZWN0IHJlY3Qg
PSBOU1plcm9SZWN0OworICAgIE5TQmV6aWVyUGF0aCAqcGF0aCA9IG5pbDsKKyAgICBOU0Jlemll
clBhdGggKnN0cmFpZ2h0UGF0aCA9IG5pbDsKKworICAgIGlmKFtyZWN0cyBjb3VudF0gPT0gMSkg
eworICAgICAgICBOU1ZhbHVlICp2YWx1ZSA9IChOU1ZhbHVlICopW3JlY3RzIG9iamVjdEF0SW5k
ZXg6MF07CisgICAgICAgIHJlY3QgPSBOU0luc2V0UmVjdChbdmFsdWUgcmVjdFZhbHVlXSwgLTEu
MCwgLTEuMCk7CisgICAgICAgIHJlY3QgPSBOU0ludGVyc2VjdGlvblJlY3QocmVjdCwgdmlzaWJs
ZVJlY3QpOworICAgICAgICBpZiAoIU5TSXNFbXB0eVJlY3QocmVjdCkpCisgICAgICAgICAgICBw
YXRoID0gW1tzZWxmIHJvdW5kZWRSZWN0OnJlY3Qgd2l0aFJhZGl1czozLjBdIHJldGFpbl07CisK
KyAgICAgICAgLy8gc2hpZnQgZXZlcnl0aGluZyB0byB0aGUgY29ybmVyCisgICAgICAgIE5TQWZm
aW5lVHJhbnNmb3JtICp0cmFuc2Zvcm0gPSBbW05TQWZmaW5lVHJhbnNmb3JtIGFsbG9jXSBpbml0
XTsKKyAgICAgICAgW3RyYW5zZm9ybSB0cmFuc2xhdGVYQnk6KE5TTWluWChyZWN0KSAqIC0xLjAp
ICsgMi41IHlCeTooTlNNaW5ZKHJlY3QpICogLTEuMCkgKyAyLjVdOworICAgICAgICBbcGF0aCB0
cmFuc2Zvcm1Vc2luZ0FmZmluZVRyYW5zZm9ybTp0cmFuc2Zvcm1dOworICAgICAgICBbc3RyYWln
aHRQYXRoIHRyYW5zZm9ybVVzaW5nQWZmaW5lVHJhbnNmb3JtOnRyYW5zZm9ybV07CisgICAgICAg
IFt0cmFuc2Zvcm0gcmVsZWFzZV07CisgICAgfSBlbHNlIGlmIChbcmVjdHMgY291bnRdID4gMSkg
eworICAgICAgICBwYXRoID0gW1tOU0JlemllclBhdGggYWxsb2NdIGluaXRdOworICAgICAgICBz
dHJhaWdodFBhdGggPSBbcGF0aCBjb3B5XTsKKworICAgICAgICAvLyByb3VuZGVkUmVjdDogcmV0
dXJucyBhbiBhdXRvcmVsZWFzZWQgcGF0aCwgc28gcmVsZWFzZSB0aGVtIHNvb24gd2l0aCBhIHBv
b2wKKyAgICAgICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29s
IGFsbG9jXSBpbml0XTsKKworICAgICAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBbcmVj
dHMgb2JqZWN0RW51bWVyYXRvcl07CisgICAgICAgIE5TVmFsdWUgKnZhbHVlID0gbmlsOworICAg
ICAgICB3aGlsZSAoKHZhbHVlID0gW2VudW1lcmF0b3IgbmV4dE9iamVjdF0pKSB7CisgICAgICAg
ICAgICByZWN0ID0gTlNJbnRlcnNlY3Rpb25SZWN0KFt2YWx1ZSByZWN0VmFsdWVdLCB2aXNpYmxl
UmVjdCk7CisgICAgICAgICAgICBpZiAoIU5TSXNFbXB0eVJlY3QocmVjdCkpIHsKKyAgICAgICAg
ICAgICAgICBbc3RyYWlnaHRQYXRoIGFwcGVuZEJlemllclBhdGhXaXRoUmVjdDpyZWN0XTsKKyAg
ICAgICAgICAgICAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoOltzZWxmIHJvdW5kZWRSZWN0OnJl
Y3Qgd2l0aFJhZGl1czozLjBdXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IFtwb29sIGRyYWluXTsKKyAgICAgICAgW3Bvb2wgcmVsZWFzZV07CisKKyAgICAgICAgcmVjdCA9
IFtwYXRoIGJvdW5kc107CisKKyAgICAgICAgW3N0cmFpZ2h0UGF0aCBzZXRXaW5kaW5nUnVsZTpO
U05vblplcm9XaW5kaW5nUnVsZV07CisgICAgICAgIFtzdHJhaWdodFBhdGggc2V0TGluZUpvaW5T
dHlsZTpOU1JvdW5kTGluZUpvaW5TdHlsZV07CisgICAgICAgIFtzdHJhaWdodFBhdGggc2V0TGlu
ZUNhcFN0eWxlOk5TUm91bmRMaW5lQ2FwU3R5bGVdOworCisgICAgICAgIC8vIG11bHRpcGxlIHJl
Y3RzIHdlIGdldCBmcm9tIFdlYkNvcmUgbmVlZCBmbGlwcGVkIHRvIHNob3cgdXAgY29ycmVjdGx5
CisgICAgICAgIE5TQWZmaW5lVHJhbnNmb3JtICp0cmFuc2Zvcm0gPSBbW05TQWZmaW5lVHJhbnNm
b3JtIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW3RyYW5zZm9ybSBzY2FsZVhCeToxLjAgeUJ5Oi0x
LjBdOworICAgICAgICBbcGF0aCB0cmFuc2Zvcm1Vc2luZ0FmZmluZVRyYW5zZm9ybTp0cmFuc2Zv
cm1dOworICAgICAgICBbc3RyYWlnaHRQYXRoIHRyYW5zZm9ybVVzaW5nQWZmaW5lVHJhbnNmb3Jt
OnRyYW5zZm9ybV07CisgICAgICAgIFt0cmFuc2Zvcm0gcmVsZWFzZV07CisKKyAgICAgICAgLy8g
c2hpZnQgZXZlcnl0aGluZyB0byB0aGUgY29ybmVyCisgICAgICAgIHRyYW5zZm9ybSA9IFtbTlNB
ZmZpbmVUcmFuc2Zvcm0gYWxsb2NdIGluaXRdOworICAgICAgICBbdHJhbnNmb3JtIHRyYW5zbGF0
ZVhCeTooTlNNaW5YKHJlY3QpICogLTEuMCkgKyAyLjUgeUJ5Ok5TTWF4WShyZWN0KSArIDIuNV07
CisgICAgICAgIFtwYXRoIHRyYW5zZm9ybVVzaW5nQWZmaW5lVHJhbnNmb3JtOnRyYW5zZm9ybV07
CisgICAgICAgIFtzdHJhaWdodFBhdGggdHJhbnNmb3JtVXNpbmdBZmZpbmVUcmFuc2Zvcm06dHJh
bnNmb3JtXTsKKyAgICAgICAgW3RyYW5zZm9ybSByZWxlYXNlXTsKKyAgICB9CisKKyAgICBpZiAo
IXBhdGggfHwgW3BhdGggaXNFbXB0eV0pIHsKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgW3BhdGggc2V0V2luZGluZ1J1bGU6TlNOb25a
ZXJvV2luZGluZ1J1bGVdOworICAgIFtwYXRoIHNldExpbmVKb2luU3R5bGU6TlNSb3VuZExpbmVK
b2luU3R5bGVdOworICAgIFtwYXRoIHNldExpbmVDYXBTdHlsZTpOU1JvdW5kTGluZUNhcFN0eWxl
XTsKKworICAgIC8vIG1ha2UgdGhlIGRyYXdpbmcgYXJlYSBsYXJnZXIgZm9yIHRoZSBmb2N1cyBy
aW5nIGJsdXIKKyAgICByZWN0ID0gW3BhdGggYm91bmRzXTsKKyAgICByZWN0LnNpemUud2lkdGgg
Kz0gNS4wOworICAgIHJlY3Quc2l6ZS5oZWlnaHQgKz0gNS4wOworICAgIFtzZWxmIHNldEZyYW1l
U2l6ZTpyZWN0LnNpemVdOworCisgICAgLy8gZHJhdyBpbnRvIGFuIGltYWdlCisgICAgX2hpZ2hs
aWdodFJpbmdJbWFnZSA9IFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhTaXplOnJlY3Quc2l6ZV07
CisgICAgW19oaWdobGlnaHRSaW5nSW1hZ2UgbG9ja0ZvY3VzXTsKKyAgICBbTlNHcmFwaGljc0Nv
bnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOworCisgICAgaWYgKHN0cmFpZ2h0UGF0aCkgeworICAg
ICAgICBbW05TQ29sb3IgcmVkQ29sb3JdIHNldF07CisgICAgICAgIFtwYXRoIHNldExpbmVXaWR0
aDo0LjBdOworICAgICAgICBbcGF0aCBzdHJva2VdOworCisgICAgICAgIC8vIGNsZWFyIHRoZSBj
ZW50ZXIgdG8gZWxpbWluYXRlIHRoaWNrIGlubmVyIHN0cm9rZXMgZm9yIG92ZXJsYXBwaW5nIHJl
Y3RzCisgICAgICAgIFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIHNldENvbXBv
c2l0aW5nT3BlcmF0aW9uOk5TQ29tcG9zaXRlQ2xlYXJdOworICAgICAgICBbcGF0aCBmaWxsXTsK
KworICAgICAgICAvLyBzdHJva2UgdGhlIHN0cmFpZ2h0IGxpbmUgcGF0aCB3aXRoIGEgbGlnaHQg
Y29sb3IgdG8gc2hvdyBhbnkgaW5uZXIgcmVjdHMKKyAgICAgICAgW1tOU0dyYXBoaWNzQ29udGV4
dCBjdXJyZW50Q29udGV4dF0gc2V0Q29tcG9zaXRpbmdPcGVyYXRpb246TlNDb21wb3NpdGVEZXN0
aW5hdGlvbk92ZXJdOworICAgICAgICBbW1tOU0NvbG9yIHJlZENvbG9yXSBjb2xvcldpdGhBbHBo
YUNvbXBvbmVudDowLjZdIHNldF07CisgICAgICAgIFtzdHJhaWdodFBhdGggc2V0TGluZVdpZHRo
OjEuMF07CisgICAgICAgIFtzdHJhaWdodFBhdGggc3Ryb2tlXTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBbW05TQ29sb3IgcmVkQ29sb3JdIHNldF07CisgICAgICAgIFtwYXRoIHNldExpbmVXaWR0
aDoyLjBdOworICAgICAgICBbcGF0aCBzdHJva2VdOworICAgIH0KKworICAgIFtOU0dyYXBoaWNz
Q29udGV4dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07CisgICAgW19oaWdobGlnaHRSaW5nSW1hZ2Ug
dW5sb2NrRm9jdXNdOworCisgICAgW3BhdGggcmVsZWFzZV07CisgICAgW3N0cmFpZ2h0UGF0aCBy
ZWxlYXNlXTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAg
ICBbX2hpZ2hsaWdodFJpbmdJbWFnZSByZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKy0gKEJPT0wpaXNPcGFxdWUKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKHZvaWQpZHJh
d1JlY3Q6KE5TUmVjdClyZWN0Cit7CisgICAgZG91YmxlIGFscGhhID0gMS4wIC0gW19oaWdobGln
aHQgZnJhY3Rpb25Db21wbGV0ZV07CisgICAgaWYgKGFscGhhID4gMS4wKQorICAgICAgICBhbHBo
YSA9IDEuMDsKKyAgICBlbHNlIGlmIChhbHBoYSA8IDAuMCkKKyAgICAgICAgYWxwaGEgPSAwLjA7
CisKKyAgICBbX2hpZ2hsaWdodFJpbmdJbWFnZSBkcmF3SW5SZWN0OnJlY3QgZnJvbVJlY3Q6cmVj
dCBvcGVyYXRpb246TlNDb21wb3NpdGVDb3B5IGZyYWN0aW9uOmFscGhhXTsKK30KK0BlbmQKSW5k
ZXg6IFdlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9pbnNwZWN0b3IuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL2luc3BlY3Rvci5qcwko
cmV2aXNpb24gMCkKKysrIFdlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9pbnNwZWN0
b3IuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDA5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0
aW9uIGxvYWRlZCgpCit7CisgICAgdHJlZVNjcm9sbGJhciA9IG5ldyBBcHBsZVZlcnRpY2FsU2Ny
b2xsYmFyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmVlU2Nyb2xsYmFyIikpOworCisgICAg
dHJlZVNjcm9sbGJhci5zZXRUcmFja1N0YXJ0KCJJbWFnZXMvc2Nyb2xsVHJhY2tUb3AucG5nIiwg
MTgpOworICAgIHRyZWVTY3JvbGxiYXIuc2V0VHJhY2tNaWRkbGUoIkltYWdlcy9zY3JvbGxUcmFj
a01pZGRsZS5wbmciKTsKKyAgICB0cmVlU2Nyb2xsYmFyLnNldFRyYWNrRW5kKCJJbWFnZXMvc2Ny
b2xsVHJhY2tCb3R0b20ucG5nIiwgMTgpOworICAgIHRyZWVTY3JvbGxiYXIuc2V0VGh1bWJTdGFy
dCgiSW1hZ2VzL3Njcm9sbFRodW1iVG9wLnBuZyIsIDkpOworICAgIHRyZWVTY3JvbGxiYXIuc2V0
VGh1bWJNaWRkbGUoIkltYWdlcy9zY3JvbGxUaHVtYk1pZGRsZS5wbmciKTsKKyAgICB0cmVlU2Ny
b2xsYmFyLnNldFRodW1iRW5kKCJJbWFnZXMvc2Nyb2xsVGh1bWJCb3R0b20ucG5nIiwgOSk7CisK
KyAgICBub2RlQ29udGVudHNTY3JvbGxiYXIgPSBuZXcgQXBwbGVWZXJ0aWNhbFNjcm9sbGJhcihk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9kZUNvbnRlbnRzU2Nyb2xsYmFyIikpOworICAgIG5v
ZGVDb250ZW50c1Njcm9sbEFyZWEgPSBuZXcgQXBwbGVTY3JvbGxBcmVhKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJub2RlQ29udGVudHNTY3JvbGx2aWV3IiksIG5vZGVDb250ZW50c1Njcm9sbGJh
cik7CisKKyAgICBub2RlQ29udGVudHNTY3JvbGxiYXIuc2V0VHJhY2tTdGFydCgiSW1hZ2VzL3Nj
cm9sbFRyYWNrVG9wLnBuZyIsIDE4KTsKKyAgICBub2RlQ29udGVudHNTY3JvbGxiYXIuc2V0VHJh
Y2tNaWRkbGUoIkltYWdlcy9zY3JvbGxUcmFja01pZGRsZS5wbmciKTsKKyAgICBub2RlQ29udGVu
dHNTY3JvbGxiYXIuc2V0VHJhY2tFbmQoIkltYWdlcy9zY3JvbGxUcmFja0JvdHRvbS5wbmciLCAx
OCk7CisgICAgbm9kZUNvbnRlbnRzU2Nyb2xsYmFyLnNldFRodW1iU3RhcnQoIkltYWdlcy9zY3Jv
bGxUaHVtYlRvcC5wbmciLCA5KTsKKyAgICBub2RlQ29udGVudHNTY3JvbGxiYXIuc2V0VGh1bWJN
aWRkbGUoIkltYWdlcy9zY3JvbGxUaHVtYk1pZGRsZS5wbmciKTsKKyAgICBub2RlQ29udGVudHNT
Y3JvbGxiYXIuc2V0VGh1bWJFbmQoIkltYWdlcy9zY3JvbGxUaHVtYkJvdHRvbS5wbmciLCA5KTsK
KworICAgIHN0eWxlUnVsZXNTY3JvbGxiYXIgPSBuZXcgQXBwbGVWZXJ0aWNhbFNjcm9sbGJhcihk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3R5bGVSdWxlc1Njcm9sbGJhciIpKTsKKyAgICBzdHls
ZVJ1bGVzU2Nyb2xsQXJlYSA9IG5ldyBBcHBsZVNjcm9sbEFyZWEoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInN0eWxlUnVsZXNTY3JvbGx2aWV3IiksIHN0eWxlUnVsZXNTY3JvbGxiYXIpOworCisg
ICAgc3R5bGVSdWxlc1Njcm9sbGJhci5zZXRUcmFja1N0YXJ0KCJJbWFnZXMvc2Nyb2xsVHJhY2tU
b3AucG5nIiwgMTgpOworICAgIHN0eWxlUnVsZXNTY3JvbGxiYXIuc2V0VHJhY2tNaWRkbGUoIklt
YWdlcy9zY3JvbGxUcmFja01pZGRsZS5wbmciKTsKKyAgICBzdHlsZVJ1bGVzU2Nyb2xsYmFyLnNl
dFRyYWNrRW5kKCJJbWFnZXMvc2Nyb2xsVHJhY2tCb3R0b20ucG5nIiwgMTgpOworICAgIHN0eWxl
UnVsZXNTY3JvbGxiYXIuc2V0VGh1bWJTdGFydCgiSW1hZ2VzL3Njcm9sbFRodW1iVG9wLnBuZyIs
IDkpOworICAgIHN0eWxlUnVsZXNTY3JvbGxiYXIuc2V0VGh1bWJNaWRkbGUoIkltYWdlcy9zY3Jv
bGxUaHVtYk1pZGRsZS5wbmciKTsKKyAgICBzdHlsZVJ1bGVzU2Nyb2xsYmFyLnNldFRodW1iRW5k
KCJJbWFnZXMvc2Nyb2xsVGh1bWJCb3R0b20ucG5nIiwgOSk7CisKKyAgICBzdHlsZVByb3BlcnRp
ZXNTY3JvbGxiYXIgPSBuZXcgQXBwbGVWZXJ0aWNhbFNjcm9sbGJhcihkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3R5bGVQcm9wZXJ0aWVzU2Nyb2xsYmFyIikpOworICAgIHN0eWxlUHJvcGVydGll
c1Njcm9sbEFyZWEgPSBuZXcgQXBwbGVTY3JvbGxBcmVhKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzdHlsZVByb3BlcnRpZXNTY3JvbGx2aWV3IiksIHN0eWxlUHJvcGVydGllc1Njcm9sbGJhcik7
CisKKyAgICBzdHlsZVByb3BlcnRpZXNTY3JvbGxiYXIuc2V0VHJhY2tTdGFydCgiSW1hZ2VzL3Nj
cm9sbFRyYWNrVG9wLnBuZyIsIDE4KTsKKyAgICBzdHlsZVByb3BlcnRpZXNTY3JvbGxiYXIuc2V0
VHJhY2tNaWRkbGUoIkltYWdlcy9zY3JvbGxUcmFja01pZGRsZS5wbmciKTsKKyAgICBzdHlsZVBy
b3BlcnRpZXNTY3JvbGxiYXIuc2V0VHJhY2tFbmQoIkltYWdlcy9zY3JvbGxUcmFja0JvdHRvbS5w
bmciLCAxOCk7CisgICAgc3R5bGVQcm9wZXJ0aWVzU2Nyb2xsYmFyLnNldFRodW1iU3RhcnQoIklt
YWdlcy9zY3JvbGxUaHVtYlRvcC5wbmciLCA5KTsKKyAgICBzdHlsZVByb3BlcnRpZXNTY3JvbGxi
YXIuc2V0VGh1bWJNaWRkbGUoIkltYWdlcy9zY3JvbGxUaHVtYk1pZGRsZS5wbmciKTsKKyAgICBz
dHlsZVByb3BlcnRpZXNTY3JvbGxiYXIuc2V0VGh1bWJFbmQoIkltYWdlcy9zY3JvbGxUaHVtYkJv
dHRvbS5wbmciLCA5KTsKKworICAgIHRyZWVTY3JvbGxiYXIuX2dldFZpZXdUb0NvbnRlbnRSYXRp
byA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY29udGVudEhlaWdodCA9IEluc3BlY3Rvci50
cmVlVmlld1Njcm9sbEhlaWdodCgpOworICAgICAgICB2YXIgaGVpZ2h0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRyZWVTY3JvbGxBcmVhIikub2Zmc2V0SGVpZ2h0OworICAgICAgICBpZiAo
Y29udGVudEhlaWdodCA+IGhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBoZWlnaHQgLyBjb250
ZW50SGVpZ2h0OworICAgICAgICByZXR1cm4gMS4wOworICAgIH0KKworICAgIHRyZWVTY3JvbGxi
YXIuX2NvbXB1dGVUcmFja09mZnNldCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5zcGVjdG9yLnRy
ZWVWaWV3T2Zmc2V0VG9wKCk7IH0KKyAgICB0cmVlU2Nyb2xsYmFyLl9nZXRDb250ZW50TGVuZ3Ro
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbnNwZWN0b3IudHJlZVZpZXdTY3JvbGxIZWlnaHQoKTsg
fQorICAgIHRyZWVTY3JvbGxiYXIuX2dldFZpZXdMZW5ndGggPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmVlU2Nyb2xsQXJlYSIpLm9mZnNldEhlaWdodDsg
fQorICAgIHRyZWVTY3JvbGxiYXIuX2NhblNjcm9sbCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1
ZTsgfQorCisgICAgdHJlZVNjcm9sbGJhci5zY3JvbGxUbyA9IGZ1bmN0aW9uKHBvcykgeworICAg
ICAgICBJbnNwZWN0b3IudHJlZVZpZXdTY3JvbGxUbyhwb3MpOworICAgICAgICB0aGlzLnZlcnRp
Y2FsSGFzU2Nyb2xsZWQoKTsKKyAgICB9CisKKyAgICB0cmVlU2Nyb2xsYmFyLnZlcnRpY2FsSGFz
U2Nyb2xsZWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG5ld190aHVtYl9wb3MgPSB0aGlz
Ll90aHVtYlBvc2l0aW9uRm9yQ29udGVudFBvc2l0aW9uKEluc3BlY3Rvci50cmVlVmlld09mZnNl
dFRvcCgpKTsKKyAgICAgICAgdGhpcy5fdGh1bWJTdGFydCA9IG5ld190aHVtYl9wb3M7CisgICAg
ICAgIHRoaXMuX3RodW1iLnN0eWxlLnRvcCA9IG5ld190aHVtYl9wb3MgKyAicHgiOworICAgIH0K
KworICAgIC8vIG11Y2ggYmV0dGVyIEFwcGxlU2Nyb2xsQXJlYSByZXZlYWwKKyAgICBBcHBsZVNj
cm9sbEFyZWEucHJvdG90eXBlLnJldmVhbCA9IGZ1bmN0aW9uKG5vZGUpIHsKKyAgICAgICAgdmFy
IG9mZnNldFkgPSAwOworICAgICAgICB2YXIgb2JqID0gbm9kZTsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgb2Zmc2V0WSArPSBvYmoub2Zmc2V0VG9wOworICAgICAgICAgICAgb2JqID0gb2Jq
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgfSB3aGlsZSAob2JqICYmIG9iaiAhPSB0aGlzLmNvbnRl
bnQpOworCisgICAgICAgIHZhciBvZmZzZXRYID0gMDsKKyAgICAgICAgb2JqID0gbm9kZTsKKyAg
ICAgICAgZG8geworICAgICAgICAgICAgb2Zmc2V0WCArPSBvYmoub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIG9iaiA9IG9iai5vZmZzZXRQYXJlbnQ7CisgICAgICAgIH0gd2hpbGUgKG9iaiAmJiBv
YmogIT0gdGhpcy5jb250ZW50KTsKKworICAgICAgICB2YXIgdG9wID0gdGhpcy5jb250ZW50LnNj
cm9sbFRvcDsKKyAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMudmlld0hlaWdodDsKKyAgICAgICAg
aWYgKCh0b3AgKyBoZWlnaHQpIDwgKG9mZnNldFkgKyBub2RlLmNsaWVudEhlaWdodCkpIAorICAg
ICAgICAgICAgdGhpcy52ZXJ0aWNhbFNjcm9sbFRvKG9mZnNldFkgLSBoZWlnaHQgKyBub2RlLmNs
aWVudEhlaWdodCk7CisgICAgICAgIGVsc2UgaWYgKHRvcCA+IG9mZnNldFkpCisgICAgICAgICAg
ICB0aGlzLnZlcnRpY2FsU2Nyb2xsVG8ob2Zmc2V0WSk7CisKKyAgICAgICAgdmFyIGxlZnQgPSB0
aGlzLmNvbnRlbnQuc2Nyb2xsTGVmdDsKKyAgICAgICAgdmFyIHdpZHRoID0gdGhpcy52aWV3V2lk
dGg7CisgICAgICAgIGlmICgobGVmdCArIHdpZHRoKSA8IChvZmZzZXRYICsgbm9kZS5jbGllbnRX
aWR0aCkpIAorICAgICAgICAgICAgdGhpcy5ob3Jpem9udGFsU2Nyb2xsVG8ob2Zmc2V0WCAtIHdp
ZHRoICsgbm9kZS5jbGllbnRXaWR0aCk7CisgICAgICAgIGVsc2UgaWYgKGxlZnQgPiBvZmZzZXRY
KQorICAgICAgICAgICAgdGhpcy5ob3Jpem9udGFsU2Nyb2xsVG8ob2Zmc2V0WCk7CisgICAgfTsK
KworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCByZWZyZXNoU2Nyb2xsYmFy
cywgZmFsc2UpOworfQorCitmdW5jdGlvbiByZWZyZXNoU2Nyb2xsYmFycygpIHsKKyAgICBub2Rl
Q29udGVudHNTY3JvbGxBcmVhLnJlZnJlc2goKTsKKyAgICBzdHlsZVJ1bGVzU2Nyb2xsQXJlYS5y
ZWZyZXNoKCk7CisgICAgc3R5bGVQcm9wZXJ0aWVzU2Nyb2xsQXJlYS5yZWZyZXNoKCk7Cit9CisK
K3ZhciB0YWJOYW1lcyA9IFsibm9kZSIsIm1ldHJpY3MiLCJzdHlsZSIsImphdmFzY3JpcHQiXTsK
K3ZhciBjdXJyZW50UGFuZSA9ICJub2RlIjsKK3ZhciBwYW5lVXBkYXRlU3RhdGUgPSBuZXcgQXJy
YXkoKTsKKworZnVuY3Rpb24gc3dpdGNoUGFuZShwYW5lKSB7CisgICAgY3VycmVudFBhbmUgPSBw
YW5lOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFiTmFtZXMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgaWYgKHBhbmUgPT0gdGFiTmFtZXNbaV0pIHsKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhYk5hbWVzW2ldICsgIlBhbmUiKS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgi
ZGlzcGxheSIpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFiTmFtZXNb
aV0gKyAiQnV0dG9uIikuY2xhc3NOYW1lID0gInNxdWFyZSBzZWxlY3RlZCI7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJOYW1lc1tpXSAr
ICJQYW5lIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhYk5hbWVzW2ldICsgIkJ1dHRvbiIpLmNsYXNzTmFtZSA9ICJzcXVhcmUi
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFwYW5lVXBkYXRlU3RhdGVbcGFuZV0pIHsK
KyAgICAgICAgZXZhbCgidXBkYXRlIiArIHBhbmUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBw
YW5lLnN1YnN0cigxKSArICJQYW5lKCkiKTsKKyAgICAgICAgcGFuZVVwZGF0ZVN0YXRlW3BhbmVd
ID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG5vZGVUeXBlTmFtZShub2RlKSB7CisgICAg
c3dpdGNoKG5vZGUubm9kZVR5cGUpIHsKKyAgICAgICAgY2FzZSAxOiByZXR1cm4gIkVsZW1lbnQi
OworICAgICAgICBjYXNlIDI6IHJldHVybiAiQXR0cmlidXRlIjsKKyAgICAgICAgY2FzZSAzOiBy
ZXR1cm4gIlRleHQiOworICAgICAgICBjYXNlIDQ6IHJldHVybiAiQ2hhcmFjdGVyIERhdGEiOwor
ICAgICAgICBjYXNlIDU6IHJldHVybiAiRW50aXR5IFJlZmVyZW5jZSI7CisgICAgICAgIGNhc2Ug
NjogcmV0dXJuICJFbnRpdHkiOworICAgICAgICBjYXNlIDc6IHJldHVybiAiUHJvY2Vzc2luZyBJ
bnN0cnVjdGlvbiI7CisgICAgICAgIGNhc2UgODogcmV0dXJuICJDb21tZW50IjsKKyAgICAgICAg
Y2FzZSA5OiByZXR1cm4gIkRvY3VtZW50IjsKKyAgICAgICAgY2FzZSAxMDogcmV0dXJuICJEb2N1
bWVudCBUeXBlIjsKKyAgICAgICAgY2FzZSAxMTogcmV0dXJuICJEb2N1bWVudCBGcmFnbWVudCI7
CisgICAgICAgIGNhc2UgMTI6IHJldHVybiAiTm90YXRpb24iOworICAgIH0KKyAgICByZXR1cm4g
Iih1bmtub3duKSI7Cit9CisKK2Z1bmN0aW9uIHVwZGF0ZVBhbmVzKCkgeworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGFiTmFtZXMubGVuZ3RoOyBpKyspCisgICAgICAgIHBhbmVVcGRhdGVTdGF0
ZVt0YWJOYW1lc1tpXV0gPSBmYWxzZTsKKyAgICBldmFsKCJ1cGRhdGUiICsgY3VycmVudFBhbmUu
Y2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjdXJyZW50UGFuZS5zdWJzdHIoMSkgKyAiUGFuZSgp
Iik7ICAgIAorICAgIHBhbmVVcGRhdGVTdGF0ZVtjdXJyZW50UGFuZV0gPSB0cnVlOworfQorCitm
dW5jdGlvbiB1cGRhdGVOb2RlUGFuZSgpIHsKKyAgICB2YXIgZm9jdXNlZE5vZGUgPSBJbnNwZWN0
b3IuZm9jdXNlZERPTU5vZGUoKTsKKworICAgIGlmIChmb2N1c2VkTm9kZS5ub2RlVHlwZSA9PSAz
KSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlTmFtZXNwYWNlUm93Iiku
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImVsZW1lbnRBdHRyaWJ1dGVzIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVDb250ZW50cyIpLnN0eWxlLmRpc3BsYXkgPSBudWxs
OworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlQ29udGVudHNTY3JvbGx2
aWV3IikudGV4dENvbnRlbnQgPSBmb2N1c2VkTm9kZS5ub2RlVmFsdWU7CisgICAgICAgIG5vZGVD
b250ZW50c1Njcm9sbEFyZWEucmVmcmVzaCgpOworICAgIH0gZWxzZSBpZiAoZm9jdXNlZE5vZGUu
bm9kZVR5cGUgPT0gMSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxlbWVu
dEF0dHJpYnV0ZXMiKS5zdHlsZS5kaXNwbGF5ID0gbnVsbDsKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIm5vZGVDb250ZW50cyIpLnN0eWxlLmRpc3BsYXkgPSBudWxsOworCisgICAg
ICAgIGlmIChmb2N1c2VkTm9kZS5uYW1lc3BhY2VVUkkubGVuZ3RoID4gMCkgeworICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVOYW1lc3BhY2UiKS50ZXh0Q29udGVudCA9
IGZvY3VzZWROb2RlLm5hbWVzcGFjZVVSSTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJub2RlTmFtZXNwYWNlUm93Iikuc3R5bGUuZGlzcGxheSA9IG51bGw7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9kZU5hbWVz
cGFjZVJvdyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICAgIH0KKworICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9kZUNvbnRlbnRzU2Nyb2xsdmlldyIpLmlubmVySFRN
TCA9ICI8c3BhbiBjbGFzcz1cImRpc2FibGVkXCI+TG9hZGluZy4uLjwvc3Bhbj4iOworICAgICAg
ICBub2RlQ29udGVudHNTY3JvbGxBcmVhLnJlZnJlc2goKTsKKworICAgICAgICBjbGVhclRpbWVv
dXQobm9kZVVwZGF0ZVRpbWVvdXQpOworICAgICAgICBub2RlVXBkYXRlVGltZW91dCA9IHNldFRp
bWVvdXQoImRlbGF5ZWROb2RlUGFuZVVwZGF0ZSgpIiwgMjUwKTsKKyAgICB9IGVsc2UgaWYgKGZv
Y3VzZWROb2RlLm5vZGVUeXBlID09IDkpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm5vZGVOYW1lc3BhY2VSb3ciKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxlbWVudEF0dHJpYnV0ZXMiKS5zdHlsZS5kaXNwbGF5
ID0gIm5vbmUiOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9kZUNvbnRlbnRz
Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICB9CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibm9kZVR5cGUiKS50ZXh0Q29udGVudCA9IG5vZGVUeXBlTmFtZShmb2N1c2VkTm9k
ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVOYW1lIikudGV4dENvbnRlbnQg
PSBmb2N1c2VkTm9kZS5ub2RlTmFtZTsKK30KKwordmFyIG5vZGVVcGRhdGVUaW1lb3V0ID0gbnVs
bDsKK2Z1bmN0aW9uIGRlbGF5ZWROb2RlUGFuZVVwZGF0ZSgpIHsKKyAgICB2YXIgZm9jdXNlZE5v
ZGUgPSBJbnNwZWN0b3IuZm9jdXNlZERPTU5vZGUoKTsKKyAgICB2YXIgc2VyaWFsaXplciA9IG5l
dyBYTUxTZXJpYWxpemVyKCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVDb250
ZW50c1Njcm9sbHZpZXciKS50ZXh0Q29udGVudCA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplVG9TdHJp
bmcoZm9jdXNlZE5vZGUpOworICAgIG5vZGVDb250ZW50c1Njcm9sbEFyZWEucmVmcmVzaCgpOwor
fQorCit2YXIgc3R5bGVSdWxlcyA9IG51bGw7Cit2YXIgc2VsZWN0ZWRTdHlsZVJ1bGVJbmRleCA9
IDA7Cit2YXIgc3R5bGVQcm9wZXJ0aWVzID0gbnVsbDsKK3ZhciBleHBhbmRlZFN0eWxlU2hvcnRo
YW5kcyA9IG5ldyBBcnJheSgpOworCitmdW5jdGlvbiB1cGRhdGVTdHlsZVBhbmUoKSB7CisgICAg
dmFyIGZvY3VzZWROb2RlID0gSW5zcGVjdG9yLmZvY3VzZWRET01Ob2RlKCk7CisgICAgdmFyIHJ1
bGVzQXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdHlsZVJ1bGVzU2Nyb2xsdmlldyIp
OworICAgIHZhciBwcm9wZXJ0aWVzQXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdHls
ZVByb3BlcnRpZXNUcmVlIik7CisKKyAgICBydWxlc0FyZWEuaW5uZXJIVE1MID0gIiI7CisgICAg
cHJvcGVydGllc0FyZWEuaW5uZXJIVE1MID0gIiI7CisKKyAgICB2YXIgcHJvcGVydHlDb3VudCA9
IG5ldyBBcnJheSgpOworCisgICAgc3R5bGVSdWxlcyA9IGZvY3VzZWROb2RlLm93bmVyRG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0TWF0Y2hlZENTU1J1bGVzKGZvY3VzZWROb2RlLCAiIik7CisgICAg
c3R5bGVQcm9wZXJ0aWVzID0gbmV3IEFycmF5KCk7CisKKyAgICBpZiAoc2VsZWN0ZWRTdHlsZVJ1
bGVJbmRleCA+PSBzdHlsZVJ1bGVzLmxlbmd0aCkKKyAgICAgICAgc2VsZWN0ZWRTdHlsZVJ1bGVJ
bmRleCA9IChzdHlsZVJ1bGVzLmxlbmd0aCAtIDEpOworCisgICAgZm9yICh2YXIgaSA9IChzdHls
ZVJ1bGVzLmxlbmd0aCAtIDEpOyBpID49IDA7IC0taSkgeworICAgICAgICBzdHlsZVByb3BlcnRp
ZXNbaV0gPSBuZXcgQXJyYXkoKTsKKworICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgICAgIHJvdy5jbGFzc05hbWUgPSAicm93IjsKKyAgICAgICAg
aWYgKGkgPT0gc2VsZWN0ZWRTdHlsZVJ1bGVJbmRleCkKKyAgICAgICAgICAgIHJvdy5jbGFzc05h
bWUgKz0gIiBmb2N1c2VkIjsKKworICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICBjZWxsLmNsYXNzTmFtZSA9ICJjZWxsIHNlbGVjdG9yIjsK
KyAgICAgICAgY2VsbC50aXRsZSA9IHN0eWxlUnVsZXNbaV0uc2VsZWN0b3JUZXh0OworICAgICAg
ICBjZWxsLnRleHRDb250ZW50ID0gY2VsbC50aXRsZTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxk
KGNlbGwpOworCisgICAgICAgIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAiY2VsbCBzdHlsZXNoZWV0IjsKKyAgICAgICAgY2Vs
bC50aXRsZSA9IHN0eWxlUnVsZXNbaV0ucGFyZW50U3R5bGVTaGVldC5ocmVmOworICAgICAgICBj
ZWxsLnRleHRDb250ZW50ID0gY2VsbC50aXRsZTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKGNl
bGwpOworCisgICAgICAgIHJvdy5zdHlsZVJ1bGVJbmRleCA9IGk7CisgICAgICAgIHJvdy5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHN0eWxlUnVsZVNlbGVjdCwgdHJ1ZSk7CisKKyAgICAgICAg
dmFyIHN0eWxlID0gc3R5bGVSdWxlc1tpXS5zdHlsZTsKKyAgICAgICAgdmFyIHN0eWxlUHJvcGVy
dHlMb29rdXAgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzdHls
ZS5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgdmFyIG9yaWdpbmFsUHJvcGVydHkgPSBudWxs
OworICAgICAgICAgICAgdmFyIHNob3J0aGFuZCA9IHN0eWxlLmdldFByb3BlcnR5U2hvcnRoYW5k
KHN0eWxlW2pdKTsKKyAgICAgICAgICAgIGlmIChzaG9ydGhhbmQgIT0gbnVsbCkKKyAgICAgICAg
ICAgICAgICBvcmlnaW5hbFByb3BlcnR5ID0gc3R5bGVQcm9wZXJ0eUxvb2t1cFtzaG9ydGhhbmRd
OworCisgICAgICAgICAgICBpZiAob3JpZ2luYWxQcm9wZXJ0eSAhPSBudWxsKSB7CisgICAgICAg
ICAgICAgICAgb3JpZ2luYWxQcm9wZXJ0eS5zdWJQcm9wZXJ0aWVzLnB1c2goc3R5bGVbal0pOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvcmlnaW5hbFByb3BlcnR5ID0g
bmV3IE9iamVjdCgpOworICAgICAgICAgICAgICAgIG9yaWdpbmFsUHJvcGVydHkuc3R5bGUgPSBz
dHlsZTsKKyAgICAgICAgICAgICAgICBvcmlnaW5hbFByb3BlcnR5LnN1YlByb3BlcnRpZXMgPSBu
ZXcgQXJyYXkoc3R5bGVbal0pOworICAgICAgICAgICAgICAgIG9yaWdpbmFsUHJvcGVydHkudW51
c2VkUHJvcGVydGllcyA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgICAgIGlmIChzaG9ydGhh
bmQgIT0gbnVsbCAmJiBwcm9wZXJ0eUNvdW50W3Nob3J0aGFuZF0gPiAwKQorICAgICAgICAgICAg
ICAgICAgICBvcmlnaW5hbFByb3BlcnR5LnVudXNlZFByb3BlcnRpZXNbc2hvcnRoYW5kXSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgaWYgKHNob3J0aGFuZCAhPSBudWxsKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eUNvdW50W3Nob3J0aGFuZF0gPT0gbnVsbCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5Q291bnRbc2hvcnRoYW5kXSA9IDE7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5Q291bnRbc2hv
cnRoYW5kXSsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvcmlnaW5hbFBy
b3BlcnR5Lm5hbWUgPSAoc2hvcnRoYW5kICE9IG51bGwgPyBzaG9ydGhhbmQgOiBzdHlsZVtqXSk7
CisgICAgICAgICAgICAgICAgc3R5bGVQcm9wZXJ0aWVzW2ldLnB1c2gob3JpZ2luYWxQcm9wZXJ0
eSk7CisgICAgICAgICAgICAgICAgaWYgKHNob3J0aGFuZCAhPSBudWxsKQorICAgICAgICAgICAg
ICAgICAgICBzdHlsZVByb3BlcnR5TG9va3VwW29yaWdpbmFsUHJvcGVydHkubmFtZV0gPSBvcmln
aW5hbFByb3BlcnR5OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocHJvcGVydHlD
b3VudFtzdHlsZVtqXV0gPiAwKQorICAgICAgICAgICAgICAgIG9yaWdpbmFsUHJvcGVydHkudW51
c2VkUHJvcGVydGllc1tzdHlsZVtqXV0gPSB0cnVlOworCisgICAgICAgICAgICBpZiAocHJvcGVy
dHlDb3VudFtzdHlsZVtqXV0gPT0gbnVsbCkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eUNvdW50
W3N0eWxlW2pdXSA9IDE7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvcGVy
dHlDb3VudFtzdHlsZVtqXV0rKzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChydWxlc0FyZWEu
Zmlyc3RDaGlsZCAhPSBudWxsKQorICAgICAgICAgICAgcnVsZXNBcmVhLmluc2VydEJlZm9yZShy
b3csIHJ1bGVzQXJlYS5maXJzdENoaWxkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnVs
ZXNBcmVhLmFwcGVuZENoaWxkKHJvdyk7CisgICAgfQorCisgICAgc3R5bGVSdWxlc1Njcm9sbEFy
ZWEucmVmcmVzaCgpOworICAgIHVwZGF0ZVN0eWxlUHJvcGVydGllcygpOworfQorCitmdW5jdGlv
biBzdHlsZVJ1bGVTZWxlY3QoZXZlbnQpIHsKKyAgICB2YXIgcm93ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN0eWxlUnVsZXNTY3JvbGx2aWV3IikuZmlyc3RDaGlsZDsKKyAgICB3aGlsZSAo
cm93KSB7CisgICAgICAgIHJvdy5jbGFzc05hbWUgPSAicm93IjsKKyAgICAgICAgcm93ID0gcm93
Lm5leHRTaWJsaW5nOworICAgIH0KKworICAgIHJvdyA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7Cisg
ICAgcm93LmNsYXNzTmFtZSA9ICJyb3cgZm9jdXNlZCI7CisKKyAgICBzZWxlY3RlZFN0eWxlUnVs
ZUluZGV4ID0gcm93LnN0eWxlUnVsZUluZGV4OworICAgIHVwZGF0ZVN0eWxlUHJvcGVydGllcygp
OworfQorCitmdW5jdGlvbiB1cGRhdGVTdHlsZVByb3BlcnRpZXMoKSB7CisgICAgdmFyIGZvY3Vz
ZWROb2RlID0gSW5zcGVjdG9yLmZvY3VzZWRET01Ob2RlKCk7CisgICAgdmFyIHByb3BlcnRpZXNU
cmVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlUHJvcGVydGllc1RyZWUiKTsKKyAg
ICBwcm9wZXJ0aWVzVHJlZS5pbm5lckhUTUwgPSAiIjsKKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc3R5bGVQcm9wZXJ0aWVzW3NlbGVjdGVkU3R5bGVSdWxlSW5kZXhdLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIHZhciBwcm9wID0gc3R5bGVQcm9wZXJ0aWVzW3NlbGVjdGVkU3R5bGVSdWxlSW5k
ZXhdW2ldOworICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwor
ICAgICAgICBpZiAocHJvcC5zdWJQcm9wZXJ0aWVzLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAg
IGxpLmNsYXNzTmFtZSA9ICJoYXNDaGlsZHJlbiI7CisgICAgICAgICAgICBpZiAoZXhwYW5kZWRT
dHlsZVNob3J0aGFuZHNbcHJvcC5uYW1lXSkKKyAgICAgICAgICAgICAgICBsaS5jbGFzc05hbWUg
Kz0gIiBleHBhbmRlZCI7CisgICAgICAgICAgICBsaS5zaG9ydGhhbmQgPSBwcm9wLm5hbWU7Cisg
ICAgICAgICAgICB2YXIgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7
CisgICAgICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0b2dnbGVTdHls
ZVNob3J0aGFuZCwgZmFsc2UpOworICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoYnV0dG9uKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChwcm9wLnVudXNlZFByb3BlcnRpZXNbcHJvcC5uYW1l
XSA9PSB0cnVlKQorICAgICAgICAgICAgbGkuY2xhc3NOYW1lICs9ICIgb3ZlcmxvYWRlZCI7CisK
KyAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAg
ICAgIHNwYW4uY2xhc3NOYW1lID0gInByb3BlcnR5IjsKKyAgICAgICAgc3Bhbi50ZXh0Q29udGVu
dCA9IHByb3AubmFtZTsKKyAgICAgICAgbGkuYXBwZW5kQ2hpbGQoc3Bhbik7CisKKyAgICAgICAg
c3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgc3Bhbi5jbGFz
c05hbWUgPSAidmFsdWUiOworICAgICAgICBzcGFuLnRpdGxlID0gcHJvcC5zdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKHByb3AubmFtZSk7CisgICAgICAgIHNwYW4udGV4dENvbnRlbnQgPSBzcGFuLnRp
dGxlOworICAgICAgICBsaS5hcHBlbmRDaGlsZChzcGFuKTsKKworICAgICAgICBwcm9wZXJ0aWVz
VHJlZS5hcHBlbmRDaGlsZChsaSk7CisKKyAgICAgICAgaWYgKHByb3Auc3ViUHJvcGVydGllcy5s
ZW5ndGggPiAxKSB7CisgICAgICAgICAgICB2YXIgc3ViVHJlZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInVsIik7CisgICAgICAgICAgICBpZiAoIWV4cGFuZGVkU3R5bGVTaG9ydGhhbmRzW3By
b3AubmFtZV0pCisgICAgICAgICAgICAgICAgc3ViVHJlZS5zdHlsZS5zZXRQcm9wZXJ0eSgiZGlz
cGxheSIsICJub25lIiwgIiIpOworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwcm9w
LnN1YlByb3BlcnRpZXMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGlmIChwcm9wLnN0
eWxlLmlzUHJvcGVydHlJbXBsaWNpdChwcm9wLnN1YlByb3BlcnRpZXNbal0pIHx8IHByb3Auc3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZShwcm9wLnN1YlByb3BlcnRpZXNbal0pID09ICJpbml0aWFsIikK
KyAgICAgICAgICAgICAgICAgICAgbGkuY2xhc3NOYW1lID0gImltcGxpY2l0IjsKKyAgICAgICAg
ICAgICAgICBpZiAocHJvcC51bnVzZWRQcm9wZXJ0aWVzW3Byb3Auc3ViUHJvcGVydGllc1tqXV0g
PT0gdHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgbGkuY2xhc3NOYW1lICs9ICIgb3ZlcmxvYWRl
ZCI7CisgICAgICAgICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgICAgICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSAicHJvcGVydHkiOworICAg
ICAgICAgICAgICAgIHNwYW4udGV4dENvbnRlbnQgPSBwcm9wLnN1YlByb3BlcnRpZXNbal07Cisg
ICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoc3Bhbik7CisKKyAgICAgICAgICAgICAgICBz
cGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgICAgIHNw
YW4uY2xhc3NOYW1lID0gInZhbHVlIjsKKyAgICAgICAgICAgICAgICBzcGFuLnRpdGxlID0gcHJv
cC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHByb3Auc3ViUHJvcGVydGllc1tqXSk7CisgICAgICAg
ICAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IHNwYW4udGl0bGU7CisgICAgICAgICAgICAgICAg
bGkuYXBwZW5kQ2hpbGQoc3Bhbik7CisKKyAgICAgICAgICAgICAgICBzdWJUcmVlLmFwcGVuZENo
aWxkKGxpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJvcGVydGllc1RyZWUuYXBw
ZW5kQ2hpbGQoc3ViVHJlZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHlsZVByb3BlcnRp
ZXNTY3JvbGxBcmVhLnJlZnJlc2goKTsKK30KKworZnVuY3Rpb24gdG9nZ2xlU3R5bGVTaG9ydGhh
bmQoZXZlbnQpIHsKKyAgICB2YXIgbGkgPSBldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudE5vZGU7
CisgICAgaWYgKGxpLmNsYXNzTmFtZS5pbmRleE9mKCJleHBhbmRlZCIpICE9IC0xKSB7CisgICAg
ICAgIGxpLmNsYXNzTmFtZSA9IGxpLmNsYXNzTmFtZS5yZXBsYWNlKC8gZXhwYW5kZWQvLCAiIik7
CisgICAgICAgIGxpLm5leHRTaWJsaW5nLnN0eWxlLnNldFByb3BlcnR5KCJkaXNwbGF5IiwgIm5v
bmUiLCAiIik7CisgICAgICAgIGV4cGFuZGVkU3R5bGVTaG9ydGhhbmRzW2xpLnNob3J0aGFuZF0g
PSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBsaS5jbGFzc05hbWUgKz0gIiBleHBhbmRl
ZCI7CisgICAgICAgIGxpLm5leHRTaWJsaW5nLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJkaXNwbGF5
Iik7CisgICAgICAgIGV4cGFuZGVkU3R5bGVTaG9ydGhhbmRzW2xpLnNob3J0aGFuZF0gPSB0cnVl
OworICAgIH0KKworICAgIHN0eWxlUHJvcGVydGllc1Njcm9sbEFyZWEucmVmcmVzaCgpOworfQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL2lu
c3BlY3Rvci5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2phdmFz
Y3JpcHQKCkluZGV4OiBXZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL2Rv
d25UcmlhbmdsZS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMg
YSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdl
cyBvbjogV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9kb3duVHJpYW5n
bGUucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGltYWdlL3BuZwoKSW5k
ZXg6IFdlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvcG9wdXBGaWxsUHJl
c3NlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5h
cnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
V2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9wb3B1cEZpbGxQcmVzc2Vk
LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBpbWFnZS9wbmcKCkluZGV4
OiBXZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL3BvcHVwUmlnaHQucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
CnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkluc3Bl
Y3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvcG9wdXBSaWdodC5wbmcKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgpJbmRleDogV2ViSW5zcGVjdG9y
LnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9zY3JvbGxUcmFja01pZGRsZS5wbmcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1p
bWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViSW5zcGVjdG9yLnN1
YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9zY3JvbGxUcmFja01pZGRsZS5wbmcKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgpJbmRleDogV2ViSW5zcGVjdG9y
LnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9yaWdodFRyaWFuZ2xlLnBuZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10
eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJJbnNwZWN0b3Iuc3VicHJv
ai93ZWJJbnNwZWN0b3IvSW1hZ2VzL3JpZ2h0VHJpYW5nbGUucG5nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOm1pbWUtdHlwZQogICArIGltYWdlL3BuZwoKSW5kZXg6IFdlYkluc3BlY3Rvci5zdWJwcm9q
L3dlYkluc3BlY3Rvci9JbWFnZXMvbWVudS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0lt
YWdlcy9tZW51LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBpbWFnZS9w
bmcKCkluZGV4OiBXZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL3BvcHVw
TGVmdFByZXNzZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFz
IGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5n
ZXMgb246IFdlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvcG9wdXBMZWZ0
UHJlc3NlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgaW1hZ2UvcG5n
CgpJbmRleDogV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9jbG9zZS5w
bmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlw
ZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViSW5z
cGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9jbG9zZS5wbmcKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgpJbmRleDogV2ViSW5zcGVjdG9yLnN1
YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9zY3JvbGxUcmFja1RvcC5wbmcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpD
YW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlw
ZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViSW5zcGVjdG9yLnN1YnByb2ov
d2ViSW5zcGVjdG9yL0ltYWdlcy9zY3JvbGxUcmFja1RvcC5wbmcKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBz
dm46bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgpJbmRleDogV2ViSW5zcGVjdG9yLnN1YnByb2ov
d2ViSW5zcGVjdG9yL0ltYWdlcy9zY3JvbGxUcmFja0JvdHRvbS5wbmcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViSW5zcGVjdG9yLnN1YnByb2ovd2Vi
SW5zcGVjdG9yL0ltYWdlcy9zY3JvbGxUcmFja0JvdHRvbS5wbmcKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBz
dm46bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgpJbmRleDogV2ViSW5zcGVjdG9yLnN1YnByb2ov
d2ViSW5zcGVjdG9yL0ltYWdlcy91cFRyaWFuZ2xlLnBuZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNw
bGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2Uv
cG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0
b3IvSW1hZ2VzL3VwVHJpYW5nbGUucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQog
ICArIGltYWdlL3BuZwoKSW5kZXg6IFdlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9J
bWFnZXMvcG9wdXBGaWxsLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtl
ZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBXZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL3BvcHVw
RmlsbC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgpJ
bmRleDogV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9zY3JvbGxUaHVt
Yk1pZGRsZS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9zY3JvbGxUaHVtYk1p
ZGRsZS5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgpJ
bmRleDogV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9wb3B1cExlZnQu
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYklu
c3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvcG9wdXBMZWZ0LnBuZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBpbWFnZS9wbmcKCkluZGV4OiBXZWJJbnNwZWN0
b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL3NxdWFyZUJ1dHRvblJpZ2h0UHJlc3NlZC5w
bmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlw
ZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViSW5z
cGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9zcXVhcmVCdXR0b25SaWdodFByZXNz
ZWQucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGltYWdlL3BuZwoKSW5k
ZXg6IFdlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvc2Nyb2xsVGh1bWJU
b3AucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFdl
Ykluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvc2Nyb2xsVGh1bWJUb3AucG5n
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGltYWdlL3BuZwoKSW5kZXg6IFdl
Ykluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvc2Nyb2xsVGh1bWJCb3R0b20u
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYklu
c3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvc2Nyb2xsVGh1bWJCb3R0b20ucG5n
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGltYWdlL3BuZwoKSW5kZXg6IFdl
Ykluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvcG9wdXBSaWdodFByZXNzZWQu
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYklu
c3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvcG9wdXBSaWdodFByZXNzZWQucG5n
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGltYWdlL3BuZwoKSW5kZXg6IFdl
Ykluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvbWVudVByZXNzZWQucG5nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2
bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkluc3BlY3Rv
ci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvbWVudVByZXNzZWQucG5nCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGltYWdlL3BuZwoKSW5kZXg6IFdlYkluc3BlY3Rvci5z
dWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvc3F1YXJlQnV0dG9uUmlnaHQucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1l
LXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkluc3BlY3Rvci5zdWJw
cm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvc3F1YXJlQnV0dG9uUmlnaHQucG5nCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGltYWdlL3BuZwoKSW5kZXg6IFdlYkluc3BlY3Rvci5z
dWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvY2xvc2VQcmVzc2VkLnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBl
ID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJJbnNwZWN0b3Iuc3VicHJvai93
ZWJJbnNwZWN0b3IvSW1hZ2VzL2Nsb3NlUHJlc3NlZC5wbmcKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46
bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgpJbmRleDogV2ViSW5zcGVjdG9yLnN1YnByb2ovd2Vi
SW5zcGVjdG9yL2luc3BlY3Rvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkluc3BlY3Rvci5zdWJw
cm9qL3dlYkluc3BlY3Rvci9pbnNwZWN0b3IuaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYkluc3Bl
Y3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9pbnNwZWN0b3IuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMTQgQEAKKzwhLS0KK0NvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBt
ZXQ6CisKKzEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4gCiszLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyhJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
K0xPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKy0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAx
LjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0
cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHht
bDpsYW5nPSJlbiIgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iY29u
dGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisgICAgPHRp
dGxlPldlYiBJbnNwZWN0b3I8L3RpdGxlPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9Imluc3BlY3Rvci5qcyI+PC9zY3JpcHQ+IAorICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9ImZpbGU6Ly8vU3lzdGVtL0xpYnJhcnkvV2lkZ2V0UmVzb3VyY2Vz
L0FwcGxlQ2xhc3Nlcy9BcHBsZVNjcm9sbGJhci5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImZpbGU6Ly8vU3lzdGVtL0xpYnJhcnkvV2lk
Z2V0UmVzb3VyY2VzL0FwcGxlQ2xhc3Nlcy9BcHBsZVNjcm9sbEFyZWEuanMiPjwvc2NyaXB0Pgor
ICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgIEBpbXBvcnQgImluc3BlY3Rvci5j
c3MiOworICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpIj4KKzxk
aXYgaWQ9ImJvZHkiPgorPGRpdiBpZD0idGl0bGUiPjxidXR0b24gY2xhc3M9ImNsb3NlIiBvbmNs
aWNrPSJ3aW5kb3cuY2xvc2UoKSI+PC9idXR0b24+V2ViIEluc3BlY3RvcjxidXR0b24gY2xhc3M9
Im1lbnUiIG9ubW91c2Vkb3duPSJJbnNwZWN0b3Iuc2hvd09wdGlvbnNNZW51KCkiPjwvYnV0dG9u
PjwvZGl2PgorPGRpdiBpZD0idG9wIj4KKyAgICA8ZGl2IGlkPSJoZWFkZXIiPgorICAgICAgICA8
ZGl2IGlkPSJ0cmF2ZXJzZSI+PGJ1dHRvbiBjbGFzcz0ic3F1YXJlIiBpZD0idHJhdmVyc2VVcCIg
b25jbGljaz0iSW5zcGVjdG9yLnRyYXZlcnNlVHJlZShmYWxzZSkiPjxkaXYgY2xhc3M9ImxlZnQi
PjwvZGl2PjxkaXYgY2xhc3M9Im1pZGRsZSI+PGltZyBzcmM9IkltYWdlcy91cFRyaWFuZ2xlLnBu
ZyIgLz48L2Rpdj48L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJzcXVhcmUiIGlkPSJ0cmF2ZXJzZURv
d24iIG9uY2xpY2s9Ikluc3BlY3Rvci50cmF2ZXJzZVRyZWUodHJ1ZSkiPjxpbWcgc3JjPSJJbWFn
ZXMvcG9wdXBGaWxsUHJlc3NlZC5wbmciIC8+PGRpdiBjbGFzcz0ibWlkZGxlIj48aW1nIHNyYz0i
SW1hZ2VzL2Rvd25UcmlhbmdsZS5wbmciIC8+PC9kaXY+PGRpdiBjbGFzcz0icmlnaHQiPjwvZGl2
PjwvYnV0dG9uPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJ0cmVlUG9wdXAiPgorICAgICAgICAg
ICAgPHNlbGVjdCBzaXplPSIxIiBpZD0icmVhbFRyZWVQb3B1cCIgb25jaGFuZ2U9Ikluc3BlY3Rv
ci5zZWxlY3ROZXdSb290KHRoaXMpIj48L3NlbGVjdD4KKyAgICAgICAgICAgIDxidXR0b24gaWQ9
InRyZWVQb3B1cEJ1dHRvbiIgY2xhc3M9InBvcHVwIj48ZGl2IGNsYXNzPSJsZWZ0Ij48L2Rpdj48
ZGl2IGlkPSJ0cmVlUG9wdXBUaXRsZUFyZWEiIGNsYXNzPSJtaWRkbGUiPjwvZGl2PjxkaXYgY2xh
c3M9InJpZ2h0Ij48L2Rpdj48L2J1dHRvbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYg
aWQ9InNlYXJjaENvdW50Ij48L2Rpdj4KKyAgICAgICAgPGlucHV0IGlkPSJzZWFyY2giIHR5cGU9
InNlYXJjaCIgYXV0b3NhdmU9Im5vZGVTZWFyY2giIHJlc3VsdHM9IjIwIiBwbGFjZWhvbGRlcj0i
U2VhcmNoIiBpbmNyZW1lbnRhbD0iaW5jcmVtZW50YWwiIC8+CisgICAgPC9kaXY+CisgICAgPGRp
diBpZD0idHJlZSI+CisgICAgICAgIDxkaXYgaWQ9InRyZWVTY3JvbGxBcmVhIj48b2JqZWN0IGlk
PSJ0cmVlT3V0bGluZVZpZXciPjxwYXJhbSBuYW1lPSJ0eXBlIiB2YWx1ZT0iYXBwbGljYXRpb24v
eC1pbnNwZWN0b3ItdHJlZSIgLz48L29iamVjdD48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0idHJl
ZVNjcm9sbGJhciI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgaWQ9InNwbGl0dGVy
IiBvbm1vdXNlZG93bj0iSW5zcGVjdG9yLnJlc2l6ZVRvcEFyZWEoZXZlbnQpIj48aHIgc2l6ZT0i
MiIgLz48L2Rpdj4KKzxkaXYgaWQ9ImJvdHRvbSI+CisgICAgPGRpdiBpZD0idGFicyI+CisgICAg
ICAgIDxidXR0b24gY2xhc3M9InNxdWFyZSBzZWxlY3RlZCIgaWQ9Im5vZGVCdXR0b24iIG9uY2xp
Y2s9InN3aXRjaFBhbmUoJ25vZGUnKSI+PGRpdiBjbGFzcz0ibGVmdCI+PC9kaXY+PGRpdiBjbGFz
cz0ibWlkZGxlIj5Ob2RlPC9kaXY+PC9idXR0b24+CisgICAgICAgIDxidXR0b24gY2xhc3M9InNx
dWFyZSIgaWQ9InN0eWxlQnV0dG9uIiBvbmNsaWNrPSJzd2l0Y2hQYW5lKCdzdHlsZScpIj48aW1n
IHNyYz0iSW1hZ2VzL3BvcHVwRmlsbFByZXNzZWQucG5nIiAvPjxkaXYgY2xhc3M9Im1pZGRsZSI+
U3R5bGU8L2Rpdj48L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic3F1YXJlIiBpZD0i
bWV0cmljc0J1dHRvbiIgb25jbGljaz0ic3dpdGNoUGFuZSgnbWV0cmljcycpIj48aW1nIHNyYz0i
SW1hZ2VzL3BvcHVwRmlsbFByZXNzZWQucG5nIiAvPjxkaXYgY2xhc3M9Im1pZGRsZSI+TWV0cmlj
czwvZGl2PjwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIGNsYXNzPSJzcXVhcmUiIGlkPSJqYXZh
c2NyaXB0QnV0dG9uIiBvbmNsaWNrPSJzd2l0Y2hQYW5lKCdqYXZhc2NyaXB0JykiPjxpbWcgc3Jj
PSJJbWFnZXMvcG9wdXBGaWxsUHJlc3NlZC5wbmciIC8+PGRpdiBjbGFzcz0ibWlkZGxlIj5Qcm9w
ZXJ0aWVzPC9kaXY+PGRpdiBjbGFzcz0icmlnaHQiPjwvZGl2PjwvYnV0dG9uPgorICAgIDwvZGl2
PgorICAgIDxkaXYgaWQ9Im5vZGVQYW5lIiBjbGFzcz0icGFuZSI+CisgICAgICAgIDxkaXYgY2xh
c3M9ImluZm9Sb3ciPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIj5Ob2RlIFR5cGU6
PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZhbHVlIiBpZD0ibm9kZVR5cGUiPjwv
c3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZm9Sb3ciPgorICAg
ICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIj5Ob2RlIE5hbWU6PC9zcGFuPgorICAgICAgICAg
ICAgPHNwYW4gY2xhc3M9InZhbHVlIiBpZD0ibm9kZU5hbWUiPjwvc3Bhbj4KKyAgICAgICAgPC9k
aXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZm9Sb3ciIGlkPSJub2RlTmFtZXNwYWNlUm93Ij4K
KyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCI+TmFtZXNwYWNlIFVSSTo8L3NwYW4+Cisg
ICAgICAgICAgICA8c3BhbiBjbGFzcz0idmFsdWUiPjxkaXYgaWQ9Im5vZGVOYW1lc3BhY2UiPjwv
ZGl2Pjwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImVsZW1lbnRBdHRy
aWJ1dGVzIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm9Sb3cgaGVhZGVyIj4KKyAgICAg
ICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwiIHN0eWxlPSJ3aWR0aDogaW5pdGlhbCI+RWxl
bWVudCBBdHRyaWJ1dGVzPC9zcGFuPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxBcmVhIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJlbGVtZW50
QXR0cmlidXRlc1Njcm9sbHZpZXciIGNsYXNzPSJ2aWV3Ij4obm90IGZpbmlzaGVkKTwvZGl2Pgor
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImVsZW1lbnRBdHRyaWJ1dGVzU2Nyb2xsYmFyIiBjbGFz
cz0ic2Nyb2xsYmFyIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPGRpdiBpZD0ibm9kZUNvbnRlbnRzIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImluZm9Sb3cgaGVhZGVyIj4KKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwiIHN0
eWxlPSJ3aWR0aDogaW5pdGlhbCI+TWFya3VwICZhbXA7IENvbnRlbnQ8L3NwYW4+CisgICAgICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbEFyZWEiPgorICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InZpZXciPjxkaXYgaWQ9Im5vZGVDb250ZW50c1Njcm9sbHZp
ZXciPjwvZGl2PjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im5vZGVDb250ZW50c1Nj
cm9sbGJhciIgY2xhc3M9InNjcm9sbGJhciI+PC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBpZD0ibWV0cmljc1BhbmUiIGNsYXNz
PSJwYW5lIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgdGV4dC1hbGlnbjogY2VudGVyIj48YnIgLz48
YnIgLz48YnIgLz4obm90IGZpbmlzaGVkKTwvZGl2PgorICAgIDxkaXYgaWQ9InN0eWxlUGFuZSIg
Y2xhc3M9InBhbmUiIHN0eWxlPSJkaXNwbGF5OiBub25lIj4KKyAgICAgICAgPGRpdiBpZD0ic3R5
bGVSdWxlcyIgY2xhc3M9InNjcm9sbEFyZWEiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idmll
dyI+PGRpdiBpZD0ic3R5bGVSdWxlc1Njcm9sbHZpZXciPjwvZGl2PjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBpZD0ic3R5bGVSdWxlc1Njcm9sbGJhciIgY2xhc3M9InNjcm9sbGJhciI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJzdHlsZVByb3BlcnRpZXMiIGNsYXNz
PSJzY3JvbGxBcmVhIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZpZXciPjxkaXYgaWQ9InN0
eWxlUHJvcGVydGllc1Njcm9sbHZpZXciPjx1bCBjbGFzcz0idHJlZUxpc3QiIGlkPSJzdHlsZVBy
b3BlcnRpZXNUcmVlIj48L3VsPjwvZGl2PjwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0ic3R5
bGVQcm9wZXJ0aWVzU2Nyb2xsYmFyIiBjbGFzcz0ic2Nyb2xsYmFyIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBpZD0iamF2YXNjcmlwdFBhbmUiIGNsYXNzPSJw
YW5lIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgdGV4dC1hbGlnbjogY2VudGVyIj48YnIgLz48YnIg
Lz48YnIgLz4obm90IGZpbmlzaGVkKTwvZGl2PgorPC9kaXY+Cis8ZGl2IGlkPSJyZXNpemUiPjwv
ZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJJ
bnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvaW5zcGVjdG9yLmh0bWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDogV2ViSW5zcGVjdG9yLnN1
YnByb2ovd2ViSW5zcGVjdG9yL2luc3BlY3Rvci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViSW5zcGVj
dG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL2luc3BlY3Rvci5jc3MJKHJldmlzaW9uIDApCisrKyBX
ZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvaW5zcGVjdG9yLmNzcwkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworaHRtbCB7CisgICAgaGVpZ2h0OiAx
MDAlOworfQorCitib2R5IHsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGhlaWdodDogMTAw
JTsKK30KKworKiB7CisgICAgLWFwcGxlLXVzZXItc2VsZWN0OiBub25lOworfQorCithIHsKKyAg
ICBjdXJzb3I6IGRlZmF1bHQ7Cit9CisKK2J1dHRvbiB7CisgICAgLWFwcGxlLWRhc2hib2FyZC1y
ZWdpb246IGRhc2hib2FyZC1yZWdpb24oY29udHJvbCByZWN0YW5nbGUpOworfQorCisuZGlzYWJs
ZWQgeworICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNSk7Cit9CisKKyNib2R5IHsKKyAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMCwyMCwy
MCwwLjkpOworICAgIGJvcmRlci1yYWRpdXM6IDhweDsKKyAgICB0b3A6IDA7CisgICAgaGVpZ2h0
OiAxMDAlOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgY29sb3I6IHdoaXRlOwor
ICAgIGZvbnQtZmFtaWx5OiBMdWNpZGEgR3JhbmRlLCBzYW5zLXNlcmlmOworICAgIGZvbnQtc2l6
ZTogMTJweDsKKyAgICB0ZXh0LXNoYWRvdzogYmxhY2sgMHB4IDFweCAycHg7Cit9CisKKyN0aXRs
ZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEo
MjU1LDI1NSwyNTUsMC4xKTsKKyAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA4cHg7CisgICAg
Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDhweDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgdG9w
OiAwOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgdGV4dC1hbGlnbjogY2VudGVy
OworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICBsaW5lLWhlaWdodDogMjBweDsKK30KKworI2hl
YWRlciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGhlaWdodDogMjZweDsKKyAgICB0
b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICByaWdodDogMDsKK30KKworI3NlYXJjaCB7CisgICAg
Zm9udC1zaXplOiAxMXB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDFweDsK
KyAgICByaWdodDogMTBweDsKKyAgICB3aWR0aDogOTBweDsKK30KKworI3NlYXJjaENvdW50IHsK
KyAgICBmb250LXNpemU6IDExcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDog
MnB4OworICAgIHJpZ2h0OiAxMTBweDsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgdGV4dC1hbGln
bjogcmlnaHQ7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworI3RyZWVQb3B1cCB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogNHB4OworICAgIGxlZnQ6IDU0cHg7CisgICAgcmln
aHQ6IDEwNnB4OworfQorCisjdHJlZVBvcHVwQnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7Cit9CisKKyNyZWFs
VHJlZVBvcHVwIHsKKyAgICBvcGFjaXR5OiAwOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICB6LWluZGV4OiAx
MDsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKK30KKworI3RyZWVQb3B1cFRpdGxl
QXJlYSB7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwor
fQorCisjdHJhdmVyc2UgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDRweDsK
KyAgICBsZWZ0OiA4cHg7CisgICAgd2lkdGg6IDUwcHg7Cit9CisKKyN0cmF2ZXJzZVVwIC5taWRk
bGUgeworICAgIHJpZ2h0OiAwOworfQorCisjdHJhdmVyc2VVcCAubWlkZGxlID4gaW1nIHsKKyAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiA0cHg7CisgICAgbGVmdDogMXB4OworfQor
CisjdHJhdmVyc2VEb3duIC5taWRkbGUgeworICAgIGxlZnQ6IDFweDsKK30KKworI3RyYXZlcnNl
RG93biAubWlkZGxlID4gaW1nIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiA1
cHg7CisgICAgbGVmdDogNXB4OworfQorCisjdHJhdmVyc2VVcCB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIHdpZHRoOiAyMHB4OworfQor
CisjdHJhdmVyc2VEb3duIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOwor
ICAgIGxlZnQ6IDIwcHg7CisgICAgd2lkdGg6IDIxcHg7Cit9CisKKyN0cmF2ZXJzZURvd24gPiBp
bWcgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsK
K30KKworI3RhYnMgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDNweDsKKyAg
ICBsZWZ0OiA1MCU7CisgICAgbWFyZ2luLWxlZnQ6IC0xMzBweDsKK30KKworI3RhYnMgLm1pZGRs
ZSB7CisgICAgbGVmdDogMDsKKyAgICByaWdodDogMDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7
Cit9CisKKyN0YWJzIGJ1dHRvbiA+IGltZyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHRvcDogMDsKKyAgICBsZWZ0OiAwOworfQorCisjbm9kZUJ1dHRvbiB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIHdpZHRoOiA2MHB4Owor
fQorCisjbm9kZUJ1dHRvbiAubWlkZGxlIHsKKyAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7CisgICAg
bGVmdDogNnB4OworICAgIHJpZ2h0OiAwOworfQorCisjbWV0cmljc0J1dHRvbiB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAxMTVweDsKKyAgICB3aWR0
aDogNjVweDsKK30KKworI3N0eWxlQnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgdG9wOiAwOworICAgIGxlZnQ6IDYwcHg7CisgICAgd2lkdGg6IDU1cHg7Cit9CisKKyNqYXZh
c2NyaXB0QnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAg
IGxlZnQ6IDE4MHB4OworICAgIHdpZHRoOiA4MHB4OworfQorCisjamF2YXNjcmlwdEJ1dHRvbiAu
bWlkZGxlIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDZweDsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0
OiA2cHg7Cit9CisKKyN0aXRsZSBidXR0b24uY2xvc2UgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICB0b3A6IDRweDsKKyAgICBsZWZ0OiA1cHg7CisgICAgYm9yZGVyOiAwOworICAgIGJh
Y2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgg
SW1hZ2VzL2Nsb3NlLnBuZyApOworICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Cisg
ICAgaGVpZ2h0OiAxM3B4OworICAgIHdpZHRoOiAxM3B4OworfQorCisjdGl0bGUgYnV0dG9uLmNs
b3NlW2Rpc2FibGVkXSB7CisgICAgb3BhY2l0eTogMC41OworfQorCisjdGl0bGUgYnV0dG9uLmNs
b3NlOmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCBJbWFnZXMvY2xvc2VQcmVz
c2VkLnBuZyApOworfQorCisjdGl0bGUgYnV0dG9uLm1lbnUgeworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICB0b3A6IDRweDsKKyAgICByaWdodDogNXB4OworICAgIGJvcmRlcjogMDsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1
cmwoIEltYWdlcy9tZW51LnBuZyApOworICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7
CisgICAgaGVpZ2h0OiAxM3B4OworICAgIHdpZHRoOiAxM3B4OworfQorCisjdGl0bGUgYnV0dG9u
Lm1lbnVbZGlzYWJsZWRdIHsKKyAgICBvcGFjaXR5OiAwLjU7Cit9CisKKyN0aXRsZSBidXR0b24u
bWVudTphY3RpdmUgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCggSW1hZ2VzL21lbnVQcmVz
c2VkLnBuZyApOworfQorCitidXR0b24ucG9wdXAgeworICAgIGhlaWdodDogMjBweDsKKyAgICBi
b3JkZXI6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgY29sb3I6
IHdoaXRlOworICAgIHBhZGRpbmc6IDA7CisgICAgbWFyZ2luOiAwOworfQorCitidXR0b24ucG9w
dXAgLmxlZnQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVm
dDogMDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgd2lkdGg6IDZweDsKKyAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoIEltYWdlcy9wb3B1cExlZnQucG5nICk7CisgICAgYmFja2dyb3VuZC1yZXBl
YXQ6IG5vLXJlcGVhdDsKK30KKworYnV0dG9uLnBvcHVwIC5taWRkbGUgeworICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogNnB4OworICAgIHJpZ2h0OiAxOXB4
OworICAgIGhlaWdodDogMjBweDsKKyAgICBsaW5lLWhlaWdodDogMWVtOworICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybCggSW1hZ2VzL3BvcHVwRmlsbC5wbmcgKTsKKyAgICBiYWNrZ3JvdW5kLXJl
cGVhdDogcmVwZWF0LXg7CisgICAgbGluZS1oZWlnaHQ6IDE3cHg7CisgICAgdGV4dC1hbGlnbjog
bGVmdDsKKyAgICBwYWRkaW5nOiAwIDJweDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHRl
eHQtb3ZlcmZsb3c6IGVsbGlwc2lzOworfQorCitidXR0b24ucG9wdXAgLnJpZ2h0IHsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIHJpZ2h0OiAwOworICAgIGhlaWdo
dDogMjBweDsKKyAgICB3aWR0aDogMTlweDsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIElt
YWdlcy9wb3B1cFJpZ2h0LnBuZyApOworICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7
Cit9CisKK2J1dHRvbi5wb3B1cFtkaXNhYmxlZF0geworICAgIG9wYWNpdHk6IDAuNTsKK30KKwor
YnV0dG9uLnBvcHVwW2Rpc2FibGVkXSAubGVmdCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJs
KCBJbWFnZXMvcG9wdXBMZWZ0LnBuZyApICFpbXBvcnRhbnQ7Cit9CisKK2J1dHRvbi5wb3B1cFtk
aXNhYmxlZF0gLm1pZGRsZSB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCBJbWFnZXMvcG9w
dXBGaWxsLnBuZyApICFpbXBvcnRhbnQ7Cit9CisKK2J1dHRvbi5wb3B1cFtkaXNhYmxlZF0gLnJp
Z2h0IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIEltYWdlcy9wb3B1cFJpZ2h0LnBuZyAp
ICFpbXBvcnRhbnQ7Cit9CisKK2J1dHRvbi5wb3B1cDphY3RpdmUgLmxlZnQgeworICAgIGJhY2tn
cm91bmQtaW1hZ2U6IHVybCggSW1hZ2VzL3BvcHVwTGVmdFByZXNzZWQucG5nICk7Cit9CisKK2J1
dHRvbi5wb3B1cDphY3RpdmUgLm1pZGRsZSB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCBJ
bWFnZXMvcG9wdXBGaWxsUHJlc3NlZC5wbmcgKTsKKyAgICB0ZXh0LXNoYWRvdzogYmxhY2sgMXB4
IC0xcHggM3B4OworfQorCitidXR0b24ucG9wdXA6YWN0aXZlIC5yaWdodCB7CisgICAgYmFja2dy
b3VuZC1pbWFnZTogdXJsKCBJbWFnZXMvcG9wdXBSaWdodFByZXNzZWQucG5nICk7Cit9CisKK2J1
dHRvbi5zcXVhcmUgeworICAgIGhlaWdodDogMjBweDsKKyAgICBib3JkZXI6IDA7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgY29sb3I6IHdoaXRlOworICAgIHBhZGRp
bmc6IDA7CisgICAgbWFyZ2luOiAwOworfQorCitidXR0b24uc3F1YXJlIC5sZWZ0IHsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7CisgICAgaGVpZ2h0
OiAyMHB4OworICAgIHdpZHRoOiA2cHg7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCBJbWFn
ZXMvcG9wdXBMZWZ0LnBuZyApOworICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Cit9
CisKK2J1dHRvbi5zcXVhcmUgLm1pZGRsZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHRvcDogMDsKKyAgICBsZWZ0OiA2cHg7CisgICAgcmlnaHQ6IDZweDsKKyAgICBoZWlnaHQ6IDIw
cHg7CisgICAgbGluZS1oZWlnaHQ6IDFlbTsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIElt
YWdlcy9wb3B1cEZpbGwucG5nICk7CisgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14Owor
ICAgIGxpbmUtaGVpZ2h0OiAxN3B4OworICAgIHRleHQtYWxpZ246IGxlZnQ7CisgICAgcGFkZGlu
ZzogMCAycHg7Cit9CisKK2J1dHRvbi5zcXVhcmUgLnJpZ2h0IHsKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgdG9wOiAwOworICAgIHJpZ2h0OiAwOworICAgIGhlaWdodDogMjBweDsKKyAg
ICB3aWR0aDogNnB4OworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCggSW1hZ2VzL3NxdWFyZUJ1
dHRvblJpZ2h0LnBuZyApOworICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Cit9CisK
K2J1dHRvbi5zcXVhcmVbZGlzYWJsZWRdIHsKKyAgICBvcGFjaXR5OiAwLjU7Cit9CisKK2J1dHRv
bi5zcXVhcmVbZGlzYWJsZWRdIC5sZWZ0IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIElt
YWdlcy9wb3B1cExlZnQucG5nICkgIWltcG9ydGFudDsKK30KKworYnV0dG9uLnNxdWFyZVtkaXNh
YmxlZF0gLm1pZGRsZSB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCBJbWFnZXMvcG9wdXBG
aWxsLnBuZyApICFpbXBvcnRhbnQ7Cit9CisKK2J1dHRvbi5zcXVhcmVbZGlzYWJsZWRdIC5yaWdo
dCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCBJbWFnZXMvc3F1YXJlQnV0dG9uUmlnaHQu
cG5nICkgIWltcG9ydGFudDsKK30KKworYnV0dG9uLnNxdWFyZTphY3RpdmUgLmxlZnQsIGJ1dHRv
bi5zcXVhcmUuc2VsZWN0ZWQgLmxlZnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCggSW1h
Z2VzL3BvcHVwTGVmdFByZXNzZWQucG5nICk7Cit9CisKK2J1dHRvbi5zcXVhcmU6YWN0aXZlIC5t
aWRkbGUsIGJ1dHRvbi5zcXVhcmUuc2VsZWN0ZWQgLm1pZGRsZSB7CisgICAgYmFja2dyb3VuZC1p
bWFnZTogdXJsKCBJbWFnZXMvcG9wdXBGaWxsUHJlc3NlZC5wbmcgKTsKKyAgICB0ZXh0LXNoYWRv
dzogYmxhY2sgMXB4IC0xcHggM3B4OworfQorCitidXR0b24uc3F1YXJlLnNlbGVjdGVkIC5taWRk
bGUgeworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitidXR0b24uc3F1YXJlOmFjdGl2ZSAu
cmlnaHQsIGJ1dHRvbi5zcXVhcmUuc2VsZWN0ZWQgLnJpZ2h0IHsKKyAgICBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoIEltYWdlcy9zcXVhcmVCdXR0b25SaWdodFByZXNzZWQucG5nICk7Cit9CisKKyNy
ZXNpemUgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMDsKKyAgICBib3R0
b206IDA7CisgICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAxNnB4OworICAgIHotaW5kZXg6
IDEwOworICAgIC1hcHBsZS1kYXNoYm9hcmQtcmVnaW9uOiBkYXNoYm9hcmQtcmVnaW9uKHJlc2l6
ZSByZWN0YW5nbGUpOworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCggZmlsZTovLy9TeXN0ZW0v
TGlicmFyeS9XaWRnZXRSZXNvdXJjZXMvcmVzaXplLnBuZyApOworICAgIGJhY2tncm91bmQtcmVw
ZWF0OiBuby1yZXBlYXQ7Cit9CisKKyN0b3AgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB0b3A6IDIwcHg7CisgICAgbGVmdDogMDsKKyAgICByaWdodDogMDsKKyAgICBoZWlnaHQ6IDE3
MHB4OworfQorCisjYm90dG9tIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAy
MDBweDsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKK30KKwor
I2JvdHRvbSAucGFuZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMjhweDsK
KyAgICBsZWZ0OiAxMHB4OworICAgIHJpZ2h0OiAxMHB4OworICAgIGJvdHRvbTogMTJweDsKK30K
KworI3NwbGl0dGVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAxOTBweDsK
KyAgICBsZWZ0OiA1cHg7CisgICAgcmlnaHQ6IDVweDsKKyAgICBoZWlnaHQ6IDEwcHg7CisgICAg
Y3Vyc29yOiBtb3ZlOworICAgIHotaW5kZXg6IDEwOworICAgIC1hcHBsZS1kYXNoYm9hcmQtcmVn
aW9uOiBkYXNoYm9hcmQtcmVnaW9uKGNvbnRyb2wgcmVjdGFuZ2xlKTsKK30KKworI3NwbGl0dGVy
IGhyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiA0cHg7CisgICAgbGVmdDog
MDsKKyAgICByaWdodDogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIG1hcmdpbjogMDsKKyAgICBv
cGFjaXR5OiAwLjg1OworfQorCisjdHJlZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgw
LDAsMCwwLjIpOworICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC40KTsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAyNnB4OyAgCisgICAgYm90dG9tOiA0
cHg7CisgICAgbGVmdDogMTBweDsKKyAgICByaWdodDogMTBweDsKKyAgICAtYXBwbGUtZGFzaGJv
YXJkLXJlZ2lvbjogZGFzaGJvYXJkLXJlZ2lvbihjb250cm9sIHJlY3RhbmdsZSk7Cit9CisKKyN0
cmVlU2Nyb2xsQXJlYSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsgCisg
ICAgbGVmdDogM3B4OworICAgIHJpZ2h0OiAyM3B4OworICAgIGJvdHRvbTogMDsKK30KKworI3Ry
ZWVPdXRsaW5lVmlldyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAg
ICBsZWZ0OiAwOworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKK30KKworI3Ry
ZWVTY3JvbGxiYXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDJweDsKKyAg
ICBib3R0b206IDJweDsKKyAgICByaWdodDogMnB4OworICAgIHdpZHRoOiAxOXB4OworICAgIGRp
c3BsYXk6IGJsb2NrOworfQorCitidXR0b24udG9nZ2xlIHsKKyAgICB3aWR0aDogOHB4OworICAg
IGhlaWdodDogOHB4OworICAgIGJvcmRlcjogMDsKKyAgICBtYXJnaW46IDAgMnB4OworICAgIHBh
ZGRpbmc6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9CisKK2J1dHRv
bi50b2dnbGUuZG93biB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCBJbWFnZXMvZG93blRy
aWFuZ2xlLnBuZyApOworfQorCitidXR0b24udG9nZ2xlLnJpZ2h0IHsKKyAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoIEltYWdlcy9yaWdodFRyaWFuZ2xlLnBuZyApOworfQorCisjbm9kZVBhbmUg
eworICAgIGRpc3BsYXk6IC1hcHBsZS1ib3g7CisgICAgLWFwcGxlLWJveC1vcmllbnQ6IHZlcnRp
Y2FsOworfQorCisuaW5mb1JvdyB7CisgICAgZGlzcGxheTogLWFwcGxlLWJveDsKKyAgICAtYXBw
bGUtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICBtYXJnaW4tdG9wOiAycHg7Cit9CisKKy5p
bmZvUm93LmhlYWRlciB7CisgICAgbWFyZ2luLXRvcDogNnB4OworICAgIGJvcmRlci1ib3R0b206
IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNCk7CisgICAgbWFyZ2luLWJvdHRvbTogM3B4
OworfQorCisuaW5mb1JvdyAubGFiZWwgeworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIGZvbnQt
d2VpZ2h0OiBib2xkOworICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIHBhZGRpbmctcmlnaHQ6
IDNweDsKKyAgICB3aWR0aDogMTAwcHg7Cit9CisKKy5pbmZvUm93IC52YWx1ZSB7CisgICAgZGlz
cGxheTogLWFwcGxlLWJveDsKKyAgICAtYXBwbGUtYm94LWZsZXg6IDE7CisgICAgLWFwcGxlLWRh
c2hib2FyZC1yZWdpb246IGRhc2hib2FyZC1yZWdpb24oY29udHJvbCByZWN0YW5nbGUpOworICAg
IC1hcHBsZS11c2VyLXNlbGVjdDogdGV4dDsKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworfQor
CisvKiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMgbm90
IHdvcmtpbmcgb24gYm94ZXMuICovCisvKiBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcv
c2hvd19idWcuY2dpP2lkPTU5OTAgKi8KKy5pbmZvUm93IC52YWx1ZSBkaXYgeworICAgIHdpZHRo
OiAxMDAlOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBz
aXM7CisgICAgLWFwcGxlLXVzZXItc2VsZWN0OiB0ZXh0OworfQorCisjZWxlbWVudEF0dHJpYnV0
ZXMgeworICAgIGRpc3BsYXk6IC1hcHBsZS1ib3g7CisgICAgLWFwcGxlLWJveC1mbGV4OiAzOwor
ICAgIC1hcHBsZS1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgICBtaW4taGVpZ2h0OiA2MHB4Owor
ICAgIG1heC1oZWlnaHQ6IDE2MHB4OworfQorCisjbm9kZUNvbnRlbnRzIHsKKyAgICBkaXNwbGF5
OiAtYXBwbGUtYm94OworICAgIC1hcHBsZS1ib3gtZmxleDogMTI7CisgICAgLWFwcGxlLWJveC1v
cmllbnQ6IHZlcnRpY2FsOworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CisKKyNub2RlQ29udGVu
dHNTY3JvbGx2aWV3IHsKKyAgICAtYXBwbGUtZGFzaGJvYXJkLXJlZ2lvbjogZGFzaGJvYXJkLXJl
Z2lvbihjb250cm9sIHJlY3RhbmdsZSk7CisgICAgLWFwcGxlLXVzZXItc2VsZWN0OiB0ZXh0Owor
ICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgZm9udC1zaXplOiAxMXB4OworICAgIHdvcmQtd3Jh
cDogYnJlYWstd29yZDsKK30KKworLnNjcm9sbEFyZWEgeworICAgIGRpc3BsYXk6IC1hcHBsZS1i
b3g7CisgICAgLWFwcGxlLWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgLWFwcGxlLWJveC1m
bGV4OiAxOworfQorCisuc2Nyb2xsQXJlYSA+IC52aWV3IHsKKyAgICBwb3NpdGlvbjogcmVsYXRp
dmU7CisgICAgZGlzcGxheTogLWFwcGxlLWJveDsKKyAgICAtYXBwbGUtYm94LWZsZXg6IDE7Cit9
CisKKy5zY3JvbGxBcmVhID4gLnZpZXcgPiBkaXYgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICB0b3A6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7
CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKK30KKworLnNjcm9sbEFyZWEgPiAuc2Nyb2xsYmFyIHsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgbWFyZ2luLWxlZnQ6IDNweDsKKyAgICB3aWR0
aDogMTlweDsKKyAgICAtYXBwbGUtZGFzaGJvYXJkLXJlZ2lvbjogZGFzaGJvYXJkLXJlZ2lvbihj
b250cm9sIHJlY3RhbmdsZSk7Cit9CisKKyNzdHlsZVBhbmUgeworICAgIGRpc3BsYXk6IC1hcHBs
ZS1ib3g7CisgICAgLWFwcGxlLWJveC1mbGV4OiAxOworICAgIC1hcHBsZS1ib3gtb3JpZW50OiB2
ZXJ0aWNhbDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworfQorCisjc3R5bGVSdWxlcyB7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjIpOworICAgIGJvcmRlcjogMXB4IHNvbGlk
IHJnYmEoMjU1LDI1NSwyNTUsMC40KTsKKyAgICBtYXJnaW4tYm90dG9tOiA2cHg7Cit9CisKKyNz
dHlsZVJ1bGVzU2Nyb2xsdmlldyB7CisgICAgZGlzcGxheTogLWFwcGxlLWJveDsKKyAgICAtYXBw
bGUtYm94LW9yaWVudDogdmVydGljYWw7CisgICAgLWFwcGxlLWRhc2hib2FyZC1yZWdpb246IGRh
c2hib2FyZC1yZWdpb24oY29udHJvbCByZWN0YW5nbGUpOworICAgIC1hcHBsZS1ib3gtZmxleDog
MTsKK30KKworI3N0eWxlUnVsZXNTY3JvbGx2aWV3ID4gLnJvdyB7CisgICAgcGFkZGluZzogMXB4
IDZweDsKKyAgICBtYXJnaW46IDJweCAwIDAgM3B4OworfQorCisjc3R5bGVSdWxlc1Njcm9sbHZp
ZXcgPiAucm93LmZvY3VzZWQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTI4LDEyOCwy
NTUsMC4yNSk7CisgICAgYm9yZGVyLXJhZGl1czogNnB4OworICAgIHRleHQtc2hhZG93OiBibGFj
ayAxcHggMnB4IDNweDsKK30KKworI3N0eWxlUnVsZXNTY3JvbGx2aWV3ID4gLnJvdyA+IC5jZWxs
IHsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwor
ICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisKKyNzdHlsZVJ1bGVzU2Nyb2xsdmlldyAuY2Vs
bC5zdHlsZXNoZWV0IHsKKyAgICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjYpOworICAgIGZv
bnQtc2l6ZTogMTBweDsKKyAgICBwYWRkaW5nLWJvdHRvbTogMnB4OworfQorCisjc3R5bGVQcm9w
ZXJ0aWVzIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDAuMik7CisgICAgYm9y
ZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjQpOworICAgIC1hcHBsZS1ib3gtZmxl
eDogMTsKKyAgICAtYXBwbGUtZGFzaGJvYXJkLXJlZ2lvbjogZGFzaGJvYXJkLXJlZ2lvbihjb250
cm9sIHJlY3RhbmdsZSk7Cit9CisKKy50cmVlTGlzdCB7CisgICAgcGFkZGluZzogM3B4IDA7Cisg
ICAgbWFyZ2luOiAwOworICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKKyAgICB3aGl0ZS1zcGFj
ZTogbm93cmFwOworfQorCisudHJlZUxpc3QgdWwgeworICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9u
ZTsKKyAgICAtYXBwbGUtcGFkZGluZy1zdGFydDogMTBweDsKK30KKworLnRyZWVMaXN0IGxpIHsK
KyAgICBsaW5lLWhlaWdodDogMTRweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgcGFkZGluZy1s
ZWZ0OiAxNHB4OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgdGV4dC1vdmVyZmxvdzogZWxs
aXBzaXM7Cit9CisKKy50cmVlTGlzdCBsaSBidXR0b24geworICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKKyAgICB0b3A6IDRweDsKKyAgICBsZWZ0OiAxcHg7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAg
YmFja2dyb3VuZC1pbWFnZTogdXJsKCBJbWFnZXMvcmlnaHRUcmlhbmdsZS5wbmcgKTsKKyAgICB3
aWR0aDogOHB4OworICAgIGhlaWdodDogOHB4OworICAgIGJvcmRlcjogMDsKKyAgICBtYXJnaW46
IDAgMnB4OworICAgIHBhZGRpbmc6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJl
bnQ7Cit9CisKKy50cmVlTGlzdCBsaS5oYXNDaGlsZHJlbiB7CisgICAgcGFkZGluZy1sZWZ0OiAy
cHg7Cit9CisKKy50cmVlTGlzdCBsaS5mb2N1c2VkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2JhKDEyOCwxMjgsMjU1LDAuMjUpOworICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKyAgICB0ZXh0
LXNoYWRvdzogYmxhY2sgMXB4IDJweCAzcHg7Cit9CisKKy50cmVlTGlzdCBsaS5leHBhbmRlZCBi
dXR0b24geworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCggSW1hZ2VzL2Rvd25UcmlhbmdsZS5w
bmcgKTsKK30KKworLnRyZWVMaXN0IGxpIHNwYW4geworICAgIC1hcHBsZS11c2VyLXNlbGVjdDog
dGV4dDsKK30KKworLnRyZWVMaXN0IGxpIC5wcm9wZXJ0eTo6YWZ0ZXIgeworICAgIGNvbnRlbnQ6
ICI6ICI7Cit9CisKKy50cmVlTGlzdCBsaSAudmFsdWUgeworICAgIGNvbG9yOiByZ2IoMjU1LDI1
NSwxODApOworfQorCisudHJlZUxpc3QgbGkuaW1wbGljaXQgLnZhbHVlIHsKKyAgICBjb2xvcjog
cmdiKDE4MCwyNTUsMTgwKTsKK30KKworLnRyZWVMaXN0IGxpIC52YWx1ZTo6YWZ0ZXIgeworICAg
IGNvbnRlbnQ6ICI7IjsKK30KKworLnRyZWVMaXN0IGxpLm92ZXJsb2FkZWQgeworICAgIHRleHQt
ZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViSW5z
cGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL2luc3BlY3Rvci5jc3MKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1l
OiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9jc3MKCkluZGV4OiBXZWJJbnNwZWN0b3Iuc3VicHJv
ai9XZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkluc3BlY3Rvci5z
dWJwcm9qL1dlYkluc3BlY3Rvck91dGxpbmVWaWV3LmgJKHJldmlzaW9uIDApCisrKyBXZWJJbnNw
ZWN0b3Iuc3VicHJvai9XZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEFwcEtpdC9OU091dGxpbmVWaWV3
Lmg+CisKK0BpbnRlcmZhY2UgV2ViSW5zcGVjdG9yT3V0bGluZVZpZXcgOiBOU091dGxpbmVWaWV3
CitAZW5kCkluZGV4OiBXZWJJbnNwZWN0b3Iuc3VicHJvai9XZWJOb2RlSGlnaGxpZ2h0Lm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViSW5zcGVjdG9yLnN1YnByb2ovV2ViTm9kZUhpZ2hsaWdodC5tCShyZXZp
c2lvbiAwKQorKysgV2ViSW5zcGVjdG9yLnN1YnByb2ovV2ViTm9kZUhpZ2hsaWdodC5tCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
IAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxtYWNoL21h
Y2hfdGltZS5oPgorI2ltcG9ydCAiV2ViTm9kZUhpZ2hsaWdodFZpZXcuaCIKKyNpbXBvcnQgIldl
Yk5vZGVIaWdobGlnaHQuaCIKKworQGltcGxlbWVudGF0aW9uIFdlYk5vZGVIaWdobGlnaHQKKy0g
KGlkKWluaXRXaXRoQm91bmRzOihOU1JlY3QpIGJvdW5kcyBhbmRSZWN0czooTlNBcnJheSAqKSBy
ZWN0cyBmb3JWaWV3OihOU1ZpZXcgKikgdmlldworeworICAgIGlmICghW3NlbGYgaW5pdF0pCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfc3RhcnRUaW1lID0gMC4wOworICAgIF9kdXJhdGlv
biA9IDMuMDsKKworICAgIGlmIChbW1tOU0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBj
dXJyZW50RXZlbnRdIG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCisgICAgICAgIF9k
dXJhdGlvbiA9IDYuMDsKKworICAgIGlmICghcmVjdHMpCisgICAgICAgIHJlY3RzID0gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Ym91bmRzXV07CisKKyAg
ICBfd2ViTm9kZUhpZ2hsaWdodFZpZXcgPSBbW1dlYk5vZGVIaWdobGlnaHRWaWV3IGFsbG9jXSBp
bml0V2l0aEhpZ2hsaWdodDpzZWxmIGFuZFJlY3RzOnJlY3RzIGZvclZpZXc6dmlld107CisgICAg
aWYgKCFfd2ViTm9kZUhpZ2hsaWdodFZpZXcpIHsKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07Cisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgLy8gYWRqdXN0IHNpemUgYW5kIHBvc2l0
aW9uIGZvciByZWN0IHBhZGRpbmcgdGhhdCB0aGUgdmlldyBhZGRzCisgICAgYm91bmRzLm9yaWdp
bi55IC09IDMuMDsKKyAgICBib3VuZHMub3JpZ2luLnggLT0gMy4wOworICAgIGJvdW5kcy5zaXpl
ID0gW193ZWJOb2RlSGlnaGxpZ2h0VmlldyBmcmFtZV0uc2l6ZTsKKworICAgIE5TUmVjdCB3aW5k
b3dCb3VuZHMgPSBbdmlldyBjb252ZXJ0UmVjdDpib3VuZHMgdG9WaWV3Om5pbF07CisgICAgd2lu
ZG93Qm91bmRzLm9yaWdpbiA9IFtbdmlldyB3aW5kb3ddIGNvbnZlcnRCYXNlVG9TY3JlZW46d2lu
ZG93Qm91bmRzLm9yaWdpbl07IC8vIGFkanVzdCBmb3Igc2NyZWVuIGNvb3JkcworCisgICAgX3dl
Yk5vZGVIaWdobGlnaHRXaW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRS
ZWN0OndpbmRvd0JvdW5kcyBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5n
Ok5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAgICBbX3dlYk5vZGVIaWdobGln
aHRXaW5kb3cgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGNsZWFyQ29sb3JdXTsKKyAgICBb
X3dlYk5vZGVIaWdobGlnaHRXaW5kb3cgc2V0T3BhcXVlOk5PXTsKKyAgICBbX3dlYk5vZGVIaWdo
bGlnaHRXaW5kb3cgc2V0SGFzU2hhZG93Ok5PXTsKKyAgICBbX3dlYk5vZGVIaWdobGlnaHRXaW5k
b3cgc2V0SWdub3Jlc01vdXNlRXZlbnRzOllFU107CisgICAgW193ZWJOb2RlSGlnaGxpZ2h0V2lu
ZG93IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpZRVNdOworICAgIFtfd2ViTm9kZUhpZ2hsaWdodFdp
bmRvdyBzZXRMZXZlbDpbW3ZpZXcgd2luZG93XSBsZXZlbF0gKyAxXTsKKyAgICBbX3dlYk5vZGVI
aWdobGlnaHRXaW5kb3cgc2V0Q29udGVudFZpZXc6X3dlYk5vZGVIaWdobGlnaHRWaWV3XTsKKyAg
ICBbX3dlYk5vZGVIaWdobGlnaHRWaWV3IHJlbGVhc2VdOworCisgICAgW193ZWJOb2RlSGlnaGxp
Z2h0V2luZG93IG9yZGVyRnJvbnQ6c2VsZl07CisKKyAgICAvLyAzMCBmcmFtZXMgcGVyIHNlY29u
ZCB0aW1lIGludGVydmFsIHdpbGwgcGxheSB3ZWxsIHdpdGggdGhlIENQVSBhbmQgc3RpbGwgbG9v
ayBzbW9vdGgKKyAgICBfdGltZXIgPSBbW05TVGltZXIgc2NoZWR1bGVkVGltZXJXaXRoVGltZUlu
dGVydmFsOigxLjAgLyAzMC4wKSB0YXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmVkcmF3
OikgdXNlckluZm86bmlsIHJlcGVhdHM6WUVTXSByZXRhaW5dOworCisgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihleHBpcmUpIG5hbWU6TlNWaWV3Qm91bmRzRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVj
dDp2aWV3XTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGV4cGlyZSkgbmFtZTpOU1ZpZXdCb3VuZHNE
aWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Olt2aWV3IHN1cGVydmlld11dOworICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IoZXhwaXJlKSBuYW1lOk5TV2luZG93V2lsbE1vdmVOb3RpZmljYXRpb24gb2Jq
ZWN0Olt2aWV3IHdpbmRvd11dOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZXhwaXJlKSBuYW1lOk5T
V2luZG93V2lsbENsb3NlTm90aWZpY2F0aW9uIG9iamVjdDpbdmlldyB3aW5kb3ddXTsKKworICAg
IHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpOU1ZpZXdC
b3VuZHNEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNXaW5k
b3dXaWxsTW92ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpOU1dpbmRvd1dp
bGxDbG9zZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKworICAgIFtfdGltZXIgaW52YWxpZGF0
ZV07CisgICAgW190aW1lciByZWxlYXNlXTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKwor
LSAoZG91YmxlKWZyYWN0aW9uQ29tcGxldGUKK3sKKyAgICBpZiAoX3N0YXJ0VGltZSA9PSAwLjAp
CisgICAgICAgIF9zdGFydFRpbWUgPSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKTsKKworICAg
IHJldHVybiAoKENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIC0gX3N0YXJ0VGltZSkgLyBfZHVy
YXRpb24pOworfQorCistICh2b2lkKWV4cGlyZQoreworICAgIFtfdGltZXIgaW52YWxpZGF0ZV07
CisgICAgW190aW1lciByZWxlYXNlXTsKKyAgICBfdGltZXIgPSBuaWw7CisKKyAgICBbX3dlYk5v
ZGVIaWdobGlnaHRXaW5kb3cgY2xvc2VdOworICAgIF93ZWJOb2RlSGlnaGxpZ2h0V2luZG93ID0g
bmlsOworCisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90
aWZpY2F0aW9uTmFtZTpAIldlYk5vZGVIaWdobGlnaHRFeHBpcmVkIiBvYmplY3Q6c2VsZiB1c2Vy
SW5mbzpuaWxdOworfQorCistICh2b2lkKXJlZHJhdzooTlNUaW1lciAqKSB0aW1lcgoreworICAg
IFtfd2ViTm9kZUhpZ2hsaWdodFZpZXcgc2V0TmVlZHNEaXNwbGF5OllFU107ICAgIAorCisgICAg
aWYgKF9zdGFydFRpbWUgPT0gMC4wKQorICAgICAgICBfc3RhcnRUaW1lID0gQ0ZBYnNvbHV0ZVRp
bWVHZXRDdXJyZW50KCk7CisKKyAgICBpZiAoKENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIC0g
X3N0YXJ0VGltZSkgPiBfZHVyYXRpb24pCisgICAgICAgIFtzZWxmIGV4cGlyZV07Cit9CitAZW5k
CkluZGV4OiBXZWJJbnNwZWN0b3Iuc3VicHJvai9XZWJJbnNwZWN0b3JJbnRlcm5hbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkluc3BlY3Rvci5zdWJwcm9qL1dlYkluc3BlY3RvckludGVybmFsLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJJbnNwZWN0b3Iuc3VicHJvai9XZWJJbnNwZWN0b3JJbnRlcm5hbC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGhl
YWRlciBjb250YWlucyBXZWJJbnNwZWN0b3IgZGVjbGFyYXRpb25zIHRoYXQgY2FuIGJlIHVzZWQg
YW55d2hlcmUgaW4gdGhlIFdlYiBLaXQsIGJ1dCBhcmUgbmVpdGhlciBTUEkgbm9yIEFQSS4KKwor
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU09iamVjdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkluc3Bl
Y3Rvci5oPgorI2ltcG9ydCA8V2ViS2l0L0RPTUNvcmUuaD4KKworQGNsYXNzIFdlYkZyYW1lOwor
QGNsYXNzIE5TVmlldzsKK0BjbGFzcyBOU1BvcFVwQnV0dG9uOworQGNsYXNzIE5TU2VnbWVudGVk
Q29udHJvbDsKK0BjbGFzcyBOU1NlYXJjaEZpZWxkOworQGNsYXNzIE5TVGFiVmlldzsKK0BjbGFz
cyBOU1RleHRGaWVsZDsKK0BjbGFzcyBOU1RhYmxlVmlldzsKK0BjbGFzcyBOU091dGxpbmVWaWV3
OworQGNsYXNzIE5TVGV4dFZpZXc7CitAY2xhc3MgTlNXaW5kb3c7CitAY2xhc3MgTlNOb3RpZmlj
YXRpb247CitAY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKK0BjbGFzcyBET01DU1NSdWxlTGlzdDsK
KworQGludGVyZmFjZSBXZWJJbnNwZWN0b3JQcml2YXRlIDogTlNPYmplY3QKK3sKK0BwdWJsaWMK
KyAgICBXZWJWaWV3ICp3ZWJWaWV3OworICAgIERPTUhUTUxEb2N1bWVudCAqZG9tRG9jdW1lbnQ7
CisgICAgV2ViRnJhbWUgKndlYkZyYW1lOworICAgIERPTU5vZGUgKnJvb3ROb2RlOworICAgIERP
TU5vZGUgKmZvY3VzZWROb2RlOworICAgIE5TU3RyaW5nICpzZWFyY2hRdWVyeTsKKyAgICBOU011
dGFibGVTZXQgKm5vZGVDYWNoZTsKKyAgICBOU011dGFibGVBcnJheSAqc2VhcmNoUmVzdWx0czsK
KyAgICBOU1Njcm9sbFZpZXcgKnRyZWVTY3JvbGxWaWV3OworICAgIE5TT3V0bGluZVZpZXcgKnRy
ZWVPdXRsaW5lVmlldzsKKyAgICBET01DU1NSdWxlTGlzdCAqbWF0Y2hlZFJ1bGVzOworICAgIFdl
Yk5vZGVIaWdobGlnaHQgKmN1cnJlbnRIaWdobGlnaHQ7CisgICAgTlNJbWFnZSAqcmlnaHRBcnJv
d0ltYWdlOworICAgIE5TSW1hZ2UgKmRvd25BcnJvd0ltYWdlOworICAgIEJPT0wgaWdub3JlV2hp
dGVzcGFjZTsKKyAgICBCT09MIHdpbmRvd0xvYWRlZDsKKyAgICBCT09MIHdlYlZpZXdMb2FkZWQ7
CisgICAgQk9PTCBzZWFyY2hSZXN1bHRzVmlzaWJsZTsKKyAgICBCT09MIHByZXZlbnRIaWdobGln
aHQ7CisgICAgQk9PTCBwcmV2ZW50UmV2ZWFsT25Gb2N1czsKKyAgICBCT09MIHByZXZlbnRTZWxl
Y3Rpb25SZWZvY3VzOworICAgIEJPT0wgaXNTaGFyZWRJbnNwZWN0b3I7Cit9CitAZW5kCisKK0Bp
bnRlcmZhY2UgV2ViSW5zcGVjdG9yIChXZWJJbnNwZWN0b3JQcml2YXRlKSA8RE9NRXZlbnRMaXN0
ZW5lcj4KKy0gKHZvaWQpX2hpZ2hsaWdodE5vZGU6KERPTU5vZGUgKikgbm9kZTsKKy0gKHZvaWQp
X3JldmVhbEFuZFNlbGVjdE5vZGVJblRyZWU6KERPTU5vZGUgKikgbm9kZTsKKy0gKHZvaWQpX3Vw
ZGF0ZTsKKy0gKHZvaWQpX3VwZGF0ZVJvb3Q7CistICh2b2lkKV91cGRhdGVUcmVlU2Nyb2xsYmFy
OworLSAodm9pZClfc2hvd1NlYXJjaFJlc3VsdHM6KEJPT0wpIHNob3c7CistICh2b2lkKV9yZWZy
ZXNoU2VhcmNoOworQGVuZAorCitAaW50ZXJmYWNlIERPTUhUTUxFbGVtZW50IChET01IVE1MRWxl
bWVudEluc3BlY3RvckFkZGl0aW9ucykKKy0gKHZvaWQpX2FkZENsYXNzTmFtZTooTlNTdHJpbmcg
KikgbmFtZTsKKy0gKHZvaWQpX3JlbW92ZUNsYXNzTmFtZTooTlNTdHJpbmcgKikgbmFtZTsKK0Bl
bmQKKworQGludGVyZmFjZSBET01Ob2RlIChET01Ob2RlSW5zcGVjdG9yQWRkaXRpb25zKQorLSAo
TlNTdHJpbmcgKilfY29udGVudFByZXZpZXc7CisKKy0gKEJPT0wpX2lzQW5jZXN0b3JPZk5vZGU6
KERPTU5vZGUgKikgbm9kZTsKKy0gKEJPT0wpX2lzRGVzY2VuZGFudE9mTm9kZTooRE9NTm9kZSAq
KSBub2RlOworCistIChCT09MKV9pc1doaXRlc3BhY2U7CisKKy0gKHVuc2lnbmVkIGxvbmcpX2xl
bmd0aE9mQ2hpbGROb2Rlc0lnbm9yaW5nV2hpdGVzcGFjZTsKKy0gKERPTU5vZGUgKilfY2hpbGRO
b2RlQXRJbmRleElnbm9yaW5nV2hpdGVzcGFjZToodW5zaWduZWQgbG9uZykgbm9kZUluZGV4Owor
CistIChET01Ob2RlICopX25leHRTaWJsaW5nU2tpcHBpbmdXaGl0ZXNwYWNlOworLSAoRE9NTm9k
ZSAqKV9wcmV2aW91c1NpYmxpbmdTa2lwcGluZ1doaXRlc3BhY2U7CisKKy0gKERPTU5vZGUgKilf
Zmlyc3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZTsKKy0gKERPTU5vZGUgKilfbGFzdENoaWxkU2tp
cHBpbmdXaGl0ZXNwYWNlOworCistIChET01Ob2RlICopX2ZpcnN0QW5jZXN0b3JDb21tb25XaXRo
Tm9kZTooRE9NTm9kZSAqKSBub2RlOworCistIChET01Ob2RlICopX3RyYXZlcnNlTmV4dE5vZGVT
dGF5aW5nV2l0aGluOihET01Ob2RlICopIHN0YXlXaXRoaW47CistIChET01Ob2RlICopX3RyYXZl
cnNlTmV4dE5vZGVTa2lwcGluZ1doaXRlc3BhY2VTdGF5aW5nV2l0aGluOihET01Ob2RlICopIHN0
YXlXaXRoaW47CistIChET01Ob2RlICopX3RyYXZlcnNlUHJldmlvdXNOb2RlOworLSAoRE9NTm9k
ZSAqKV90cmF2ZXJzZVByZXZpb3VzTm9kZVNraXBwaW5nV2hpdGVzcGFjZTsKKworLSAoTlNTdHJp
bmcgKilfbm9kZVR5cGVOYW1lOworLSAoTlNTdHJpbmcgKilfc2hvcnREaXNwbGF5TmFtZTsKKy0g
KE5TU3RyaW5nICopX2Rpc3BsYXlOYW1lOworQGVuZAorCitAaW50ZXJmYWNlIE5TV2luZG93IChO
U1dpbmRvd0NvbnRlbnRTaGFkb3cpCistICh2b2lkKV9zZXRDb250ZW50SGFzU2hhZG93OihCT09M
KWhhc1NoYWRvdzsKK0BlbmQKSW5kZXg6IFdlYkluc3BlY3Rvci5zdWJwcm9qL1dlYkluc3BlY3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkluc3BlY3Rvci5zdWJwcm9qL1dlYkluc3BlY3Rvci5oCShy
ZXZpc2lvbiAwKQorKysgV2ViSW5zcGVjdG9yLnN1YnByb2ovV2ViSW5zcGVjdG9yLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAK
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8QXBwS2l0L05T
V2luZG93Q29udHJvbGxlci5oPgorCitAY2xhc3MgV2ViRnJhbWU7CitAY2xhc3MgV2ViSW5zcGVj
dG9yUHJpdmF0ZTsKK0BjbGFzcyBET01Ob2RlOworCitAaW50ZXJmYWNlIFdlYkluc3BlY3RvciA6
IE5TV2luZG93Q29udHJvbGxlcgoreworQHByaXZhdGUKKyAgICBXZWJJbnNwZWN0b3JQcml2YXRl
ICpfcHJpdmF0ZTsKK30KKysgKFdlYkluc3BlY3RvciAqKXNoYXJlZFdlYkluc3BlY3RvcjsKKwor
LSAoaWQpaW5pdFdpdGhXZWJGcmFtZTooV2ViRnJhbWUgKikgd2ViRnJhbWU7CisKKy0gKHZvaWQp
c2V0V2ViRnJhbWU6KFdlYkZyYW1lICopIHdlYkZyYW1lOworLSAoV2ViRnJhbWUgKil3ZWJGcmFt
ZTsKKworLSAodm9pZClzZXRSb290RE9NTm9kZTooRE9NTm9kZSAqKSBub2RlOworLSAoRE9NTm9k
ZSAqKXJvb3RET01Ob2RlOworCistICh2b2lkKXNldEZvY3VzZWRET01Ob2RlOihET01Ob2RlICop
IG5vZGU7CistIChET01Ob2RlICopZm9jdXNlZERPTU5vZGU7CisKKy0gKHZvaWQpc2V0U2VhcmNo
UXVlcnk6KE5TU3RyaW5nICopIHF1ZXJ5OworLSAoTlNTdHJpbmcgKilzZWFyY2hRdWVyeTsKKwor
LSAoTlNBcnJheSAqKXNlYXJjaFJlc3VsdHM7CitAZW5kCkluZGV4OiBXZWJJbnNwZWN0b3Iuc3Vi
cHJvai9XZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkluc3BlY3Rv
ci5zdWJwcm9qL1dlYkluc3BlY3Rvck91dGxpbmVWaWV3Lm0JKHJldmlzaW9uIDApCisrKyBXZWJJ
bnNwZWN0b3Iuc3VicHJvai9XZWJJbnNwZWN0b3JPdXRsaW5lVmlldy5tCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkluc3BlY3Rvck91dGxp
bmVWaWV3LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JPdXRsaW5lVmlldworLSAo
Qk9PTClpc09wYXF1ZQoreworICAgIHJldHVybiBOTzsKK30KKworLSAoTlNDb2xvciAqKV9oaWdo
bGlnaHRDb2xvckZvckNlbGw6KE5TQ2VsbCAqKSBjZWxsCit7CisgICAgLy8gcmV0dXJuIG5pbCB0
byBwcmV2ZW50IG5vcm1hbCBzZWxlY3Rpb24gZHJhd2luZworICAgIHJldHVybiBuaWw7Cit9CisK
Ky0gKHZvaWQpX2hpZ2hsaWdodFJvdzooaW50KSByb3cgY2xpcFJlY3Q6KE5TUmVjdCkgY2xpcCB7
CisgICAgTlNDb2xvciAqc2VsZWN0aW9uQ29sb3IgPSBuaWw7CisgICAgaWYgKFtbc2VsZiB3aW5k
b3ddIGZpcnN0UmVzcG9uZGVyXSA9PSBzZWxmICYmIFtbc2VsZiB3aW5kb3ddIGlzS2V5V2luZG93
XSkKKyAgICAgICAgc2VsZWN0aW9uQ29sb3IgPSBbW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRD
b250cm9sQ29sb3JdIGNvbG9yV2l0aEFscGhhQ29tcG9uZW50OjAuMzMzXTsKKyAgICBzZWxlY3Rp
b25Db2xvciA9IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0gY29sb3JX
aXRoQWxwaGFDb21wb25lbnQ6MC40NV07CisKKyAgICBpZiAoW3NlbGYgbnVtYmVyT2ZDb2x1bW5z
XSA+IDApIHsKKyAgICAgICAgTlNSZWN0IGhpZ2hsaWdodCA9IFtzZWxmIHJlY3RPZlJvdzpyb3dd
OworICAgICAgICBOU1JlY3QgZHJhd1JlY3QgPSBOU0ludGVyc2VjdGlvblJlY3QoY2xpcCwgaGln
aGxpZ2h0KTsKKyAgICAgICAgQk9PTCBzb2xpZCA9IChbW3NlbGYgd2luZG93XSBmaXJzdFJlc3Bv
bmRlcl0gPT0gc2VsZiAmJiBbW3NlbGYgd2luZG93XSBpc0tleVdpbmRvd10pOworICAgICAgICBp
ZiAoTlNDb250YWluc1JlY3QoZHJhd1JlY3QsY2xpcCkgJiYgIU5TRXF1YWxSZWN0cyhkcmF3UmVj
dCxoaWdobGlnaHQpKSB7CisgICAgICAgICAgICAvLyBkcmF3IGEgc29saWQgcmVjdCB3aGVuIHRo
ZSBvdXRsaW5lIHZpZXcgd2FudHMgdG8gZHJhdyBpbnNpZGUgdGhlIHJvdyByZWN0CisgICAgICAg
ICAgICBpZiAoW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0RHJhd2luZ1RvU2NyZWVu
XSAmJiBzb2xpZCkgeworICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25Db2xvciBzZXRdOworICAg
ICAgICAgICAgICAgIE5TUmVjdEZpbGxVc2luZ09wZXJhdGlvbihkcmF3UmVjdCwgTlNDb21wb3Np
dGVTb3VyY2VPdmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIGRyYXcgYSByb3VuZGVkIHJlY3QgZm9yIHRoZSBmdWxsIHJvdworICAgICAgICAgICAg
aWYgKFtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dERyYXdpbmdUb1NjcmVlbl0pIHsK
KyAgICAgICAgICAgICAgICBOU0JlemllclBhdGggKnBhdGggPSBbW05TQmV6aWVyUGF0aCBhbGxv
Y10gaW5pdF07CisKKyAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSA2LjA7CisgICAgICAg
ICAgICAgICAgTlNSZWN0IGlyZWN0ID0gTlNJbnNldFJlY3QoaGlnaGxpZ2h0LCByYWRpdXMsIHJh
ZGl1cyk7CisgICAgICAgICAgICAgICAgaWYgKCFzb2xpZCkKKyAgICAgICAgICAgICAgICAgICAg
aXJlY3QgPSBOU0luc2V0UmVjdChpcmVjdCwgMS4wLCAxLjApOworICAgICAgICAgICAgICAgIFtw
YXRoIGFwcGVuZEJlemllclBhdGhXaXRoQXJjV2l0aENlbnRlcjpOU01ha2VQb2ludChOU01pblgo
aXJlY3QpLCBOU01pblkoaXJlY3QpKSByYWRpdXM6cmFkaXVzIHN0YXJ0QW5nbGU6MTgwLiBlbmRB
bmdsZToyNzAuXTsKKyAgICAgICAgICAgICAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aEFy
Y1dpdGhDZW50ZXI6TlNNYWtlUG9pbnQoTlNNYXhYKGlyZWN0KSwgTlNNaW5ZKGlyZWN0KSkgcmFk
aXVzOnJhZGl1cyBzdGFydEFuZ2xlOjI3MC4gZW5kQW5nbGU6MzYwLl07CisgICAgICAgICAgICAg
ICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhBcmNXaXRoQ2VudGVyOk5TTWFrZVBvaW50KE5T
TWF4WChpcmVjdCksIE5TTWF4WShpcmVjdCkpIHJhZGl1czpyYWRpdXMgc3RhcnRBbmdsZTowLiBl
bmRBbmdsZTo5MC5dOworICAgICAgICAgICAgICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRo
QXJjV2l0aENlbnRlcjpOU01ha2VQb2ludChOU01pblgoaXJlY3QpLCBOU01heFkoaXJlY3QpKSBy
YWRpdXM6cmFkaXVzIHN0YXJ0QW5nbGU6OTAuIGVuZEFuZ2xlOjE4MC5dOworICAgICAgICAgICAg
ICAgIFtwYXRoIGNsb3NlUGF0aF07CisKKyAgICAgICAgICAgICAgICBOU1JlY3RDbGlwKGNsaXAp
OworICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25Db2xvciBzZXRdOworICAgICAgICAgICAgICAg
IGlmIChzb2xpZCkgeworICAgICAgICAgICAgICAgICAgICBbcGF0aCBmaWxsXTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBbcGF0aCBzZXRMaW5lV2lkdGg6
Mi4wXTsKKyAgICAgICAgICAgICAgICAgICAgW3BhdGggc3Ryb2tlXTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBbcGF0aCByZWxlYXNlXTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKworLSAodm9pZClkcmF3QmFja2dyb3VuZEluQ2xpcFJlY3Q6KE5T
UmVjdCkgY2xpcFJlY3QKK3sKKyAgICAvLyBkb24ndCBkcmF3IGEgYmFja2dyb3VuZAorfQorQGVu
ZApJbmRleDogV2ViSW5zcGVjdG9yLnN1YnByb2ovV2ViSW5zcGVjdG9yUGFuZWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJJbnNwZWN0b3Iuc3VicHJvai9XZWJJbnNwZWN0b3JQYW5lbC5oCShyZXZpc2lv
biAwKQorKysgV2ViSW5zcGVjdG9yLnN1YnByb2ovV2ViSW5zcGVjdG9yUGFuZWwuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxBcHBLaXQvTlNQ
YW5lbC5oPgorCitAaW50ZXJmYWNlIFdlYkluc3BlY3RvclBhbmVsIDogTlNQYW5lbCB7CisgICAg
Qk9PTCBfbW91c2VJblJlZ2lvbjsKK30KK0BlbmQKSW5kZXg6IFdlYkluc3BlY3Rvci5zdWJwcm9q
L1dlYk5vZGVIaWdobGlnaHRWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViSW5zcGVjdG9yLnN1YnBy
b2ovV2ViTm9kZUhpZ2hsaWdodFZpZXcuaAkocmV2aXNpb24gMCkKKysrIFdlYkluc3BlY3Rvci5z
dWJwcm9qL1dlYk5vZGVIaWdobGlnaHRWaWV3LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworQGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CisKK0BpbnRlcmZhY2Ug
V2ViTm9kZUhpZ2hsaWdodFZpZXcgOiBOU1ZpZXcKK3sKKyAgICBXZWJOb2RlSGlnaGxpZ2h0ICpf
aGlnaGxpZ2h0OworICAgIE5TSW1hZ2UgKl9oaWdobGlnaHRSaW5nSW1hZ2U7Cit9CistIChpZClp
bml0V2l0aEhpZ2hsaWdodDooV2ViTm9kZUhpZ2hsaWdodCAqKSBoaWdodGxpZ2h0IGFuZFJlY3Rz
OihOU0FycmF5ICopIHJlY3RzIGZvclZpZXc6KE5TVmlldyAqKSB2aWV3OworQGVuZApJbmRleDog
V2ViVmlldy5zdWJwcm9qL1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Vmlldy5zdWJwcm9qL1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDEyMTE0KQorKysg
V2ViVmlldy5zdWJwcm9qL1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDggQEAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkcmF3Rm9v
dGVySW5SZWN0OihOU1JlY3QpcmVjdDsKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZp
ZXcgYWRkTWVzc2FnZVRvQ29uc29sZTooTlNEaWN0aW9uYXJ5ICopbWVzc2FnZTsKIAorLSAoTlNW
aWV3ICopd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6
KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50czsKKwogLy8gcmVnaW9ucyBpcyBhbiBkaWN0aW9uYXJ5
IHdob3NlIGtleXMgYXJlIHJlZ2lvbnMgbGFiZWwgYW5kIHZhbHVlcyBhcmUgYXJyYXlzIG9mIFdl
YkRhc2hib2FyZFJlZ2lvbnMuCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRh
c2hib2FyZFJlZ2lvbnNDaGFuZ2VkOihOU0RpY3Rpb25hcnkgKilyZWdpb25zOwogCkluZGV4OiBX
ZWJWaWV3LnN1YnByb2ovV2ViVmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYlZpZXcuc3VicHJvai9X
ZWJWaWV3Lm0JKHJldmlzaW9uIDEyMTE0KQorKysgV2ViVmlldy5zdWJwcm9qL1dlYlZpZXcubQko
d29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYkljb25E
YXRhYmFzZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9ycy5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYktpdExvZ2dpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJMb2NhbGl6YWJsZVN0cmlu
Z3MuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXROU1N0cmluZ0V4dHJhcy5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYktpdFN0YXRpc3RpY3NQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNE
YXRhRXh0cmFzLmg+CkBAIC04Miw2ICs4Myw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVGV4dFJl
bmRlcmVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVUlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYlVJRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViSW5zcGVjdG9y
Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KIAogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlRW5jb2RpbmdzLmg+CkBAIC03MzMsNiArNzM1LDI3IEBAIHN0YXRpYyBib29sIGRl
YnVnV2lkZ2V0ID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAorI2lmZGVmIE5ERUJVRworICAg
IEJPT0wgZW5hYmxlSW5zcGVjdEVsZW1lbnQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0RW5hYmxlSW5zcGVjdEVsZW1lbnRDb250ZXh0
TWVudUl0ZW0iXTsKKyNlbHNlCisgICAgQk9PTCBlbmFibGVJbnNwZWN0RWxlbWVudCA9IFlFUzsg
Ly8gYWx3YXlzIGVuYWJsZSBpbiBkZWJ1ZyBidWlsZHMKKyNlbmRpZgorCisgICAgLy8gb3B0aW9u
YWxseSBhZGQgdGhlIEluc3BlY3QgRWxlbWVudCBtZW51IGl0ZW0gaXQgaWYgcHJlZmVyZW5jZSBp
cyBzZXQgb3IgaW4gZGVidWcgYnVpbGRzCisgICAgLy8gYW5kIG9ubHkgc2hvd2luZyB0aGUgbWVu
dSBpdGVtIGlmIHdlIGFyZSB3b3JraW5nIHdpdGggYSBXZWJIVE1MVmlldworICAgIFdlYkZyYW1l
ICp3ZWJGcmFtZSA9IFtlbGVtZW50IG9iamVjdEZvcktleTpXZWJFbGVtZW50RnJhbWVLZXldOwor
ICAgIGlmIChlbmFibGVJbnNwZWN0RWxlbWVudCAmJiBbW1t3ZWJGcmFtZSBmcmFtZVZpZXddIGRv
Y3VtZW50Vmlld10gaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkgeworICAgICAg
ICBpZiAoIW1lbnUpCisgICAgICAgICAgICBtZW51ID0gW1tbTlNNZW51IGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgICAgIGVsc2UgaWYgKFttZW51IG51bWJlck9mSXRlbXNdKQorICAg
ICAgICAgICAgW21lbnUgYWRkSXRlbTpbTlNNZW51SXRlbSBzZXBhcmF0b3JJdGVtXV07CisgICAg
ICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gW1tbTlNNZW51SXRlbSBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOworICAgICAgICBbbWVudUl0ZW0gc2V0QWN0aW9uOkBzZWxlY3RvcihfaW5zcGVj
dEVsZW1lbnQ6KV07CisgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTpVSV9TVFJJTkcoIkluc3Bl
Y3QgRWxlbWVudCIsICJJbnNwZWN0IEVsZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKV07CisgICAg
ICAgIFttZW51SXRlbSBzZXRSZXByZXNlbnRlZE9iamVjdDplbGVtZW50XTsKKyAgICAgICAgW21l
bnUgYWRkSXRlbTptZW51SXRlbV07CisgICAgfQorCiAgICAgcmV0dXJuIG1lbnU7CiB9CiAKQEAg
LTIzMzgsNiArMjM2MSwyOCBAQCBzdGF0aWMgV2ViRnJhbWUgKmluY3JlbWVudEZyYW1lKFdlYkZy
YW1lCiAgICAgX3ByaXZhdGUtPmRyYWdDYXJldEJyaWRnZSA9IG5pbDsKIH0KIAorLSAodm9pZClf
aW5zcGVjdEVsZW1lbnQ6KGlkKXNlbmRlcgoreworICAgIE5TRGljdGlvbmFyeSAqZWxlbWVudCA9
IFtzZW5kZXIgcmVwcmVzZW50ZWRPYmplY3RdOworICAgIFdlYkZyYW1lICpmcmFtZSA9IFtlbGVt
ZW50IG9iamVjdEZvcktleTpXZWJFbGVtZW50RnJhbWVLZXldOworICAgIERPTU5vZGUgKm5vZGUg
PSBbZWxlbWVudCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudERPTU5vZGVLZXldOworICAgIGlmICgh
bm9kZSB8fCAhZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChbbm9kZSBub2RlVHlw
ZV0gIT0gRE9NX0VMRU1FTlRfTk9ERSB8fCBbbm9kZSBub2RlVHlwZV0gIT0gRE9NX0RPQ1VNRU5U
X05PREUpCisgICAgICAgIG5vZGUgPSBbbm9kZSBwYXJlbnROb2RlXTsKKworICAgIFdlYkluc3Bl
Y3RvciAqaW5zcGVjdG9yID0gW1dlYkluc3BlY3RvciBzaGFyZWRXZWJJbnNwZWN0b3JdOworICAg
IFtpbnNwZWN0b3Igc2V0V2ViRnJhbWU6ZnJhbWVdOworICAgIFtpbnNwZWN0b3Igc2V0Rm9jdXNl
ZERPTU5vZGU6bm9kZV07CisKKyAgICBub2RlID0gW25vZGUgcGFyZW50Tm9kZV07CisgICAgbm9k
ZSA9IFtub2RlIHBhcmVudE5vZGVdOworICAgIGlmIChub2RlKSAvLyBzZXQgdGhlIHJvb3Qgbm9k
ZSB0byBzb21ldGhpbmcgcmV0aXZhbGx5IGNsb3NlIHRvIHRoZSBmb2N1c2VkIG5vZGUKKyAgICAg
ICAgW2luc3BlY3RvciBzZXRSb290RE9NTm9kZTpub2RlXTsKKworICAgIFtpbnNwZWN0b3Igc2hv
d1dpbmRvdzpuaWxdOworfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViSUJB
Y3Rpb25zKQpJbmRleDogV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJGcmFtZUJyaWRnZS5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViRnJhbWVCcmlkZ2UubQkocmV2
aXNpb24gMTIxMTQpCisrKyBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYkZyYW1lQnJpZGdlLm0J
KHdvcmtpbmcgY29weSkKQEAgLTkwMiwxMiArOTAyLDcgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNv
bnRhaW5lcktleSA9ICAgQCJXZQogICAgIFdlYlBsdWdpbkNvbnRyb2xsZXIgKnBsdWdpbkNvbnRy
b2xsZXIgPSBbZG9jVmlldyBfcGx1Z2luQ29udHJvbGxlcl07CiAgICAgCiAgICAgLy8gU3RvcmUg
YXR0cmlidXRlcyBpbiBhIGRpY3Rpb25hcnkgc28gdGhleSBjYW4gYmUgcGFzc2VkIHRvIFdlYlBs
dWdpbnMuCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtbTlNNdXRhYmxl
RGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgdW5zaWduZWQgY291bnQgPSBbYXR0cmlidXRl
TmFtZXMgY291bnRdOwotICAgIHVuc2lnbmVkIGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OlthdHRyaWJ1dGVWYWx1ZXMg
b2JqZWN0QXRJbmRleDppXSBmb3JLZXk6W2F0dHJpYnV0ZU5hbWVzIG9iamVjdEF0SW5kZXg6aV1d
OwotICAgIH0gICAgCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmF0dHJpYnV0ZVZhbHVlcyBm
b3JLZXlzOmF0dHJpYnV0ZU5hbWVzXTsKICAgICAKICAgICBbcGx1Z2luUGFja2FnZSBsb2FkXTsK
ICAgICBDbGFzcyB2aWV3RmFjdG9yeSA9IFtwbHVnaW5QYWNrYWdlIHZpZXdGYWN0b3J5XTsKQEAg
LTkzMSw3ICs5MjYsNyBAQCBOU1N0cmluZyAqV2ViUGx1Z2luQ29udGFpbmVyS2V5ID0gICBAIldl
CiAgICAgICAgICAgICBuaWxdOwogICAgICAgICBMT0coUGx1Z2lucywgImFyZ3VtZW50czpcbiVA
IiwgYXJndW1lbnRzKTsKICAgICB9Ci0gICAgCisKICAgICB2aWV3ID0gW1dlYlBsdWdpbkNvbnRy
b2xsZXIgcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6YXJndW1lbnRzIGZyb21QbHVnaW5QYWNrYWdl
OnBsdWdpblBhY2thZ2VdOwogICAgIAogICAgIFthdHRyaWJ1dGVzIHJlbGVhc2VdOwpAQCAtOTY0
LDcgKzk1OSwyMyBAQCBOU1N0cmluZyAqV2ViUGx1Z2luQ29udGFpbmVyS2V5ID0gICBAIldlCiAg
ICAgV2ViQmFzZVBsdWdpblBhY2thZ2UgKnBsdWdpblBhY2thZ2UgPSBuaWw7CiAgICAgTlNWaWV3
ICp2aWV3ID0gbmlsOwogICAgIGludCBlcnJvckNvZGUgPSAwOwotICAgIAorCisgICAgV2ViVmll
dyAqd3YgPSBbX2ZyYW1lIHdlYlZpZXddOworICAgIGlkIHdkID0gW3d2IFVJRGVsZWdhdGVdOwor
CisgICAgaWYgKFt3ZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cGx1Z0lu
Vmlld1dpdGhBcmd1bWVudHM6KV0pIHsKKyAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYXR0
cmlidXRlcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmF0
dHJpYnV0ZVZhbHVlcyBmb3JLZXlzOmF0dHJpYnV0ZU5hbWVzXTsKKyAgICAgICAgTlNEaWN0aW9u
YXJ5ICphcmd1bWVudHMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtl
eXM6CisgICAgICAgICAgICBhdHRyaWJ1dGVzLCBXZWJQbHVnSW5BdHRyaWJ1dGVzS2V5LAorICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViUGx1Z0luTW9kZUVtYmVkXSwgV2Vi
UGx1Z0luTW9kZUtleSwKKyAgICAgICAgICAgIFVSTCwgV2ViUGx1Z0luQmFzZVVSTEtleSwgLy8g
VVJMIG1pZ2h0IGJlIG5pbCwgc28gYWRkIGl0IGxhc3QKKyAgICAgICAgICAgIG5pbF07CisgICAg
ICAgIFthdHRyaWJ1dGVzIHJlbGVhc2VdOworICAgICAgICB2aWV3ID0gW3dkIHdlYlZpZXc6d3Yg
cGx1Z0luVmlld1dpdGhBcmd1bWVudHM6YXJndW1lbnRzXTsKKyAgICAgICAgaWYgKHZpZXcpCisg
ICAgICAgICAgICByZXR1cm4gdmlldzsKKyAgICB9CisKICAgICBpZiAoW01JTUVUeXBlIGxlbmd0
aF0gIT0gMCkgewogICAgICAgICBwbHVnaW5QYWNrYWdlID0gW1tXZWJQbHVnaW5EYXRhYmFzZSBp
bnN0YWxsZWRQbHVnaW5zXSBwbHVnaW5Gb3JNSU1FVHlwZTpNSU1FVHlwZV07CiAgICAgfSBlbHNl
IHsKSW5kZXg6IEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJp
bmFyeSBmaWxlcyBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHJldmlzaW9uIDEy
MTE0KSBhbmQgRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCSh3b3JraW5nIGNvcHkp
IGRpZmZlcgo=
</data>
<flag name="review"
          id="1285"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5708</attachid>
            <date>2006-01-15 17:01:59 -0800</date>
            <delta_ts>2006-01-15 17:01:59 -0800</delta_ts>
            <desc>Images (First Cut)</desc>
            <filename>images.zip</filename>
            <type>application/zip</type>
            <size>33669</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">UEsDBBQAAAAAAHNHLzQAAAAAAAAAAAAAAAAHAAAAV2ViS2l0L1BLAwQUAAAAAAB3Ry80AAAAAAAA
AAAAAAAAHAAAAFdlYktpdC9XZWJJbnNwZWN0b3Iuc3VicHJvai9QSwMEFAAAAAAAfUcvNAAAAAAA
AAAAAAAAACkAAABXZWJLaXQvV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL1BLAwQU
AAAAAAAJSC80AAAAAAAAAAAAAAAAMAAAAFdlYktpdC9XZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJ
bnNwZWN0b3IvSW1hZ2VzL1BLAwQUAAAACAAoAXcz6mNUd0ADAAA7AwAAOQAAAFdlYktpdC9XZWJJ
bnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL2Nsb3NlLnBuZwE7A8T8iVBORw0K
GgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABGdBTUEAANbY1E9YMgAAAY5pQ0NQSUNDIFBy
b2ZpbGUAAHiclZE9SyNRFIafGxFhddM4riIIt9IUUYKysAuLYKZQ0SIbBJN0k5kxBsbJ5c716wfY
C3Zi4QdYiVjJlv6ANLK41SLsP1gQbETG4ippFPGFA895OXC+INP2lIoywFpsdHm2KCvVmuy5oZdB
APD8RM2USou8qfs/CIDf455S0dt1r6pPV6o1EA7gNCznAKdu+QfgbBplQJQAx1/1AhABkNdLZRfE
LpBtWD4EsnXLF0B2w28YEFdAIQ6aMYj/wLcgTHzI5ADjK20gcwCMV6o1aUczCzA9Al3tjldL4OwU
Bkc7Xm4IBpbh11THu/uJAMSXdrIyNQmA6CtC922a3o1Czx487qbpw3GaPp5A11+4iv11vfF8FyGu
4b3c7mZz+wOwfV9nuz8ABTiag+VPsLAD+/9g7Bz6L6H0GZa+I67NS9hbATDselGzrj0TBrI8W5Ru
K2rpRHl++KG3vy8TbhkAt6W2dbOxauSMUlEo3daaWjehzsv52J/Iy8lC4SvAE+ulc7CE4C9LAAAB
WElEQVQokY2SMUsDQRCFv10sDuUKi2s8cyF3XZDUEkjK/INgrwkGkyAiBCJYCTbBdAFbS/Fn2OQH
SNCTKLmDtHZ6yJK12ZUDBX2wxQ7vMW/mjSAHrXUN2AV2gC1gCTwAUyHEveUJQ94E9oAmIPmJFXAH
3Aoh3ixhz7zfBJi65SCNpSZAtd6o7Ld7kVJKACilxH67F1XrjYoRN7XWNWlmkABRWPp4fIo3Wof9
KMsy2TrsR49P8UYUlj5yHXeF1voGCABms5lzcXkVLJLUicLS+/zldb0YFLLzs9OkXC5nRphIsyUA
PM9Tw8FxWgwKmRUMB8ep53kqN9+WNGsFwHXd1Wg88RdJ6gSF7WyRpM5oPPFd113lREtpcgCg0z0J
bYf+0cHSdux0T8Kc6EECU5MD8fP825Lv+5/Wavw8X8/lNbXhdmwGf+BWCHG9Zj82B/64CDBnZPHf
2/sCvSCNal7PY+cAAAAASUVORK5CYIJQSwMEFAAAAAgAHQF3M7sPeGTgAQAA2wEAAEAAAABXZWJL
aXQvV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9jbG9zZVByZXNzZWQu
cG5nAdsBJP6JUE5HDQoaCgAAAA1JSERSAAAADQAAAA0IBgAAAHLr5HwAAAAJcEhZcwAACxMAAAsT
AQCanBgAAAGNSURBVCiRjVKxSgNBFJy3J6gb4TDekZCziq1Yp7G0kcQENRzpBcUvECzUQvADNArq
BwQLcxD8AZvUEhQsREjukhjBSg1ye8/mVoJYON2DNzuzb4Ywgnq9vkhEOQDzADIAAgAtZm6WSqVb
vUcA0Gg0ppVSLoAyMwv8AhFFAK4Mw6jl8/k3AQBKKZeZ3b8IAMDMgpnd+GFQbGmfmcXO7t7CrOO8
b29tPAkhOIoiqp5dZDu+nzg6PLgjooiZ9wUR5bRCOpX67Ph+4vjkfC4MQ3F8cj7X8f1EOpX61IpE
lDMqlcomABMAnEz64/m5nei/9CfvHx6nuv2utC17WF5baZumGcb/GxfxlQAApmmG66uFtm3Zw16/
J23LHq6vFn4IMTIiPisAQEoZXXs3zuB1MGHNWMPB62Di2rtxpJTRCCkQAFp6qp5eZrVCfnkp0IrV
08vsCKklmLkZ54CgF/xYSiaTX9pq0AukzouZmwQAnudtMbP7V0a/Qq4Vi8WzMQAwDKOmlAL+0Qgg
rpHGf7v3DXnyxwXwu+NmAAAAAElFTkSuQmCCUEsDBBQAAAAIAO12dzMVxmIl/gAAAPkAAABAAAAA
V2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvZG93blRyaWFu
Z2xlLnBuZwH5AAb/iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAANbY
1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAACLSURBVHjaYvzw4UP5
////PRiQACMjIwNQDES3MTEzM88Hiv1BVgCSBIKP/Pz8+5l4eHheATmbGdAAExNTK0gjE5S/CGjc
d5jxQPyCj4/vLFghiBAQEPgANHY1zPh///61AZn/4ApA4OfPn6uA1GeggluCgoKXURwEw0AfBb9/
/14BWYwR6mKcACDAAD5rSAyv2rJMAAAAAElFTkSuQmCCUEsDBBQAAAAIANSzdzN/3XmeEwEAAA4B
AAA4AAAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvbWVu
dS5wbmcBDgHx/olQTkcNChoKAAAADUlIRFIAAAANAAAADQgGAAAAcuvkfAAAAAlwSFlzAAALEwAA
CxMBAJqcGAAAAMBJREFUKJGNkjEKwkAQRd8MXsA2Z8gB0uQCFhHBkMJW0CMp2FoEC9Er2OQAOUPa
3CBrsbMQyIbkwbLs8j+7M3+EEc65HMiAFEiADmiBRkR+QScm3gIVUALKlAF4AbWI9EFQ2YoZsPug
Qe1L5VixK47cH8+YuXTO5Wo1TF74fN8xowKZWtFRZoyp4rs0S8SYKL6ts+yLA5fzaXzVKT6HtQaA
VoEGn8MawwA0IdwrlsECtYjcNuFg++JEgI1RYO3s/QFLs0KvoYa7vwAAAABJRU5ErkJgglBLAwQU
AAAACADDs3czru0lSzYBAAAxAQAAPwAAAFdlYktpdC9XZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJ
bnNwZWN0b3IvSW1hZ2VzL21lbnVQcmVzc2VkLnBuZwExAc7+iVBORw0KGgoAAAANSUhEUgAAAA0A
AAANCAYAAABy6+R8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA40lEQVQokY2SQUrEQBBF3y9P4HaE
OYAExpUMqCfIWnKF0J7HELxB8Bg6EFw5MHt3s3U/YJULOzKYieTtGurxq/u3OKJpmjtgDRSSFhGx
B3ZAn1J6GeaUh8/NrIqIe8AY45Ke3b1LKX0aQBaqCQHAIqIyswrgLK/0MKQCPDZPHA5fLJcXf+XL
siw/LN9hlLDdvvO6eRslAmsDiomVpsTCJC2mpFOipIXlZ51ktbri9ub69xwRe+Onh1lCZmdAD/hM
wYFeAG3b1rmnf5HU1XXdGoC7d5K6U4lDgqTO3Ts4KhTm/71ve9Vkekl+lmwAAAAASUVORK5CYIJQ
SwMEFAAAAAgAY7V3M3eMEImjAAAAngAAAD0AAABXZWJLaXQvV2ViSW5zcGVjdG9yLnN1YnByb2ov
d2ViSW5zcGVjdG9yL0ltYWdlcy9wb3B1cEZpbGwucG5nAZ4AYf+JUE5HDQoaCgAAAA1JSERSAAAA
AQAAABQIBgAAAEwOV6EAAAAJcEhZcwAACxMAAAsTAQCanBgAAABQSURBVAiZLcchAoAwDAPAEiSC
N/BTvouc6MbSpsNw7qz5uvdKXgipIKlQmUJmFiJCIPmXpND7SMSKQr6vMMYQSBbmnAV3lzVfN85j
O3czez62j0Xq8cZPgQAAAABJRU5ErkJgglBLAwQUAAAACABstXczAasD45kAAACUAAAARAAAAFdl
YktpdC9XZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL3BvcHVwRmlsbFBy
ZXNzZWQucG5nAZQAa/+JUE5HDQoaCgAAAA1JSERSAAAAAQAAABQIBgAAAEwOV6EAAAAJcEhZcwAA
CxMAAAsTAQCanBgAAABGSURBVAiZNcuhEYAwFATR5eIQ9N9NWqACPDYihvtziIDdN8uY6WqNS4QS
YAGlgCWwCFaBJS19llJY+dq/BTNmuo59Oxtwv5duIekPaI5IAAAAAElFTkSuQmCCUEsDBBQAAAAI
AHG1dzMpAf53ZwEAAGIBAAA9AAAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3Bl
Y3Rvci9JbWFnZXMvcG9wdXBMZWZ0LnBuZwFiAZ3+iVBORw0KGgoAAAANSUhEUgAAAAYAAAAUCAYA
AACu0kzYAAAACXBIWXMAAAsTAAALEwEAmpwYAAABFElEQVQYlX2OvUrDYBRAz5cmQikpbRNBooK6
ZdBSHBykm0PBRXAQF1cRBAcHX6STb9HN0R8iQilFh/oC9WcoAS1N2uRL6mACtQQvnOlwz72C31Fa
rZsNe6tar5QrlqYtaCqgNJvX9s5u/cB5vPt+7nY+xyMvFoD+1H456b/3hXN/OyRNAOXllVWz22kP
oyiKU1RALxZL4st1Q2ZGTUBKGc8LARCGYTQvAAiCIFtkpf7f8DxfZopwGman5HicnfJ9/49QgKnr
DkTJNHNBEMQpCiAd54Gjw2NjMpnEKTkg//HWX7+4vFqzlqxRr/fque5ACkAHatXa9t7p2Xmh0dj3
DGMxEskdA7CBTcAC8mLmiQJQTgrqDxJGg4uwGYmsAAAAAElFTkSuQmCCUEsDBBQAAAAIAHi1dzPD
BoFARAEAAD8BAABEAAAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9J
bWFnZXMvcG9wdXBMZWZ0UHJlc3NlZC5wbmcBPwHA/olQTkcNChoKAAAADUlIRFIAAAAGAAAAFAgG
AAAArtJM2AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAPFJREFUGJV1kL1KA0EUhb87GZn9ScCQXUXL
SIpE3a3S2QniSwi+iY9jY+EbWNkEQlBIIXmBFAbMqo3Z7KSYDayaPXCqb+acwxWc1NPzKOl1ezdB
2BxorT0NqPuHx+HZaXIXeOYLYQ4UGgiTQXrrG5MBGbaMANqdKD4R4QPIt9ZAK2iGe8CKinRprHv5
C0iZ+Q842RqwrvuhVF3UjlXUrdqW7Ab2T4cC7GeWraVAUTmJAvLp9HVZwJFb7dwA/MX74vDy6vrC
M/63CEtryRtAMZu9/bxMxvtxFKdRdJAa4yVS9nSAPnAOHAO+VEaEQBtoAXoDo/BFceDHtQ4AAAAA
SUVORK5CYIJQSwMEFAAAAAgAgLV3M8ILM/1NAgAASAIAAD4AAABXZWJLaXQvV2ViSW5zcGVjdG9y
LnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9wb3B1cFJpZ2h0LnBuZwFIArf9iVBORw0KGgoA
AAANSUhEUgAAABMAAAAUCAYAAABvVQZ0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+klEQVQ4jaWT
T2sTURTFz6SvICmmT0q7mEUZSaBdCCqWdGxlpoiIG1MlFBULIkUX0qUMuPNTzCeo0EUhZUDsQqKm
duXUobWY2GAJQrvRTKYJ02ny5o+LWlGcTGE8cBePe9+Pc+97l9u3g+eIIcY6zGyYe+XNjdXp6Rs7
AHxOUZ49jAM71ZdMnL94KTk5IaeWFl8sz88/LhPmeX4sZ82W//7d22YQIBgbF6cAfCNeTNixjPUP
rfHsZQHAmYTvul5U5G/fGovK75smS6UoB+B0wnVdv1vIspQWhOFRWZbSUXW/TBLCGPPC7AtpISWK
WZlSelYUsz2V6pe92tdaM6JjjnQ6nVDYSCYzSCkVAASUUmEkkxncLm83ouZH/rD5lwoFrVIoaE+j
Lv8D6+YsjsjBgeOGJWZn747mcrknx2dN09SFhcVKFCzBAuaHhWEYu5ZlVQEusCyrahjGbrfa387c
w8PQNnVdN4vF4itJkq6VSqXXuq6bJ7bpOE7XmamqusXz/ICqqlsngYCjB4hcJ0VR3kTlh3i+1zR/
cAAC0m63/2s37+TvDaytrQKAS2zbjvU1eH64d27u0dCVqavnHtyfqQNokc3PtetxYPX6956VlZfJ
mfxNe8NY/wigQfr7uP4YrACAA2AHwCcAZQA2B+BCTJgLoAWgAcAG4P8EVAhqHIMr6ywAAAAASUVO
RK5CYIJQSwMEFAAAAAgAh7V3MwIOH5oqAgAAJQIAAEUAAABXZWJLaXQvV2ViSW5zcGVjdG9yLnN1
YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9wb3B1cFJpZ2h0UHJlc3NlZC5wbmcBJQLa/YlQTkcN
ChoKAAAADUlIRFIAAAATAAAAFAgGAAAAb1UGdAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAddJREFU
OI2lk79rE2EYxz/vcU0xTSuiKSkKaSyWNkMrhXPRxd3BwUVIiym4uIl/gbj5G50KzdBKp5LdIbT4
AwkelFJJiuaautShS3KJSVN7ucfBnIu5VK4PfHmXL5/3eb/P86paU9YJUI7jtJqNn8VSufTm+tUr
W4CrGoeSCQIDNISBZuswksu9fXj71k1TR2gHhLWB6qn+fncqOX0HKOqAExAGgFJUz56LjgFntM4N
vnrx9HHiGM9RODLQBwxqAo6fstnV6IeP70ay2dVoL1+nSV3TwOmmXcsKZRYXJreLhVhmcWFy17JC
fl7vxRqC003mhhkpW6VhEZGyVRo2N8yIn/dvfvUDeXSSAQCIcG0orO7rmnayaQK0O8ulAUfdtLK8
FLuUuHDX08ryUszP60F9pzljGPvx0cQeQHw0sTdjGPvHTBONNk43TYwn7dRsOp+4OPY9NZvOT4wn
bT+vB9OlR2Zz6fmdb9bXwbn0/I70Cs39c6h6S+79f9T/lnIJ2bXajfOx0w90CPzRvaZGCoUtG3B0
kWCroRR94hKvVCvGy2dP1oC6jpAKArNtm8/5T79ev3q+ub6Wew9U9KGw2gzAEuAA+AF8AbaBhgIu
B4Q5QB2oAA3A/Q0CKC9OtUeECQAAAABJRU5ErkJgglBLAwQUAAAACADzdncz6KtaNf4AAAD5AAAA
QQAAAFdlYktpdC9XZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL3JpZ2h0
VHJpYW5nbGUucG5nAfkABv+JUE5HDQoaCgAAAA1JSERSAAAACAAAAAgIBgAAAMQPvosAAAAEZ0FN
QQAA1tjUT1gyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAItJREFUeNpi
+PDhg+v///9ZgJgBG2YCElVARWs+ffpkysDAwMSABhiBkvtBKsEcRsYX//79axMUFLwMV/D+/fv9
cA4jI8zoW0B2u4CAwAMUI5FMkgRiYxCbBcU+RsbvQEWrf/78uUpcXPwrsoI/QLwZKLkIaOwHZE0s
QF07mJmZ5/Pw8LxiwAIAAgwAwJ9PsL7kxIQAAAAASUVORK5CYIJQSwMEFAAAAAgApwJ3M2Xfd6an
CwAAogsAAEUAAABXZWJLaXQvV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdl
cy9zY3JvbGxUaHVtYkJvdHRvbS5wbmcBogtd9IlQTkcNChoKAAAADUlIRFIAAAATAAAACQgGAAAA
0B0XMQAACkNpQ0NQSUNDIFByb2ZpbGUAAHicnVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQ
kgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zO
ec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw
1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4F
ANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAP
QGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyx
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
8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMd
FTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1S
No0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22g
PaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29
Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv
03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFl
wG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or
59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR
+mPHp9BP9z7nfP78L/eE8/uXwYZWAAAACXBIWXMAAAsTAAALEwEAmpwYAAABBUlEQVQokX2QMUrE
QBiFv5nJ7gmmkqTxCLmDrbWtsfESnsAcx05UsBAs7QRhi3QBCQSSTNZkMhab0RjGfTDw8897j/d+
wQFbQBhjnoEEQEqJlJKmaTgGa+2r1voCmOS8cwDOuY+jygCWmj9mbdverckqio6a1XX9NI+TmAfB
oSpd1z0IIU59zX6/ZxyGoJG19lFrfTWH+VommwCqqroBup/oQiCVCtX7LIri1qda1gQYABfH8UtV
VdfOuZ3/2EQRyF/qOI5vZVlepmn6PhuNvt4SAtgAIsuybZ7n50qpM6XUCYAxZtf3/X2SJP623siF
zPwuWqUOwfpES+F/EIAKcKb5ubXgG5A2ZMjlWFAWAAAAAElFTkSuQmCCUEsDBBQAAAAIAKsCdzPG
c2Yy1QoAANAKAABFAAAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9J
bWFnZXMvc2Nyb2xsVGh1bWJNaWRkbGUucG5nAdAKL/WJUE5HDQoaCgAAAA1JSERSAAAAEwAAAAEI
BgAAADxOlVwAAApDaUNDUElDQyBQcm9maWxlAAB4nJ1Td1iT9xY+3/dlD1ZC2PCxl2yBACIjrAjI
EFmiEJIAYYQQEkDFhYgKVhQVEZxIVcSC1QpInYjioCi4Z0GKiFqLVVw47h/cp7V9eu/t7fvX+7zn
nOf8znnPD4AREiaR5qJqADlShTw62B+PT0jEyb2AAhVI4AQgEObLwmcFxQAA8AN5eH50sD/8Aa9v
AAIAcNUuJBLH4f+DulAmVwAgkQDgIhLnCwGQUgDILlTIFADIGACwU7NkCgCUAABseXxCIgCqDQDs
9Ek+BQDYqZPcFwDYohypCACNAQCZKEckAkC7AGBVgVIsAsDCAKCsQCIuBMCuAYBZtjJHAoC9BQB2
jliQD0BgAICZQizMACA4AgBDHhPNAyBMA6Aw0r/gqV9whbhIAQDAy5XNl0vSMxS4ldAad/Lw4OIh
4sJssUJhFykQZgnkIpyXmyMTSOcDTM4MAAAa+dHB/jg/kOfm5OHmZuds7/TFov5r8G8iPiHx3/68
jAIEABBOz+/aX+Xl1gNwxwGwdb9rqVsA2lYAaN/5XTPbCaBaCtB6+Yt5OPxAHp6hUMg8HRwKCwvt
JWKhvTDjiz7/M+Fv4It+9vxAHv7bevAAcZpAma3Ao4P9cWFudq5SjufLBEIxbvfnI/7HhX/9jinR
4jSxXCwVivFYibhQIk3HeblSkUQhyZXiEul/MvEflv0Jk3cNAKyGT8BOtge1y2zAfu4BAosOWNJ2
AEB+8y2MGguRABBnNDJ59wAAk7/5j0ArAQDNl6TjAAC86BhcqJQXTMYIAABEoIEqsEEHDMEUrMAO
nMEdvMAXAmEGREAMJMA8EEIG5IAcCqEYlkEZVMA62AS1sAMaoBGa4RC0wTE4DefgElyB63AXBmAY
nsIYvIYJBEHICBNhITqIEWKO2CLOCBeZjgQiYUg0koCkIOmIFFEixchypAKpQmqRXUgj8i1yFDmN
XED6kNvIIDKK/Iq8RzGUgbJRA9QCdUC5qB8aisagc9F0NA9dgJaia9EatB49gLaip9FL6HV0AH2K
jmOA0TEOZozZYVyMh0VgiVgaJscWY+VYNVaPNWMdWDd2FRvAnmHvCCQCi4AT7AhehBDCbIKQkEdY
TFhDqCXsI7QSughXCYOEMcInIpOoT7QlehL5xHhiOrGQWEasJu4hHiGeJV4nDhNfk0gkDsmS5E4K
ISWQMkkLSWtI20gtpFOkPtIQaZxMJuuQbcne5AiygKwgl5G3kA+QT5L7ycPktxQ6xYjiTAmiJFKk
lBJKNWU/5QSlnzJCmaCqUc2pntQIqog6n1pJbaB2UC9Th6kTNHWaJc2bFkPLpC2j1dCaaWdp92gv
6XS6Cd2DHkWX0JfSa+gH6efpg/R3DA2GDYPHSGIoGWsZexmnGLcZL5lMpgXTl5nIVDDXMhuZZ5gP
mG9VWCr2KnwVkcoSlTqVVpV+leeqVFVzVT/VeaoLVKtVD6teVn2mRlWzUOOpCdQWq9WpHVW7qTau
zlJ3Uo9Qz1Ffo75f/YL6Yw2yhoVGoIZIo1Rjt8YZjSEWxjJl8VhC1nJWA+ssa5hNYluy+exMdgX7
G3Yve0xTQ3OqZqxmkWad5nHNAQ7GseDwOdmcSs4hzg3Oey0DLT8tsdZqrWatfq032nravtpi7XLt
Fu3r2u91cJ1AnSyd9TptOvd1Cbo2ulG6hbrbdc/qPtNj63npCfXK9Q7p3dFH9W30o/UX6u/W79Ef
NzA0CDaQGWwxOGPwzJBj6GuYabjR8IThqBHLaLqRxGij0UmjJ7gm7odn4zV4Fz5mrG8cYqw03mXc
azxhYmky26TEpMXkvinNlGuaZrrRtNN0zMzILNys2KzJ7I451ZxrnmG+2bzb/I2FpUWcxUqLNovH
ltqWfMsFlk2W96yYVj5WeVb1VtesSdZc6yzrbdZXbFAbV5sMmzqby7aorZutxHabbd8U4hSPKdIp
9VNu2jHs/OwK7JrsBu059mH2JfZt9s8dzBwSHdY7dDt8cnR1zHZscLzrpOE0w6nEqcPpV2cbZ6Fz
nfM1F6ZLkMsSl3aXF1Ntp4qnbp96y5XlGu660rXT9aObu5vcrdlt1N3MPcV9q/tNLpsbyV3DPe9B
9PD3WOJxzOOdp5unwvOQ5y9edl5ZXvu9Hk+znCae1jBtyNvEW+C9y3tgOj49ZfrO6QM+xj4Cn3qf
h76mviLfPb4jftZ+mX4H/J77O/rL/Y/4v+F58hbxTgVgAcEB5QG9gRqBswNrAx8EmQSlBzUFjQW7
Bi8MPhVCDAkNWR9yk2/AF/Ib+WMz3GcsmtEVygidFVob+jDMJkwe1hGOhs8I3xB+b6b5TOnMtgiI
4EdsiLgfaRmZF/l9FCkqMqou6lG0U3RxdPcs1qzkWftnvY7xj6mMuTvbarZydmesamxSbGPsm7iA
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
omvRGrQePYC2oqfRS+h1dAB9io5jgNExDmaM2WFcjIdFYIlYGibHFmPlWDVWjzVjHVg3dhUbwJ5h
7wgkAouAE+wIXoQQwmyCkJBHWExYQ6gl7CO0EroIVwmDhDHCJyKTqE+0JXoS+cR4YjqxkFhGrCbu
IR4hniVeJw4TX5NIJA7JkuROCiElkDJJC0lrSNtILaRTpD7SEGmcTCbrkG3J3uQIsoCsIJeRt5AP
kE+S+8nD5LcUOsWI4kwJoiRSpJQSSjVlP+UEpZ8yQpmgqlHNqZ7UCKqIOp9aSW2gdlAvU4epEzR1
miXNmxZDy6Qto9XQmmlnafdoL+l0ugndgx5Fl9CX0mvoB+nn6YP0dwwNhg2Dx0hiKBlrGXsZpxi3
GS+ZTKYF05eZyFQw1zIbmWeYD5hvVVgq9ip8FZHKEpU6lVaVfpXnqlRVc1U/1XmqC1SrVQ+rXlZ9
pkZVs1DjqQnUFqvVqR1Vu6k2rs5Sd1KPUM9RX6O+X/2C+mMNsoaFRqCGSKNUY7fGGY0hFsYyZfFY
QtZyVgPrLGuYTWJbsvnsTHYF+xt2L3tMU0NzqmasZpFmneZxzQEOxrHg8DnZnErOIc4NznstAy0/
LbHWaq1mrX6tN9p62r7aYu1y7Rbt69rvdXCdQJ0snfU6bTr3dQm6NrpRuoW623XP6j7TY+t56Qn1
yvUO6d3RR/Vt9KP1F+rv1u/RHzcwNAg2kBlsMThj8MyQY+hrmGm40fCE4agRy2i6kcRoo9FJoye4
Ju6HZ+M1eBc+ZqxvHGKsNN5l3Gs8YWJpMtukxKTF5L4pzZRrmma60bTTdMzMyCzcrNisyeyOOdWc
a55hvtm82/yNhaVFnMVKizaLx5balnzLBZZNlvesmFY+VnlW9VbXrEnWXOss623WV2xQG1ebDJs6
m8u2qK2brcR2m23fFOIUjynSKfVTbtox7PzsCuya7AbtOfZh9iX2bfbPHcwcEh3WO3Q7fHJ0dcx2
bHC866ThNMOpxKnD6VdnG2ehc53zNRemS5DLEpd2lxdTbaeKp26fesuV5RruutK10/Wjm7ub3K3Z
bdTdzD3Ffav7TS6bG8ldwz3vQfTw91jicczjnaebp8LzkOcvXnZeWV77vR5Ps5wmntYwbcjbxFvg
vct7YDo+PWX6zukDPsY+Ap96n4e+pr4i3z2+I37Wfpl+B/ye+zv6y/2P+L/hefIW8U4FYAHBAeUB
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
UC9Th6kTNHWaJc2bFkPLpC2j1dCaaWdp92gv6XS6Cd2DHkWX0JfSa+gH6efpg/R3DA2GDYPHSGIo
GWsZexmnGLcZL5lMpgXTl5nIVDDXMhuZZ5gPmG9VWCr2KnwVkcoSlTqVVpV+leeqVFVzVT/VeaoL
VKtVD6teVn2mRlWzUOOpCdQWq9WpHVW7qTauzlJ3Uo9Qz1Ffo75f/YL6Yw2yhoVGoIZIo1Rjt8YZ
jSEWxjJl8VhC1nJWA+ssa5hNYluy+exMdgX7G3Yve0xTQ3OqZqxmkWad5nHNAQ7GseDwOdmcSs4h
zg3Oey0DLT8tsdZqrWatfq032nravtpi7XLtFu3r2u91cJ1AnSyd9TptOvd1Cbo2ulG6hbrbdc/q
PtNj63npCfXK9Q7p3dFH9W30o/UX6u/W79EfNzA0CDaQGWwxOGPwzJBj6GuYabjR8IThqBHLaLqR
xGij0UmjJ7gm7odn4zV4Fz5mrG8cYqw03mXcazxhYmky26TEpMXkvinNlGuaZrrRtNN0zMzILNys
2KzJ7I451ZxrnmG+2bzb/I2FpUWcxUqLNovHltqWfMsFlk2W96yYVj5WeVb1VtesSdZc6yzrbdZX
bFAbV5sMmzqby7aorZutxHabbd8U4hSPKdIp9VNu2jHs/OwK7JrsBu059mH2JfZt9s8dzBwSHdY7
dDt8cnR1zHZscLzrpOE0w6nEqcPpV2cbZ6FznfM1F6ZLkMsSl3aXF1Ntp4qnbp96y5XlGu660rXT
9aObu5vcrdlt1N3MPcV9q/tNLpsbyV3DPe9B9PD3WOJxzOOdp5unwvOQ5y9edl5ZXvu9Hk+znCae
1jBtyNvEW+C9y3tgOj49ZfrO6QM+xj4Cn3qfh76mviLfPb4jftZ+mX4H/J77O/rL/Y/4v+F58hbx
TgVgAcEB5QG9gRqBswNrAx8EmQSlBzUFjQW7Bi8MPhVCDAkNWR9yk2/AF/Ib+WMz3GcsmtEVygid
FVob+jDMJkwe1hGOhs8I3xB+b6b5TOnMtgiI4EdsiLgfaRmZF/l9FCkqMqou6lG0U3RxdPcs1qzk
WftnvY7xj6mMuTvbarZydmesamxSbGPsm7iAuKq4gXiH+EXxlxJ0EyQJ7YnkxNjEPYnjcwLnbJoz
nOSaVJZ0Y67l3KK5F+bpzsuedzxZNVmQfDiFmBKXsj/lgyBCUC8YT+Wnbk0dE/KEm4VPRb6ijaJR
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
f/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gEC
iw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcM
wRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHr
cBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPy
LXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0Uvo
dXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJs
gpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQO
yZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJM
CaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0Jpp
Z2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcy
G5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akd
VbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L5
7Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+
2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq
79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxi
rDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzF
Sos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTi
FI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lX
ZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJ
XcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7G
PgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUH
NQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM
6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJs
Y+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1
WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1
xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r3
5CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHg
Ir9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRa
uWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9
akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba
1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRv
bNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr
0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx5
90z8mWtdUV29Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1X
PK509E3rO9Hv03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3q
B/oP6n+0/rFlwG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcT
z8p+Vv9563Or59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9
H5ko/ED+UPPR+mPHp9BP9z7nfP78L/eE8/uXwYZWAAAAIGNIUk0AAHolAAB6JQAAAAAAAHolAAAA
AAAAeiUAAAAAAAB6JXIyHmAAAAAJcEhZcwAACxMAAAsTAQCanBgAAAEbSURBVBiVdcyxSwJhGMfx
7+nrkmRF4XCV2B40FFQUIQ3REg4iEQ0N0v/R/xSJY2EuhYoGuUk0tNSd6PF6eu/73rWUS9cPnunD
87WGMrpRKlDuwP3odTv1YvG0D4TJUAcbzdaTtBJWev/gaDufyzvV6q0jlDGhGnnh48P9KIqIdnb3
CsB7whgT/l67+eytrq2vAEsi1Nrws6Hrmkxm0QLmhdY65O+EUEqZGLBEEARxwH8p/v8Yj30dCypS
8Sk9mcSnfN+PhyAIZqmsbadc98sCIjGdTmdwXrpYbjTqAFpIKY1t51KVynX2sHC8eXVZdgBPdF/f
ThznM1mr3c2VS2ey0262gIFYSFsZwAf6wAvQA6QFbAEa8IABIIHwGxWrmM1dzZvyAAAAAElFTkSu
QmCCUEsDBBQAAAAIAMm7dzNfQHsA3gsAANkLAABMAAAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJw
cm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvc3F1YXJlQnV0dG9uUmlnaHRQcmVzc2VkLnBuZwHZCyb0
iVBORw0KGgoAAAANSUhEUgAAAAYAAAAUCAYAAACu0kzYAAAABGdBTUEAALGOfPtRkwAACkNpQ0NQ
SUNDIFByb2ZpbGUAAHicnVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApW
FBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoA
OVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZX
ACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkI
AI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgC
AEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJeb
IxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DH
AbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372
/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5
uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3
AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQ
QgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogR
Yo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSB
slED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJ
WBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qx
wicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+
0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpR
zame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp
5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVW
lX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpj
DbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3m
cc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om06
93UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPo
a5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2U
a5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5
VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2
YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22n
iqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85Dn
L152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8
nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX
8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoy
qi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAnt
ieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5adu
TR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/Z
cdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+o
K3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9
y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCs
qK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq
9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdr
vUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb
7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1H
vrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29Z0PPnj8XdO5Mt1/3
yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv03/6asDVc9f41y5d
n3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFlwG3g+GDAYM/DWQ/v
DgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or59/94vtLz1j82PAL
+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR+mPHp9BP9z7nfP78
L/eE8/uXwYZWAAAAIGNIUk0AAHolAAB6JQAAAAAAAHolAAAAAAAAeiUAAAAAAAB6JXIyHmAAAAAJ
cEhZcwAACxMAAAsTAQCanBgAAAEASURBVBiVdZCxSgNBFEXPTJ4uJkZc1MJCEOxUkio2ghDxQ/wa
G1H8BwsbkVSC1X5CIBItAqlE0mWduKuQnRkLV8yGzW0v977zrjKpj7Is+06Tz5fBcHDbPj7qAU5X
KgyDQEZhuL5zeNC4uLvvtACt8Vg8UyBeCQLT2G+eAzUBMnIpRbyxubUHhAJY/mWrq7UloC5+JjEj
ET1nuLxV8KUJxJZXIVoXDZujCDAtTSygQrALDD9344+3OIlj2RhjAV+YxMF2v9/7ADLtfx9U3rE7
jsetm6vLLjDBpD56G8XRQ+fxqX16dg2cAHVZq6ou8AW8A8/AK5AooJkDTIAxkADuB2B/Y7oNI6uC
AAAAAElFTkSuQmCCUEsDBBQAAAAIAF0IeDO8pzGvdQIAAHACAAA+AAAAV2ViS2l0L1dlYkluc3Bl
Y3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvdXBUcmlhbmdsZS5wbmcBcAKP/YlQTkcN
ChoKAAAADUlIRFIAAAAIAAAACAgGAAAAxA++iwAAAARnQU1BAADW2NRPWDIAAAGRaUNDUElDQyBQ
cm9maWxlAAB4nJWRTUsbURSGnxspgarZdFpFEO5Ks4glJBRaKEIyCy12EYNgkt1kZpoEJpPLnaut
P6D7QHfSRbXgSkpXxaU/IBsRXUnBfyAI3RSZLm5LNgbpCwee83LgfEFm5CkVZYB+bHR9rSobzZbM
XjDNPAB4fqIqtdpbJurXJQLgfMVTKppcd69mdKPZAuEATsdyHnDall8DznujDIga4PhdLwARAAW9
VXdBDIFcx/IXINe2/B3I7fodA+IUKMZBLwZxA7wMwsSHTB4wvtIGMp+BlUazJe1oZgNWF2FqNPZa
CRwfwdzS2MvPw9NtOCmPvdtNBCCejZJ35RIAYqYKj36m6e0SZD/B3TBNfx+m6d1XmLqC09jf0bt/
7yLEGTyU291sbn8Atu/9bPcHoAgH67D9GDY+wv41LH+DJz+gNgtbrxBn5l/YWwGw4HpRr609Eway
vlaV7iAa6ER5fvhfb39YJvxgANyB2tO9TtfIilJRKN1BX+2YUBfkm9h/XpClYvEFwB/uVHOx7dVS
VwAAAIpJREFUGJWVjj0OAiEUhN97LARjjJSWVnZWnsAzGG1MNB5Dz+SdKKFiCR2JYazWrD+N0803
XzFE/ySEsMw578ZMxsUYc22tnWOM0y8hpbQWkRUzz7TWhzcBgIjIbYBKqb333r2EUsoGwGIQAEyc
cyciIgbQ9X1/Z+b5x+dHrfUoKaXtj5GIqLPWXp6UyC7nQVNMtgAAAABJRU5ErkJgglBLAQIUAxQA
AAAAAHNHLzQAAAAAAAAAAAAAAAAHAAAAAAAAAAAAEADtQQAAAABXZWJLaXQvUEsBAhQDFAAAAAAA
d0cvNAAAAAAAAAAAAAAAABwAAAAAAAAAAAAQAO1BJQAAAFdlYktpdC9XZWJJbnNwZWN0b3Iuc3Vi
cHJvai9QSwECFAMUAAAAAAB9Ry80AAAAAAAAAAAAAAAAKQAAAAAAAAAAABAA7UFfAAAAV2ViS2l0
L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9QSwECFAMUAAAAAAAJSC80AAAAAAAA
AAAAAAAAMAAAAAAAAAAAABAA7UGmAAAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYklu
c3BlY3Rvci9JbWFnZXMvUEsBAhQDFAAAAAgAKAF3M+pjVHdAAwAAOwMAADkAAAAAAAAAAAAAAKSB
9AAAAFdlYktpdC9XZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL2Nsb3Nl
LnBuZ1BLAQIUAxQAAAAIAB0BdzO7D3hk4AEAANsBAABAAAAAAAAAAAAAAACkgYsEAABXZWJLaXQv
V2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9jbG9zZVByZXNzZWQucG5n
UEsBAhQDFAAAAAgA7XZ3MxXGYiX+AAAA+QAAAEAAAAAAAAAAAAAAAKSByQYAAFdlYktpdC9XZWJJ
bnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL2Rvd25UcmlhbmdsZS5wbmdQSwEC
FAMUAAAACADUs3czf915nhMBAAAOAQAAOAAAAAAAAAAAAAAApIElCAAAV2ViS2l0L1dlYkluc3Bl
Y3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvbWVudS5wbmdQSwECFAMUAAAACADDs3cz
ru0lSzYBAAAxAQAAPwAAAAAAAAAAAAAApIGOCQAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9q
L3dlYkluc3BlY3Rvci9JbWFnZXMvbWVudVByZXNzZWQucG5nUEsBAhQDFAAAAAgAY7V3M3eMEImj
AAAAngAAAD0AAAAAAAAAAAAAAKSBIQsAAFdlYktpdC9XZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJ
bnNwZWN0b3IvSW1hZ2VzL3BvcHVwRmlsbC5wbmdQSwECFAMUAAAACABstXczAasD45kAAACUAAAA
RAAAAAAAAAAAAAAApIEfDAAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rv
ci9JbWFnZXMvcG9wdXBGaWxsUHJlc3NlZC5wbmdQSwECFAMUAAAACABxtXczKQH+d2cBAABiAQAA
PQAAAAAAAAAAAAAApIEaDQAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rv
ci9JbWFnZXMvcG9wdXBMZWZ0LnBuZ1BLAQIUAxQAAAAIAHi1dzPDBoFARAEAAD8BAABEAAAAAAAA
AAAAAACkgdwOAABXZWJLaXQvV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdl
cy9wb3B1cExlZnRQcmVzc2VkLnBuZ1BLAQIUAxQAAAAIAIC1dzPCCzP9TQIAAEgCAAA+AAAAAAAA
AAAAAACkgYIQAABXZWJLaXQvV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdl
cy9wb3B1cFJpZ2h0LnBuZ1BLAQIUAxQAAAAIAIe1dzMCDh+aKgIAACUCAABFAAAAAAAAAAAAAACk
gSsTAABXZWJLaXQvV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9wb3B1
cFJpZ2h0UHJlc3NlZC5wbmdQSwECFAMUAAAACADzdncz6KtaNf4AAAD5AAAAQQAAAAAAAAAAAAAA
pIG4FQAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvcmln
aHRUcmlhbmdsZS5wbmdQSwECFAMUAAAACACnAnczZd93pqcLAACiCwAARQAAAAAAAAAAAAAApIEV
FwAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvc2Nyb2xs
VGh1bWJCb3R0b20ucG5nUEsBAhQDFAAAAAgAqwJ3M8ZzZjLVCgAA0AoAAEUAAAAAAAAAAAAAAKSB
HyMAAFdlYktpdC9XZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL3Njcm9s
bFRodW1iTWlkZGxlLnBuZ1BLAQIUAxQAAAAIALECdzPkVQhptAsAAK8LAABCAAAAAAAAAAAAAACk
gVcuAABXZWJLaXQvV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9zY3Jv
bGxUaHVtYlRvcC5wbmdQSwECFAMUAAAACAC1AnczomHu8JoLAACVCwAARQAAAAAAAAAAAAAApIFr
OgAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvc2Nyb2xs
VHJhY2tCb3R0b20ucG5nUEsBAhQDFAAAAAgAuAJ3M8FI+SnSCgAAzQoAAEUAAAAAAAAAAAAAAKSB
aEYAAFdlYktpdC9XZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL3Njcm9s
bFRyYWNrTWlkZGxlLnBuZ1BLAQIUAxQAAAAIALsCdzOSmU3CpgsAAKELAABCAAAAAAAAAAAAAACk
gZ1RAABXZWJLaXQvV2ViSW5zcGVjdG9yLnN1YnByb2ovd2ViSW5zcGVjdG9yL0ltYWdlcy9zY3Jv
bGxUcmFja1RvcC5wbmdQSwECFAMUAAAACACZu3cz2Lxus/kLAAD0CwAARQAAAAAAAAAAAAAApIGj
XQAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFnZXMvc3F1YXJl
QnV0dG9uUmlnaHQucG5nUEsBAhQDFAAAAAgAybt3M19AewDeCwAA2QsAAEwAAAAAAAAAAAAAAKSB
/2kAAFdlYktpdC9XZWJJbnNwZWN0b3Iuc3VicHJvai93ZWJJbnNwZWN0b3IvSW1hZ2VzL3NxdWFy
ZUJ1dHRvblJpZ2h0UHJlc3NlZC5wbmdQSwECFAMUAAAACABdCHgzvKcxr3UCAABwAgAAPgAAAAAA
AAAAAAAApIFHdgAAV2ViS2l0L1dlYkluc3BlY3Rvci5zdWJwcm9qL3dlYkluc3BlY3Rvci9JbWFn
ZXMvdXBUcmlhbmdsZS5wbmdQSwUGAAAAABkAGQBXCgAAGHkAAAAA
</data>

          </attachment>
      

    </bug>

</bugzilla>