<?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>21750</bug_id>
          
          <creation_ts>2008-10-20 06:52:53 -0700</creation_ts>
          <short_desc>Eliminate the notion of &quot;temporary events&quot;</short_desc>
          <delta_ts>2008-10-20 08:15:01 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>95984</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-10-20 06:52:53 -0700</bug_when>
    <thetext>We mark some events as temporary when dispatching, for the sole reason of manually calling forgetDOMObject when done dispatching.

There doesn&apos;t seem to be any reason to call it manually, as JSEvent destructor will do this automatically right away.

Patch forthcoming. Please let me know why I&apos;m wrong :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95985</commentid>
    <comment_count>1</comment_count>
      <attachid>24521</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-10-20 06:56:56 -0700</bug_when>
    <thetext>Created attachment 24521
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95993</commentid>
    <comment_count>2</comment_count>
      <attachid>24521</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-20 08:02:31 -0700</bug_when>
    <thetext>Comment on attachment 24521
proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95996</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-10-20 08:15:01 -0700</bug_when>
    <thetext>Committed revision 37718 and 37719.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24521</attachid>
            <date>2008-10-20 06:56:56 -0700</date>
            <delta_ts>2008-10-20 08:02:31 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>tempEvent.txt</filename>
            <type>text/plain</type>
            <size>33898</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzcxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODQgQEAKKzIwMDgtMTAtMjAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MAorICAgICAgICBF
