<?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>149758</bug_id>
          
          <creation_ts>2015-10-02 12:23:51 -0700</creation_ts>
          <short_desc>Cannot select certain text on Wikipedia homepage even when zoomed in</short_desc>
          <delta_ts>2015-10-05 11:51:08 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>iOS 9.0</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1130274</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-10-02 12:23:51 -0700</bug_when>
    <thetext>* STEPS TO REPRODUCE
1. Go to wikipedia.org 
2. Select any plain text


* RESULTS
Expected: Should be able to select text.
Actual: Cannot select text. The page is mostly links, but even zooming in on plain text does not allow for selecting text. Event tapAndHalf doesn&apos;t work on links.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130278</commentid>
    <comment_count>1</comment_count>
      <attachid>262346</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-10-02 12:33:53 -0700</bug_when>
    <thetext>Created attachment 262346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130281</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-02 12:37:26 -0700</bug_when>
    <thetext>Attachment 262346 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:467:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:474:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:475:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:476:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:479:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:369:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:441:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:452:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:474:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:496:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 10 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130290</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-10-02 13:48:08 -0700</bug_when>
    <thetext>Looks really good. Why can’t we have a regression test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130297</commentid>
    <comment_count>4</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-10-02 14:16:27 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Looks really good. Why can’t we have a regression test?

I&apos;ll add it as soon as Simon has the long press working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130684</commentid>
    <comment_count>5</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-10-05 11:51:08 -0700</bug_when>
    <thetext>Thanks for the review!

Committed revision 190568.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262346</attachid>
            <date>2015-10-02 12:33:53 -0700</date>
            <delta_ts>2015-10-05 10:49:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>selection-with-autofocus.txt</filename>
            <type>text/plain</type>
            <size>32746</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDUxMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE1LTEwLTAyICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2Fubm90IHNlbGVjdCBjZXJ0
