<?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>8616</bug_id>
          
          <creation_ts>2006-04-26 16:35:27 -0700</creation_ts>
          <short_desc>REGRESSION: TinyMCE: Crash on Undo</short_desc>
          <delta_ts>2006-06-08 09:38:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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>http://tinymce.moxiecode.com/example.php?example=true</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Garcia">justin.garcia</reporter>
          <assigned_to name="Justin Garcia">justin.garcia</assigned_to>
          <cc>alice.barraclough</cc>
    
    <cc>c.petersen87</cc>
    
    <cc>darin</cc>
    
    <cc>troyb</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>40543</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-04-26 16:35:27 -0700</bug_when>
    <thetext>Goto http://tinymce.moxiecode.com/example.php?example=true
Select a bit of text in the editable area
Drag and drop it somewhere in the editable area
Undo

Thread 0 Crashed:
0   &lt;&lt;00000000&gt;&gt; 	0x02211380 0 + 35722112
1   com.apple.WebCore        	0x013b5280 WebCore::rendererAfterPosition(WebCore::RenderObject*, unsigned) + 32
2   com.apple.WebCore        	0x013b6620 WebCore::RenderCanvas::setSelection(WebCore::RenderObject*, int, WebCore::RenderObject*, int) + 288
3   com.apple.WebCore        	0x0131790c WebCore::Document::updateSelection() + 92
4   com.apple.WebCore        	0x012f3988 WebCore::Frame::setSelection(WebCore::SelectionController const&amp;, bool, bool) + 600
5   com.apple.WebCore        	0x012f8df8 WebCore::Frame::unappliedEditing(WebCore::EditCommandPtr&amp;) + 344
6   com.apple.WebCore        	0x0142a424 WebCore::EditCommand::unapply() + 116

The RenderCanvas&apos;s selection endpoints are stale pointers.  There is code that clears the canvas&apos;s endpoints if one of them is about to be destroyed, that must not be getting called.  The code that nulls out the SelectionController also isn&apos;t being called, apparently because the editable area is in a subframe, and the main frame&apos;s SelectionController is the one that should be notified of the removal, but only the subframe&apos;s SC is notified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40544</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-04-26 16:36:44 -0700</bug_when>
    <thetext>We think we could have one SC per page, instead of one per frame.  That would help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40599</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-04-27 07:51:11 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; We think we could have one SC per page, instead of one per frame.  That would
&gt; help.

That sounds good. But there may be some circumstances where we want to support a selection in more than one frame. For example, there can be an active selection in an active frame and an inactive selection in an inactive frame. In general, Safari uses WebView in the &quot;one selection in entire window&quot; mode, but Mail, for example, uses WebView in the &quot;one active selection and one or more inactive selections in a window&quot; mode.

Because of the Mail use case, I&apos;m not sure we need to support multiple selections in a tree, but I&apos;m not absolute sure we don&apos;t, assuming you were using a web page to implement the Mail application with a design mode frame as the document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41620</commentid>
    <comment_count>3</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-05-09 10:30:27 -0700</bug_when>
    <thetext>*** Bug 8807 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41801</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-05-09 19:30:45 -0700</bug_when>
    <thetext>*** Bug 7151 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42483</commentid>
    <comment_count>5</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2006-05-16 09:34:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/4549717&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44677</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-04 12:45:28 -0700</bug_when>
    <thetext>I believe the primary issue here is that we end up with selections that point to nodes in other documents. Currently, any selection must refer only to nodes in that frame&apos;s document.

There are two ways to resolve this crash without major redesign. One is to fix things so that invariant is maintained. Another is to have the &quot;node removed&quot; code work on the parent frames too (or the entire frame tree).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44698</commentid>
    <comment_count>7</comment_count>
      <attachid>8703</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-04 15:45:22 -0700</bug_when>
    <thetext>Created attachment 8703
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45089</commentid>
    <comment_count>8</comment_count>
      <attachid>8703</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-06-07 14:33:00 -0700</bug_when>
    <thetext>Comment on attachment 8703
patch

I think this might also fix 7165.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45149</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-08 09:38:46 -0700</bug_when>
    <thetext>Committed revision 14770.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8703</attachid>
            <date>2006-06-04 15:45:22 -0700</date>
            <delta_ts>2006-06-07 14:33:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>CrossFrameSelectionUndoPatch.txt</filename>
            <type>text/plain</type>
            <size>38700</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDcyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDYtMDYtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4
IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYxNgorICAg
ICAgICAgIFJFR1JFU1NJT046IFRpbnlNQ0U6IENyYXNoIG9uIFVuZG8KKworICAgICAgICAqIGJy
aWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tOgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVC
cmlkZ2UgZ2V0SW5uZXJOb25TaGFyZWROb2RlOmlubmVyTm9kZTpVUkxFbGVtZW50OmF0UG9pbnQ6
YWxsb3dTaGFkb3dDb250ZW50Ol0pOgorICAgICAgICBDaGFuZ2VkIHRvIGNhbGwgbm9kZUluZm9B
dFBvaW50IGRpcmVjdGx5LgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgX3Zpc2libGVQ
b3NpdGlvbkZvclBvaW50Ol0pOiBDaGFuZ2VkIHRvIGNhbGwgbm9kZUluZm9BdFBvaW50IGRpcmVj
dGx5LgorICAgICAgICBBbHNvIGFkZGVkIGNvZGUgdG8gY29udmVydCBjb29yZGluYXRlcyBzbyBp
dCB3b3JrcyBmb3IgcG9pbnRzIHRoYXQgYXJlIGluIG5vZGVzIGluIHN1YmZyYW1lcy4KKworICAg
ICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldE1hcmsp
OiBBZGRlZCBhc3NlcnRpb25zIHRvIGNhdGNoIGlmIHdlIGF0dGVtcHQgdG8gc2V0IHNlbGVjdGlv
bgorICAgICAgICBlbmRwb2ludHMgaW4gYW5vdGhlciBkb2N1bWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjpzZXRTZWxlY3Rpb24pOiBEaXR0by4KKwogMjAwNi0wNi0wNCAgU2FtIFdlaW5p
ZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IGh5YXR0LgpJ
bmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCShyZXZpc2lvbiAx
NDcxNykKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTExMSw3ICsxMTEsNiBAQAogCiBAaW50ZXJmYWNlIFdlYkNvcmVGcmFtZUJy
aWRnZSAoV2ViQ29yZUJyaWRnZUludGVybmFsKQogLSAoUm9vdE9iamVjdCAqKWV4ZWN1dGlvbkNv
bnRleHRGb3JWaWV3OihOU1ZpZXcgKilhVmlldzsKLS0gKFJlbmRlck9iamVjdDo6Tm9kZUluZm8p
bm9kZUluZm9BdFBvaW50OihOU1BvaW50KXBvaW50IGFsbG93U2hhZG93Q29udGVudDooQk9PTClh
bGxvdzsKIEBlbmQKIAogc3RhdGljIFJvb3RPYmplY3QgKnJvb3RGb3JWaWV3KHZvaWQgKnYpCkBA
IC0xMTY0LDcgKzExNjMsNyBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVuZGVy
T2JqZWN0OjpOb2RlSW5mbyBub2RlSW5mbyA9IFtzZWxmIG5vZGVJbmZvQXRQb2ludDpwb2ludCBh
bGxvd1NoYWRvd0NvbnRlbnQ6YWxsb3ddOworICAgIFJlbmRlck9iamVjdDo6Tm9kZUluZm8gbm9k
ZUluZm8gPSBtX2ZyYW1lLT5ub2RlSW5mb0F0UG9pbnQoSW50UG9pbnQocG9pbnQpLCBhbGxvdyk7
CiAgICAgKmlubmVyTm9uU2hhcmVkTm9kZSA9IFtET01Ob2RlIF9ub2RlV2l0aDpub2RlSW5mby5p
bm5lck5vblNoYXJlZE5vZGUoKV07CiAgICAgKmlubmVyTm9kZSA9IFtET01Ob2RlIF9ub2RlV2l0
aDpub2RlSW5mby5pbm5lck5vZGUoKV07CiAgICAgKlVSTEVsZW1lbnQgPSBbRE9NRWxlbWVudCBf
ZWxlbWVudFdpdGg6bm9kZUluZm8uVVJMRWxlbWVudCgpXTsKQEAgLTIwNzAsMTggKzIwNjksMTcg
QEAKIAogLSAoVmlzaWJsZVBvc2l0aW9uKV92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDooTlNQb2lu
dClwb2ludAogewotICAgIFJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBtX2ZyYW1lLT5yZW5kZXJl
cigpOwotICAgIGlmICghcmVuZGVyZXIpIHsKKyAgICBJbnRQb2ludCBvdXRlclBvaW50KHBvaW50
KTsKKyAgICBOb2RlKiBub2RlID0gbV9mcmFtZS0+bm9kZUluZm9BdFBvaW50KG91dGVyUG9pbnQs
IHRydWUpLmlubmVyTm9kZSgpOworICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbigpOwotICAgIH0KLSAgICAKLSAgICBSZW5kZXJPYmplY3Q6Ok5vZGVJbmZvIG5v
ZGVJbmZvID0gW3NlbGYgbm9kZUluZm9BdFBvaW50OnBvaW50IGFsbG93U2hhZG93Q29udGVudDpZ
RVNdOwotICAgIAotICAgIE5vZGUgKm5vZGUgPSBub2RlSW5mby5pbm5lck5vZGUoKTsKLSAgICBp
ZiAoIW5vZGUgfHwgIW5vZGUtPnJlbmRlcmVyKCkpCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOwotICAgIAotICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpLT5w
b3NpdGlvbkZvckNvb3JkaW5hdGVzKChpbnQpcG9pbnQueCwgKGludClwb2ludC55KTsKKyAgICBG
cmFtZVZpZXcqIG91dGVyVmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIGlu
bmVyVmlldyA9IG5vZGUtPmRvY3VtZW50KCktPnZpZXcoKTsKKyAgICBJbnRQb2ludCBpbm5lclBv
aW50ID0gaW5uZXJWaWV3LT52aWV3cG9ydFRvQ29udGVudHMob3V0ZXJWaWV3LT5jb250ZW50c1Rv
Vmlld3BvcnQob3V0ZXJQb2ludCkpOworICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JD
b29yZGluYXRlcyhpbm5lclBvaW50LngoKSwgaW5uZXJQb2ludC55KCkpOwogfQogCiAtICh2b2lk
KW1vdmVEcmFnQ2FyZXRUb1BvaW50OihOU1BvaW50KXBvaW50CkBAIC0yNTgwLDExICsyNTc4LDYg
QEAKICAgICByZXR1cm4gcm9vdDsKIH0KIAotLSAoUmVuZGVyT2JqZWN0OjpOb2RlSW5mbylub2Rl
SW5mb0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgYWxsb3dTaGFkb3dDb250ZW50OihCT09MKWFsbG93
Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWUtPm5vZGVJbmZvQXRQb2ludChJbnRQb2ludChwb2ludCks
IGFsbG93KTsKLX0KLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZUZyYW1lQnJpZGdl
IChXZWJDb3JlSW50ZXJuYWxVc2UpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDE0NzE3KQorKysgV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2NSwxNCArMTE2NSwyMyBA
QAogCiB2b2lkIEZyYW1lOjpzZXRNYXJrKGNvbnN0IFNlbGVjdGlvbiYgcykKIHsKKyAgICBBU1NF
UlQoIXMuYmFzZSgpLm5vZGUoKSB8fCBzLmJhc2UoKS5ub2RlKCktPmRvY3VtZW50KCkgPT0gZG9j
dW1lbnQoKSk7CisgICAgQVNTRVJUKCFzLmV4dGVudCgpLm5vZGUoKSB8fCBzLmV4dGVudCgpLm5v
ZGUoKS0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoIXMuc3RhcnQoKS5u
b2RlKCkgfHwgcy5zdGFydCgpLm5vZGUoKS0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCgpKTsKKyAg
ICBBU1NFUlQoIXMuZW5kKCkubm9kZSgpIHx8IHMuZW5kKCkubm9kZSgpLT5kb2N1bWVudCgpID09
IGRvY3VtZW50KCkpOworCiAgICAgZC0+bV9tYXJrID0gczsKIH0KIAogdm9pZCBGcmFtZTo6c2V0
U2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvbkNvbnRyb2xsZXImIHMsIGJvb2wgY2xvc2VUeXBpbmcs
IGJvb2wga2VlcFR5cGluZ1N0eWxlKQogewotICAgIGlmIChkLT5tX3NlbGVjdGlvbiA9PSBzKSB7
CisgICAgaWYgKGQtPm1fc2VsZWN0aW9uID09IHMpCiAgICAgICAgIHJldHVybjsKLSAgICB9CisK
KyAgICBBU1NFUlQoIXMuYmFzZSgpLm5vZGUoKSB8fCBzLmJhc2UoKS5ub2RlKCktPmRvY3VtZW50
KCkgPT0gZG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKCFzLmV4dGVudCgpLm5vZGUoKSB8fCBzLmV4
dGVudCgpLm5vZGUoKS0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoIXMu
c3RhcnQoKS5ub2RlKCkgfHwgcy5zdGFydCgpLm5vZGUoKS0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVu
dCgpKTsKKyAgICBBU1NFUlQoIXMuZW5kKCkubm9kZSgpIHx8IHMuZW5kKCkubm9kZSgpLT5kb2N1
bWVudCgpID09IGRvY3VtZW50KCkpOwogICAgIAogICAgIGNsZWFyQ2FyZXRSZWN0SWZOZWVkZWQo
KTsKIApJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNDcyNikKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0OCBAQAorMjAwNi0wNi0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBm
aXggaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD04NjE2Cisg
ICAgICAgICAgUkVHUkVTU0lPTjogVGlueU1DRTogQ3Jhc2ggb24gVW5kbworCisgICAgICAgICog
V2ViVmlldy9XZWJIVE1MVmlldy5tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfdG9wSFRNTFZp
ZXddKTogQWRkZWQuCisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9pc1RvcEhUTUxWaWV3XSk6IEFk
ZGVkLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5zaWRlQW5vdGhlckhUTUxWaWV3XSk6IENo
YW5nZWQgdG8gdXNlIF90b3BIVE1MVmlldy4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3N0YXJ0
RHJhZ2dpbmdJbWFnZTphdDpvcGVyYXRpb246ZXZlbnQ6c291cmNlSXNESFRNTDpESFRNTFdyb3Rl
RGF0YTpdKToKKyAgICAgICAgRm9yd2FyZCB0byB0aGUgdG9wIEhUTUwgdmlldywgc28gdGhhdCBv
bmx5IHRoZSB0b3AgdmlldyBldmVyIHN0YXJ0cyBhIGRyYWdnaW5nIG9wZXJhdGlvbi4KKyAgICAg
ICAgQ2hhbmdlIGRyYWdnaW5nIGNvZGUgdG8gbm90IGFzc3VtZSB0aGF0IHRoZSBkcmFnZ2VkIG5v
ZGUgaXMgaW4gdGhlIGN1cnJlbnQgdmlldydzIGRvY3VtZW50LgorICAgICAgICBBZGRlZCBjaGVj
a3MgdGhhdCB0aGUgbm9kZSBpcyBhbiBlbGVtZW50IGluIGEgY291cGxlIHBsYWNlcyBhbmQgY29v
cmRpbmF0ZSBjb252ZXJzaW9ucy4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX21heVN0YXJ0RHJh
Z0F0RXZlbnRMb2NhdGlvbjpdKTogRm9yd2FyZCB0byB0aGUgdG9wIEhUTUwgdmlldy4KKyAgICAg
ICAgKC1bTlNBcnJheSBhZGRNb3VzZU1vdmVkT2JzZXJ2ZXJdKTogQ2hhbmdlIHRvIGRvIG5vdGhp
bmcgd2hlbiB0aGUgZGF0YVNvdXJjZSBmaWVsZCBpcyAwLAorICAgICAgICBzaW5jZSB3ZSBub3cg
dXNlIHRoZSBkYXRhU291cmNlIGZpZWxkIHRvIGdldCB0byB0aGUgV2ViVmlldy4KKyAgICAgICAg
KC1bTlNBcnJheSByZW1vdmVNb3VzZU1vdmVkT2JzZXJ2ZXJdKTogQWRkZWQgYSBjb21tZW50Lgor
ICAgICAgICAoLVtOU0FycmF5IGRyYWdJbWFnZTphdDpvZmZzZXQ6ZXZlbnQ6cGFzdGVib2FyZDpz
b3VyY2U6c2xpZGVCYWNrOl0pOgorICAgICAgICBGb3J3YXJkIHRvIHRoZSB0b3AgSFRNTCB2aWV3
LgorICAgICAgICAoLVtOU0FycmF5IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza0ZvckxvY2Fs
Ol0pOiBBc3NlcnQgdGhhdCBpdCdzIHRoZSB0b3AgSFRNTCB2aWV3LgorICAgICAgICAoLVtOU0Fy
cmF5IGRyYWdnZWRJbWFnZTptb3ZlZFRvOl0pOiBEaXR0by4KKyAgICAgICAgKC1bTlNBcnJheSBk
cmFnZ2VkSW1hZ2U6ZW5kZWRBdDpvcGVyYXRpb246XSk6IERpdHRvLgorICAgICAgICAoLVtOU0Fy
cmF5IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246XSk6IERpdHRvLgor
ICAgICAgICAoLVtOU0FycmF5IF9jYW5Qcm9jZXNzRHJhZ1dpdGhEcmFnZ2luZ0luZm86XSk6IERp
dHRvLgorICAgICAgICAoLVtOU0FycmF5IF9pc01vdmVEcmFnXSk6IERpdHRvLgorICAgICAgICAo
LVtOU0FycmF5IGRyYWdnaW5nVXBkYXRlZFdpdGhEcmFnZ2luZ0luZm86YWN0aW9uTWFzazpdKTog
RGl0dG8uCisgICAgICAgICgtW05TQXJyYXkgZHJhZ2dpbmdDYW5jZWxsZWRXaXRoRHJhZ2dpbmdJ
bmZvOl0pOiBEaXR0by4KKyAgICAgICAgKC1bTlNBcnJheSBjb25jbHVkZURyYWdGb3JEcmFnZ2lu
Z0luZm86YWN0aW9uTWFzazpdKTogRGl0dG8uIEFsc28gYWRkZWQgY29kZSB0byB3b3JrCisgICAg
ICAgIHdpdGggdGhlIGFwcHJvcHJpYXRlIGJyaWRnZSB3aGVuIHJlY2VpdmluZyBhIGRyYWcuIFRo
aXMgZml4ZXMgdGhlIHByb2JsZW0gd2hlcmUgdGhlCisgICAgICAgIHRvcCBsZXZlbCBmcmFtZSBn
b3QgYSBzZWxlY3Rpb24gaW50ZW5kZWQgZm9yIHRoZSBpbm5lciBmcmFtZTsgdGhlIHNvdXJjZSBv
ZiB0aGUgYnVnLgorICAgICAgICAoLVtOU0FycmF5IGVsZW1lbnRBdFBvaW50OmFsbG93U2hhZG93
Q29udGVudDpdKTogQWRkZWQgY29kZSB0byBjb252ZXJ0IHRoZSBjb29yZGluYXRlcworICAgICAg
ICBzbyB0aGlzIHdvcmtzIHByb3Blcmx5IHdoZW4gcmV0dXJuaW5nIGFuIGVsZW1lbnQgZnJvbSBh
biBpbm5lciBmcmFtZS4KKyAgICAgICAgKC1bTlNBcnJheSBzZXREYXRhU291cmNlOl0pOiBBZGRl
ZCBhIGNhbGwgdG8gYWRkTW91c2VNb3ZlZE9ic2VydmVyLCBuZWVkZWQgbm93IHRoYXQKKyAgICAg
ICAgYWRkTW91c2VNb3ZlZE9ic2VydmVyIHdvbid0IGRvIGFueXRoaW5nIGlmIGNhbGxlZCB3aGVu
IGRhdGFTb3VyY2UgaXMgbmlsLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfZGVsZWdhdGVEcmFn
U291cmNlQWN0aW9uTWFza10pOiBGb3J3YXJkIHRvIHRoZSB0b3AgSFRNTCB2aWV3LgorCisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm06CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGRlYWxs
b2NdKTogUmVtb3ZlZCBjb2RlIHRvIHJlbGVhc2UgZHJhZ0NhcmV0QnJpZGdlIHNpbmNlIHRoYXQg
ZmllbGQKKyAgICAgICAgaXMgbm93IGdvbmUuCisgICAgICAgICgtW1dlYlZpZXcgbW92ZURyYWdD
YXJldFRvUG9pbnQ6XSk6IEFsd2F5cyBjYWxsIHRoZSBtYWluIGZyYW1lJ3MgYnJpZGdlLCBzaW5j
ZSB0aGUKKyAgICAgICAgZHJhZyBjYXJldCBpcyBub3cgYSBwYWdlLWxldmVsIGl0ZW0uIExhdGVy
IHdlJ2xsIG1vdmUgaXQgdG8gdGhlIHBhZ2UgYnJpZGdlLgorICAgICAgICAoLVtXZWJWaWV3IHJl
bW92ZURyYWdDYXJldF0pOiBEaXR0by4KKwogMjAwNi0wNi0wMyAgU3RldmUgRmFsa2VuYnVyZyAg
PHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IGh5YXR0LgpJbmRleDog
V2ViS2l0L1dlYlZpZXcvV2ViVmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dl
YlZpZXcubQkocmV2aXNpb24gMTQ3MTcpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJWaWV3Lm0JKHdv
cmtpbmcgY29weSkKQEAgLTI3OSw3ICsyNzksNiBAQAogICAgIAogICAgIE5TVmlldyA8V2ViRG9j
dW1lbnREcmFnZ2luZz4gKmRyYWdnaW5nRG9jdW1lbnRWaWV3OwogICAgIHVuc2lnbmVkIGludCBk
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrOwotICAgIFdlYkZyYW1lQnJpZGdlICpkcmFnQ2FyZXRC
cmlkZ2U7CiAgICAgCiAgICAgQk9PTCBoYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKICAgICBX
ZWJOU0ludGVnZXIgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CkBAIC0zODAsNyArMzc5LDYgQEAK
IHsKICAgICBBU1NFUlQoIV9wYWdlQnJpZGdlKTsKICAgICBBU1NFUlQoZHJhZ2dpbmdEb2N1bWVu
dFZpZXcgPT0gbmlsKTsKLSAgICBBU1NFUlQoZHJhZ0NhcmV0QnJpZGdlID09IG5pbCk7CiAgICAg
CiAgICAgW2JhY2tGb3J3YXJkTGlzdCByZWxlYXNlXTsKICAgICBbYXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50IHJlbGVhc2VdOwpAQCAtMjMwMSwxOSArMjI5OSwxMiBAQAogCiAtICh2b2lkKW1v
dmVEcmFnQ2FyZXRUb1BvaW50OihOU1BvaW50KXBvaW50CiB7Ci0gICAgV2ViRnJhbWVCcmlkZ2Ug
KmJyaWRnZSA9IFtzZWxmIF9icmlkZ2VBdFBvaW50OnBvaW50XTsKLSAgICBpZiAoYnJpZGdlICE9
IF9wcml2YXRlLT5kcmFnQ2FyZXRCcmlkZ2UpIHsKLSAgICAgICAgW19wcml2YXRlLT5kcmFnQ2Fy
ZXRCcmlkZ2UgcmVtb3ZlRHJhZ0NhcmV0XTsKLSAgICAgICAgX3ByaXZhdGUtPmRyYWdDYXJldEJy
aWRnZSA9IFticmlkZ2UgcmV0YWluXTsKLSAgICB9Ci0gICAgW19wcml2YXRlLT5kcmFnQ2FyZXRC
cmlkZ2UgbW92ZURyYWdDYXJldFRvUG9pbnQ6W3NlbGYgY29udmVydFBvaW50OnBvaW50IHRvVmll
dzpbW1tfcHJpdmF0ZS0+ZHJhZ0NhcmV0QnJpZGdlIHdlYkZyYW1lXSBmcmFtZVZpZXddIGRvY3Vt
ZW50Vmlld11dXTsKKyAgICBbW1tzZWxmIG1haW5GcmFtZV0gX2JyaWRnZV0gbW92ZURyYWdDYXJl
dFRvUG9pbnQ6W3NlbGYgY29udmVydFBvaW50OnBvaW50IHRvVmlldzpbW1tzZWxmIG1haW5GcmFt
ZV0gZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddXV07CiB9CiAKIC0gKHZvaWQpcmVtb3ZlRHJhZ0Nh
cmV0CiB7Ci0gICAgW19wcml2YXRlLT5kcmFnQ2FyZXRCcmlkZ2UgcmVtb3ZlRHJhZ0NhcmV0XTsK
LSAgICBbX3ByaXZhdGUtPmRyYWdDYXJldEJyaWRnZSByZWxlYXNlXTsKLSAgICBfcHJpdmF0ZS0+
ZHJhZ0NhcmV0QnJpZGdlID0gbmlsOworICAgIFtbW3NlbGYgbWFpbkZyYW1lXSBfYnJpZGdlXSBy
ZW1vdmVEcmFnQ2FyZXRdOwogfQogCiAtICh2b2lkKV9pbnNwZWN0RWxlbWVudDooaWQpc2VuZGVy
CkBAIC0yMzMzLDcgKzIzMjQsNyBAQAogCiAgICAgbm9kZSA9IFtub2RlIHBhcmVudE5vZGVdOwog
ICAgIG5vZGUgPSBbbm9kZSBwYXJlbnROb2RlXTsKLSAgICBpZiAobm9kZSkgLy8gc2V0IHRoZSBy
b290IG5vZGUgdG8gc29tZXRoaW5nIHJldGl2YWxseSBjbG9zZSB0byB0aGUgZm9jdXNlZCBub2Rl
CisgICAgaWYgKG5vZGUpIC8vIHNldCB0aGUgcm9vdCBub2RlIHRvIHNvbWV0aGluZyByZWxhdGl2
ZWx5IGNsb3NlIHRvIHRoZSBmb2N1c2VkIG5vZGUKICAgICAgICAgW2luc3BlY3RvciBzZXRSb290
RE9NTm9kZTpub2RlXTsKIAogICAgIFtpbnNwZWN0b3Igc2hvd1dpbmRvdzpuaWxdOwpJbmRleDog
V2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmll
dy9XZWJIVE1MVmlldy5tCShyZXZpc2lvbiAxNDcxNykKKysrIFdlYktpdC9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm0JKHdvcmtpbmcgY29weSkKQEAgLTg3OSwxNSArODc5LDIyIEBACiAgICAgfQogfQog
CistIChXZWJIVE1MVmlldyAqKV90b3BIVE1MVmlldworeworICAgIFdlYkhUTUxWaWV3ICp2aWV3
ID0gKFdlYkhUTUxWaWV3ICopW1tbW19wcml2YXRlLT5kYXRhU291cmNlIF93ZWJWaWV3XSBtYWlu
RnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKKyAgICBBU1NFUlQoW3ZpZXcgaXNLaW5k
T2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSk7CisgICAgQVNTRVJUKFtzZWxmIGlzRGVzY2Vu
ZGFudE9mOnZpZXddKTsKKyAgICByZXR1cm4gdmlldzsKK30KKworLSAoQk9PTClfaXNUb3BIVE1M
VmlldworeworICAgIHJldHVybiBzZWxmID09IFtzZWxmIF90b3BIVE1MVmlld107Cit9CisKIC0g
KEJPT0wpX2luc2lkZUFub3RoZXJIVE1MVmlldwogewotICAgIE5TVmlldyAqdmlldyA9IHNlbGY7
Ci0gICAgd2hpbGUgKCh2aWV3ID0gW3ZpZXcgc3VwZXJ2aWV3XSkpIHsKLSAgICAgICAgaWYgKFt2
aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pIHsKLSAgICAgICAgICAgIHJl
dHVybiBZRVM7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIE5POworICAgIHJldHVybiBz
ZWxmICE9IFtzZWxmIF90b3BIVE1MVmlld107CiB9CiAKIC0gKHZvaWQpc2Nyb2xsUG9pbnQ6KE5T
UG9pbnQpcG9pbnQKQEAgLTEyNDYsNiArMTI1MywxMCBAQAogCiAtIChCT09MKV9zdGFydERyYWdn
aW5nSW1hZ2U6KE5TSW1hZ2UgKil3Y0RyYWdJbWFnZSBhdDooTlNQb2ludCl3Y0RyYWdMb2Mgb3Bl
cmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3AgZXZlbnQ6KE5TRXZlbnQgKiltb3VzZURyYWdnZWRF
dmVudCBzb3VyY2VJc0RIVE1MOihCT09MKXNyY0lzREhUTUwgREhUTUxXcm90ZURhdGE6KEJPT0wp
ZGh0bWxXcm90ZURhdGEKIHsKKyAgICBXZWJIVE1MVmlldyAqdG9wSFRNTFZpZXcgPSBbc2VsZiBf
dG9wSFRNTFZpZXddOworICAgIGlmIChzZWxmICE9IHRvcEhUTUxWaWV3KQorICAgICAgICByZXR1
cm4gW3RvcEhUTUxWaWV3IF9zdGFydERyYWdnaW5nSW1hZ2U6d2NEcmFnSW1hZ2UgYXQ6d2NEcmFn
TG9jIG9wZXJhdGlvbjpvcCBldmVudDptb3VzZURyYWdnZWRFdmVudCBzb3VyY2VJc0RIVE1MOnNy
Y0lzREhUTUwgREhUTUxXcm90ZURhdGE6ZGh0bWxXcm90ZURhdGFdOworCiAgICAgTlNQb2ludCBt
b3VzZURvd25Qb2ludCA9IFtzZWxmIGNvbnZlcnRQb2ludDpbX3ByaXZhdGUtPm1vdXNlRG93bkV2
ZW50IGxvY2F0aW9uSW5XaW5kb3ddIGZyb21WaWV3Om5pbF07CiAgICAgTlNEaWN0aW9uYXJ5ICpl
bGVtZW50ID0gW3NlbGYgZWxlbWVudEF0UG9pbnQ6bW91c2VEb3duUG9pbnQgYWxsb3dTaGFkb3dD
b250ZW50OllFU107CiAKQEAgLTEyNjgsMTIgKzEyNzksMTEgQEAKICAgICAgICAgZHJhZ0ltYWdl
ID0gd2NEcmFnSW1hZ2U7CiAgICAgICAgIC8vIHdjRHJhZ0xvYyBpcyB0aGUgY3Vyc29yIHBvc2l0
aW9uIHJlbGF0aXZlIHRvIHRoZSBsb3dlci1sZWZ0IGNvcm5lciBvZiB0aGUgaW1hZ2UuCiAgICAg
ICAgIC8vIFdlIGFkZCBpbiB0aGUgWSBkaW1lbnNpb24gYmVjYXVzZSB3ZSBhcmUgYSBmbGlwcGVk
IHZpZXcsIHNvIGFkZGluZyBtb3ZlcyB0aGUgaW1hZ2UgZG93bi4KLSAgICAgICAgaWYgKGxpbmtV
UkwpIHsKKyAgICAgICAgaWYgKGxpbmtVUkwpCiAgICAgICAgICAgICAvLyBzZWUgSEFDSyBiZWxv
dwogICAgICAgICAgICAgZHJhZ0xvYyA9IE5TTWFrZVBvaW50KG1vdXNlRHJhZ2dlZFBvaW50Lngg
LSB3Y0RyYWdMb2MueCwgbW91c2VEcmFnZ2VkUG9pbnQueSArIHdjRHJhZ0xvYy55KTsKLSAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgZHJhZ0xvYyA9IE5TTWFrZVBv
aW50KG1vdXNlRG93blBvaW50LnggLSB3Y0RyYWdMb2MueCwgbW91c2VEb3duUG9pbnQueSArIHdj
RHJhZ0xvYy55KTsKLSAgICAgICAgfQogICAgICAgICBfcHJpdmF0ZS0+ZHJhZ09mZnNldCA9IHdj
RHJhZ0xvYzsKICAgICB9CiAgICAgCkBAIC0xMjgyLDEzICsxMjkyLDE4IEBACiAgICAgQk9PTCBz
dGFydGVkRHJhZyA9IFlFUzsgIC8vIG9wdGltaXNtIC0gd2UgYWxtb3N0IGFsd2F5cyBtYW5hZ2Ug
dG8gc3RhcnQgdGhlIGRyYWcKIAogICAgIC8vIG5vdGUgcGVyIGt3ZWJzdGVyLCB0aGUgb2Zmc2V0
IGFyZyBiZWxvdyBpcyBhbHdheXMgaWdub3JlZCBpbiBwb3NpdGlvbmluZyB0aGUgaW1hZ2UKLSAg
ICBET01IVE1MRWxlbWVudCAqaW1hZ2VFbGVtZW50ID0gW2VsZW1lbnQgb2JqZWN0Rm9yS2V5Oldl
YkVsZW1lbnRET01Ob2RlS2V5XTsKLSAgICBpZiAoaW1hZ2VVUkwgIT0gbmlsICYmIFtpbWFnZUVs
ZW1lbnQgaW1hZ2VdICE9IG5pbCAmJiAoX3ByaXZhdGUtPmRyYWdTb3VyY2VBY3Rpb25NYXNrICYg
V2ViRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgeworICAgIERPTU5vZGUgKm5vZGUgPSBbZWxlbWVu
dCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudERPTU5vZGVLZXldOworICAgIFdlYkhUTUxWaWV3ICpp
bm5lckhUTUxWaWV3ID0gKFdlYkhUTUxWaWV3ICopW1tbW25vZGUgb3duZXJEb2N1bWVudF0gd2Vi
RnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKKyAgICBBU1NFUlQoW2lubmVySFRNTFZp
ZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSk7CisgICAgaWYgKGltYWdlVVJM
ICE9IG5pbAorICAgICAgICAgICAgJiYgW25vZGUgaXNLaW5kT2ZDbGFzczpbRE9NRWxlbWVudCBj
bGFzc11dCisgICAgICAgICAgICAmJiBbKERPTUVsZW1lbnQgKilub2RlIGltYWdlXQorICAgICAg
ICAgICAgJiYgKF9wcml2YXRlLT5kcmFnU291cmNlQWN0aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VB
Y3Rpb25JbWFnZSkpIHsKICAgICAgICAgaWQgc291cmNlID0gc2VsZjsKICAgICAgICAgaWYgKCFk
aHRtbFdyb3RlRGF0YSkgewogICAgICAgICAgICAgLy8gU2VsZWN0IHRoZSBpbWFnZSB3aGVuIGl0
IGlzIGRyYWdnZWQuIFRoaXMgYWxsb3dzIHRoZSBpbWFnZSB0byBiZSBtb3ZlZCB2aWEgTW92ZVNl
bGVjdGlvbkNvbW1hbmRJbXBsIGFuZCB0aGlzIG1hdGNoZXMgTlNUZXh0VmlldydzIGJlaGF2aW9y
LgotICAgICAgICAgICAgQVNTRVJUKGltYWdlRWxlbWVudCAhPSBuaWwpOwotICAgICAgICAgICAg
W3dlYlZpZXcgc2V0U2VsZWN0ZWRET01SYW5nZTpbW1tzZWxmIF9icmlkZ2VdIERPTURvY3VtZW50
XSBfY3JlYXRlUmFuZ2VXaXRoTm9kZTppbWFnZUVsZW1lbnRdIGFmZmluaXR5Ok5TU2VsZWN0aW9u
QWZmaW5pdHlEb3duc3RyZWFtXTsKKyAgICAgICAgICAgIEFTU0VSVChub2RlICE9IG5pbCk7Cisg
ICAgICAgICAgICBbd2ViVmlldyBzZXRTZWxlY3RlZERPTVJhbmdlOltbbm9kZSBvd25lckRvY3Vt
ZW50XSBfY3JlYXRlUmFuZ2VXaXRoTm9kZTpub2RlXSBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbV07CiAgICAgICAgICAgICBfcHJpdmF0ZS0+ZHJhZ2dpbmdJbWFnZVVSTCA9
IFtpbWFnZVVSTCByZXRhaW5dOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBXZWJBcmNoaXZl
ICphcmNoaXZlOwpAQCAtMTI5NiwyNSArMTMxMSwyNSBAQAogICAgICAgICAgICAgLy8gSWYgdGhl
IGltYWdlIGVsZW1lbnQgY29tZXMgZnJvbSBhbiBJbWFnZURvY3VtZW50LCB3ZSBkb24ndCB3YW50
IHRvIAogICAgICAgICAgICAgLy8gY3JlYXRlIGEgd2ViIGFyY2hpdmUgZnJvbSB0aGUgaW1hZ2Ug
ZWxlbWVudC4KICAgICAgICAgICAgIGlmIChbW3NlbGYgX2JyaWRnZV0gY2FuU2F2ZUFzV2ViQXJj
aGl2ZV0pCi0gICAgICAgICAgICAgICAgYXJjaGl2ZSA9IFtpbWFnZUVsZW1lbnQgd2ViQXJjaGl2
ZV07CisgICAgICAgICAgICAgICAgYXJjaGl2ZSA9IFtub2RlIHdlYkFyY2hpdmVdOwogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGFyY2hpdmUgPSBbV2ViQXJjaGl2ZXIgYXJjaGl2
ZU1haW5SZXNvdXJjZUZvckZyYW1lOltzZWxmIF9mcmFtZV1dOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBzb3VyY2UgPSBbcGFzdGVib2FyZCBfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZUZvckVsZW1lbnQ6aW1hZ2VFbGVtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkw6bGlua1VSTCA/IGxpbmtVUkwg
OiBpbWFnZVVSTAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpdGxlOltlbGVtZW50IG9iamVjdEZvcktleTpXZWJFbGVtZW50
SW1hZ2VBbHRTdHJpbmdLZXldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmU6YXJjaGl2ZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOnNl
bGZdOworICAgICAgICAgICAgc291cmNlID0gW3Bhc3RlYm9hcmQgX3dlYl9kZWNsYXJlQW5kV3Jp
dGVEcmFnSW1hZ2VGb3JFbGVtZW50OihET01FbGVtZW50ICopbm9kZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJM
OmxpbmtVUkwgPyBsaW5rVVJMIDogaW1hZ2VVUkwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTpbZWxlbWVudCBv
YmplY3RGb3JLZXk6V2ViRWxlbWVudEltYWdlQWx0U3RyaW5nS2V5XQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZl
OmFyY2hpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZTpzZWxmXTsKICAgICAgICAgfQogICAgICAgICBbW3dl
YlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyB3aWxsUGVyZm9ybURy
YWdTb3VyY2VBY3Rpb246V2ViRHJhZ1NvdXJjZUFjdGlvbkltYWdlIGZyb21Qb2ludDptb3VzZURv
d25Qb2ludCB3aXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKLSAgICAgICAgaWYgKGRyYWdJbWFn
ZSA9PSBuaWwpIHsKLSAgICAgICAgICAgIFtzZWxmIF93ZWJfRHJhZ0ltYWdlRm9yRWxlbWVudDpb
ZWxlbWVudCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudERPTU5vZGVLZXldCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY3Q6W1tlbGVtZW50IG9iamVjdEZvcktleTpXZWJFbGVt
ZW50SW1hZ2VSZWN0S2V5XSByZWN0VmFsdWVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXZlbnQ6X3ByaXZhdGUtPm1vdXNlRG93bkV2ZW50Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhc3RlYm9hcmQ6cGFzdGVib2FyZAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc291cmNlOnNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0OiZfcHJpdmF0ZS0+ZHJhZ09mZnNldF07Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAg
IGlmIChkcmFnSW1hZ2UgPT0gbmlsKQorICAgICAgICAgICAgW3NlbGYgX3dlYl9EcmFnSW1hZ2VG
b3JFbGVtZW50OihET01FbGVtZW50ICopbm9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWN0OltzZWxmIGNvbnZlcnRSZWN0OltbZWxlbWVudCBvYmplY3RGb3JLZXk6
V2ViRWxlbWVudEltYWdlUmVjdEtleV0gcmVjdFZhbHVlXSBmcm9tVmlldzppbm5lckhUTUxWaWV3
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Ol9wcml2YXRlLT5t
b3VzZURvd25FdmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJk
OnBhc3RlYm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTpz
b3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDomX3ByaXZh
dGUtPmRyYWdPZmZzZXRdOworICAgICAgICBlbHNlCiAgICAgICAgICAgICBbc2VsZiBkcmFnSW1h
Z2U6ZHJhZ0ltYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXQ6ZHJhZ0xvYwogICAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0Ok5TWmVyb1NpemUKQEAgLTEzMjIsNyArMTMzNyw2IEBACiAg
ICAgICAgICAgICAgICAgIHBhc3RlYm9hcmQ6cGFzdGVib2FyZAogICAgICAgICAgICAgICAgICAg
ICAgc291cmNlOnNvdXJjZQogICAgICAgICAgICAgICAgICAgc2xpZGVCYWNrOllFU107Ci0gICAg
ICAgIH0KICAgICB9IGVsc2UgaWYgKGxpbmtVUkwgJiYgKF9wcml2YXRlLT5kcmFnU291cmNlQWN0
aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rKSkgewogICAgICAgICBpZiAoIWRodG1s
V3JvdGVEYXRhKSB7CiAgICAgICAgICAgICBOU0FycmF5ICp0eXBlcyA9IFtOU1Bhc3RlYm9hcmQg
X3dlYl93cml0YWJsZVR5cGVzRm9yVVJMXTsKQEAgLTEzNDcsMTMgKzEzNjEsMTIgQEAKICAgICAg
ICAgICAgICAgICAgc291cmNlOnNlbGYKICAgICAgICAgICAgICAgc2xpZGVCYWNrOllFU107CiAg
ICAgfSBlbHNlIGlmIChpc1NlbGVjdGVkICYmIChfcHJpdmF0ZS0+ZHJhZ1NvdXJjZUFjdGlvbk1h
c2sgJiBXZWJEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSkgewotICAgICAgICBpZiAoIWRodG1s
V3JvdGVEYXRhKSB7Ci0gICAgICAgICAgICBbc2VsZiBfd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQ6cGFzdGVib2FyZF07Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFkaHRtbFdyb3RlRGF0YSkK
KyAgICAgICAgICAgIFtpbm5lckhUTUxWaWV3IF93cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZDpw
YXN0ZWJvYXJkXTsKICAgICAgICAgW1t3ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJW
aWV3OndlYlZpZXcgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uOldlYkRyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24gZnJvbVBvaW50Om1vdXNlRG93blBvaW50IHdpdGhQYXN0ZWJvYXJkOnBhc3Rl
Ym9hcmRdOwogICAgICAgICBpZiAoZHJhZ0ltYWdlID09IG5pbCkgewotICAgICAgICAgICAgZHJh
Z0ltYWdlID0gW3NlbGYgX3NlbGVjdGlvbkRyYWdnaW5nSW1hZ2VdOwotICAgICAgICAgICAgTlNS
ZWN0IGRyYWdnaW5nUmVjdCA9IFtzZWxmIF9zZWxlY3Rpb25EcmFnZ2luZ1JlY3RdOworICAgICAg
ICAgICAgZHJhZ0ltYWdlID0gW2lubmVySFRNTFZpZXcgX3NlbGVjdGlvbkRyYWdnaW5nSW1hZ2Vd
OworICAgICAgICAgICAgTlNSZWN0IGRyYWdnaW5nUmVjdCA9IFtzZWxmIGNvbnZlcnRSZWN0Oltp
bm5lckhUTUxWaWV3IF9zZWxlY3Rpb25EcmFnZ2luZ1JlY3RdIGZyb21WaWV3OmlubmVySFRNTFZp
ZXddOwogICAgICAgICAgICAgZHJhZ0xvYyA9IE5TTWFrZVBvaW50KE5TTWluWChkcmFnZ2luZ1Jl
Y3QpLCBOU01heFkoZHJhZ2dpbmdSZWN0KSk7CiAgICAgICAgICAgICBfcHJpdmF0ZS0+ZHJhZ09m
ZnNldC54ID0gbW91c2VEb3duUG9pbnQueCAtIGRyYWdMb2MueDsKICAgICAgICAgICAgIF9wcml2
YXRlLT5kcmFnT2Zmc2V0LnkgPSBkcmFnTG9jLnkgLSBtb3VzZURvd25Qb2ludC55OyAgICAgICAg
Ly8gaW52ZXJ0ZWQgYmVjYXVzZSB3ZSBhcmUgZmxpcHBlZApAQCAtMTM3MCwxMiArMTM4MywxMyBA
QAogICAgICAgICBbW3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmll
dyB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb246V2ViRHJhZ1NvdXJjZUFjdGlvbkRIVE1MIGZy
b21Qb2ludDptb3VzZURvd25Qb2ludCB3aXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKICAgICAg
ICAgaWYgKGRyYWdJbWFnZSA9PSBuaWwpIHsKICAgICAgICAgICAgIC8vIFdlYkNvcmUgc2hvdWxk
IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UsIGJ1dCB3ZSdsbCBtYWtlIG9uZSB1cAorICAgICAgICAg
ICAgLy8gRklYTUU6IE9vcHMhIEkgcmVtb3ZlZCB0aGlzIGltYWdlIGZyb20gV2ViS2l0LiBJcyB0
aGlzIGEgZGVhZCBjb2RlIHBhdGg/CiAgICAgICAgICAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0g
W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpA
Im1pc3NpbmdfaW1hZ2UiIG9mVHlwZTpAInRpZmYiXTsKICAgICAgICAgICAgIGRyYWdJbWFnZSA9
IFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6aW1hZ2VQYXRoXSBhdXRv
cmVsZWFzZV07CiAgICAgICAgICAgICBOU1NpemUgaW1hZ2VTaXplID0gW2RyYWdJbWFnZSBzaXpl
XTsKLSAgICAgICAgICAgIGRyYWdMb2MgPSBOU01ha2VQb2ludChtb3VzZURvd25Qb2ludC54IC0g
aW1hZ2VTaXplLndpZHRoLzIsIG1vdXNlRG93blBvaW50LnkgKyBpbWFnZVNpemUuaGVpZ2h0LzIp
OwotICAgICAgICAgICAgX3ByaXZhdGUtPmRyYWdPZmZzZXQueCA9IGltYWdlU2l6ZS53aWR0aC8y
OwotICAgICAgICAgICAgX3ByaXZhdGUtPmRyYWdPZmZzZXQueSA9IGltYWdlU2l6ZS5oZWlnaHQv
MjsgICAgICAgIC8vIGludmVydGVkIGJlY2F1c2Ugd2UgYXJlIGZsaXBwZWQKKyAgICAgICAgICAg
IGRyYWdMb2MgPSBOU01ha2VQb2ludChtb3VzZURvd25Qb2ludC54IC0gaW1hZ2VTaXplLndpZHRo
IC8gMiwgbW91c2VEb3duUG9pbnQueSArIGltYWdlU2l6ZS5oZWlnaHQgLyAyKTsKKyAgICAgICAg
ICAgIF9wcml2YXRlLT5kcmFnT2Zmc2V0LnggPSBpbWFnZVNpemUud2lkdGggLyAyOworICAgICAg
ICAgICAgX3ByaXZhdGUtPmRyYWdPZmZzZXQueSA9IGltYWdlU2l6ZS5oZWlnaHQgLyAyOwogICAg
ICAgICB9CiAgICAgICAgIFtzZWxmIGRyYWdJbWFnZTpkcmFnSW1hZ2UKICAgICAgICAgICAgICAg
ICAgICAgIGF0OmRyYWdMb2MKQEAgLTE0MDAsMjYgKzE0MTQsMjggQEAKIAogLSAoQk9PTClfbWF5
U3RhcnREcmFnQXRFdmVudExvY2F0aW9uOihOU1BvaW50KWxvY2F0aW9uCiB7CisgICAgV2ViSFRN
TFZpZXcgKnRvcEhUTUxWaWV3ID0gW3NlbGYgX3RvcEhUTUxWaWV3XTsKKyAgICBpZiAoc2VsZiAh
PSB0b3BIVE1MVmlldykKKyAgICAgICAgcmV0dXJuIFt0b3BIVE1MVmlldyBfbWF5U3RhcnREcmFn
QXRFdmVudExvY2F0aW9uOmxvY2F0aW9uXTsKKwogICAgIE5TUG9pbnQgbW91c2VEb3duUG9pbnQg
PSBbc2VsZiBjb252ZXJ0UG9pbnQ6bG9jYXRpb24gZnJvbVZpZXc6bmlsXTsKICAgICBOU0RpY3Rp
b25hcnkgKm1vdXNlRG93bkVsZW1lbnQgPSBbc2VsZiBlbGVtZW50QXRQb2ludDptb3VzZURvd25Q
b2ludCBhbGxvd1NoYWRvd0NvbnRlbnQ6WUVTXTsKIAogICAgIEFTU0VSVChbc2VsZiBfd2ViVmll
d10pOwotICAgIGlmIChbbW91c2VEb3duRWxlbWVudCBvYmplY3RGb3JLZXk6IFdlYkVsZW1lbnRJ
bWFnZUtleV0gIT0gbmlsICYmCi0gICAgICAgIFttb3VzZURvd25FbGVtZW50IG9iamVjdEZvcktl
eTogV2ViRWxlbWVudEltYWdlVVJMS2V5XSAhPSBuaWwgJiYgCi0gICAgICAgIFtbW3NlbGYgX3dl
YlZpZXddIHByZWZlcmVuY2VzXSBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHldICYmIAotICAgICAg
ICAoX3ByaXZhdGUtPmRyYWdTb3VyY2VBY3Rpb25NYXNrICYgV2ViRHJhZ1NvdXJjZUFjdGlvbklt
YWdlKSkgeworCisgICAgaWYgKFttb3VzZURvd25FbGVtZW50IG9iamVjdEZvcktleTpXZWJFbGVt
ZW50SW1hZ2VLZXldCisgICAgICAgICAgICAmJiBbbW91c2VEb3duRWxlbWVudCBvYmplY3RGb3JL
ZXk6V2ViRWxlbWVudEltYWdlVVJMS2V5XQorICAgICAgICAgICAgJiYgW1tbc2VsZiBfd2ViVmll
d10gcHJlZmVyZW5jZXNdIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseV0KKyAgICAgICAgICAgICYm
IChfcHJpdmF0ZS0+ZHJhZ1NvdXJjZUFjdGlvbk1hc2sgJiBXZWJEcmFnU291cmNlQWN0aW9uSW1h
Z2UpKQogICAgICAgICByZXR1cm4gWUVTOwotICAgIH0KICAgICAKLSAgICBpZiAoW21vdXNlRG93
bkVsZW1lbnQgb2JqZWN0Rm9yS2V5OldlYkVsZW1lbnRMaW5rVVJMS2V5XSAhPSBuaWwgJiYgCi0g
ICAgICAgIChfcHJpdmF0ZS0+ZHJhZ1NvdXJjZUFjdGlvbk1hc2sgJiBXZWJEcmFnU291cmNlQWN0
aW9uTGluaykpIHsKKyAgICBpZiAoW21vdXNlRG93bkVsZW1lbnQgb2JqZWN0Rm9yS2V5OldlYkVs
ZW1lbnRMaW5rVVJMS2V5XQorICAgICAgICAgICAgJiYgKF9wcml2YXRlLT5kcmFnU291cmNlQWN0
aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rKSkKICAgICAgICAgcmV0dXJuIFlFUzsK
LSAgICB9CiAgICAgCi0gICAgaWYgKFtbbW91c2VEb3duRWxlbWVudCBvYmplY3RGb3JLZXk6V2Vi
RWxlbWVudElzU2VsZWN0ZWRLZXldIGJvb2xWYWx1ZV0gJiYKLSAgICAgICAgKF9wcml2YXRlLT5k
cmFnU291cmNlQWN0aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pKSB7Cisg
ICAgaWYgKFtbbW91c2VEb3duRWxlbWVudCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudElzU2VsZWN0
ZWRLZXldIGJvb2xWYWx1ZV0KKyAgICAgICAgICAgICYmIChfcHJpdmF0ZS0+ZHJhZ1NvdXJjZUFj
dGlvbk1hc2sgJiBXZWJEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSkKICAgICAgICAgcmV0dXJu
IFlFUzsKLSAgICB9CiAgICAgCiAgICAgcmV0dXJuIE5POwogfQpAQCAtMTY3NCw5ICsxNjkwLDgg
QEAKIAogLSAoTlNSZWN0KV9zZWxlY3Rpb25EcmFnZ2luZ1JlY3QKIHsKLSAgICBpZiAoW3NlbGYg
X2hhc1NlbGVjdGlvbl0pIHsKKyAgICBpZiAoW3NlbGYgX2hhc1NlbGVjdGlvbl0pCiAgICAgICAg
IHJldHVybiBbW3NlbGYgX2JyaWRnZV0gdmlzaWJsZVNlbGVjdGlvblJlY3RdOwotICAgIH0KICAg
ICByZXR1cm4gTlNaZXJvUmVjdDsKIH0KIApAQCAtMjAwNCw3ICsyMDE5LDYgQEAKIHsKICAgICBT
RUwgYWN0aW9uID0gW2l0ZW0gYWN0aW9uXTsKICAgICBXZWJGcmFtZUJyaWRnZSAqYnJpZGdlID0g
W3NlbGYgX2JyaWRnZV07Ci0gIAogCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoY2hhbmdl
QmFzZVdyaXRpbmdEaXJlY3Rpb246KSAvLyBGSVhNRTogY2hlY2sgbWVudSBpdGVtIGJhc2VkIG9u
IHdyaXRpbmcgZGlyZWN0aW9uCiAgICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGNo
YW5nZVNwZWxsaW5nOikKQEAgLTIyMjAsMjEgKzIyMzQsMjUgQEAKIAogLSAodm9pZClhZGRNb3Vz
ZU1vdmVkT2JzZXJ2ZXIKIHsKLSAgICAvLyBBbHdheXMgYWRkIGEgbW91c2UgbW92ZSBvYnNlcnZl
ciBpZiB0aGUgREIgcmVxdWVzdGVkLCBvciBpZiB3ZSdyZSB0aGUga2V5IHdpbmRvdy4KLSAgICBp
ZiAoKFtbc2VsZiB3aW5kb3ddIGlzS2V5V2luZG93XSAmJiAhW3NlbGYgX2luc2lkZUFub3RoZXJI
VE1MVmlld10pIHx8Ci0gICAgICAgIFtbc2VsZiBfd2ViVmlld10gX2Rhc2hib2FyZEJlaGF2aW9y
OldlYkRhc2hib2FyZEJlaGF2aW9yQWx3YXlzU2VuZE1vdXNlRXZlbnRzVG9BbGxXaW5kb3dzXSl7
Ci0gICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2
ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IobW91c2VNb3ZlZE5vdGlmaWNhdGlvbjopCi0gICAg
ICAgICAgICBuYW1lOldLTW91c2VNb3ZlZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAg
ICAgICBbc2VsZiBfZnJhbWVPckJvdW5kc0NoYW5nZWRdOwotICAgIH0KKyAgICBpZiAoIV9wcml2
YXRlLT5kYXRhU291cmNlIHx8ICFbc2VsZiBfaXNUb3BIVE1MVmlld10pCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFVubGVzcyB0aGUgRGFzaGJvYXJkIGFza3MgdXMgdG8gZG8gdGhpcyBmb3Ig
YWxsIHdpbmRvd3MsIGtlZXAgYW4gb2JzZXJ2ZXIgZ29pbmcgb25seSBmb3IgdGhlIGtleSB3aW5k
b3cuCisgICAgaWYgKCEoW1tzZWxmIHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtbc2VsZiBfd2Vi
Vmlld10gX2Rhc2hib2FyZEJlaGF2aW9yOldlYkRhc2hib2FyZEJlaGF2aW9yQWx3YXlzU2VuZE1v
dXNlRXZlbnRzVG9BbGxXaW5kb3dzXSkpCisgICAgICAgIHJldHVybjsKKworICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3IobW91c2VNb3ZlZE5vdGlmaWNhdGlvbjopCisgICAgICAgIG5hbWU6V0tNb3VzZU1v
dmVkTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07CisgICAgW3NlbGYgX2ZyYW1lT3JCb3VuZHND
aGFuZ2VkXTsKIH0KIAogLSAodm9pZClyZW1vdmVNb3VzZU1vdmVkT2JzZXJ2ZXIKIHsKLSAgICAv
LyBEb24ndCByZW1vdmUgdGhlIG9ic2VydmVyIGlmIHdlJ3JlIHJ1bm5pbmcgdGhlIERCCisgICAg
Ly8gRG9uJ3QgcmVtb3ZlIHRoZSBvYnNlcnZlciBpZiB3ZSdyZSBydW5uaW5nIHRoZSBEYXNoYm9h
cmQuCisgICAgLy8gRklYTUU6IFJpZ2h0IGZvciB0aGUgd2luZG93RGlkUmVzaWduS2V5OiBjYXNl
LCBidXQgd3JvbmcgZm9yIHRoZSB2aWV3V2lsbE1vdmVUb1dpbmRvdzogY2FzZS4KICAgICBpZiAo
W1tzZWxmIF93ZWJWaWV3XSBfZGFzaGJvYXJkQmVoYXZpb3I6V2ViRGFzaGJvYXJkQmVoYXZpb3JB
bHdheXNTZW5kTW91c2VFdmVudHNUb0FsbFdpbmRvd3NdKQogICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAorCiAgICAgW1tzZWxmIF93ZWJWaWV3XSBfbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6bmls
IG1vZGlmaWVyRmxhZ3M6MF07CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmCiAgICAgICAgIG5hbWU6V0tNb3VzZU1vdmVkTm90aWZp
Y2F0aW9uKCkgb2JqZWN0Om5pbF07CkBAIC0yMzI0LDcgKzIzNDIsNyBAQAogICAgIC8vIHdoZW4g
ZGVjb2RpbmcgYSBXZWJWaWV3LiAgV2hlbiBXZWJWaWV3cyBhcmUgZGVjb2RlZCB0aGVpciBzdWJ2
aWV3cwogICAgIC8vIGFyZSBjcmVhdGVkIGJ5IGluaXRXaXRoQ29kZXI6IGFuZCBzbyB3b24ndCBi
ZSBub3JtYWxseQogICAgIC8vIGluaXRpYWxpemVkLiAgVGhlIHN0dWIgdmlld3MgYXJlIGRpc2Nh
cmRlZCBieSBXZWJWaWV3LgotICAgIGlmIChfcHJpdmF0ZSl7CisgICAgaWYgKF9wcml2YXRlKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBTb21lIG9mIHRoZXNlIGNhbGxzIG1heSBub3Qgd29yayBiZWNh
dXNlIHRoaXMgdmlldyBtYXkgYmUgYWxyZWFkeSByZW1vdmVkIGZyb20gaXQncyBzdXBlcnZpZXcu
CiAgICAgICAgIFtzZWxmIHJlbW92ZU1vdXNlTW92ZWRPYnNlcnZlcl07CiAgICAgICAgIFtzZWxm
IHJlbW92ZVdpbmRvd09ic2VydmVyc107CkBAIC0yODE2LDkgKzI4MzQsMTcgQEAKICAgICAgICAg
ICAgc291cmNlOihpZClzb3VyY2UKICAgICAgICAgc2xpZGVCYWNrOihCT09MKXNsaWRlQmFjawog
ewotICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbc2VsZiBfd2ViVmlld107CiAgICAgW3NlbGYgX3N0
b3BBdXRvc2Nyb2xsVGltZXJdOwogCisgICAgV2ViSFRNTFZpZXcgKnRvcEhUTUxWaWV3ID0gW3Nl
bGYgX3RvcEhUTUxWaWV3XTsKKyAgICBpZiAoc2VsZiAhPSB0b3BIVE1MVmlldykgeworICAgICAg
ICBbdG9wSFRNTFZpZXcgZHJhZ0ltYWdlOmRyYWdJbWFnZSBhdDpbc2VsZiBjb252ZXJ0UG9pbnQ6
YXQgdG9WaWV3OnRvcEhUTUxWaWV3XQorICAgICAgICAgICAgb2Zmc2V0Om9mZnNldCBldmVudDpl
dmVudCBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZSBzbGlkZUJhY2s6c2xpZGVC
YWNrXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYlZpZXcgKndlYlZpZXcgPSBb
c2VsZiBfd2ViVmlld107CisKICAgICBfcHJpdmF0ZS0+aW5pdGlhdGVkRHJhZyA9IFlFUzsKICAg
ICBbd2ViVmlldyBfc2V0SW5pdGlhdGVkRHJhZzpZRVNdOwogCkBAIC0yODQ5LDE1ICsyODc1LDE3
IEBACiAKIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tGb3JM
b2NhbDooQk9PTClpc0xvY2FsCiB7Ci0gICAgaWYgKF9wcml2YXRlLT53ZWJDb3JlRHJhZ09wID09
IE5TRHJhZ09wZXJhdGlvbk5vbmUpIHsKLSAgICAgICAgcmV0dXJuIChOU0RyYWdPcGVyYXRpb25H
ZW5lcmljIHwgTlNEcmFnT3BlcmF0aW9uQ29weSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0
dXJuIF9wcml2YXRlLT53ZWJDb3JlRHJhZ09wOwotICAgIH0KKyAgICBBU1NFUlQoW3NlbGYgX2lz
VG9wSFRNTFZpZXddKTsKKworICAgIGlmIChfcHJpdmF0ZS0+d2ViQ29yZURyYWdPcCA9PSBOU0Ry
YWdPcGVyYXRpb25Ob25lKQorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uR2VuZXJpYyB8
IE5TRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgcmV0dXJuIF9wcml2YXRlLT53ZWJDb3JlRHJhZ09w
OwogfQogCiAtICh2b2lkKWRyYWdnZWRJbWFnZTooTlNJbWFnZSAqKWltYWdlIG1vdmVkVG86KE5T
UG9pbnQpc2NyZWVuTG9jCiB7CisgICAgQVNTRVJUKFtzZWxmIF9pc1RvcEhUTUxWaWV3XSk7CisK
ICAgICBOU1BvaW50IHdpbmRvd0ltYWdlTG9jID0gW1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVl
blRvQmFzZTpzY3JlZW5Mb2NdOwogICAgIE5TUG9pbnQgd2luZG93TW91c2VMb2MgPSBOU01ha2VQ
b2ludCh3aW5kb3dJbWFnZUxvYy54ICsgX3ByaXZhdGUtPmRyYWdPZmZzZXQueCwgd2luZG93SW1h
Z2VMb2MueSArIF9wcml2YXRlLT5kcmFnT2Zmc2V0LnkpOwogICAgIFtbc2VsZiBfYnJpZGdlXSBk
cmFnU291cmNlTW92ZWRUbzp3aW5kb3dNb3VzZUxvY107CkBAIC0yODY1LDYgKzI4OTMsOCBAQAog
CiAtICh2b2lkKWRyYWdnZWRJbWFnZTooTlNJbWFnZSAqKWFuSW1hZ2UgZW5kZWRBdDooTlNQb2lu
dClhUG9pbnQgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aW9uCiB7CisgICAgQVNT
RVJUKFtzZWxmIF9pc1RvcEhUTUxWaWV3XSk7CisKICAgICBOU1BvaW50IHdpbmRvd0ltYWdlTG9j
ID0gW1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTphUG9pbnRdOwogICAgIE5TUG9p
bnQgd2luZG93TW91c2VMb2MgPSBOU01ha2VQb2ludCh3aW5kb3dJbWFnZUxvYy54ICsgX3ByaXZh
dGUtPmRyYWdPZmZzZXQueCwgd2luZG93SW1hZ2VMb2MueSArIF9wcml2YXRlLT5kcmFnT2Zmc2V0
LnkpOwogICAgIFtbc2VsZiBfYnJpZGdlXSBkcmFnU291cmNlRW5kZWRBdDp3aW5kb3dNb3VzZUxv
YyBvcGVyYXRpb246b3BlcmF0aW9uXTsKQEAgLTI4NzYsNyArMjkwNiw3IEBACiAgICAgX3ByaXZh
dGUtPmlnbm9yaW5nTW91c2VEcmFnZ2VkRXZlbnRzID0gWUVTOwogICAgIAogICAgIC8vIE9uY2Ug
dGhlIGRyYWdnaW5nIG1hY2hpbmVyeSBraWNrcyBpbiwgd2Ugbm8gbG9uZ2VyIGdldCBtb3VzZSBk
cmFncyBvciB0aGUgdXAgZXZlbnQuCi0gICAgLy8ga2h0bWwgZXhwZWN0cyB0byBnZXQgYmFsYW5j
ZWQgZG93bi91cCdzLCBzbyB3ZSBtdXN0IGZha2UgdXAgYSBtb3VzZXVwLgorICAgIC8vIFdlYkNv
cmUgZXhwZWN0cyB0byBnZXQgYmFsYW5jZWQgZG93bi91cCdzLCBzbyB3ZSBtdXN0IGZha2UgdXAg
YSBtb3VzZXVwLgogICAgIE5TRXZlbnQgKmZha2VFdmVudCA9IFtOU0V2ZW50IG1vdXNlRXZlbnRX
aXRoVHlwZTpOU0xlZnRNb3VzZVVwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2F0aW9uOndpbmRvd01vdXNlTG9jCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOltbTlNBcHAgY3VycmVudEV2ZW50XSBtb2Rp
ZmllckZsYWdzXQpAQCAtMjg5Miw5NyArMjkyMiw5OCBAQAogCiAtIChOU0FycmF5ICopbmFtZXNP
ZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGluYXRp
b24KIHsKKyAgICBBU1NFUlQoW3NlbGYgX2lzVG9wSFRNTFZpZXddKTsKICAgICBBU1NFUlQoX3By
aXZhdGUtPmRyYWdnaW5nSW1hZ2VVUkwpOwotICAgIAorCiAgICAgTlNGaWxlV3JhcHBlciAqd3Jh
cHBlciA9IFtbc2VsZiBfZGF0YVNvdXJjZV0gX2ZpbGVXcmFwcGVyRm9yVVJMOl9wcml2YXRlLT5k
cmFnZ2luZ0ltYWdlVVJMXTsKICAgICBpZiAod3JhcHBlciA9PSBuaWwpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGltYWdlIGZpbGUuIERpZCB0aGUgc291cmNlIGltYWdl
IGNoYW5nZSB3aGlsZSBkcmFnZ2luZz8gKDxyZGFyOi8vcHJvYmxlbS80MjQ0ODYxPikiKTsKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9Ci0gICAgCisKICAgICAvLyBGSVhNRTogUmVwb3J0IGFu
IGVycm9yIGlmIHdlIGZhaWwgdG8gY3JlYXRlIGEgZmlsZS4KICAgICBOU1N0cmluZyAqcGF0aCA9
IFtbZHJvcERlc3RpbmF0aW9uIHBhdGhdIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpb
d3JhcHBlciBwcmVmZXJyZWRGaWxlbmFtZV1dOwogICAgIHBhdGggPSBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIF93ZWJraXRfcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGg6cGF0
aF07Ci0gICAgaWYgKCFbd3JhcHBlciB3cml0ZVRvRmlsZTpwYXRoIGF0b21pY2FsbHk6Tk8gdXBk
YXRlRmlsZW5hbWVzOllFU10pIHsKKyAgICBpZiAoIVt3cmFwcGVyIHdyaXRlVG9GaWxlOnBhdGgg
YXRvbWljYWxseTpOTyB1cGRhdGVGaWxlbmFtZXM6WUVTXSkKICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIGltYWdlIGZpbGUgdmlhIC1bTlNGaWxlV3JhcHBlciB3cml0ZVRvRmls
ZTphdG9taWNhbGx5OnVwZGF0ZUZpbGVuYW1lczpdIik7Ci0gICAgfQotICAgIAorCiAgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0aCBsYXN0UGF0aENvbXBvbmVudF1dOwog
fQogCiAtIChCT09MKV9jYW5Qcm9jZXNzRHJhZ1dpdGhEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdn
aW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CisgICAgQVNTRVJUKFtzZWxmIF9pc1RvcEhUTUxWaWV3
XSk7CisKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nUGFzdGVib2FyZF07CiAgICAgTlNNdXRhYmxlU2V0ICp0eXBlcyA9IFtOU011dGFibGVTZXQg
c2V0V2l0aEFycmF5OltwYXN0ZWJvYXJkIHR5cGVzXV07CiAgICAgW3R5cGVzIGludGVyc2VjdFNl
dDpbTlNTZXQgc2V0V2l0aEFycmF5OltXZWJIVE1MVmlldyBfaW5zZXJ0YWJsZVBhc3RlYm9hcmRU
eXBlc11dXTsKLSAgICBpZiAoW3R5cGVzIGNvdW50XSA9PSAwKSB7CisgICAgaWYgKFt0eXBlcyBj
b3VudF0gPT0gMCkKICAgICAgICAgcmV0dXJuIE5POwotICAgIH0gZWxzZSBpZiAoW3R5cGVzIGNv
dW50XSA9PSAxICYmIAotICAgICAgICAgICAgICAgW3R5cGVzIGNvbnRhaW5zT2JqZWN0Ok5TRmls
ZW5hbWVzUGJvYXJkVHlwZV0gJiYgCi0gICAgICAgICAgICAgICAhW3NlbGYgX2ltYWdlRXhpc3Rz
QXRQYXRoczpbcGFzdGVib2FyZCBwcm9wZXJ0eUxpc3RGb3JUeXBlOk5TRmlsZW5hbWVzUGJvYXJk
VHlwZV1dKSB7CisgICAgaWYgKFt0eXBlcyBjb3VudF0gPT0gMQorICAgICAgICAgICAgJiYgW3R5
cGVzIGNvbnRhaW5zT2JqZWN0Ok5TRmlsZW5hbWVzUGJvYXJkVHlwZV0KKyAgICAgICAgICAgICYm
ICFbc2VsZiBfaW1hZ2VFeGlzdHNBdFBhdGhzOltwYXN0ZWJvYXJkIHByb3BlcnR5TGlzdEZvclR5
cGU6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXV0pCiAgICAgICAgIHJldHVybiBOTzsKLSAgICB9Ci0g
ICAgCisKICAgICBOU1BvaW50IHBvaW50ID0gW3NlbGYgY29udmVydFBvaW50OltkcmFnZ2luZ0lu
Zm8gZHJhZ2dpbmdMb2NhdGlvbl0gZnJvbVZpZXc6bmlsXTsKICAgICBOU0RpY3Rpb25hcnkgKmVs
ZW1lbnQgPSBbc2VsZiBlbGVtZW50QXRQb2ludDpwb2ludCBhbGxvd1NoYWRvd0NvbnRlbnQ6WUVT
XTsKICAgICBpZiAoW1tzZWxmIF93ZWJWaWV3XSBpc0VkaXRhYmxlXSB8fCBbW2VsZW1lbnQgb2Jq
ZWN0Rm9yS2V5OldlYkVsZW1lbnRET01Ob2RlS2V5XSBpc0NvbnRlbnRFZGl0YWJsZV0pIHsKLSAg
ICAgICAgaWYgKF9wcml2YXRlLT5pbml0aWF0ZWREcmFnICYmIFtbZWxlbWVudCBvYmplY3RGb3JL
ZXk6V2ViRWxlbWVudElzU2VsZWN0ZWRLZXldIGJvb2xWYWx1ZV0pIHsKLSAgICAgICAgICAgIC8v
IENhbid0IGRyYWcgb250byB0aGUgc2VsZWN0aW9uIGJlaW5nIGRyYWdnZWQuCisgICAgICAgIC8v
IENhbid0IGRyYWcgb250byB0aGUgc2VsZWN0aW9uIGJlaW5nIGRyYWdnZWQuCisgICAgICAgIGlm
IChfcHJpdmF0ZS0+aW5pdGlhdGVkRHJhZyAmJiBbW2VsZW1lbnQgb2JqZWN0Rm9yS2V5OldlYkVs
ZW1lbnRJc1NlbGVjdGVkS2V5XSBib29sVmFsdWVdKQogICAgICAgICAgICAgcmV0dXJuIE5POwot
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBZRVM7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJu
IE5POwogfQogCiAtIChCT09MKV9pc01vdmVEcmFnCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5p
bml0aWF0ZWREcmFnICYmIAotICAgIChbc2VsZiBfaXNFZGl0YWJsZV0gJiYgW3NlbGYgX2hhc1Nl
bGVjdGlvbl0pICYmCi0gICAgKFtbTlNBcHAgY3VycmVudEV2ZW50XSBtb2RpZmllckZsYWdzXSAm
IE5TQWx0ZXJuYXRlS2V5TWFzaykgPT0gMDsKKyAgICBBU1NFUlQoW3NlbGYgX2lzVG9wSFRNTFZp
ZXddKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmluaXRpYXRlZERyYWcKKyAgICAgICAgJiYgW3Nl
bGYgX2lzRWRpdGFibGVdICYmIFtzZWxmIF9oYXNTZWxlY3Rpb25dCisgICAgICAgICYmICEoW1tO
U0FwcCBjdXJyZW50RXZlbnRdIG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKTsK
IH0KIAogLSAoQk9PTClfaXNOU0NvbG9yRHJhZzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2lu
Z0luZm8KIHsKLSAgICByZXR1cm4gKFtbW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1Bhc3RlYm9hcmRd
IHR5cGVzXSBjb250YWluc09iamVjdDpOU0NvbG9yUGJvYXJkVHlwZV0pOworICAgIHJldHVybiBb
W1tkcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSB0eXBlc10gY29udGFpbnNPYmplY3Q6
TlNDb2xvclBib2FyZFR5cGVdOwogfQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRh
dGVkV2l0aERyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8gYWN0
aW9uTWFzazoodW5zaWduZWQgaW50KWFjdGlvbk1hc2sKIHsKKyAgICBBU1NFUlQoW3NlbGYgX2lz
VG9wSFRNTFZpZXddKTsKKwogICAgIE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBOU0RyYWdP
cGVyYXRpb25Ob25lOwotICAgIAotICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uREhUTUwpIHsKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdEZXN0aW5hdGlv
bkFjdGlvbkRIVE1MKQogICAgICAgICBvcGVyYXRpb24gPSBbW3NlbGYgX2JyaWRnZV0gZHJhZ09w
ZXJhdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dOwotICAgIH0KICAgICBfcHJpdmF0
ZS0+d2ViQ29yZUhhbmRsaW5nRHJhZyA9IChvcGVyYXRpb24gIT0gTlNEcmFnT3BlcmF0aW9uTm9u
ZSk7Ci0gICAgCi0gICAgaWYgKChhY3Rpb25NYXNrICYgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
RWRpdCkgJiYKLSAgICAgICAgIV9wcml2YXRlLT53ZWJDb3JlSGFuZGxpbmdEcmFnCi0gICAgICAg
ICYmIFtzZWxmIF9jYW5Qcm9jZXNzRHJhZ1dpdGhEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSkg
ewotICAgICAgICBpZiAoW3NlbGYgX2lzTlNDb2xvckRyYWc6ZHJhZ2dpbmdJbmZvXSkgeworCisg
ICAgaWYgKChhY3Rpb25NYXNrICYgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkgJiYgIV9w
cml2YXRlLT53ZWJDb3JlSGFuZGxpbmdEcmFnICYmIFtzZWxmIF9jYW5Qcm9jZXNzRHJhZ1dpdGhE
cmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSkgeworICAgICAgICBpZiAoW3NlbGYgX2lzTlNDb2xv
ckRyYWc6ZHJhZ2dpbmdJbmZvXSkKICAgICAgICAgICAgIG9wZXJhdGlvbiA9IE5TRHJhZ09wZXJh
dGlvbkdlbmVyaWM7Ci0gICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBXZWJW
aWV3ICp3ZWJWaWV3ID0gW3NlbGYgX3dlYlZpZXddOwogICAgICAgICAgICAgW3dlYlZpZXcgbW92
ZURyYWdDYXJldFRvUG9pbnQ6W3dlYlZpZXcgY29udmVydFBvaW50OltkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdMb2NhdGlvbl0gZnJvbVZpZXc6bmlsXV07CiAgICAgICAgICAgICBvcGVyYXRpb24gPSBb
c2VsZiBfaXNNb3ZlRHJhZ10gPyBOU0RyYWdPcGVyYXRpb25Nb3ZlIDogTlNEcmFnT3BlcmF0aW9u
Q29weTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCiAgICAgICAgIFtbc2Vs
ZiBfd2ViVmlld10gcmVtb3ZlRHJhZ0NhcmV0XTsKLSAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
b3BlcmF0aW9uOwogfQogCiAtICh2b2lkKWRyYWdnaW5nQ2FuY2VsbGVkV2l0aERyYWdnaW5nSW5m
bzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIHsKKyAgICBBU1NFUlQoW3NlbGYg
X2lzVG9wSFRNTFZpZXddKTsKKwogICAgIFtbc2VsZiBfYnJpZGdlXSBkcmFnRXhpdGVkV2l0aERy
YWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dOwogICAgIFtbc2VsZiBfd2ViVmlld10gcmVtb3ZlRHJh
Z0NhcmV0XTsKIH0KIAogLSAoQk9PTCljb25jbHVkZURyYWdGb3JEcmFnZ2luZ0luZm86KGlkIDxO
U0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvIGFjdGlvbk1hc2s6KHVuc2lnbmVkIGludClhY3Rp
b25NYXNrCiB7CisgICAgQVNTRVJUKFtzZWxmIF9pc1RvcEhUTUxWaWV3XSk7CisKICAgICBXZWJW
aWV3ICp3ZWJWaWV3ID0gW3NlbGYgX3dlYlZpZXddOwogICAgIFdlYkZyYW1lQnJpZGdlICpicmlk
Z2UgPSBbc2VsZiBfYnJpZGdlXTsKICAgICBpZiAoX3ByaXZhdGUtPndlYkNvcmVIYW5kbGluZ0Ry
YWcpIHsKQEAgLTI5OTAsNTMgKzMwMjEsNjIgQEAKICAgICAgICAgW1t3ZWJWaWV3IF9VSURlbGVn
YXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb246V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUwgZm9yRHJhZ2dpbmdJbmZvOmRyYWdn
aW5nSW5mb107CiAgICAgICAgIFticmlkZ2UgY29uY2x1ZGVEcmFnRm9yRHJhZ2dpbmdJbmZvOmRy
YWdnaW5nSW5mb107CiAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgfSBlbHNlIGlmIChhY3Rpb25N
YXNrICYgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkgewotICAgICAgICBpZiAoW3NlbGYg
X2lzTlNDb2xvckRyYWc6ZHJhZ2dpbmdJbmZvXSkgewotICAgICAgICAgICAgTlNDb2xvciAqY29s
b3IgPSBbTlNDb2xvciBjb2xvckZyb21QYXN0ZWJvYXJkOltkcmFnZ2luZ0luZm8gZHJhZ2dpbmdQ
YXN0ZWJvYXJkXV07Ci0gICAgICAgICAgICBpZiAoIWNvbG9yKQotICAgICAgICAgICAgICAgIHJl
dHVybiBOTzsKLSAgICAgICAgICAgIERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKnN0eWxlID0gW3Nl
bGYgX2VtcHR5U3R5bGVdOwotICAgICAgICAgICAgW3N0eWxlIHNldFByb3BlcnR5OkAiY29sb3Ii
IDpbc2VsZiBfY29sb3JBc1N0cmluZzpjb2xvcl0gOkAiIl07Ci0gICAgICAgICAgICBpZiAoW1t3
ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyBzaG91bGRB
cHBseVN0eWxlOnN0eWxlIHRvRWxlbWVudHNJbkRPTVJhbmdlOlticmlkZ2Ugc2VsZWN0ZWRET01S
YW5nZV1dKSB7Ci0gICAgICAgICAgICAgICAgW1t3ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVy
XSB3ZWJWaWV3OndlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246V2ViRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCBmb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXTsKLSAg
ICAgICAgICAgICAgICBbYnJpZGdlIGFwcGx5U3R5bGU6c3R5bGUgd2l0aFVuZG9BY3Rpb246V2Vi
VW5kb0FjdGlvblNldENvbG9yXTsKLSAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwotICAgICAg
ICAgICAgfQorICAgIH0KKworICAgIGlmICghKGFjdGlvbk1hc2sgJiBXZWJEcmFnRGVzdGluYXRp
b25BY3Rpb25FZGl0KSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgTlNQb2ludCBwb2ludCA9
IFtzZWxmIGNvbnZlcnRQb2ludDpbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dIGZyb21W
aWV3Om5pbF07CisgICAgTlNEaWN0aW9uYXJ5ICplbGVtZW50ID0gW3NlbGYgZWxlbWVudEF0UG9p
bnQ6cG9pbnQgYWxsb3dTaGFkb3dDb250ZW50OllFU107CisgICAgQVNTRVJUKGVsZW1lbnQpOwor
ICAgIFdlYkZyYW1lICppbm5lckZyYW1lID0gKFdlYkZyYW1lICopW2VsZW1lbnQgb2JqZWN0Rm9y
S2V5OldlYkVsZW1lbnRGcmFtZUtleV07CisgICAgQVNTRVJUKGlubmVyRnJhbWUpOworICAgIEFT
U0VSVChbaW5uZXJGcmFtZSBpc0tpbmRPZkNsYXNzOltXZWJGcmFtZSBjbGFzc11dKTsKKyAgICBX
ZWJGcmFtZUJyaWRnZSAqaW5uZXJCcmlkZ2UgPSBbaW5uZXJGcmFtZSBfYnJpZGdlXTsKKworICAg
IGlmIChbc2VsZiBfaXNOU0NvbG9yRHJhZzpkcmFnZ2luZ0luZm9dKSB7CisgICAgICAgIE5TQ29s
b3IgKmNvbG9yID0gW05TQ29sb3IgY29sb3JGcm9tUGFzdGVib2FyZDpbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nUGFzdGVib2FyZF1dOworICAgICAgICBpZiAoIWNvbG9yKQogICAgICAgICAgICAgcmV0
dXJuIE5POworICAgICAgICBET01DU1NTdHlsZURlY2xhcmF0aW9uICpzdHlsZSA9IFtzZWxmIF9l
bXB0eVN0eWxlXTsKKyAgICAgICAgW3N0eWxlIHNldFByb3BlcnR5OkAiY29sb3IiIDpbc2VsZiBf
Y29sb3JBc1N0cmluZzpjb2xvcl0gOkAiIl07CisgICAgICAgIGlmIChbW3dlYlZpZXcgX2VkaXRp
bmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IHNob3VsZEFwcGx5U3R5bGU6c3R5
bGUgdG9FbGVtZW50c0luRE9NUmFuZ2U6W2lubmVyQnJpZGdlIHNlbGVjdGVkRE9NUmFuZ2VdXSkg
eworICAgICAgICAgICAgW1t3ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ondl
YlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246V2ViRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uRWRpdCBmb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXTsKKyAgICAgICAgICAgIFtp
bm5lckJyaWRnZSBhcHBseVN0eWxlOnN0eWxlIHdpdGhVbmRvQWN0aW9uOldlYlVuZG9BY3Rpb25T
ZXRDb2xvcl07CisgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgQk9PTCBkaWRJbnNlcnQgPSBOTzsKLSAgICAgICAgICAgIGlmIChb
c2VsZiBfY2FuUHJvY2Vzc0RyYWdXaXRoRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pIHsKLSAg
ICAgICAgICAgICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nUGFzdGVib2FyZF07Ci0gICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9pc01vdmVEcmFn
XSB8fCBbYnJpZGdlIGlzRHJhZ0NhcmV0UmljaGx5RWRpdGFibGVdKSB7IAotICAgICAgICAgICAg
ICAgICAgICBCT09MIGNob3NlUGxhaW5UZXh0OwotICAgICAgICAgICAgICAgICAgICBET01Eb2N1
bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3Rl
Ym9hcmQ6cGFzdGVib2FyZCBhbGxvd1BsYWluVGV4dDpZRVMgY2hvc2VQbGFpblRleHQ6JmNob3Nl
UGxhaW5UZXh0XTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50ICYmIFtzZWxmIF9z
aG91bGRJbnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpbYnJpZGdlIGRy
YWdDYXJldERPTVJhbmdlXSBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZF0p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRl
cl0gd2ViVmlldzp3ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOldlYkRy
YWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQgZm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb107Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoW3NlbGYgX2lzTW92ZURyYWddKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQk9PTCBzbWFydE1vdmUgPSBbYnJpZGdlIHNlbGVjdGlvbkdy
YW51bGFyaXR5XSA9PSBXZWJCcmlkZ2VTZWxlY3RCeVdvcmQgJiYgW3NlbGYgX2NhblNtYXJ0UmVw
bGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFticmlkZ2UgbW92ZVNlbGVjdGlvblRvRHJhZ0NhcmV0OmZyYWdtZW50IHNtYXJ0TW92ZTpz
bWFydE1vdmVdOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbYnJpZGdlIHNldFNlbGVjdGlvblRvRHJhZ0NhcmV0XTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbYnJpZGdlIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21l
bnQ6ZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6WUVTIHNtYXJ0UmVwbGFjZTpbc2VsZiBfY2Fu
U21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0gbWF0Y2hTdHlsZTpjaG9zZVBs
YWluVGV4dF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBkaWRJbnNlcnQgPSBZRVM7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIE5POworICAgIH0KKworICAgIEJPT0wgZGlkSW5zZXJ0ID0gTk87CisgICAgaWYgKFtzZWxm
IF9jYW5Qcm9jZXNzRHJhZ1dpdGhEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSkgeworICAgICAg
ICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nUGFzdGVi
b2FyZF07CisgICAgICAgIGlmIChbc2VsZiBfaXNNb3ZlRHJhZ10gfHwgW2lubmVyQnJpZGdlIGlz
RHJhZ0NhcmV0UmljaGx5RWRpdGFibGVdKSB7IAorICAgICAgICAgICAgQk9PTCBjaG9zZVBsYWlu
VGV4dDsKKyAgICAgICAgICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYg
X2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGFsbG93UGxhaW5UZXh0
OllFUyBjaG9zZVBsYWluVGV4dDomY2hvc2VQbGFpblRleHRdOworICAgICAgICAgICAgaWYgKGZy
YWdtZW50ICYmIFtzZWxmIF9zaG91bGRJbnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdE
T01SYW5nZTpbaW5uZXJCcmlkZ2UgZHJhZ0NhcmV0RE9NUmFuZ2VdIGdpdmVuQWN0aW9uOldlYlZp
ZXdJbnNlcnRBY3Rpb25Ecm9wcGVkXSkgeworICAgICAgICAgICAgICAgIFtbd2ViVmlldyBfVUlE
ZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uOldlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQgZm9yRHJhZ2dpbmdJbmZvOmRy
YWdnaW5nSW5mb107CisgICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9pc01vdmVEcmFnXSkgewor
ICAgICAgICAgICAgICAgICAgICBCT09MIHNtYXJ0TW92ZSA9IFtpbm5lckJyaWRnZSBzZWxlY3Rp
b25HcmFudWxhcml0eV0gPT0gV2ViQnJpZGdlU2VsZWN0QnlXb3JkICYmIFtzZWxmIF9jYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKKyAgICAgICAgICAgICAgICAgICAg
W2lubmVyQnJpZGdlIG1vdmVTZWxlY3Rpb25Ub0RyYWdDYXJldDpmcmFnbWVudCBzbWFydE1vdmU6
c21hcnRNb3ZlXTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBOU1N0cmluZyAqdGV4dCA9IFtzZWxmIF9wbGFpblRleHRGcm9tUGFzdGVib2FyZDpwYXN0ZWJv
YXJkXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRleHQgJiYgW3NlbGYgX3Nob3VsZEluc2Vy
dFRleHQ6dGV4dCByZXBsYWNpbmdET01SYW5nZTpbYnJpZGdlIGRyYWdDYXJldERPTVJhbmdlXSBn
aXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZF0pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3
IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOldlYkRyYWdEZXN0aW5hdGlvbkFjdGlv
bkVkaXQgZm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb107Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBbYnJpZGdlIHNldFNlbGVjdGlvblRvRHJhZ0NhcmV0XTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFticmlkZ2UgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0OnRleHQgc2VsZWN0UmVwbGFj
ZW1lbnQ6WUVTIHNtYXJ0UmVwbGFjZTpbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9h
cmQ6cGFzdGVib2FyZF1dOwotICAgICAgICAgICAgICAgICAgICAgICAgZGlkSW5zZXJ0ID0gWUVT
OwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFtpbm5lckJyaWRn
ZSBzZXRTZWxlY3Rpb25Ub0RyYWdDYXJldF07CisgICAgICAgICAgICAgICAgICAgIFtpbm5lckJy
aWRnZSByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OmZyYWdtZW50IHNlbGVjdFJlcGxhY2Vt
ZW50OllFUyBzbWFydFJlcGxhY2U6W3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJk
OnBhc3RlYm9hcmRdIG1hdGNoU3R5bGU6Y2hvc2VQbGFpblRleHRdOwogICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBkaWRJbnNlcnQgPSBZRVM7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBbd2ViVmlldyByZW1vdmVEcmFnQ2FyZXRdOwotICAgICAgICAgICAgcmV0dXJuIGRp
ZEluc2VydDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICp0ZXh0ID0g
W3NlbGYgX3BsYWluVGV4dEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmRdOworICAgICAgICAgICAg
aWYgKHRleHQgJiYgW3NlbGYgX3Nob3VsZEluc2VydFRleHQ6dGV4dCByZXBsYWNpbmdET01SYW5n
ZTpbaW5uZXJCcmlkZ2UgZHJhZ0NhcmV0RE9NUmFuZ2VdIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNl
cnRBY3Rpb25Ecm9wcGVkXSkgeworICAgICAgICAgICAgICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0
ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uOldlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQgZm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5n
SW5mb107CisgICAgICAgICAgICAgICAgW2lubmVyQnJpZGdlIHNldFNlbGVjdGlvblRvRHJhZ0Nh
cmV0XTsKKyAgICAgICAgICAgICAgICBbaW5uZXJCcmlkZ2UgcmVwbGFjZVNlbGVjdGlvbldpdGhU
ZXh0OnRleHQgc2VsZWN0UmVwbGFjZW1lbnQ6WUVTIHNtYXJ0UmVwbGFjZTpbc2VsZiBfY2FuU21h
cnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF1dOworICAgICAgICAgICAgICAgIGRp
ZEluc2VydCA9IFlFUzsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICByZXR1
cm4gTk87CisgICAgW3dlYlZpZXcgcmVtb3ZlRHJhZ0NhcmV0XTsKKyAgICByZXR1cm4gZGlkSW5z
ZXJ0OwogfQogCiAtIChOU0RpY3Rpb25hcnkgKillbGVtZW50QXRQb2ludDooTlNQb2ludClwb2lu
dApAQCAtMzA1MCw3ICszMDkwLDkgQEAKICAgICBET01Ob2RlICppbm5lck5vblNoYXJlZE5vZGUg
PSBuaWw7CiAgICAgRE9NRWxlbWVudCAqVVJMRWxlbWVudCA9IG5pbDsKICAgICBbW3NlbGYgX2Jy
aWRnZV0gZ2V0SW5uZXJOb25TaGFyZWROb2RlOiZpbm5lck5vblNoYXJlZE5vZGUgaW5uZXJOb2Rl
OiZpbm5lck5vZGUgVVJMRWxlbWVudDomVVJMRWxlbWVudCBhdFBvaW50OnBvaW50IGFsbG93U2hh
ZG93Q29udGVudDphbGxvd107Ci0gICAgcmV0dXJuIFtbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aElubmVyTm9uU2hhcmVkTm9kZTppbm5lck5vblNoYXJlZE5vZGUgaW5uZXJO
b2RlOmlubmVyTm9kZSBVUkxFbGVtZW50OlVSTEVsZW1lbnQgYW5kUG9pbnQ6cG9pbnRdIGF1dG9y
ZWxlYXNlXTsKKyAgICBOU1ZpZXcgKmlubmVyVmlldyA9IFtbW1tpbm5lck5vblNoYXJlZE5vZGUg
b3duZXJEb2N1bWVudF0gd2ViRnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKKyAgICBO
U1BvaW50IGlubmVyUG9pbnQgPSBpbm5lclZpZXcgPyBbc2VsZiBjb252ZXJ0UG9pbnQ6cG9pbnQg
dG9WaWV3OmlubmVyVmlld10gOiBwb2ludDsKKyAgICByZXR1cm4gW1tbV2ViRWxlbWVudERpY3Rp
b25hcnkgYWxsb2NdIGluaXRXaXRoSW5uZXJOb25TaGFyZWROb2RlOmlubmVyTm9uU2hhcmVkTm9k
ZSBpbm5lck5vZGU6aW5uZXJOb2RlIFVSTEVsZW1lbnQ6VVJMRWxlbWVudCBhbmRQb2ludDppbm5l
clBvaW50XSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpbW91c2VVcDooTlNFdmVudCAqKWV2
ZW50CkBAIC0zMTc5LDYgKzMyMjEsNyBAQAogICAgIEFTU0VSVCghX3ByaXZhdGUtPmRhdGFTb3Vy
Y2UpOwogICAgIF9wcml2YXRlLT5kYXRhU291cmNlID0gW2RhdGFTb3VyY2UgcmV0YWluXTsKICAg
ICBbX3ByaXZhdGUtPnBsdWdpbkNvbnRyb2xsZXIgc2V0RGF0YVNvdXJjZTpkYXRhU291cmNlXTsK
KyAgICBbc2VsZiBhZGRNb3VzZU1vdmVkT2JzZXJ2ZXJdOwogfQogCiAtICh2b2lkKWRhdGFTb3Vy
Y2VVcGRhdGVkOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQpAQCAtNTAyMSw4ICs1MDY0LDEy
IEBACiAgICAgLy8gbm90IHJlZmxlY3RlZCBpbiB0aGUgZm9udCBwYW5lbC4gTWF5YmUgc29tZWRh
eSB0aGlzIHdpbGwgY2hhbmdlLgogfQogCi0tICh1bnNpZ25lZCBpbnQpX2RlbGVnYXRlRHJhZ1Nv
dXJjZUFjdGlvbk1hc2sKKy0gKHVuc2lnbmVkKV9kZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb25NYXNr
CiB7CisgICAgV2ViSFRNTFZpZXcgKnRvcEhUTUxWaWV3ID0gW3NlbGYgX3RvcEhUTUxWaWV3XTsK
KyAgICBpZiAoc2VsZiAhPSB0b3BIVE1MVmlldykKKyAgICAgICAgcmV0dXJuIFt0b3BIVE1MVmll
dyBfZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uTWFza107CisKICAgICBBU1NFUlQoX3ByaXZhdGUt
Pm1vdXNlRG93bkV2ZW50ICE9IG5pbCk7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFtzZWxmIF93
ZWJWaWV3XTsKICAgICBOU1BvaW50IHBvaW50ID0gW3dlYlZpZXcgY29udmVydFBvaW50OltfcHJp
dmF0ZS0+bW91c2VEb3duRXZlbnQgbG9jYXRpb25JbldpbmRvd10gZnJvbVZpZXc6bmlsXTsK
</data>
<flag name="review"
          id="2518"
          type_id="1"
          status="+"
          setter="justin.garcia"
    />
          </attachment>
      

    </bug>

</bugzilla>