bGltaW5hdGUgdGhlIG5vdGlvbiBvZiAidGVtcG9yYXJ5IGV2ZW50cyIKKworICAgICAgICBXZSBt
YXJrIHNvbWUgZXZlbnRzIGFzIHRlbXBvcmFyeSB3aGVuIGRpc3BhdGNoaW5nLCBmb3IgdGhlIHNv
bGUgcmVhc29uIG9mCisgICAgICAgIG1hbnVhbGx5IGNhbGxpbmcgZm9yZ2V0RE9NT2JqZWN0IHdo
ZW4gZG9uZSBkaXNwYXRjaGluZy4KKworICAgICAgICBUaGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUg
YW55IHJlYXNvbiB0byBjYWxsIGl0IG1hbnVhbGx5LCBhcyBKU0V2ZW50IGRlc3RydWN0b3IKKyAg
ICAgICAgd2lsbCBkbyB0aGlzIGF1dG9tYXRpY2FsbHkgcmlnaHQgYXdheS4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgUmVtb3ZlZCBTY3JpcHRDb250cm9sbGVyOjpm
aW5pc2hlZFdpdGhFdmVudCgpLCB3aGljaCB3YXMgY2FsbGVkIGFmdGVyIGRpc3BhdGNoaW5nCisg
ICAgICAgIGEgdGVtcG9yYXJ5IGV2ZW50LgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyk6CisgICAgICAgICog
ZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Tm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaFdpbmRvd0V2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hVSUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hLZXlFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoTW91c2VFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoV2ViS2l0QW5pbWF0
aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaFdl
YktpdFRyYW5zaXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldE5vZGU6
OmRpc3BhdGNoRXZlbnRGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Tm9k
ZTo6ZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
Tm9kZTo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldE5v
ZGUuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZVBvcnQ6OmRpc3BhdGNoQ2xvc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9y
dDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Lmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkaXNwYXRj
aENQUEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoRWRpdGFibGVDb250ZW50Q2hh
bmdlZEV2ZW50cyk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdtZW50OjpSZXBsYWNlbWVudEZy
YWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dCk6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBw
bGljYXRpb25DYWNoZTo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01BcHBs
aWNhdGlvbkNhY2hlOjpjYWxsTGlzdGVuZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9E
T01BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2NoZWR1bGVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZU92ZXJmbG93U3RhdHVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZGlzcGF0Y2hTY2hlZHVsZWRFdmVudHMpOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxUb09mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlT3ZlcmZsb3dTdGF0dXMpOgorICAg
ICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6
OnNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudElu
c3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6ZGlzcGF0
Y2hFdmVudCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlz
cGF0Y2hSZWFkeVN0YXRlQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpc3BhdGNoWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KToKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmRpc3BhdGNoRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmRpc3BhdGNoWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RV
cGxvYWQuaDoKKyAgICAgICAgRG9uJ3QgcGFzcyB0aGUgdGVtcEV2ZW50IGJvb2xlYW4gYXJvdW5k
LgorCiAyMDA4LTEwLTIwICBBbHAgVG9rZXIgIDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgdW51c2VkIGluY2x1ZGVzIG9ubHkuIFBhcnRpYWwgR1RLKy9XaW4gYnVpbGQgZml4LgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAz
NzcxNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1OCwxNSArMTU4LDYgQEAgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBT
Y3JpcHRDb250cm9sbAogfQogI2VuZGlmCiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZmluaXNo
ZWRXaXRoRXZlbnQoRXZlbnQqIGV2ZW50KQotewotICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4g
dGhlIERPTSBpbXBsZW1lbnRhdGlvbiBoYXMgZmluaXNoZWQgd2l0aCBhIHBhcnRpY3VsYXIgZXZl
bnQuIFRoaXMKLSAgICAvLyBpcyB0aGUgY2FzZSBpbiBzaXRhdGlvbnMgd2hlcmUgYW4gZXZlbnQg
aGFzIGJlZW4gY3JlYXRlZCBqdXN0IGZvciB0ZW1wb3JhcnkgdXNhZ2UsCi0gICAgLy8gZS5nLiBh
biBpbWFnZSBsb2FkIG9yIG1vdXNlIG1vdmUuIE9uY2UgdGhlIGV2ZW50IGhhcyBiZWVuIGRpc3Bh
dGNoZWQsIGl0IGlzIGZvcmdvdHRlbgotICAgIC8vIGJ5IHRoZSBET00gaW1wbGVtZW50YXRpb24g
YW5kIHNvIGRvZXMgbm90IG5lZWQgdG8gYmUgY2FjaGVkIHN0aWxsIGJ5IHRoZSBpbnRlcnByZXRl
cgotICAgIGZvcmdldERPTU9iamVjdCgqZ2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKSwgZXZl
bnQpOwotfQotCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogewogICAgIGlm
IChtX3dpbmRvd1NoZWxsKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgJKHJldmlzaW9uIDM3NzE0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDYgQEAgcHVibGljOgogI2lmIEVOQUJM
RShTVkcpCiAgICAgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBjcmVhdGVTVkdFdmVudEhhbmRs
ZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgTm9kZSop
OwogI2VuZGlmCi0gICAgdm9pZCBmaW5pc2hlZFdpdGhFdmVudChFdmVudCopOwogICAgIHZvaWQg
c2V0RXZlbnRIYW5kbGVyTGluZW5vKGludCBsaW5lbm8pIHsgbV9oYW5kbGVyTGluZW5vID0gbGlu
ZW5vOyB9CiAKICAgICB2b2lkIHNldFByb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGJvb2wgYikgeyBt
X3Byb2Nlc3NpbmdUaW1lckNhbGxiYWNrID0gYjsgfQpJbmRleDogV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJ
KHJldmlzaW9uIDM3NzE0KQorKysgV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg4NCw3ICs4ODQsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkSW5z
ZXJ0aW9uRXZlbnRzCiAgICAgICAgIGMtPmlzRXZlbnRUYXJnZXROb2RlKCkpIHsKICAgICAgICAg
ZWMgPSAwOwogICAgICAgICBFdmVudFRhcmdldE5vZGVDYXN0KGMuZ2V0KCkpLT5kaXNwYXRjaEV2
ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0ZShET01Ob2RlSW5zZXJ0ZWRFdmVudCwgdHJ1ZSwgZmFs
c2UsCi0gICAgICAgICAgICBjLT5wYXJlbnROb2RlKCksIFN0cmluZygpLCBTdHJpbmcoKSwgU3Ry
aW5nKCksIDApLCBlYywgdHJ1ZSk7CisgICAgICAgICAgICBjLT5wYXJlbnROb2RlKCksIFN0cmlu
ZygpLCBTdHJpbmcoKSwgU3RyaW5nKCksIDApLCBlYyk7CiAgICAgICAgIGlmIChlYykKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC04OTcsNyArODk3LDcgQEAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cwogICAgICAgICAgIAogICAgICAgICAgICAgZWMgPSAw
OwogICAgICAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChjLmdldCgpKS0+ZGlzcGF0Y2hFdmVu
dChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoRE9NTm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQs
IGZhbHNlLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAwLCBTdHJpbmcoKSwgU3RyaW5nKCksIFN0
cmluZygpLCAwKSwgZWMsIHRydWUpOworICAgICAgICAgICAgICAgIDAsIFN0cmluZygpLCBTdHJp
bmcoKSwgU3RyaW5nKCksIDApLCBlYyk7CiAgICAgICAgICAgICBpZiAoZWMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC05MTcsNyArOTE3LDcgQEAgc3RhdGljIHZvaWQg
ZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoTgogICAgICAgICBjLT5pc0V2ZW50VGFyZ2V0Tm9k
ZSgpKSB7CiAgICAgICAgIGVjID0gMDsKICAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChjLmdl
dCgpKS0+ZGlzcGF0Y2hFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoRE9NTm9kZVJlbW92ZWRF
dmVudCwgdHJ1ZSwgZmFsc2UsCi0gICAgICAgICAgICBjLT5wYXJlbnROb2RlKCksIFN0cmluZygp
LCBTdHJpbmcoKSwgU3RyaW5nKCksIDApLCBlYywgdHJ1ZSk7CisgICAgICAgICAgICBjLT5wYXJl
bnROb2RlKCksIFN0cmluZygpLCBTdHJpbmcoKSwgU3RyaW5nKCksIDApLCBlYyk7CiAgICAgICAg
IGlmIChlYykKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05MjksNyArOTI5LDcgQEAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoTgogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgZWMgPSAwOwogICAgICAgICAgICAgRXZlbnRUYXJnZXRO
b2RlQ2FzdChjLmdldCgpKS0+ZGlzcGF0Y2hFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoRE9N
Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCwgZmFsc2UsIGZhbHNlLAotICAgICAgICAgICAg
ICAgIDAsIFN0cmluZygpLCBTdHJpbmcoKSwgU3RyaW5nKCksIDApLCBlYywgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgMCwgU3RyaW5nKCksIFN0cmluZygpLCBTdHJpbmcoKSwgMCksIGVjKTsKICAg
ICAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KSW5k
ZXg6IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaAkocmV2aXNpb24gMzc3MTQpCisrKyBXZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJl
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
LCBFeGNlcHRpb25Db2RlJiwgYm9vbCB0ZW1wRXZlbnQgPSBmYWxzZSkgPSAwOworICAgICAgICB2
aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29k
ZSYpID0gMDsKIAogICAgICAgICB2b2lkIHJlZigpIHsgcmVmRXZlbnRUYXJnZXQoKTsgfQogICAg
ICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZkV2ZW50VGFyZ2V0KCk7IH0KSW5kZXg6IFdlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXROb2RlLmNwcAkocmV2aXNpb24gMzc3MTQpCisrKyBXZWJDb3JlL2RvbS9FdmVudFRhcmdl
dE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIGlubGlu
ZSBFdmVudFRhcmdldCogZXZlbnRUYXJnZXRSZQogICAgIHJldHVybiByZWZlcmVuY2VOb2RlOwog
fQogCi1ib29sIEV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
PiBlLCBFeGNlcHRpb25Db2RlJiBlYywgYm9vbCB0ZW1wRXZlbnQpCitib29sIEV2ZW50VGFyZ2V0
Tm9kZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBSZWZQdHI8RXZlbnQ+IGV2dChlKTsKICAgICBBU1NFUlQoIWV2ZW50RGlzcGF0
Y2hGb3JiaWRkZW4oKSk7CkBAIC0yNTYsMTAgKzI1NiwxMCBAQCBib29sIEV2ZW50VGFyZ2V0Tm9k
ZTo6ZGlzcGF0Y2hFdmVudChQYXNzCiAgICAgZXZ0LT5zZXRUYXJnZXQoZXZlbnRUYXJnZXRSZXNw
ZWN0aW5nU1ZHVGFyZ2V0UnVsZXModGhpcykpOwogCiAgICAgUmVmUHRyPEZyYW1lVmlldz4gdmll
dyA9IGRvY3VtZW50KCktPnZpZXcoKTsKLSAgICByZXR1cm4gZGlzcGF0Y2hHZW5lcmljRXZlbnQo
ZXZ0LnJlbGVhc2UoKSwgZWMsIHRlbXBFdmVudCk7CisgICAgcmV0dXJuIGRpc3BhdGNoR2VuZXJp
Y0V2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsKIH0KIAotYm9vbCBFdmVudFRhcmdldE5vZGU6OmRp
c3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGUsIEV4Y2VwdGlvbkNvZGUmIGVj
LCBib29sIHRlbXBFdmVudCkKK2Jvb2wgRXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaEdlbmVyaWNF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQ
dHI8RXZlbnQ+IGV2dChlKTsKIApAQCAtMzg0LDE1ICszODQsNiBAQCBib29sIEV2ZW50VGFyZ2V0
Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlCiAKICAgICBEb2N1bWVudDo6dXBkYXRlRG9jdW1lbnRz
UmVuZGVyaW5nKCk7CiAKLSAgICAvLyBJZiB0ZW1wRXZlbnQgaXMgdHJ1ZSwgdGhpcyBtZWFucyB0
aGF0IHRoZSBET00gaW1wbGVtZW50YXRpb24KLSAgICAvLyB3aWxsIG5vdCBiZSBzdG9yaW5nIGEg
cmVmZXJlbmNlIHRvIHRoZSBldmVudCwgaS5lLiAgdGhlcmUgaXMgbm8KLSAgICAvLyB3YXkgdG8g
cmV0cmlldmUgaXQgZnJvbSBqYXZhc2NyaXB0IGlmIGEgc2NyaXB0IGRvZXMgbm90IGFscmVhZHkK
LSAgICAvLyBoYXZlIGEgcmVmZXJlbmNlIHRvIGl0IGluIGEgdmFyaWFibGUuICBTbyB0aGVyZSBp
cyBubyBuZWVkIGZvcgotICAgIC8vIHRoZSBpbnRlcnByZXRlciB0byBrZWVwIHRoZSBldmVudCBp
biBpdCdzIGNhY2hlCi0gICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAg
ICBpZiAodGVtcEV2ZW50ICYmIGZyYW1lICYmIGZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkp
Ci0gICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+ZmluaXNoZWRXaXRoRXZlbnQoZXZ0LmdldCgpKTsK
LQogICAgIHJldHVybiAhZXZ0LT5kZWZhdWx0UHJldmVudGVkKCk7IC8vICMjIyB3aGF0IGlmIGRl
ZmF1bHRQcmV2ZW50ZWQgd2FzIGNhbGxlZCBiZWZvcmUgZGlzcGF0Y2hFdmVudD8KIH0KIApAQCAt
NDA3LDcgKzM5OCw3IEBAIGJvb2wgRXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaFN1YnRyZWVNb2QK
ICAgICBpZiAoIWRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NU1VCVFJF
RU1PRElGSUVEX0xJU1RFTkVSKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIHJldHVybiBkaXNwYXRjaEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNy
ZWF0ZShET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgdHJ1ZSwgZmFsc2UsIDAsIFN0cmluZygpLCBT
dHJpbmcoKSwgU3RyaW5nKCksIDApLCBlYywgdHJ1ZSk7CisgICAgcmV0dXJuIGRpc3BhdGNoRXZl
bnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKERPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCB0cnVlLCBm
YWxzZSwgMCwgU3RyaW5nKCksIFN0cmluZygpLCBTdHJpbmcoKSwgMCksIGVjKTsKIH0KIAogdm9p
ZCBFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoV2luZG93RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZSkKQEAgLTQzNSw3ICs0MjYsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hXaW5k
b3dFdmVuCiAgICAgICAgICAgICBSZWZQdHI8RXZlbnQ+IG93bmVyRXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50VHlwZSwgZmFsc2UsIGNhbmNlbGFibGVBcmcpOwogICAgICAgICAgICAgb3duZXJF
dmVudC0+c2V0VGFyZ2V0KG93bmVyRWxlbWVudCk7CiAgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICAgICAgICAgIG93bmVyRWxlbWVudC0+ZGlzcGF0Y2hHZW5lcmljRXZlbnQo
b3duZXJFdmVudC5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgICAgIG93bmVyRWxlbWVu
dC0+ZGlzcGF0Y2hHZW5lcmljRXZlbnQob3duZXJFdmVudC5yZWxlYXNlKCksIGVjKTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTQ1MCw3ICs0NDEsNyBAQCBib29sIEV2ZW50VGFyZ2V0Tm9kZTo6
ZGlzcGF0Y2hVSUV2ZW50KGNvCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRy
PFVJRXZlbnQ+IGV2dCA9IFVJRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGNhbmNlbGFi
bGUsIGRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIGRldGFpbCk7CiAgICAgZXZ0LT5zZXRVbmRl
cmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKLSAgICByZXR1cm4gZGlzcGF0Y2hFdmVudChl
dnQucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQoZXZ0LnJl
bGVhc2UoKSwgZWMpOwogfQogCiBib29sIEV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hLZXlFdmVu
dChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSkKQEAgLTQ1OCw3ICs0NDksNyBAQCBi
b29sIEV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hLZXlFdmVudChjCiAgICAgQVNTRVJUKCFldmVu
dERpc3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJl
ZlB0cjxLZXlib2FyZEV2ZW50PiBrZXlib2FyZEV2ZW50ID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRl
KGtleSwgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7Ci0gICAgYm9vbCByID0gZGlzcGF0Y2hF
dmVudChrZXlib2FyZEV2ZW50LGVjLHRydWUpOworICAgIGJvb2wgciA9IGRpc3BhdGNoRXZlbnQo
a2V5Ym9hcmRFdmVudCwgZWMpOwogICAgIAogICAgIC8vIHdlIHdhbnQgdG8gcmV0dXJuIGZhbHNl
IGlmIGRlZmF1bHQgaXMgcHJldmVudGVkIChhbHJlYWR5IHRha2VuIGNhcmUgb2YpCiAgICAgLy8g
b3IgaWYgdGhlIGVsZW1lbnQgaXMgZGVmYXVsdC1oYW5kbGVkIGJ5IHRoZSBET00uIE90aGVyd2lz
ZSB3ZSBsZXQgaXQganVzdApAQCAtNTc2LDcgKzU2Nyw3IEBAIGJvb2wgRXZlbnRUYXJnZXROb2Rl
OjpkaXNwYXRjaE1vdXNlRXZlbnQKICAgICAgICAgcmVsYXRlZFRhcmdldCwgMCwgaXNTaW11bGF0
ZWQpOwogICAgIG1vdXNlRXZlbnQtPnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQu
Z2V0KCkpOwogICAgIAotICAgIGRpc3BhdGNoRXZlbnQobW91c2VFdmVudCwgZWMsIHRydWUpOwor
ICAgIGRpc3BhdGNoRXZlbnQobW91c2VFdmVudCwgZWMpOwogICAgIGJvb2wgZGVmYXVsdEhhbmRs
ZWQgPSBtb3VzZUV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpOwogICAgIGJvb2wgZGVmYXVsdFByZXZl
bnRlZCA9IG1vdXNlRXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKICAgICBpZiAoZGVmYXVsdEhh
bmRsZWQgfHwgZGVmYXVsdFByZXZlbnRlZCkKQEAgLTU5NCw3ICs1ODUsNyBAQCBib29sIEV2ZW50
VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hNb3VzZUV2ZW50CiAgICAgICAgIGRvdWJsZUNsaWNrRXZlbnQt
PnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQuZ2V0KCkpOwogICAgICAgICBpZiAo
ZGVmYXVsdEhhbmRsZWQpCiAgICAgICAgICAgICBkb3VibGVDbGlja0V2ZW50LT5zZXREZWZhdWx0
SGFuZGxlZCgpOwotICAgICAgICBkaXNwYXRjaEV2ZW50KGRvdWJsZUNsaWNrRXZlbnQsIGVjLCB0
cnVlKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChkb3VibGVDbGlja0V2ZW50LCBlYyk7CiAgICAg
ICAgIGlmIChkb3VibGVDbGlja0V2ZW50LT5kZWZhdWx0SGFuZGxlZCgpIHx8IGRvdWJsZUNsaWNr
RXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgICAgICAgIHN3YWxsb3dFdmVudCA9IHRy
dWU7CiAgICAgfQpAQCAtNjI5LDcgKzYyMCw3IEBAIHZvaWQgRXZlbnRUYXJnZXROb2RlOjpkaXNw
YXRjaFdoZWVsRXZlbnQKICAgICAgICAgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgZS5nbG9i
YWxYKCksIGUuZ2xvYmFsWSgpLCBwb3MueCgpLCBwb3MueSgpLAogICAgICAgICBlLmN0cmxLZXko
KSwgZS5hbHRLZXkoKSwgZS5zaGlmdEtleSgpLCBlLm1ldGFLZXkoKSk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgaWYgKCFkaXNwYXRjaEV2ZW50KHdlLnJlbGVhc2UoKSwgZWMsIHRy
dWUpKQorICAgIGlmICghZGlzcGF0Y2hFdmVudCh3ZS5yZWxlYXNlKCksIGVjKSkKICAgICAgICAg
ZS5hY2NlcHQoKTsKIH0KIApAQCAtNjM4LDcgKzYyOSw3IEBAIGJvb2wgRXZlbnRUYXJnZXROb2Rl
OjpkaXNwYXRjaFdlYktpdEFuaW0KICAgICBBU1NFUlQoIWV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4o
KSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcmV0dXJuIGRpc3BhdGNo
RXZlbnQoV2ViS2l0QW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGFuaW1hdGlvbk5h
bWUsIGVsYXBzZWRUaW1lKSwgZWMsIHRydWUpOworICAgIHJldHVybiBkaXNwYXRjaEV2ZW50KFdl
YktpdEFuaW1hdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBhbmltYXRpb25OYW1lLCBlbGFw
c2VkVGltZSksIGVjKTsKIH0KIAogYm9vbCBFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoV2ViS2l0
VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lKQpAQCAtNjQ2LDcgKzYzNyw3IEBA
IGJvb2wgRXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaFdlYktpdFRyYW4KICAgICBBU1NFUlQoIWV2
ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQoV2ViS2l0VHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnRUeXBlLCBwcm9wZXJ0eU5hbWUsIGVsYXBzZWRUaW1lKSwgZWMsIHRydWUpOworICAgIHJl
dHVybiBkaXNwYXRjaEV2ZW50KFdlYktpdFRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlw
ZSwgcHJvcGVydHlOYW1lLCBlbGFwc2VkVGltZSksIGVjKTsKIH0KIAogdm9pZCBFdmVudFRhcmdl
dE5vZGU6OmRpc3BhdGNoRm9jdXNFdmVudCgpCkBAIC02NjMsMTQgKzY1NCwxNCBAQCBib29sIEV2
ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hFdmVudEZvclR5CiB7CiAgICAgQVNTRVJUKCFldmVudERp
c3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHJldHVy
biBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGVBcmcsIGNh
bmNlbGFibGVBcmcpLCBlYywgdHJ1ZSk7CisgICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZyksIGVjKTsKIH0K
IAogYm9vbCBFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoUHJvZ3Jlc3NFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcgJmV2ZW50VHlwZSwgYm9vbCBsZW5ndGhDb21wdXRhYmxlQXJnLCB1bnNpZ25lZCBs
b2FkZWRBcmcsIHVuc2lnbmVkIHRvdGFsQXJnKQogewogICAgIEFTU0VSVCghZXZlbnREaXNwYXRj
aEZvcmJpZGRlbigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICByZXR1cm4gZGlz
cGF0Y2hFdmVudChQcm9ncmVzc0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBsZW5ndGhDb21wdXRh
YmxlQXJnLCBsb2FkZWRBcmcsIHRvdGFsQXJnKSwgZWMsIHRydWUpOworICAgIHJldHVybiBkaXNw
YXRjaEV2ZW50KFByb2dyZXNzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGxlbmd0aENvbXB1dGFi
bGVBcmcsIGxvYWRlZEFyZywgdG90YWxBcmcpLCBlYyk7CiB9CiAKIHZvaWQgRXZlbnRUYXJnZXRO
b2RlOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcgJmV2ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUsIEZyYW1lKiBzb3VyY2UpCkBAIC02NzgsNyArNjY5LDcgQEAgdm9pZCBFdmVudFRh
cmdldE5vZGU6OmRpc3BhdGNoU3RvcmFnZUV2ZQogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAg
ICBBU1NFUlQoIWV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgZGlzcGF0Y2hFdmVudChTdG9yYWdlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUs
IGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzb3VyY2UtPmRvY3VtZW50KCktPmRvY3VtZW50VVJJ
KCksIHNvdXJjZS0+ZG9tV2luZG93KCkpLCBlYywgdHJ1ZSk7IAorICAgIGRpc3BhdGNoRXZlbnQo
U3RvcmFnZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwg
c291cmNlLT5kb2N1bWVudCgpLT5kb2N1bWVudFVSSSgpLCBzb3VyY2UtPmRvbVdpbmRvdygpKSwg
ZWMpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oCShyZXZpc2lvbiAzNzcx
NCkKKysrIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
LCBib29sIHVzZUNhcHR1cmUpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VD
YXB0dXJlKTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
PiwgRXhjZXB0aW9uQ29kZSYsIGJvb2wgdGVtcEV2ZW50ID0gZmFsc2UpOworICAgIHZpcnR1YWwg
Ym9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogCiAgICAgdm9pZCBzZXRFdmVudExp
c3RlbmVyRm9yVHlwZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPik7CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3Bh
dGNoU3RvcmFnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwg
RnJhbWUqIHNvdXJjZSk7CiAgICAgYm9vbCBkaXNwYXRjaFdlYktpdEFuaW1hdGlvbkV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IGRvdWJsZSBlbGFwc2VkVGltZSk7CiAgICAgYm9vbCBkaXNwYXRjaFdlYktpdFRyYW5zaXRpb25F
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSk7Ci0gICAgYm9vbCBkaXNwYXRjaEdlbmVyaWNFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYsIGJvb2wgdGVtcEV2ZW50KTsKKyAg
ICBib29sIGRpc3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25D
b2RlJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqLCBib29s
IHVzZUNhcHR1cmUpOwogCkluZGV4OiBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCShyZXZpc2lvbiAzNzcxNCkKKysr
IFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDcgKzIy
Myw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgICAgICB9CiAK
ICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoZXZ0
LnJlbGVhc2UoKSwgZWMsIGZhbHNlKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFz
ZSgpLCBlYyk7CiAgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIH0KQEAgLTI0Nyw3ICsyNDcs
NyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaENsb3NlRXZlbnQoKQogICAgIH0KIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGRpc3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwg
ZWMsIGZhbHNlKTsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsKICAgICBB
U1NFUlQoIWVjKTsKIH0KIApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY28KICAgICB9CiB9CiAKLWJvb2wgTWVzc2FnZVBvcnQ6OmRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBib29s
IHRlbXBFdmVudCkKK2Jvb2wgTWVzc2FnZVBvcnQ6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChldmVudC0+dHlwZSgp
LmlzRW1wdHkoKSkgewogICAgICAgICBlYyA9IEV2ZW50RXhjZXB0aW9uOjpVTlNQRUNJRklFRF9F
VkVOVF9UWVBFX0VSUjsKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAkocmV2aXNpb24gMzc3MTQpCisrKyBXZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29s
IHVzZUNhcHR1cmUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYsIGJvb2wgdGVtcEV2ZW50ID0gZmFsc2UpOworICAg
ICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxFdmVudExpc3RlbmVy
PiA+IExpc3RlbmVyVmVjdG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5n
SW1wbCosIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsKSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCShyZXZpc2lvbiAzNzcxNCkKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01ODYsNyArNTg2LDcgQEAgYm9vbCBFZGl0b3I6OmRpc3BhdGNoQ1BQRXZl
bnQoY29uc3QgQXRvbQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPEV2
ZW50PiBldnQgPSBDbGlwYm9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwg
Y2xpcGJvYXJkKTsKLSAgICBFdmVudFRhcmdldE5vZGVDYXN0KHRhcmdldCktPmRpc3BhdGNoRXZl
bnQoZXZ0LCBlYywgdHJ1ZSk7CisgICAgRXZlbnRUYXJnZXROb2RlQ2FzdCh0YXJnZXQpLT5kaXNw
YXRjaEV2ZW50KGV2dCwgZWMpOwogICAgIGJvb2wgbm9EZWZhdWx0UHJvY2Vzc2luZyA9IGV2dC0+
ZGVmYXVsdFByZXZlbnRlZCgpOwogCiAgICAgLy8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBm
b3Igc2VjdXJpdHkKQEAgLTc0OCw5ICs3NDgsOSBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaEVkaXRh
YmxlQ29udGVudENoYW5nCiAgICAgRWxlbWVudCogZW5kUm9vdCA9IGNvbW1hbmQuZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgaWYgKHN0YXJ0
Um9vdCkKLSAgICAgICAgc3RhcnRSb290LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUod2Vi
a2l0RWRpdGFibGVDb250ZW50Q2hhbmdlZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYywgdHJ1ZSk7
CisgICAgICAgIHN0YXJ0Um9vdC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKHdlYmtpdEVk
aXRhYmxlQ29udGVudENoYW5nZWRFdmVudCwgZmFsc2UsIGZhbHNlKSwgZWMpOwogICAgIGlmIChl
bmRSb290ICYmIGVuZFJvb3QgIT0gc3RhcnRSb290KQotICAgICAgICBlbmRSb290LT5kaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUod2Via2l0RWRpdGFibGVDb250ZW50Q2hhbmdlZEV2ZW50LCBm
YWxzZSwgZmFsc2UpLCBlYywgdHJ1ZSk7CisgICAgICAgIGVuZFJvb3QtPmRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZSh3ZWJraXRFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnQsIGZhbHNlLCBm
YWxzZSksIGVjKTsKIH0KIAogdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8
RWRpdENvbW1hbmQ+IGNtZCkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcAkocmV2aXNpb24gMzc3MTQpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDcgQEAg
UmVwbGFjZW1lbnRGcmFnbWVudDo6UmVwbGFjZW1lbnRGcmFnbWVudAogICAgIC8vIEdpdmUgdGhl
IHJvb3QgYSBjaGFuY2UgdG8gY2hhbmdlIHRoZSB0ZXh0LgogICAgIFJlZlB0cjxCZWZvcmVUZXh0
SW5zZXJ0ZWRFdmVudD4gZXZ0ID0gQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6OmNyZWF0ZSh0ZXh0
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBlZGl0YWJsZVJvb3QtPmRpc3BhdGNo
RXZlbnQoZXZ0LCBlYywgdHJ1ZSk7CisgICAgZWRpdGFibGVSb290LT5kaXNwYXRjaEV2ZW50KGV2
dCwgZWMpOwogICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICBpZiAodGV4dCAhPSBldnQtPnRleHQo
KSB8fCAhZWRpdGFibGVSb290LT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSB7CiAgICAgICAg
IHJlc3RvcmVUZXN0UmVuZGVyaW5nTm9kZXNUb0ZyYWdtZW50KGhvbGRlci5nZXQoKSk7CkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCShyZXZpc2lvbiAzNzcxNCkKKysrIFdlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3
IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCoKICAgICAgICAgLy8g
U2VuZCBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC4gVGhlIGV2ZW50IGhhbmRsZXIgd2lsbCB1cGRh
dGUgdGV4dCBpZiBuZWNlc3NhcnkuCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
ICAgICBSZWZQdHI8QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ+IGV2dCA9IEJlZm9yZVRleHRJbnNl
cnRlZEV2ZW50OjpjcmVhdGUodGV4dCk7Ci0gICAgICAgIHN0YXJ0Tm9kZS0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50KGV2dCwgZWMsIHRydWUpOworICAgICAgICBzdGFydE5v
ZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChldnQsIGVjKTsKICAgICAg
ICAgbmV3VGV4dCA9IGV2dC0+dGV4dCgpOwogICAgIH0KICAgICAKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiAzNzcx
NCkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBET01BcHBsaWNhdGlvbkNhY2hl
OjpyZW1vdmVFdmVudExpcwogICAgIH0KIH0KIAotYm9vbCBET01BcHBsaWNhdGlvbkNhY2hlOjpk
aXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYywg
Ym9vbCB0ZW1wRXZlbnQpCitib29sIERPTUFwcGxpY2F0aW9uQ2FjaGU6OmRpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChl
dmVudC0+dHlwZSgpLmlzRW1wdHkoKSkgewogICAgICAgICBlYyA9IEV2ZW50RXhjZXB0aW9uOjpV
TlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUjsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIERPTUFw
cGxpY2F0aW9uQ2FjaGU6OmNhbGxMaXN0ZW5lcihjCiAgICAgfQogICAgIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYywgZmFs
c2UpOworICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7CiAgICAgQVNTRVJU
KCFlYyk7ICAgIAogfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNh
dGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBw
bGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiAzNzcxNCkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VD
YXB0dXJlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7Ci0g
ICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlv
bkNvZGUmLCBib29sIHRlbXBFdmVudCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0
Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIAogICAgIHR5
cGVkZWYgVmVjdG9yPFJlZlB0cjxFdmVudExpc3RlbmVyPiA+IExpc3RlbmVyVmVjdG9yOwogICAg
IHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgTGlzdGVuZXJWZWN0b3I+IEV2ZW50
TGlzdGVuZXJzTWFwOwpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDM3NzE0KQor
KysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMTQs
NyArMTMxNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFdmVudChjb24KICAg
ICAgICAgMCwgMCwgY2xpcGJvYXJkKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IEV2ZW50VGFyZ2V0Tm9kZUNhc3QoZHJhZ1RhcmdldCktPmRpc3BhdGNoRXZlbnQobWUuZ2V0KCks
IGVjLCB0cnVlKTsKKyAgICBFdmVudFRhcmdldE5vZGVDYXN0KGRyYWdUYXJnZXQpLT5kaXNwYXRj
aEV2ZW50KG1lLmdldCgpLCBlYyk7CiAgICAgcmV0dXJuIG1lLT5kZWZhdWx0UHJldmVudGVkKCk7
CiB9CiAKQEAgLTE3ODMsNyArMTc4Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChj
b25zdCBQbGF0Zm8KICAgICBrZXlkb3duLT5zZXRUYXJnZXQobm9kZSk7CiAKICAgICBpZiAoaW5p
dGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24p
IHsKLSAgICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChrZXlkb3duLCBlYywgdHJ1ZSk7CisgICAg
ICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQoa2V5ZG93biwgZWMpOwogICAgICAgICByZXR1cm4ga2V5
ZG93bi0+ZGVmYXVsdEhhbmRsZWQoKSB8fCBrZXlkb3duLT5kZWZhdWx0UHJldmVudGVkKCk7CiAg
ICAgfQogCkBAIC0xODAzLDcgKzE4MDMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQo
Y29uc3QgUGxhdGZvCiAgICAgICAgIGtleWRvd24tPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
fQogCi0gICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChrZXlkb3duLCBlYywgdHJ1ZSk7CisgICAgbm9k
ZS0+ZGlzcGF0Y2hFdmVudChrZXlkb3duLCBlYyk7CiAgICAgYm9vbCBrZXlkb3duUmVzdWx0ID0g
a2V5ZG93bi0+ZGVmYXVsdEhhbmRsZWQoKSB8fCBrZXlkb3duLT5kZWZhdWx0UHJldmVudGVkKCk7
CiAgICAgaWYgKGhhbmRsZWRCeUlucHV0TWV0aG9kIHx8IChrZXlkb3duUmVzdWx0ICYmICFiYWNr
d2FyZENvbXBhdGliaWxpdHlNb2RlKSkKICAgICAgICAgcmV0dXJuIGtleWRvd25SZXN1bHQ7CkBA
IC0xODI3LDcgKzE4MjcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxh
dGZvCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGtleXByZXNzLT5rZXlwcmVzc0NvbW1hbmRzKCkg
PSBrZXlkb3duLT5rZXlwcmVzc0NvbW1hbmRzKCk7CiAjZW5kaWYKLSAgICBub2RlLT5kaXNwYXRj
aEV2ZW50KGtleXByZXNzLCBlYywgdHJ1ZSk7CisgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChrZXlw
cmVzcywgZWMpOwogCiAgICAgcmV0dXJuIGtleWRvd25SZXN1bHQgfHwga2V5cHJlc3MtPmRlZmF1
bHRQcmV2ZW50ZWQoKSB8fCBrZXlwcmVzcy0+ZGVmYXVsdEhhbmRsZWQoKTsKIH0KQEAgLTIwOTQs
NyArMjA5NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudCgKICAg
ICBldmVudC0+c2V0SXNMaW5lQnJlYWsoaXNMaW5lQnJlYWspOwogICAgIGV2ZW50LT5zZXRJc0Jh
Y2tUYWIoaXNCYWNrVGFiKTsKICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIHJldHVybiB0YXJn
ZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgcmV0dXJu
IHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCksIGVjKTsKIH0KICAgICAKICAg
ICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAzNzcxNCkKKysrIFdlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw2IEBAIGRvdWJsZSBGcmFt
ZVZpZXc6OnNDdXJyZW50UGFpbnRUaW1lU3RhbXAKIHN0cnVjdCBTY2hlZHVsZWRFdmVudCB7CiAg
ICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OwogICAgIFJlZlB0cjxFdmVudFRhcmdldE5vZGU+IG1f
ZXZlbnRUYXJnZXQ7Ci0gICAgYm9vbCBtX3RlbXBFdmVudDsKIH07CiAKIGNsYXNzIEZyYW1lVmll
d1ByaXZhdGUgewpAQCAtODgyLDE4ICs4ODEsMTcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFNob3Vs
ZFVwZGF0ZVdoaWxlT2ZmcwogICAgIGQtPm1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4gPSBz
aG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbjsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxl
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXROb2Rl
PiBldmVudFRhcmdldCwgYm9vbCB0ZW1wRXZlbnQpCit2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldE5vZGU+
IGV2ZW50VGFyZ2V0KQogewogICAgIGlmICghZC0+bV9lbnF1ZXVlRXZlbnRzKSB7CiAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBldmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVu
dChldmVudCwgZWMsIHRlbXBFdmVudCk7CisgICAgICAgIGV2ZW50VGFyZ2V0LT5kaXNwYXRjaEV2
ZW50KGV2ZW50LCBlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBTY2hlZHVsZWRF
dmVudCogc2NoZWR1bGVkRXZlbnQgPSBuZXcgU2NoZWR1bGVkRXZlbnQ7CiAgICAgc2NoZWR1bGVk
RXZlbnQtPm1fZXZlbnQgPSBldmVudDsKICAgICBzY2hlZHVsZWRFdmVudC0+bV9ldmVudFRhcmdl
dCA9IGV2ZW50VGFyZ2V0OwotICAgIHNjaGVkdWxlZEV2ZW50LT5tX3RlbXBFdmVudCA9IHRlbXBF
dmVudDsKICAgICBkLT5tX3NjaGVkdWxlZEV2ZW50cy5hcHBlbmQoc2NoZWR1bGVkRXZlbnQpOwog
fQogCkBAIC05NzYsNyArOTc0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZU92ZXJmbG93U3Rh
dHVzKGJvbwogICAgICAgICAKICAgICAgICAgc2NoZWR1bGVFdmVudChPdmVyZmxvd0V2ZW50Ojpj
cmVhdGUoaG9yaXpvbnRhbE92ZXJmbG93Q2hhbmdlZCwgaG9yaXpvbnRhbE92ZXJmbG93LAogICAg
ICAgICAgICAgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQsIHZlcnRpY2FsT3ZlcmZsb3cpLAotICAg
ICAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChkLT5tX3ZpZXdwb3J0UmVuZGVyZXItPmVsZW1l
bnQoKSksIHRydWUpOworICAgICAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChkLT5tX3ZpZXdw
b3J0UmVuZGVyZXItPmVsZW1lbnQoKSkpOwogICAgIH0KICAgICAKIH0KQEAgLTk5Nyw4ICs5OTUs
NyBAQCB2b2lkIEZyYW1lVmlldzo6ZGlzcGF0Y2hTY2hlZHVsZWRFdmVudHMoCiAgICAgICAgIAog
ICAgICAgICAvLyBPbmx5IGRpc3BhdGNoIGV2ZW50cyB0byBub2RlcyB0aGF0IGFyZSBpbiB0aGUg
ZG9jdW1lbnQKICAgICAgICAgaWYgKHNjaGVkdWxlZEV2ZW50LT5tX2V2ZW50VGFyZ2V0LT5pbkRv
Y3VtZW50KCkpCi0gICAgICAgICAgICBzY2hlZHVsZWRFdmVudC0+bV9ldmVudFRhcmdldC0+ZGlz
cGF0Y2hFdmVudChzY2hlZHVsZWRFdmVudC0+bV9ldmVudCwKLSAgICAgICAgICAgICAgICBlYywg
c2NoZWR1bGVkRXZlbnQtPm1fdGVtcEV2ZW50KTsKKyAgICAgICAgICAgIHNjaGVkdWxlZEV2ZW50
LT5tX2V2ZW50VGFyZ2V0LT5kaXNwYXRjaEV2ZW50KHNjaGVkdWxlZEV2ZW50LT5tX2V2ZW50LCBl
Yyk7CiAgICAgICAgIAogICAgICAgICBkZWxldGUgc2NoZWR1bGVkRXZlbnQ7CiAgICAgfQpJbmRl
eDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAkocmV2aXNpb24gMzc3MTQpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
c3RvcmVTY3JvbGxiYXIoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiwgUGFzc1JlZlB0cjxFdmVudFRhcmdldE5vZGU+LCBib29sIHRlbXBFdmVudCk7CisgICAg
dm9pZCBzY2hlZHVsZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEV2ZW50VGFy
Z2V0Tm9kZT4pOwogICAgIHZvaWQgcGF1c2VTY2hlZHVsZWRFdmVudHMoKTsKICAgICB2b2lkIHJl
c3VtZVNjaGVkdWxlZEV2ZW50cygpOwogICAgIHZvaWQgcG9zdExheW91dFRpbWVyRmlyZWQoVGlt
ZXI8RnJhbWVWaWV3PiopOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNp
b24gMzc3MTQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgzOSw3ICs4MzksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUb09mZnNl
dChpbnQgeCwgCiAgICAgLy8gU2NoZWR1bGUgdGhlIHNjcm9sbCBET00gZXZlbnQuCiAgICAgaWYg
KHZpZXcpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmlldy0+ZnJhbWVW
aWV3KCkpCi0gICAgICAgICAgICBmcmFtZVZpZXctPnNjaGVkdWxlRXZlbnQoRXZlbnQ6OmNyZWF0
ZShzY3JvbGxFdmVudCwgZmFsc2UsIGZhbHNlKSwgRXZlbnRUYXJnZXROb2RlQ2FzdChyZW5kZXJl
cigpLT5lbGVtZW50KCkpLCB0cnVlKTsKKyAgICAgICAgICAgIGZyYW1lVmlldy0+c2NoZWR1bGVF
dmVudChFdmVudDo6Y3JlYXRlKHNjcm9sbEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBFdmVudFRhcmdl
dE5vZGVDYXN0KHJlbmRlcmVyKCktPmVsZW1lbnQoKSkpOwogICAgIH0KIH0KIApAQCAtMTM0NSw3
ICsxMzQ1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlT3ZlcmZsb3dTdGF0dXMoYgogICAg
ICAgICAKICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9vYmplY3QtPmRvY3Vt
ZW50KCktPnZpZXcoKSkgewogICAgICAgICAgICAgZnJhbWVWaWV3LT5zY2hlZHVsZUV2ZW50KE92
ZXJmbG93RXZlbnQ6OmNyZWF0ZShob3Jpem9udGFsT3ZlcmZsb3dDaGFuZ2VkLCBob3Jpem9udGFs
T3ZlcmZsb3csIHZlcnRpY2FsT3ZlcmZsb3dDaGFuZ2VkLCB2ZXJ0aWNhbE92ZXJmbG93KSwKLSAg
ICAgICAgICAgICAgICBFdmVudFRhcmdldE5vZGVDYXN0KG1fb2JqZWN0LT5lbGVtZW50KCkpLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICBFdmVudFRhcmdldE5vZGVDYXN0KG1fb2JqZWN0LT5lbGVt
ZW50KCkpKTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCShyZXZpc2lv
biAzNzcxNCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDYsNyArMjA2LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpzZW5kU1ZHTG9hZEV2ZW50SWZQb3Nz
aQogICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUobG9hZEV2
ZW50LCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgZXZlbnQtPnNldFRhcmdldChjdXJyZW50
VGFyZ2V0KTsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZCA9IDA7Ci0gICAgICAg
ICAgICBjdXJyZW50VGFyZ2V0LT5kaXNwYXRjaEdlbmVyaWNFdmVudChldmVudC5yZWxlYXNlKCks
IGlnbm9yZWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQtPmRpc3BhdGNoR2Vu
ZXJpY0V2ZW50KGV2ZW50LnJlbGVhc2UoKSwgaWdub3JlZCk7CiAgICAgICAgIH0KICAgICAgICAg
Y3VycmVudFRhcmdldCA9IChwYXJlbnQgJiYgcGFyZW50LT5pc1NWR0VsZW1lbnQoKSkgPyBzdGF0
aWNfcG9pbnRlcl9jYXN0PFNWR0VsZW1lbnQ+KHBhcmVudCkgOiAwOwogICAgIH0KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAkocmV2aXNpb24gMzc3MTQpCisrKyBXZWJDb3JlL3N2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDcg
QEAgdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZUV2ZW50TGlzdAogICAgICAgICBlbGVt
ZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUp
OwogfQogCi1ib29sIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBlLCBFeGNlcHRpb25Db2RlJiBlYywgYm9vbCB0ZW1wRXZlbnQpCitib29sIFNWR0Vs
ZW1lbnRJbnN0YW5jZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8RXZlbnQ+IGV2dChlKTsKICAgICBBU1NFUlQoIWV2
ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBTVkdFbGVt
ZW50SW5zdGFuY2U6OmRpc3BhdGNoRXZlbnQoUAogICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOwog
CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnZpZXco
KTsKLSAgICByZXR1cm4gZWxlbWVudC0+ZGlzcGF0Y2hHZW5lcmljRXZlbnQoZXZ0LnJlbGVhc2Uo
KSwgZWMsIHRlbXBFdmVudCk7CisgICAgcmV0dXJuIGVsZW1lbnQtPmRpc3BhdGNoR2VuZXJpY0V2
ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsKIH0KIAogRXZlbnRMaXN0ZW5lciogU1ZHRWxlbWVudElu
c3RhbmNlOjpvbmFib3J0KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0
YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCShy
ZXZpc2lvbiAzNzcxNCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwotICAgICAgICB2aXJ0
dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYs
IGJvb2wgdGVtcEV2ZW50ID0gZmFsc2UpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIFNWR0Vs
ZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50Lmdl
dCgpOyB9CiAgICAgICAgIFNWR1VzZUVsZW1lbnQqIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV91c2VFbGVtZW50OyB9CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CShyZXZpc2lvbiAzNzcxNCkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnJlbW92
ZUV2ZW50TGlzdGVuZXIKICAgICAgICAgfQogfQogCi1ib29sIFhNTEh0dHBSZXF1ZXN0OjpkaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2dCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvb2wg
Lyp0ZW1wRXZlbnQqLykKK2Jvb2wgWE1MSHR0cFJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4gZXZ0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBGSVhNRTogY2hl
Y2sgZm9yIG90aGVyIGVycm9yIGNvbmRpdGlvbnMgZW51bWVyYXRlZCBpbiB0aGUgc3BlYy4KICAg
ICBpZiAoZXZ0LT50eXBlKCkuaXNFbXB0eSgpKSB7CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCB2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpkaXNwYXRjaFJlYWR5U3RhdGVDCiAgICAgfQogCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYywgZmFs
c2UpOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOwogICAgIEFTU0VSVCgh
ZWMpOwogfQogCkBAIC0xMjcxLDcgKzEyNzEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaXNw
YXRjaFhNTEh0dHBSZXF1CiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
ZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYywgZmFsc2UpOworICAgIGRpc3BhdGNoRXZl
bnQoZXZ0LnJlbGVhc2UoKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQogCkluZGV4OiBXZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgJKHJldmlzaW9uIDM3NzE0KQorKysgV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAvLyB1
c2VDYXB0dXJlIGlzIG5vdCB1c2VkLCBldmVuIGZvciBhZGQvcmVtb3ZlIHBhaXJpbmcgKGZvciBG
aXJlZm94IGNvbXBhdGliaWxpdHkpLgogICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
LCBib29sIHVzZUNhcHR1cmUpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VD
YXB0dXJlKTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
PiwgRXhjZXB0aW9uQ29kZSYsIGJvb2wgdGVtcEV2ZW50ID0gZmFsc2UpOworICAgIHZpcnR1YWwg
Ym9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVudExp
c3RlbmVyczsgfQogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxYTUxIdHRwUmVxdWVzdD46OnJlZjsK
SW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAJKHJldmlzaW9uIDM3NzE0KQor
KysgV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw3ICs4Niw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OnJlbW92ZUV2ZW50TGkK
ICAgICB9CiB9CiAKLWJvb2wgWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZ0LCBFeGNlcHRpb25Db2RlJiBlYywgYm9vbCAvKnRlbXBFdmVudCov
KQorYm9vbCBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBldnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIEZJWE1FOiBjaGVjayBmb3Ig
b3RoZXIgZXJyb3IgY29uZGl0aW9ucyBlbnVtZXJhdGVkIGluIHRoZSBzcGVjLgogICAgIGlmIChl
dnQtPnR5cGUoKS5pc0VtcHR5KCkpIHsKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkOjpkaXNwYXRjaFhNTEh0CiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYywgZmFsc2UpOworICAg
IGRpc3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQog
CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgJKHJldmlzaW9uIDM3NzE0KQorKysg
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtODAs
NyArODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExp
c3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmLCBib29sIHRlbXBFdmVudCA9
IGZhbHNlKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50
TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyczsgfQogCiAgICAgICAgIHVzaW5n
IFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+OjpyZWY7Cg==
</data>
<flag name="review"
          id="11167"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>