YWluIHRleHQgb24gV2lraXBlZGlhIGhvbWVwYWdlIGV2ZW4gd2hlbiB6b29tZWQgaW4uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk3NTgKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vMjI0MDc5NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTZXZlcmFsIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZSBnZXN0dXJl
cyBmb3IgdGV4dCBzZWxlY3Rpb24gYXJlIHVzZWQgZm9yIGJvdGgKKyAgICAgICAgZWRpdGFibGUg
YW5kIG5vbiBlZGl0YWJsZSBjb250ZW50LiBXaGVuIHVzZWQgb24gZWRpdGFibGUgY29udGVudCwg
dGhlIHBvaW50CisgICAgICAgIHdoZXJlIHRoZSBnZXN0dXJlIG9jY3VycyBuZWVkcyB0byBiZSBj
b25zdHJhaW5lZCB3aXRoaW4gdGhlIGJvdW5kYXJpZXMgb2YgdGhlCisgICAgICAgIGVkaXRhYmxl
IGVsZW1lbnQuIEluIHRoZSBXZWJQcm9jZXNzIHdlIGRlY2lkZSB3aGV0aGVyIHRvIGNvbnN0cmFp
biB0aGUgcG9pbnQgb3Igbm90IG9ubHkgYmFzZWQKKyAgICAgICAgb24gdGhlIHByZXNlbmNlIG9m
IHRoZSBhc3Npc3RlZCBub2RlLgorICAgICAgICBUaGF0IHVuZm9ydHVuYXRlbHkgZG9lcyBub3Qg
Z3VhcmFudGVlIHRoYXQgdGhlIHVzZXIgaXMgYWN0dWFsbHkgZWRpdGluZyB0aGUgZWxlbWVudCwK
KyAgICAgICAgYnV0IG9ubHkgdGhhdCB0aGUgZWxlbWVudCBpcyBmb2N1c2VkLiBTaW5jZSB0aGUg
a25vd2xlZGdlIGFib3V0IHRoZSBpbnRlcmFjdGlvbiBleGlzdHMgcmVsaWFibHkKKyAgICAgICAg
aW4gdGhlIFVJIHByb2Nlc3MsIHRoaXMgcGF0Y2ggYWRkcyBhIHBhcmFtZXRlciB0byBlYWNoIGdl
c3R1cmUgaGFuZGxlciB0aGF0IHRyaWVzIHRvIGNsaXAKKyAgICAgICAgdGhlIHBvaW50LCB0byBp
bmRpY2F0ZSB3aGV0aGVyIHRoZSB1c2VyIGlzIGFjdHVhbGx5IGludGVyYWN0aW5nIHdpdGggdGhl
IGVsZW1lbnQgc28gdGhhdAorICAgICAgICBpbiB0aGUgV2ViUHJvY2VzcyB0aGUgYXNzaXN0ZWQg
bm9kZSBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZCB0byBjb25zdHJhaW4gdGhlIHBvaW50LgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGVdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBj
aGFuZ2VTZWxlY3Rpb25XaXRoR2VzdHVyZUF0OndpdGhHZXN0dXJlOndpdGhTdGF0ZTpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBzZWxlY3RQb3NpdGlvbkF0UG9pbnQ6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2VsZWN0UG9zaXRpb25BdEJvdW5k
YXJ5OmluRGlyZWN0aW9uOmZyb21Qb2ludDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5OmF0UG9pbnQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdXBkYXRlU2VsZWN0aW9u
V2l0aEV4dGVudFBvaW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludDp3aXRoQm91bmRhcnk6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlB
dFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0
Qm91bmRhcnlXaXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
ZWxlY3RQb3NpdGlvbkF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVw
ZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RXaXRo
R2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZpc2libGVQb3NpdGlvbkluRm9j
dXNlZE5vZGVGb3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFBvc2l0
aW9uQXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRC
b3VuZGFyeVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyYW5nZUZv
ckdyYW51bGFyaXR5QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFRl
eHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorCiAyMDE1LTEwLTAy
ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBzZWxl
Y3Rpb24gaXMgaW5hY2N1cmF0ZSBpbiBXaWtpcGVkaWEgcGFnZXMgd2hlbiBzdGFydGluZyBuYXZp
Z2F0aW9uIGZyb20gd2lraXBlZGlhLm9yZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE5MDUxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDY0LDIwICs0NjQsMjAgQEAg
cHVibGljOgogICAgIGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2RldmljZU9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCB3aWxsQ29tbWl0TGF5ZXJUcmVlKHVpbnQ2
NF90IHRyYW5zYWN0aW9uSUQpOwogCi0gICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0
dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVU
eXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50
MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZv
aWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIHVp
bnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsK
ICAgICB2b2lkIHNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZy
b20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+KTsKICAgICB2b2lkIHVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50LCB1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pOwog
ICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSk7CiAgICAg
dm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKICAgICB2b2lkIG1vdmVTZWxlY3Rpb25CeU9mZnNl
dChpbnQzMl90IG9mZnNldCwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9y
KT4pOwotICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgc3RkOjpmdW5jdGlvbjx2
b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGly
ZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHks
IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBzZWxl
Y3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQgbW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgV2ViQ29yZTo6U2VsZWN0aW9u
RGlyZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAg
ICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0
aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4p
OwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4pOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRh
cnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgc3Rk
OjpmdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZv
aWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgdXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwog
ICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JB
dXRvY29ycmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgdWludDY0X3QsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPik7CiAgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYg
Y29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICBib29sIGFwcGx5
QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMTkwNTEyKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE5MDMsMTAgKzE5MDMsMTUgQEAgLSAodm9pZClfZGlkVXBkYXRl
QmxvY2tTZWxlY3Rpb25XaXRoVG91YwogICAgICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9u
ID0gTk87CiB9CiAKKy0gKEJPT0wpX2lzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlCit7Cisg
ICAgcmV0dXJuIF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50ICE9IG5pbDsKK30KKwogLSAodm9pZClj
aGFuZ2VTZWxlY3Rpb25XaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOihV
SVdLR2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25pemVy
U3RhdGUpc3RhdGUKIHsKICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gWUVTOwotICAg
IF9wYWdlLT5zZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIENoYXJh
Y3RlckdyYW51bGFyaXR5LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9HZXN0dXJlVHlwZShnZXN0
dXJlVHlwZSkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9HZXN0dXJlUmVjb2duaXplclN0YXRl
KHN0YXRlKSksIFtzZWxmLCBzdGF0ZV0oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFn
cywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPnNlbGVj
dFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSksIHN0
YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVSZWNvZ25pemVyU3RhdGUoc3RhdGUpKSwgW3Nl
bGYgX2lzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlXSwgW3NlbGYsIHN0YXRlXShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBn
ZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKHNlbGYsIHBvaW50
LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFncywgZXJyb3IpOwogICAgICAgICBpZiAo
c3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQgfHwgc3RhdGUgPT0gVUlHZXN0
dXJlUmVjb2duaXplclN0YXRlQ2FuY2VsbGVkKQogICAgICAgICAgICAgX3VzaW5nR2VzdHVyZUZv
clNlbGVjdGlvbiA9IE5POwpAQCAtMTk5Miw3ICsxOTk3LDcgQEAgLSAodm9pZClzZWxlY3RQb3Np
dGlvbkF0UG9pbnQ6KENHUG9pbnQpcAogICAgIFVJV0tTZWxlY3Rpb25Db21wbGV0aW9uSGFuZGxl
ciBzZWxlY3Rpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwogICAgIFJldGFp
blB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKICAgICAKLSAgICBfcGFnZS0+c2VsZWN0
UG9zaXRpb25BdFBvaW50KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgW3ZpZXcsIHNlbGVjdGlv
bkhhbmRsZXJdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9wYWdl
LT5zZWxlY3RQb3NpdGlvbkF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCBbc2VsZiBf
aXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGVdLCBbdmlldywgc2VsZWN0aW9uSGFuZGxlcl0o
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIHNlbGVjdGlvbkhh
bmRsZXIoKTsKICAgICAgICAgdmlldy0+X3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POwog
ICAgICAgICBbc2VsZWN0aW9uSGFuZGxlciByZWxlYXNlXTsKQEAgLTIwMDUsNyArMjAxMCw3IEBA
IC0gKHZvaWQpc2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5OihVSVRleHQKICAgICBVSVdLU2VsZWN0
aW9uQ29tcGxldGlvbkhhbmRsZXIgc2VsZWN0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxl
ciBjb3B5XTsKICAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gdmlldyA9IHNlbGY7CiAgICAg
Ci0gICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29y
ZTo6SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51bGFyaXR5KSwgdG9X
S1NlbGVjdGlvbkRpcmVjdGlvbihkaXJlY3Rpb24pLCBbdmlldywgc2VsZWN0aW9uSGFuZGxlcl0o
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPnNlbGVjdFBv
c2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0
b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51bGFyaXR5KSwgdG9XS1NlbGVjdGlvbkRpcmVjdGlvbihk
aXJlY3Rpb24pLCBbc2VsZiBfaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGVdLCBbdmlldywg
c2VsZWN0aW9uSGFuZGxlcl0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAg
ICAgICAgIHNlbGVjdGlvbkhhbmRsZXIoKTsKICAgICAgICAgdmlldy0+X3VzaW5nR2VzdHVyZUZv
clNlbGVjdGlvbiA9IE5POwogICAgICAgICBbc2VsZWN0aW9uSGFuZGxlciByZWxlYXNlXTsKQEAg
LTIwMzEsNyArMjAzNiw3IEBAIC0gKHZvaWQpc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eTooVUlU
ZXgKICAgICBVSVdLU2VsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgc2VsZWN0aW9uSGFuZGxlciA9
IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKICAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4g
dmlldyA9IHNlbGY7CiAKLSAgICBfcGFnZS0+c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9p
bnQoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51bGFy
aXR5KSwgW3ZpZXcsIHNlbGVjdGlvbkhhbmRsZXJdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgeworICAgIF9wYWdlLT5zZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChX
ZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHRvV0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkp
LCBbc2VsZiBfaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGVdLCBbdmlldywgc2VsZWN0aW9u
SGFuZGxlcl0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIHNl
bGVjdGlvbkhhbmRsZXIoKTsKICAgICAgICAgdmlldy0+X3VzaW5nR2VzdHVyZUZvclNlbGVjdGlv
biA9IE5POwogICAgICAgICBbc2VsZWN0aW9uSGFuZGxlciByZWxlYXNlXTsKQEAgLTIwNTIsNyAr
MjA1Nyw3IEBAIC0gKHZvaWQpdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50OigKIHsKICAg
ICBVSVdLU2VsZWN0aW9uV2l0aERpcmVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIHNlbGVjdGlvbkhh
bmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07CiAgICAgCi0gICAgX3BhZ2UtPnVwZGF0
ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIFtzZWxl
Y3Rpb25IYW5kbGVyXShib29sIGVuZElzTW92aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKKyAgICBfcGFnZS0+dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KFdl
YkNvcmU6OkludFBvaW50KHBvaW50KSwgW3NlbGYgX2lzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlXSwgW3NlbGVjdGlvbkhhbmRsZXJdKGJvb2wgZW5kSXNNb3ZpbmcsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBzZWxlY3Rpb25IYW5kbGVyKGVuZElzTW92
aW5nKTsKICAgICAgICAgW3NlbGVjdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgfSk7CkBAIC0y
MDYyLDcgKzIwNjcsNyBAQCAtICh2b2lkKXVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludDoo
CiB7CiAgICAgVUlXS1NlbGVjdGlvbldpdGhEaXJlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBzZWxl
Y3Rpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwogICAgIAotICAgIF9wYWdl
LT51cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQ
b2ludChwb2ludCksIHRvV0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpLCBbc2VsZWN0aW9u
SGFuZGxlcl0oYm9vbCBlbmRJc01vdmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7CisgICAgX3BhZ2UtPnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5k
YXJ5KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgdG9XS1RleHRHcmFudWxhcml0eShncmFudWxh
cml0eSksIFtzZWxmIF9pc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZV0sIFtzZWxlY3Rpb25I
YW5kbGVyXShib29sIGVuZElzTW92aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJy
b3IpIHsKICAgICAgICAgc2VsZWN0aW9uSGFuZGxlcihlbmRJc01vdmluZyk7CiAgICAgICAgIFtz
ZWxlY3Rpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIH0pOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDE5MDUxMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1p
dExheWVyVHJlZShjbwogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhH
ZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJl
U3RhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50
MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tG
dW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCAwLCAwLCAwLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uCiAgICAgfQogCiAgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwg
KHVpbnQzMl90KWdyYW51bGFyaXR5LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsICh1aW50MzJfdClncmFudWxhcml0eSwgZ2VzdHVyZVR5
cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hl
cywgYm9vbCBiYXNlSXNTdGFydCwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlv
bikKQEAgLTQzOCw3ICs0MzgsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVj
dGlvbihjCiAgICAgcmV0dXJuIGF1dG9jb3JyZWN0aW9uQXBwbGllZDsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24p
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBp
ZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6
RXJyb3I6OlVua25vd24pOwpAQCAtNDQ2LDEwICs0NDYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNlbGVjdFRleHRXaXRoR3JhbnVsYQogICAgIH0KICAgICAKICAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBv
aW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Vs
ZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90
PihncmFudWxhcml0eSksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rp
b24gZGlyZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6
OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFz
ZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmQKICAgICB9CiAgICAgCiAgICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRo
RGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9uKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24ocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0
eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBpc0ludGVyYWN0aW5nV2l0aEFz
c2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rp
b24sIHN0ZDo6ZnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5j
dGlvbikKQEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlv
bkF0Qm91bmRhCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2Vs
ZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51
bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CiB9CiAgICAgCi12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6
OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQo
KSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25v
d24pOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0UG9pbnQKICAgICB9CiAgICAgCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RQ
b3NpdGlvbkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TZWxlY3Rp
b25JbkRpcmVjdGlvbihXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tG
dW5jdGlvbikKQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TZWxl
Y3Rpb25JbkRpcmVjCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdp
blNlbGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50NjRf
dCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlv
bikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKDAs
IENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNTAxLDExICs1MDEsMTEgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeAogICAgIH0KICAgICAKICAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlv
bldpdGhFeHRlbnRQb2ludChwb2ludCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQ
b2ludChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CiAgICAgCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
dWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHN0ZDo6ZnVuY3Rp
b248dm9pZCh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24p
CiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigwLCBD
YWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4CiAgICAgfQogICAgIAogICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkocG9pbnQsIGdyYW51bGFyaXR5LCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRl
U2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkocG9pbnQsIGdyYW51bGFyaXR5LCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKICAg
ICAKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCShyZXZpc2lvbiAxOTA1MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MDMsMjAgKzUwMywyMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmKTsKIAogICAgIHZvaWQgYmx1ckFzc2lzdGVkTm9kZSgpOwotICAgIHZv
aWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBn
cmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwg
dWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJl
VHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldp
dGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hl
cywgYm9vbCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRh
dGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQz
Ml90IHRvdWNoLCB1aW50MzJfdCBoYW5kbGVQb3NpdGlvbik7CiAgICAgdm9pZCBzZWxlY3RXaXRo
VHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRl
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGV4dGVuZFNlbGVjdGlvbih1aW50MzJf
dCBncmFudWxhcml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKICAgICB2b2lk
IG1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKLSAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0
aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVs
YXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOworICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJl
Y3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwogICAgIHZvaWQgbW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVp
bnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwotICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0UG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5E
aXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2
b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4
dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBn
cmFudWxhcml0eSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHVw
ZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBlbGVtZW50RGlkRm9j
dXMoV2ViQ29yZTo6Tm9kZSopOwogICAgIHZvaWQgZWxlbWVudERpZEJsdXIoV2ViQ29yZTo6Tm9k
ZSopOwpAQCAtOTUzLDggKzk1Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wbGV0ZVN5bnRo
ZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUqIG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24pOwogICAgIHZvaWQgc2VuZFRhcEhpZ2hsaWdodEZv
ck5vZGVJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6Ok5vZGUqKTsKICAg
ICB2b2lkIHJlc2V0VGV4dEF1dG9zaXppbmdCZWZvcmVMYXlvdXRJZk5lZWRlZChjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIG9sZFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbmV3U2l6
ZSk7Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkluRm9jdXNl
ZE5vZGVGb3JQb2ludChjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50Jik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JHcmFudWxhcml0
eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IHVpbnQzMl90IGdyYW51bGFyaXR5KTsKKyAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvckdyYW51bGFyaXR5
QXRQb2ludChjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
dWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUp
OwogICAgIHZvaWQgdm9sYXRpbGl0eVRpbWVyRmlyZWQoKTsKICNlbmRpZgogI2lmICFQTEFURk9S
TShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTA1MTEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtNTQsMjAgKzU0LDIwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hNb3ZlZFRvUG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQ
b2ludCBwb2ludCkKICAgICBJbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKFdlYkNv
cmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAgICAgQmx1ckFzc2lzdGVkTm9kZSgpCi0gICAgU2VsZWN0
V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5
LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50NjRfdCBj
YWxsYmFja0lEKQorICAgIFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdl
c3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICBVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaChXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBvc2l0aW9uKQog
ICAgIFNlbGVjdFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50IGZyb20sIFdlYkNvcmU6
OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRl
LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIEV4dGVuZFNlbGVjdGlvbih1aW50MzJfdCBncmFu
dWxhcml0eSkKICAgICBTZWxlY3RXb3JkQmFja3dhcmQoKQogICAgIE1vdmVTZWxlY3Rpb25CeU9m
ZnNldChpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTZWxlY3RUZXh0
V2l0aEdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3Qg
Z3JhbnVsYXJpdHksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0UG9zaXRpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3Jh
bnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBT
ZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
dWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgU2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERp
cmVjdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVp
bnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKICAgICBNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rp
b24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLSAgICBTZWxlY3RQb3NpdGlvbkF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgU2VsZWN0UG9zaXRpb25BdFBvaW50KFdlYkNv
cmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1
aW50NjRfdCBjYWxsYmFja0lEKQogICAgIEJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMy
X3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKLSAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3Jl
OjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBSZXF1ZXN0
RGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIFJlcGxhY2VEaWN0YXRl
ZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQogICAgIFJlcGxhY2VTZWxlY3Rl
ZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNp
b24gMTkwNTExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NTEsMTAgKzk1MSwxMCBAQCBQYXNzUmVmUHRy
PFJhbmdlPiBXZWJQYWdlOjpyYW5nZUZvckJsb2NrCiAgICAgcmV0dXJuIHJhbmdlOwogfQogCi12
b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWlu
dDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJl
U3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0
dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90
IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgY29uc3QgRnJhbWUm
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
LSAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWRO
b2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24g
PSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CiAKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkp
IHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2so
cG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIDAsIGNhbGxiYWNrSUQpKTsKQEAgLTE2
OTIsMjcgKzE2OTIsMjcgQEAgdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50
MwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNr
SUQpKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFdlYlBhZ2U6OnZpc2libGVQb3NpdGlvbkluRm9j
dXNlZE5vZGVGb3JQb2ludChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JiBwb2lu
dCkKK1Zpc2libGVQb3NpdGlvbiBXZWJQYWdlOjp2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2Rl
Rm9yUG9pbnQoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpCiB7CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQ
b2ludChmcmFtZS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhwb2ludCkpOwotICAgIEludFBv
aW50IGNvbnN0cmFpbmVkUG9pbnQgPSBtX2Fzc2lzdGVkTm9kZSA/IGNvbnN0cmFpblBvaW50KGFk
anVzdGVkUG9pbnQsIGZyYW1lLCAqbV9hc3Npc3RlZE5vZGUpIDogYWRqdXN0ZWRQb2ludDsKKyAg
ICBJbnRQb2ludCBjb25zdHJhaW5lZFBvaW50ID0gbV9hc3Npc3RlZE5vZGUgJiYgaXNJbnRlcmFj
dGluZ1dpdGhBc3Npc3RlZE5vZGUgPyBjb25zdHJhaW5Qb2ludChhZGp1c3RlZFBvaW50LCBmcmFt
ZSwgKm1fYXNzaXN0ZWROb2RlKSA6IGFkanVzdGVkUG9pbnQ7CiAgICAgcmV0dXJuIGZyYW1lLnZp
c2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0cmFpbmVkUG9pbnQpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgY29uc3QgRnJhbWUmIGZy
YW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2Rl
Rm9yUG9pbnQoZnJhbWUsIHBvaW50KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2
aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CiAgICAgCiAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVs
bCgpKQogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpj
cmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbikucHRyKCksIHBvc2l0
aW9uLmFmZmluaXR5KCksIHRydWUpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3Np
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2lu
dCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVj
dGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5
LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgY29uc3QgRnJhbWUmIGZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBWaXNpYmxlUG9z
aXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJh
bWUsIHBvaW50KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRp
b25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEFz
c2lzdGVkTm9kZSk7CiAKICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpIHsKICAgICAgICAg
cG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5PihncmFudWxhcml0eSksIHN0YXRp
Y19jYXN0PFNlbGVjdGlvbkRpcmVjdGlvbj4oZGlyZWN0aW9uKSk7CkBAIC0xNzM2LDkgKzE3MzYs
OSBAQCB2b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi1Q
YXNzUmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpyYW5nZUZvckdyYW51bGFyaXR5QXRQb2ludChjb25z
dCBGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3Qg
Z3JhbnVsYXJpdHkpCitQYXNzUmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpyYW5nZUZvckdyYW51bGFy
aXR5QXRQb2ludChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUpCiB7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9u
SW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCk7CisgICAgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBw
b2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwogCiAgICAgUmVmUHRyPFJhbmdl
PiByYW5nZTsKICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eT4oZ3JhbnVsYXJpdHkpKSB7CkBAIC0xNzYwLDEwICsxNzYwLDEwIEBAIFBhc3NSZWZQdHI8UmFu
Z2U+IFdlYlBhZ2U6OnJhbmdlRm9yR3JhbnUKICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBj
b25zdCBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSByYW5nZUZvckdyYW51bGFyaXR5
QXRQb2ludChmcmFtZSwgcG9pbnQsIGdyYW51bGFyaXR5KTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gcmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoZnJhbWUsIHBvaW50LCBncmFudWxhcml0
eSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwogCiAgICAgaWYgKHJhbmdlKQogICAg
ICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBVUFNU
UkVBTSwgdHJ1ZSk7CkBAIC0xNzc3LDExICsxNzc3LDExIEBAIHZvaWQgV2ViUGFnZTo6YmVnaW5T
ZWxlY3Rpb25JbkRpcmVjdGlvbigKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVu
c2lnbmVkQ2FsbGJhY2sobV9zZWxlY3Rpb25BbmNob3IgPT0gU3RhcnQsIGNhbGxiYWNrSUQpKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3Vu
ZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRo
RXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVp
bnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1
aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIGNvbnN0IEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1l
LCBwb2ludCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBuZXdSYW5nZSA9IHJhbmdlRm9yR3JhbnVsYXJp
dHlBdFBvaW50KGZyYW1lLCBwb2ludCwgZ3JhbnVsYXJpdHkpOworICAgIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwg
cG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKKyAgICBSZWZQdHI8UmFuZ2U+
IG5ld1JhbmdlID0gcmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoZnJhbWUsIHBvaW50LCBncmFu
dWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwogICAgIAogICAgIGlmIChw
b3NpdGlvbi5pc051bGwoKSB8fCAhbV9pbml0aWFsU2VsZWN0aW9uIHx8ICFuZXdSYW5nZSkgewog
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2soZmFs
c2UsIGNhbGxiYWNrSUQpKTsKQEAgLTE4MDYsMTAgKzE4MDYsMTAgQEAgdm9pZCBXZWJQYWdlOjp1
cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6VW5zaWduZWRDYWxsYmFjayhzZWxlY3Rpb25TdGFydCA9PSBtX2luaXRpYWxTZWxlY3Rpb24t
PnN0YXJ0UG9zaXRpb24oKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0
ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFj
dGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgY29uc3Qg
RnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZv
Y3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9z
aXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50
LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CiAKICAgICBpZiAocG9zaXRpb24uaXNO
dWxsKCkpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbnNpZ25lZENh
bGxiYWNrKGZhbHNlLCBjYWxsYmFja0lEKSk7Cg==
</data>
<flag name="review"
          id="287527"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>