<?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>164945</bug_id>
          
          <creation_ts>2016-11-18 12:15:20 -0800</creation_ts>
          <short_desc>Refactor drag and drop for WebKit2 to encode DragData message exchange</short_desc>
          <delta_ts>2016-11-18 15:35:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252774</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-11-18 12:15:20 -0800</bug_when>
    <thetext>All the WebKit2 messages that use DragData information should pass it the object directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252777</commentid>
    <comment_count>1</comment_count>
      <attachid>295177</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-11-18 12:19:48 -0800</bug_when>
    <thetext>Created attachment 295177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252872</commentid>
    <comment_count>2</comment_count>
      <attachid>295192</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-11-18 14:29:35 -0800</bug_when>
    <thetext>Created attachment 295192
Patch that fixes other builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252906</commentid>
    <comment_count>3</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-11-18 15:35:57 -0800</bug_when>
    <thetext>Fixed the windows build before landing.
Committed revision 208904.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295177</attachid>
            <date>2016-11-18 12:19:48 -0800</date>
            <delta_ts>2016-11-18 14:29:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>refactordragdata.txt</filename>
            <type>text/plain</type>
            <size>27353</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE2LTExLTE4ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgZHJhZyBhbmQg
ZHJvcCBmb3IgV2ViS2l0MiB0byBlbmNvZGUgRHJhZ0RhdGEgbWVzc2FnZSBleGNoYW5nZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDk0NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAqIHBhZ2UvRHJhZ0NsaWVudC5oOgorICAgICAgICAqIHBhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnSXNNb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJhZ0V4aXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJh
Z1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFn
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJl
ZE9yVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1l
bnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JM
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVk
aXREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJh
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToKKyAg
ICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9tYWMvRHJhZ0Nv
bnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6aXNDb3B5
S2V5RG93bik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdEYXRhOjpEcmFnRGF0YSk6CisKIDIwMTYtMTEtMTggIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NTUyBQYXJzZXJdIEhvb2sgdXAgSW5zcGVjdG9yU3R5bGVTaGVl
dCB0byB0aGUgbmV3IENTUyBwYXJzZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCShyZXZpc2lvbiAyMDg4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4OSw5ICs1ODksOSBAQCBjbGFzcyBFbXB0eURy
YWdDbGllbnQgOiBwdWJsaWMgRHJhZ0NsaWVuCiBwdWJsaWM6CiAgICAgRW1wdHlEcmFnQ2xpZW50
KCkgeyB9CiAgICAgdmlydHVhbCB+RW1wdHlEcmFnQ2xpZW50KCkge30KLSAgICB2b2lkIHdpbGxQ
ZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgRHJhZ0Rh
dGEmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgRHJhZ0RhdGEmKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBj
b25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYpIG92ZXJyaWRlIHsgfQotICAgIERyYWdEZXN0
aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YSYpIG92ZXJyaWRlIHsgcmV0
dXJuIERyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7IH0KKyAgICBEcmFnRGVzdGluYXRpb25BY3Rp
b24gYWN0aW9uTWFza0ZvckRyYWcoY29uc3QgRHJhZ0RhdGEmKSBvdmVycmlkZSB7IHJldHVybiBE
cmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOyB9CiAgICAgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291
cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50Jikgb3ZlcnJpZGUgeyByZXR1cm4g
RHJhZ1NvdXJjZUFjdGlvbk5vbmU7IH0KICAgICB2b2lkIHN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYs
IGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYs
IGJvb2wpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBv
dmVycmlkZSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oCShyZXZpc2lvbiAyMDg4
ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsOSArNDEsOSBAQCBjbGFzcyBEcmFnQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBE
cmFnRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRp
b25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rp
b24sIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgPSAwOwotICAgIHZpcnR1YWwgRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhJikgPSAwOworICAg
IHZpcnR1YWwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IERy
YWdEYXRhJikgPSAwOwogICAgIHZpcnR1YWwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0
aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KSA9IDA7CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50
JiBkcmFnSW1hZ2VPcmlnaW4sIGNvbnN0IEludFBvaW50JiBldmVudFBvcywgRGF0YVRyYW5zZmVy
JiwgRnJhbWUmLCBib29sIGxpbmtEcmFnID0gZmFsc2UpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDg4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQs
NyBAQCBib29sIGlzRHJhZ2dhYmxlTGluayhjb25zdCBFbGVtZW50JiBlbGVtCiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogICAgIAotc3RhdGljIFBsYXRmb3JtTW91c2VFdmVudCBjcmVhdGVN
b3VzZUV2ZW50KERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQg
Y3JlYXRlTW91c2VFdmVudChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgYm9vbCBz
aGlmdEtleSA9IGZhbHNlOwogICAgIGJvb2wgY3RybEtleSA9IGZhbHNlOwpAQCAtMTI1LDcgKzEy
NSw3IEBAIERyYWdDb250cm9sbGVyOjp+RHJhZ0NvbnRyb2xsZXIoKQogICAgIG1fY2xpZW50LmRy
YWdDb250cm9sbGVyRGVzdHJveWVkKCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSYgZHJhZ0RhdGEsIEZy
YW1lJiBmcmFtZSwgUmFuZ2UmIGNvbnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNo
b3NlUGxhaW5UZXh0KQorc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZy
YWdtZW50RnJvbURyYWdEYXRhKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRnJhbWUmIGZyYW1l
LCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRl
eHQpCiB7CiAgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKIApAQCAtMTYyLDcgKzE2Miw3IEBA
IHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnQKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0lzTW92ZShGcmFtZVNlbGVjdGlv
biYgc2VsZWN0aW9uLCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitib29sIERyYWdDb250cm9sbGVyOjpk
cmFnSXNNb3ZlKEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKIHsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uID0g
c2VsZWN0aW9uLnNlbGVjdGlvbigpOwogICAgIHJldHVybiBtX2RvY3VtZW50VW5kZXJNb3VzZSA9
PSBtX2RyYWdJbml0aWF0b3IgJiYgdmlzaWJsZVNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgp
ICYmIHZpc2libGVTZWxlY3Rpb24uaXNSYW5nZSgpICYmICFpc0NvcHlLZXlEb3duKGRyYWdEYXRh
KTsKQEAgLTE4MiwxMiArMTgyLDEyIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbmRlZCgp
CiAgICAgbV9jbGllbnQuZHJhZ0VuZGVkKCk7CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdFbnRlcmVkKERyYWdEYXRhJiBkcmFnRGF0YSkKK0RyYWdPcGVyYXRpb24gRHJh
Z0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0RhdGEpOwogfQogCi12b2lkIERyYWdD
b250cm9sbGVyOjpkcmFnRXhpdGVkKERyYWdEYXRhJiBkcmFnRGF0YSkKK3ZvaWQgRHJhZ0NvbnRy
b2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChS
ZWZQdHI8RnJhbWVWaWV3PiB2ID0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKSkgewogI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKQEAgLTIwNywxMiArMjA3LDEyIEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRyYWdFeGl0ZWQoRHJhZ0RhdGEKICAgICBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRl
ck1vdXNlID0gbnVsbHB0cjsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z1VwZGF0ZWQoRHJhZ0RhdGEmIGRyYWdEYXRhKQorRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBk
cmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6
OnBlcmZvcm1EcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSkKK2Jvb2wgRHJhZ0NvbnRy
b2xsZXI6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsK
ICAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0
UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSk7CiAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2
b2lkIERyYWdDb250cm9sbGVyOjptb3VzZU1vdmVkSW50b0RvY3VtCiAgICAgbV9kb2N1bWVudFVu
ZGVyTW91c2UgPSBuZXdEb2N1bWVudDsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoRHJhZ0RhdGEmIGRyYWdEYXRhKQorRHJhZ09wZXJhdGlv
biBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogewogICAgIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobV9wYWdlLm1haW5GcmFtZSgp
LmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpKSk7CiAKQEAgLTMxNiw3
ICszMTYsNyBAQCBzdGF0aWMgRWxlbWVudCogZWxlbWVudFVuZGVyTW91c2UoRG9jdW1lCiAgICAg
cmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwogfQogCi1ib29sIERyYWdDb250cm9sbGVy
Ojp0cnlEb2N1bWVudERyYWcoRHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnRGVzdGluYXRpb25BY3Rp
b24gYWN0aW9uTWFzaywgRHJhZ09wZXJhdGlvbiYgZHJhZ09wZXJhdGlvbikKK2Jvb2wgRHJhZ0Nv
bnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIERyYWdE
ZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrLCBEcmFnT3BlcmF0aW9uJiBkcmFnT3BlcmF0aW9u
KQogewogICAgIGlmICghbV9kb2N1bWVudFVuZGVyTW91c2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQxMSw3ICs0MTEsNyBAQCBEcmFnU291cmNlQWN0aW9uIERyYWdDb250cm9sbGVyOjpk
ZWxlZ2F0CiAgICAgcmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsKIH0KIAotRHJhZ09wZXJhdGlv
biBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChEcmFnRGF0YSYgZHJhZ0RhdGEpCitE
cmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UubWFpbkZy
YW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpOwogCkBAIC00
NDIsNyArNDQyLDcgQEAgc3RhdGljIGJvb2wgc2V0U2VsZWN0aW9uVG9EcmFnQ2FyZXQoRnJhbQog
ICAgIHJldHVybiAhZnJhbWUtPnNlbGVjdGlvbigpLmlzTm9uZSgpICYmIGZyYW1lLT5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpOwogfQogCi1ib29sIERyYWdDb250
cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCitib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2
ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAg
ICAgQVNTRVJUKG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaGFzQ2FyZXQoKSk7CiAgICAg
U3RyaW5nIHRleHQgPSBtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hs
eUVkaXRhYmxlKCkgPyBlbXB0eVN0cmluZygpIDogZHJhZ0RhdGEuYXNQbGFpblRleHQoKTsKQEAg
LTQ1MCw3ICs0NTAsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2
CiAgICAgcmV0dXJuIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckRy
b3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpKTsKIH0KIAotYm9v
bCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEpCiti
b29sIERyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKIHsKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gZmlsZUlucHV0ID0gbV9maWxl
SW5wdXRFbGVtZW50VW5kZXJNb3VzZTsKICAgICBpZiAobV9maWxlSW5wdXRFbGVtZW50VW5kZXJN
b3VzZSkgewpAQCAtNTU0LDcgKzU1NCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRl
RWRpdERyYWcoRHIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6
Y2FuUHJvY2Vzc0RyYWcoRHJhZ0RhdGEmIGRyYWdEYXRhKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6
Y2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmICghZHJh
Z0RhdGEuY29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC02MDMsNyArNjAzLDcgQEAgc3RhdGljIERyYWdPcGVyYXRpb24gZGVmYXVsdE9wZXJhdGlv
bkZvcgogICAgIHJldHVybiBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKIH0KIAotYm9vbCBEcmFnQ29u
dHJvbGxlcjo6dHJ5REhUTUxEcmFnKERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYg
b3BlcmF0aW9uKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VSVCht
X2RvY3VtZW50VW5kZXJNb3VzZSk7CiAgICAgUmVmPE1haW5GcmFtZT4gbWFpbkZyYW1lKG1fcGFn
ZS5tYWluRnJhbWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCShy
ZXZpc2lvbiAyMDg4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgRHJhZ0NsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0K
IAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkKERyYWdE
YXRhJik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0V4aXRlZChEcmFnRGF0YSYp
OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGRyYWdVcGRhdGVkKERyYWdE
YXRhJik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGVyZm9ybURyYWdPcGVyYXRpb24o
RHJhZ0RhdGEmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFnRW50
ZXJlZChjb25zdCBEcmFnRGF0YSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdF
eGl0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJh
dGlvbiBkcmFnVXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOworICAgICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHBlcmZvcm1EcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CiAKICAgICAgICAg
Ym9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZUlucHV0RWxl
bWVudFVuZGVyTW91c2U7IH0KICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2Nl
cHRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZDsgfQpAQCAt
OTYsMTcgKzk2LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0
IGZsb2F0IERyYWdJbWFnZUFscGhhOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBkaXNw
YXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiwgRHJhZ0RhdGEmKTsKLSAgICAgICAgYm9vbCBj
YW5Qcm9jZXNzRHJhZyhEcmFnRGF0YSYpOwotICAgICAgICBib29sIGNvbmNsdWRlRWRpdERyYWco
RHJhZ0RhdGEmKTsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiBkcmFnRW50ZXJlZE9yVXBkYXRlZChE
cmFnRGF0YSYpOwotICAgICAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbkZvckxvYWQoRHJhZ0Rh
dGEmKTsKLSAgICAgICAgYm9vbCB0cnlEb2N1bWVudERyYWcoRHJhZ0RhdGEmLCBEcmFnRGVzdGlu
YXRpb25BY3Rpb24sIERyYWdPcGVyYXRpb24mKTsKLSAgICAgICAgYm9vbCB0cnlESFRNTERyYWco
RHJhZ0RhdGEmLCBEcmFnT3BlcmF0aW9uJik7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ09w
ZXJhdGlvbihEcmFnRGF0YSYpOworICAgICAgICBib29sIGRpc3BhdGNoVGV4dElucHV0RXZlbnRG
b3IoRnJhbWUqLCBjb25zdCBEcmFnRGF0YSYpOworICAgICAgICBib29sIGNhblByb2Nlc3NEcmFn
KGNvbnN0IERyYWdEYXRhJik7CisgICAgICAgIGJvb2wgY29uY2x1ZGVFZGl0RHJhZyhjb25zdCBE
cmFnRGF0YSYpOworICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkT3JVcGRhdGVkKGNv
bnN0IERyYWdEYXRhJik7CisgICAgICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uRm9yTG9hZChj
b25zdCBEcmFnRGF0YSYpOworICAgICAgICBib29sIHRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFn
RGF0YSYsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgRHJhZ09wZXJhdGlvbiYpOworICAgICAgICBi
b29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYsIERyYWdPcGVyYXRpb24mKTsKKyAgICAg
ICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CiAgICAgICAg
IHZvaWQgY2xlYXJEcmFnQ2FyZXQoKTsKLSAgICAgICAgYm9vbCBkcmFnSXNNb3ZlKEZyYW1lU2Vs
ZWN0aW9uJiwgRHJhZ0RhdGEmKTsKLSAgICAgICAgYm9vbCBpc0NvcHlLZXlEb3duKERyYWdEYXRh
Jik7CisgICAgICAgIGJvb2wgZHJhZ0lzTW92ZShGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IERyYWdE
YXRhJik7CisgICAgICAgIGJvb2wgaXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYpOwogCiAg
ICAgICAgIHZvaWQgbW91c2VNb3ZlZEludG9Eb2N1bWVudChEb2N1bWVudCopOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQkocmV2aXNpb24g
MjA4ODg2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTU0LDEyICs1NCwxMiBAQCBjb25zdCBpbnQgRHJhZ0NvbnRyb2xs
ZXI6OkRyYWdJY29uQm90dG9tCiAKIGNvbnN0IGZsb2F0IERyYWdDb250cm9sbGVyOjpEcmFnSW1h
Z2VBbHBoYSA9IDAuNzVmOwogCi1ib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKERy
YWdEYXRhJiBkcmFnRGF0YSkKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29u
c3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBkcmFnRGF0YS5mbGFncygpICYg
RHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsKIH0KICAgICAKLURyYWdPcGVyYXRpb24gRHJh
Z0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oRHJhZ0RhdGEmIGRyYWdEYXRhKQorRHJhZ09wZXJh
dGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiB7CiAgICAgaWYgKChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2Rh
bCkgfHwgIWRyYWdEYXRhLmNvbnRhaW5zVVJMKCkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uTm9uZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAkocmV2aXNpb24gMjA4
ODg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtODAsNiArODAsOSBAQCBwdWJsaWM6CiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFr
ZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0
IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKICAgICBXRUJDT1JFX0VYUE9SVCBE
cmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlv
bkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0Rh
dGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBE
cmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIC8vIFRoaXMg
Y29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBieSBXZWJLaXQyIElQQyBiZWNhdXNlIERyYWdE
YXRhCisgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIgYW5kIG5vdCBpbiB0aGUg
Y29uc3RydWN0b3IuCisgICAgRHJhZ0RhdGEoKSB7IH0KICNpZiBQTEFURk9STShXSU4pCiAgICAg
V0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09w
ZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdB
cHBsaWNhdGlvbk5vbmUpOwogICAgIGNvbnN0IERyYWdEYXRhTWFwJiBkcmFnRGF0YU1hcCgpOwpA
QCAtMTA3LDkgKzExMCw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQot
ICAgIC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBieSBXZWJLaXQyIElQQyBi
ZWNhdXNlIERyYWdEYXRhCi0gICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIgYW5k
IG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCi0gICAgRHJhZ0RhdGEoKSB7IH0KIAogICAgIERyYWdE
YXRhJiBvcGVyYXRvciA9KGNvbnN0IERyYWdEYXRhJiBkYXRhKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTExLTE4ICBFbnJpY2EgQ2FzdWNjaSAgPGVu
cmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgZHJhZyBhbmQgZHJvcCBmb3IgV2Vi
S2l0MiB0byBlbmNvZGUgRHJhZ0RhdGEgbWVzc2FnZSBleGNoYW5nZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDk0NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50
Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAx
Ni0xMS0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgRG93bmxvYWRzIHN0YXJ0ZWQgYnkgY29udGV4dCBtZW51IGFjdGlvbnMgc2hvdWxkIGFs
c28gaGF2ZSBhIHdlYiB2aWV3IGFzc29jaWF0ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyMDg4ODYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGljdGlvbmFyeVBvcHVwSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0Rh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZl
bnRUcmFja2luZ1JlZ2lvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+CkBA
IC0xMTgzLDYgKzExODQsNDUgQEAgYm9vbCBBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKERl
Y29kZQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorewor
ICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKTsKKyAgICBlbmNvZGVyIDw8
IGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRyYWdE
YXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKKyAgICBlbmNvZGVyLmVuY29kZUVu
dW0oZHJhZ0RhdGEuZmxhZ3MoKSk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGVuY29kZXIgPDwg
ZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKTsKKyNlbmRpZgorfQorCitib29sIEFyZ3VtZW50Q29k
ZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRh
KQoreworICAgIEludFBvaW50IGNsaWVudFBvc2l0aW9uOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY2xpZW50UG9zaXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnRQb2lu
dCBnbG9iYWxQb3NpdGlvbjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGdsb2JhbFBvc2l0aW9u
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2s7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRHJhZ0Fw
cGxpY2F0aW9uRmxhZ3MgYXBwbGljYXRpb25GbGFnczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RW51bShhcHBsaWNhdGlvbkZsYWdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIFN0cmluZyBwYXN0ZWJvYXJkTmFtZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhc3RlYm9hcmROYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisK
KyAgICBkcmFnRGF0YSA9IERyYWdEYXRhKHBhc3RlYm9hcmROYW1lLCBjbGllbnRQb3NpdGlvbiwg
Z2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25G
bGFncyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAogdm9pZCBBcmd1bWVudENvZGVyPENvbXBv
c2l0aW9uVW5kZXJsaW5lPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENvbXBvc2l0
aW9uVW5kZXJsaW5lJiB1bmRlcmxpbmUpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyMDg4ODYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDYgKzQxLDcgQEAgY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBEYXRhYmFzZURldGFpbHM7CitjbGFzcyBE
cmFnRGF0YTsKIGNsYXNzIEZpbHRlck9wZXJhdGlvbjsKIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7
CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAtMzI2LDYgKzMyNywxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBXZWJDb3JlOjpDb2xvciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpEcmFnRGF0YT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFdlYkNvcmU6OkRyYWdEYXRhJik7Cit9OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQ+IHsKICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmln
aHQmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShy
ZXZpc2lvbiAyMDg4ODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwOSw3ICsxODA5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlcgogICAgIFdlYlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9u
KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5j
bGllbnRQb3NpdGlvbigpLCBkcmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgc2VsZWN0aW9uLCBkcmFnRGF0YS5mbGFncygpKSwg
bV9wYWdlSUQpOwogI2Vsc2UKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLmNsaWVudFBvc2l0
aW9uKCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCksIGRyYWdEYXRhLmRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzaygpLCBkcmFnU3RvcmFnZU5hbWUsIGRyYWdEYXRhLmZsYWdzKCksIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNh
bmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSwgbV9wYWdlSUQpOwogI2VuZGlmCiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmNwcAkocmV2aXNpb24gMjA4ODg2KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRp
b25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbiwgRHJhZ0RhdGEmKQordm9pZCBX
ZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGlu
YXRpb25BY3Rpb24gYWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpCiB7CiAgICAgaWYgKGFjdGlvbiA9
PSBEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKQogICAgICAgICBtX3BhZ2UtPndpbGxQZXJmb3Jt
TG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFdlYkRy
YWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjCiB7CiB9CiAKLURyYWdEZXN0aW5hdGlvbkFj
dGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YSYpCitEcmFnRGVz
dGluYXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgRHJh
Z0RhdGEmKQogewogICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaAkocmV2aXNpb24gMjA4ODg2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHdpbGxQ
ZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlv
biwgV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxQZXJmb3JtRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1Nv
dXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSYp
IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNr
Rm9yRHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdGFydERy
YWcoV2ViQ29yZTo6RHJhZ0ltYWdlUmVmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ0lt
YWdlT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIFdlYkNvcmU6OkRh
dGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgYm9vbCBsaW5rRHJhZyA9IGZhbHNlKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ0MywxNCArMzQ0MywxMyBAQCB2
b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvCiAgICAgfQogfQogI2Vsc2UK
LXZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlv
biwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGds
b2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIGNvbnN0
IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCB1aW50MzJfdCBmbGFncywgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheSYgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSkKK3ZvaWQg
V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgY29u
c3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5JiBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KQogewogICAgIGlmICghbV9w
YWdlKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVyYXRpb25Ob25lLCBmYWxzZSwgMCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ1N0b3JhZ2VOYW1l
LCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRpY19jYXN0PERyYWdPcGVyYXRp
b24+KGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIHN0YXRpY19jYXN0PERyYWdBcHBsaWNh
dGlvbkZsYWdzPihmbGFncykpOwogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBEcmFn
Q29udHJvbGxlckFjdGlvbkVudGVyZWQ6IHsKICAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZl
ZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJh
Z0RhdGEpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCShyZXZpc2lvbiAyMDg4ODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MzQsNyArNzM0LDcgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1
aW50NjRfdCBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYlNlbGVjdGlvbkRhdGEmJiwgdWludDMyX3QgZmxhZ3Mp
OwogI2Vsc2UKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBh
Y3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2lu
dCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBj
b25zdCBXVEY6OlN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCB1aW50MzJfdCBmbGFncywgY29uc3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkmKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBh
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKICNlbmRpZgog
ICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJD
b3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKTsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyAr
MjM4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRf
dCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIHN0cnVjdCBXZWJLaXQ6OldlYlNlbGVjdGlv
bkRhdGEgc2VsZWN0aW9uLCB1aW50MzJfdCBmbGFncykKICNlbmRpZgogI2lmICFQTEFURk9STShH
VEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKHVpbnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdl
YkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2ssIFN0cmluZyBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBs
b2FkKQorICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdl
YkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQogI2VuZGlmCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICBEaWRTdGFydERyYWcoKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA4ODg3KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTEtMTggIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBkcmFnIGFuZCBkcm9wIGZvciBXZWJLaXQy
IHRvIGVuY29kZSBEcmFnRGF0YSBtZXNzYWdlIGV4Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAgICAg
ICAgKFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKToKKyAgICAgICAgKFdlYkRyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKwogMjAxNi0xMS0xNyAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggc29t
ZSBub24tbWFjT1MgYnVpbGRzLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAkocmV2aXNpb24gMjA4ODg2KQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw5ICszMiw5IEBACiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRy
YWdDbGllbnQgewogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyopOwotICAgIHZv
aWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFBl
cmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFBlcmZv
cm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJpZGU7Ci0gICAgV2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKFdlYkNvcmU6OkRy
YWdEYXRhJikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFj
dGlvbk1hc2tGb3JEcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFnKFdl
YkNvcmU6OkRyYWdJbWFnZVJlZiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRyYWdQb3MsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBldmVudFBvcywgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwg
V2ViQ29yZTo6RnJhbWUmLCBib29sIGxpbmtEcmFnKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQkocmV2aXNp
b24gMjA4ODg2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjYsMTIgKzY2LDEyIEBAIHN0YXRpYyBXZWJIVE1M
VmlldyAqZ2V0VG9wSFRNTFZpZXcoRnJhbWUKICAgICByZXR1cm4gKFdlYkhUTUxWaWV3KilbW2tp
dCgmZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsK
IH0KIAotV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlv
bk1hc2tGb3JEcmFnKFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSkKK1dlYkNvcmU6OkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBX
ZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgcmV0dXJuIChXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb24pW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZp
ZXc6bV93ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJh
Z0RhdGEucGxhdGZvcm1EYXRhKCldOwogfQogCi12b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJm
b3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBh
Y3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSkKK3ZvaWQgV2ViRHJhZ0NsaWVudDo6
d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAg
IFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFj
dGlvbiBmb3JEcmFnZ2luZ0luZm86ZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCldOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295192</attachid>
            <date>2016-11-18 14:29:35 -0800</date>
            <delta_ts>2016-11-18 14:33:52 -0800</delta_ts>
            <desc>Patch that fixes other builds</desc>
            <filename>refactordragdata.txt</filename>
            <type>text/plain</type>
            <size>30248</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODg5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE2LTExLTE4ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgZHJhZyBhbmQg
ZHJvcCBmb3IgV2ViS2l0MiB0byBlbmNvZGUgRHJhZ0RhdGEgbWVzc2FnZSBleGNoYW5nZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDk0NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlD
bGllbnRzLmg6CisgICAgICAgICogcGFnZS9EcmFnQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNb3VzZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdJc01vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdD
b250cm9sbGVyOjpkcmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVy
OjpkcmFnVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6cGVyZm9y
bURyYWdPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdF
bnRlcmVkT3JVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlE
b2N1bWVudERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlv
bkZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4
dElucHV0RXZlbnRGb3IpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmNvbmNs
dWRlRWRpdERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nl
c3NEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcp
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL2VmbC9E
cmFnQ29udHJvbGxlckVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
aXNDb3B5S2V5RG93bik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09w
ZXJhdGlvbik6CisgICAgICAgICogcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24pOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24pOgorICAgICAgICAqIHBhZ2Uv
bWFjL0RyYWdDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OmlzQ29weUtleURvd24pOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRy
YWdPcGVyYXRpb24pOgorICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9EcmFnRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OkRyYWdEYXRh
KToKKwogMjAxNi0xMS0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFVuc3VwcG9ydGVkIGVtb2ppIGFyZSBpbnZpc2libGUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTg5LDkgKzU4
OSw5IEBAIGNsYXNzIEVtcHR5RHJhZ0NsaWVudCA6IHB1YmxpYyBEcmFnQ2xpZW4KIHB1YmxpYzoK
ICAgICBFbXB0eURyYWdDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIH5FbXB0eURyYWdDbGllbnQo
KSB7fQotICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBEcmFnRGF0YSYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgd2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBEcmFn
RGF0YSYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9u
KERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgb3ZlcnJp
ZGUgeyB9Ci0gICAgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKERyYWdE
YXRhJikgb3ZlcnJpZGUgeyByZXR1cm4gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsgfQorICAg
IERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBEcmFnRGF0YSYp
IG92ZXJyaWRlIHsgcmV0dXJuIERyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7IH0KICAgICBEcmFn
U291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
KSBvdmVycmlkZSB7IHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsgfQogICAgIHZvaWQgc3Rh
cnREcmFnKERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIERh
dGFUcmFuc2ZlciYsIEZyYW1lJiwgYm9vbCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBkcmFnQ29u
dHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xp
ZW50LmgJKHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw5IEBAIGNsYXNzIERyYWdDbGllbnQgewog
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpID0gMDsK
IAotICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFn
RGVzdGluYXRpb25BY3Rpb24sIERyYWdEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0
IERyYWdEYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VB
Y3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImKSA9
IDA7Ci0gICAgdmlydHVhbCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWco
RHJhZ0RhdGEmKSA9IDA7CisgICAgdmlydHVhbCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9u
TWFza0ZvckRyYWcoY29uc3QgRHJhZ0RhdGEmKSA9IDA7CiAgICAgdmlydHVhbCBEcmFnU291cmNl
QWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHJvb3RW
aWV3UG9pbnQpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKERyYWdJbWFn
ZVJlZiwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgSW50UG9pbnQmIGV2
ZW50UG9zLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYsIGJvb2wgbGlua0RyYWcgPSBmYWxzZSkgPSAw
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIw
ODg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgaXNEcmFnZ2FibGVMaW5rKGNvbnN0IEVsZW1l
bnQmIGVsZW0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgCi1zdGF0aWMgUGxhdGZv
cm1Nb3VzZUV2ZW50IGNyZWF0ZU1vdXNlRXZlbnQoRHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RhdGlj
IFBsYXRmb3JtTW91c2VFdmVudCBjcmVhdGVNb3VzZUV2ZW50KGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKIHsKICAgICBib29sIHNoaWZ0S2V5ID0gZmFsc2U7CiAgICAgYm9vbCBjdHJsS2V5ID0g
ZmFsc2U7CkBAIC0xMjUsNyArMTI1LDcgQEAgRHJhZ0NvbnRyb2xsZXI6On5EcmFnQ29udHJvbGxl
cigpCiAgICAgbV9jbGllbnQuZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKIH0KIAotc3RhdGlj
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERy
YWdEYXRhJiBkcmFnRGF0YSwgRnJhbWUmIGZyYW1lLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxv
d1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpCitzdGF0aWMgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhLCBGcmFtZSYgZnJhbWUsIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0
LCBib29sJiBjaG9zZVBsYWluVGV4dCkKIHsKICAgICBjaG9zZVBsYWluVGV4dCA9IGZhbHNlOwog
CkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1
bWVudAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjpkcmFn
SXNNb3ZlKEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIERyYWdEYXRhJiBkcmFnRGF0YSkKK2Jv
b2wgRHJhZ0NvbnRyb2xsZXI6OmRyYWdJc01vdmUoRnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwg
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHZpc2libGVTZWxlY3Rpb24gPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7CiAgICAgcmV0dXJuIG1f
ZG9jdW1lbnRVbmRlck1vdXNlID09IG1fZHJhZ0luaXRpYXRvciAmJiB2aXNpYmxlU2VsZWN0aW9u
LmlzQ29udGVudEVkaXRhYmxlKCkgJiYgdmlzaWJsZVNlbGVjdGlvbi5pc1JhbmdlKCkgJiYgIWlz
Q29weUtleURvd24oZHJhZ0RhdGEpOwpAQCAtMTgyLDEyICsxODIsMTIgQEAgdm9pZCBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBtX2NsaWVudC5kcmFnRW5kZWQoKTsKIH0KIAotRHJh
Z09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWQoRHJhZ0RhdGEmIGRyYWdEYXRh
KQorRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWQoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBkcmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0
YSk7CiB9CiAKLXZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoRHJhZ0RhdGEmIGRyYWdE
YXRhKQordm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEpCiB7CiAgICAgaWYgKFJlZlB0cjxGcmFtZVZpZXc+IHYgPSBtX3BhZ2UubWFpbkZyYW1l
KCkudmlldygpKSB7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpAQCAtMjA3LDEyICsy
MDcsMTIgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZChEcmFnRGF0YQogICAgIG1f
ZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRyOwogfQogCi1EcmFnT3BlcmF0aW9u
IERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChEcmFnRGF0YSYgZHJhZ0RhdGEpCitEcmFnT3Bl
cmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiB7CiAgICAgcmV0dXJuIGRyYWdFbnRlcmVkT3JVcGRhdGVkKGRyYWdEYXRhKTsKIH0KIAot
Ym9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oRHJhZ0RhdGEmIGRyYWdE
YXRhKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhKQogewogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbV9wYWdlLm1h
aW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpKTsKIApA
QCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZWRJbnRvRG9j
dW0KICAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IG5ld0RvY3VtZW50OwogfQogCi1EcmFnT3Bl
cmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChEcmFnRGF0YSYgZHJh
Z0RhdGEpCitEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRl
ZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVu
dChtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0
aW9uKCkpKTsKIApAQCAtMzE2LDcgKzMxNiw3IEBAIHN0YXRpYyBFbGVtZW50KiBlbGVtZW50VW5k
ZXJNb3VzZShEb2N1bWUKICAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiB9CiAK
LWJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEs
IERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrLCBEcmFnT3BlcmF0aW9uJiBkcmFnT3Bl
cmF0aW9uKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2ssIERyYWdPcGVy
YXRpb24mIGRyYWdPcGVyYXRpb24pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDExLDcgKzQxMSw3IEBAIERyYWdTb3VyY2VBY3Rp
b24gRHJhZ0NvbnRyb2xsZXI6OmRlbGVnYXQKICAgICByZXR1cm4gbV9kcmFnU291cmNlQWN0aW9u
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKERy
YWdEYXRhJiBkcmFnRGF0YSkKK0RyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlv
bkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50
UG9zaXRpb24oKSk7CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgYm9vbCBzZXRTZWxlY3Rp
b25Ub0RyYWdDYXJldChGcmFtCiAgICAgcmV0dXJuICFmcmFtZS0+c2VsZWN0aW9uKCkuaXNOb25l
KCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCk7
CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IoRnJh
bWUqIGlubmVyRnJhbWUsIERyYWdEYXRhJiBkcmFnRGF0YSkKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6
OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IoRnJhbWUqIGlubmVyRnJhbWUsIGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NFUlQobV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIo
KS5oYXNDYXJldCgpKTsKICAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9s
bGVyKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSA/IGVtcHR5U3RyaW5nKCkgOiBkcmFnRGF0
YS5hc1BsYWluVGV4dCgpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6
OmRpc3BhdGNoVGV4dElucHV0RXYKICAgICByZXR1cm4gdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRl
eHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KSwgdGV4dCkpOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKERy
YWdEYXRhJiBkcmFnRGF0YSkKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWco
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50
PiBmaWxlSW5wdXQgPSBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlOwogICAgIGlmIChtX2Zp
bGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlKSB7CkBAIC01NTQsNyArNTU0LDcgQEAgYm9vbCBEcmFn
Q29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcgogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEpCiti
b29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiB7CiAgICAgaWYgKCFkcmFnRGF0YS5jb250YWluc0NvbXBhdGlibGVDb250ZW50KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYwMyw3ICs2MDMsNyBAQCBzdGF0aWMgRHJhZ09wZXJh
dGlvbiBkZWZhdWx0T3BlcmF0aW9uRm9yCiAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25HZW5lcmlj
OwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoRHJhZ0RhdGEmIGRyYWdE
YXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCitib29sIERyYWdDb250cm9sbGVyOjp0cnlE
SFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRp
b24pCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnRVbmRlck1vdXNlKTsKICAgICBSZWY8TWFpbkZy
YW1lPiBtYWluRnJhbWUobV9wYWdlLm1haW5GcmFtZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmgJKHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBEcmFnQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudDsgfQogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIERyYWdPcGVyYXRp
b24gZHJhZ0VudGVyZWQoRHJhZ0RhdGEmKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmFnRXhpdGVkKERyYWdEYXRhJik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIERyYWdPcGVyYXRp
b24gZHJhZ1VwZGF0ZWQoRHJhZ0RhdGEmKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBw
ZXJmb3JtRHJhZ09wZXJhdGlvbihEcmFnRGF0YSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBE
cmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJik7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0YSYpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGRyYWdVcGRhdGVkKGNvbnN0IERyYWdEYXRhJik7Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJh
Z0RhdGEmKTsKIAogICAgICAgICBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0KCkgY29uc3QgeyBy
ZXR1cm4gbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZTsgfQogICAgICAgICB1bnNpZ25lZCBu
dW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkl0ZW1z
VG9CZUFjY2VwdGVkOyB9CkBAIC05NiwxNyArOTYsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBzdGF0aWMgY29uc3QgZmxvYXQgRHJhZ0ltYWdlQWxwaGE7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBib29sIGRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IoRnJhbWUqLCBEcmFnRGF0
YSYpOwotICAgICAgICBib29sIGNhblByb2Nlc3NEcmFnKERyYWdEYXRhJik7Ci0gICAgICAgIGJv
b2wgY29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSYpOwotICAgICAgICBEcmFnT3BlcmF0aW9uIGRy
YWdFbnRlcmVkT3JVcGRhdGVkKERyYWdEYXRhJik7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gb3Bl
cmF0aW9uRm9yTG9hZChEcmFnRGF0YSYpOwotICAgICAgICBib29sIHRyeURvY3VtZW50RHJhZyhE
cmFnRGF0YSYsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgRHJhZ09wZXJhdGlvbiYpOwotICAgICAg
ICBib29sIHRyeURIVE1MRHJhZyhEcmFnRGF0YSYsIERyYWdPcGVyYXRpb24mKTsKLSAgICAgICAg
RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uKERyYWdEYXRhJik7CisgICAgICAgIGJvb2wgZGlz
cGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7CisgICAgICAg
IGJvb2wgY2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICAgICAgYm9vbCBjb25j
bHVkZUVkaXREcmFnKGNvbnN0IERyYWdEYXRhJik7CisgICAgICAgIERyYWdPcGVyYXRpb24gZHJh
Z0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICAgICAgRHJhZ09wZXJhdGlv
biBvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJik7CisgICAgICAgIGJvb2wgdHJ5RG9j
dW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBEcmFnT3Bl
cmF0aW9uJik7CisgICAgICAgIGJvb2wgdHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiwgRHJh
Z09wZXJhdGlvbiYpOworICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24oY29uc3Qg
RHJhZ0RhdGEmKTsKICAgICAgICAgdm9pZCBjbGVhckRyYWdDYXJldCgpOwotICAgICAgICBib29s
IGRyYWdJc01vdmUoRnJhbWVTZWxlY3Rpb24mLCBEcmFnRGF0YSYpOwotICAgICAgICBib29sIGlz
Q29weUtleURvd24oRHJhZ0RhdGEmKTsKKyAgICAgICAgYm9vbCBkcmFnSXNNb3ZlKEZyYW1lU2Vs
ZWN0aW9uJiwgY29uc3QgRHJhZ0RhdGEmKTsKKyAgICAgICAgYm9vbCBpc0NvcHlLZXlEb3duKGNv
bnN0IERyYWdEYXRhJik7CiAKICAgICAgICAgdm9pZCBtb3VzZU1vdmVkSW50b0RvY3VtZW50KERv
Y3VtZW50Kik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVy
RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJv
bGxlckVmbC5jcHAJKHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvZWZs
L0RyYWdDb250cm9sbGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDEyIEBA
IGNvbnN0IGludCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ljb25Cb3R0b20KIAogY29uc3QgZmxvYXQg
RHJhZ0NvbnRyb2xsZXI6OkRyYWdJbWFnZUFscGhhID0gMC43NWY7CiAKLWJvb2wgRHJhZ0NvbnRy
b2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6aXND
b3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1E
cmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFn
RGF0YSkKK0RyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3Qg
RHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgpKQog
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiAyMDg4ODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDEyICs0NiwxMiBAQCBjb25zdCBpbnQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJY29u
Qm90dG9tCiAKIGNvbnN0IGZsb2F0IERyYWdDb250cm9sbGVyOjpEcmFnSW1hZ2VBbHBoYSA9IDAu
NzVmOwogCi1ib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKERyYWdEYXRhJikKK2Jv
b2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmKQogewogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09w
ZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEpCitEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVy
OjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICAvLyBGSVhN
RTogVGhpcyBsb2dpYyBpcyBpbmNvbXBsZXRlCiAgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJM
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5t
bQkocmV2aXNpb24gMjA4ODg2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRy
b2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU0LDEyICs1NCwxMiBAQCBjb25zdCBpbnQg
RHJhZ0NvbnRyb2xsZXI6OkRyYWdJY29uQm90dG9tCiAKIGNvbnN0IGZsb2F0IERyYWdDb250cm9s
bGVyOjpEcmFnSW1hZ2VBbHBoYSA9IDAuNzVmOwogCi1ib29sIERyYWdDb250cm9sbGVyOjppc0Nv
cHlLZXlEb3duKERyYWdEYXRhJiBkcmFnRGF0YSkKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29w
eUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBkcmFnRGF0
YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsKIH0KICAgICAKLURyYWdP
cGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oRHJhZ0RhdGEmIGRyYWdEYXRh
KQorRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxp
Y2F0aW9uSXNNb2RhbCkgfHwgIWRyYWdEYXRhLmNvbnRhaW5zVVJMKCkpCiAgICAgICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTm9uZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdD
b250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9E
cmFnQ29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyAr
NDMsNyBAQCBjb25zdCBpbnQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJY29uQm90dG9tCiAKIGNvbnN0
IGZsb2F0IERyYWdDb250cm9sbGVyOjpEcmFnSW1hZ2VBbHBoYSA9IDAuNzVmOwogCi1EcmFnT3Bl
cmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSkK
K0RyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogewogICAgIC8vRklYTUU6IHRvIG1hdGNoIHRoZSBtYWNvcyBiZWhhdmlv
dXIgd2Ugc2hvdWxkIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZQogICAgIC8vaWYgd2UgYXJlIGEg
bW9kYWwgd2luZG93LCB3ZSBhcmUgdGhlIGRyYWcgc291cmNlLCBvciB0aGUgd2luZG93IGlzIGFu
IGF0dGFjaGVkIHNoZWV0CkBAIC01Miw3ICs1Miw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdPcGVyYXQKICAgICByZXR1cm4gZHJhZ0RhdGEuY29udGFpbnNVUkwoKSAmJiAh
bV9kaWRJbml0aWF0ZURyYWcgPyBEcmFnT3BlcmF0aW9uQ29weSA6IERyYWdPcGVyYXRpb25Ob25l
OwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKERyYWdEYXRhJikKK2Jv
b2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmKQogewogICAg
IHJldHVybiA6OkdldEFzeW5jS2V5U3RhdGUoVktfQ09OVFJPTCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgJKHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDkgQEAgcHVi
bGljOgogICAgIC8vIGNsaWVudFBvc2l0aW9uIGlzIHRha2VuIHRvIGJlIHRoZSBwb3NpdGlvbiBv
ZiB0aGUgZHJhZyBldmVudCB3aXRoaW4gdGhlIHRhcmdldCB3aW5kb3csIHdpdGggKDAsMCkgYXQg
dGhlIHRvcCBsZWZ0CiAgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlv
bk5vbmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0
b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBE
cmFnQXBwbGljYXRpb25Ob25lKTsKKyAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCB1c2Vk
IG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQorICAgIC8vIGlzIGluaXRpYWxp
emVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9yLgorICAgIERyYWdE
YXRhKCkgeyB9CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRh
KGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKICAgICBj
b25zdCBEcmFnRGF0YU1hcCYgZHJhZ0RhdGFNYXAoKTsKQEAgLTEwNyw5ICsxMTAsNiBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICAvLyBUaGlzIGNvbnN0cnVjdG9y
IHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQotICAgIC8v
IGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9y
LgotICAgIERyYWdEYXRhKCkgeyB9CiAKICAgICBEcmFnRGF0YSYgb3BlcmF0b3IgPShjb25zdCBE
cmFnRGF0YSYgZGF0YSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDg4ODYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBA
QAorMjAxNi0xMS0xOCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlZmFjdG9yIGRyYWcgYW5kIGRyb3AgZm9yIFdlYktpdDIgdG8gZW5jb2RlIERyYWdEYXRh
IG1lc3NhZ2UgZXhjaGFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ5NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGlu
YXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNr
Rm9yRHJhZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTYtMTEtMTcgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIERvd25sb2FkcyBzdGFydGVk
IGJ5IGNvbnRleHQgbWVudSBhY3Rpb25zIHNob3VsZCBhbHNvIGhhdmUgYSB3ZWIgdmlldyBhc3Nv
Y2lhdGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAkocmV2aXNpb24gMjA4ODg2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlRGV0YWlscy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1
cEluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50VHJhY2tpbmdSZWdpb25zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgpAQCAtMTE4Myw2ICsxMTg0LDQ3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxDb2xvcj46OmRlY29kZShEZWNvZGUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCit2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0Rh
dGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQor
eworICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKTsKKyAgICBlbmNvZGVy
IDw8IGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRy
YWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKKyAgICBlbmNvZGVyLmVuY29k
ZUVudW0oZHJhZ0RhdGEuZmxhZ3MoKSk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGVuY29kZXIg
PDwgZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKTsKKyNlbmRpZgorfQorCitib29sIEFyZ3VtZW50
Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdE
YXRhKQoreworICAgIEludFBvaW50IGNsaWVudFBvc2l0aW9uOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY2xpZW50UG9zaXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnRQ
b2ludCBnbG9iYWxQb3NpdGlvbjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGdsb2JhbFBvc2l0
aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2s7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRHJh
Z0FwcGxpY2F0aW9uRmxhZ3MgYXBwbGljYXRpb25GbGFnczsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bShhcHBsaWNhdGlvbkZsYWdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
U3RyaW5nIHBhc3RlYm9hcmROYW1lOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhc3RlYm9hcmROYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CisKKyAgICBkcmFnRGF0YSA9IERyYWdEYXRhKHBhc3RlYm9hcmROYW1lLCBjbGllbnRQb3NpdGlv
biwgZ2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgYXBwbGljYXRp
b25GbGFncyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgogCiB2b2lkIEFyZ3VtZW50
Q29kZXI8Q29tcG9zaXRpb25VbmRlcmxpbmU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmIHVuZGVybGluZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDIwODg4NikK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIERhdGFiYXNlRGV0YWls
czsKK2NsYXNzIERyYWdEYXRhOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uOwogY2xhc3MgRmlsdGVy
T3BlcmF0aW9uczsKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC0zMjYsNiArMzI3LDEzIEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoRGVjb2RlciYsIFdlYkNvcmU6OkNvbG9yJik7CiB9OwogCisjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RHJhZ0RhdGE+
IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRyYWdE
YXRhJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpEcmFnRGF0
YSYpOworfTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQ+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQmKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMDg4
ODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgwOSw3ICsxODA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1E
cmFnQ29udHJvbGxlcgogICAgIFdlYlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uKCpkcmFnRGF0YS5w
bGF0Zm9ybURhdGEoKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQ
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5jbGllbnRQb3NpdGlv
bigpLCBkcmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2soKSwgc2VsZWN0aW9uLCBkcmFnRGF0YS5mbGFncygpKSwgbV9wYWdlSUQpOwog
I2Vsc2UKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCksIGRyYWdE
YXRhLmdsb2JhbFBvc2l0aW9uKCksIGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
aygpLCBkcmFnU3RvcmFnZU5hbWUsIGRyYWdEYXRhLmZsYWdzKCksIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KGFjdGlvbiwgZHJhZ0RhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNp
b25zRm9yVXBsb2FkKSwgbV9wYWdlSUQpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcAkocmV2aXNpb24gMjA4ODg2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyAr
MzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbiwgRHJhZ0RhdGEmKQordm9pZCBXZWJEcmFnQ2xpZW50
Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24g
YWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpCiB7CiAgICAgaWYgKGFjdGlvbiA9PSBEcmFnRGVzdGlu
YXRpb25BY3Rpb25Mb2FkKQogICAgICAgICBtX3BhZ2UtPndpbGxQZXJmb3JtTG9hZERyYWdEZXN0
aW5hdGlvbkFjdGlvbigpOwpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6Ondp
bGxQZXJmb3JtRHJhZ1NvdXJjCiB7CiB9CiAKLURyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFn
Q2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YSYpCitEcmFnRGVzdGluYXRpb25BY3Rp
b24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgRHJhZ0RhdGEmKQogewog
ICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaAkocmV2aXNpb24gMjA4ODg2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgV2ViQ29yZTo6
RHJhZ0RhdGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJh
Z0RhdGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihX
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNv
cmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlv
bkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwor
ICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25z
dCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VB
Y3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6
RHJhZ0ltYWdlUmVmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYs
IFdlYkNvcmU6OkZyYW1lJiwgYm9vbCBsaW5rRHJhZyA9IGZhbHNlKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ0MywxNCArMzQ0MywxMyBAQCB2b2lkIFdlYlBhZ2U6
OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvCiAgICAgfQogfQogI2Vsc2UKLXZvaWQgV2ViUGFn
ZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6
SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9u
LCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIGNvbnN0IFN0cmluZyYgZHJh
Z1N0b3JhZ2VOYW1lLCB1aW50MzJfdCBmbGFncywgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSYgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSkKK3ZvaWQgV2ViUGFnZTo6cGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6
RHJhZ0RhdGEmIGRyYWdEYXRhLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBz
YW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KQogewogICAgIGlmICghbV9wYWdlKSB7CiAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKERyYWdPcGVyYXRpb25Ob25lLCBmYWxzZSwgMCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ1N0b3JhZ2VOYW1lLCBjbGllbnRQb3Np
dGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzayksIHN0YXRpY19jYXN0PERyYWdBcHBsaWNhdGlvbkZsYWdzPihm
bGFncykpOwogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFj
dGlvbkVudGVyZWQ6IHsKICAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRp
b24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lv
biAyMDg4ODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MzQsNyArNzM0LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KEdUSykKICAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2ssIFdlYlNlbGVjdGlvbkRhdGEmJiwgdWludDMyX3QgZmxhZ3MpOwogI2Vsc2UKLSAg
ICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNv
cmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3Np
dGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBjb25zdCBXVEY6OlN0
cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCB1aW50MzJfdCBmbGFncywgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKKyAg
ICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29u
c3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKICNlbmRpZgogICAgIHZvaWQgZHJh
Z0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2lu
dCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDIwODg4NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRp
b24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2ssIHN0cnVjdCBXZWJLaXQ6OldlYlNlbGVjdGlvbkRhdGEgc2VsZWN0
aW9uLCB1aW50MzJfdCBmbGFncykKICNlbmRpZgogI2lmICFQTEFURk9STShHVEspICYmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCi0gICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90
IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ss
IFN0cmluZyBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQorICAgIFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRi
b3hFeHRlbnNpb25zRm9yVXBsb2FkKQogI2VuZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBEaWRTdGFydERyYWcoKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4ODg3
KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTYtMTEtMTggIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4K
KworICAgICAgICBSZWZhY3RvciBkcmFnIGFuZCBkcm9wIGZvciBXZWJLaXQyIHRvIGVuY29kZSBE
cmFnRGF0YSBtZXNzYWdlIGV4Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAgICAgICAgKFdlYkRyYWdD
bGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OndpbGxQ
ZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKwogMjAxNi0xMS0xNyAgRGFuIEJlcm5zdGVp
biAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggc29tZSBub24tbWFjT1Mg
YnVpbGRzLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaAkocmV2aXNpb24gMjA4ODg2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw5
IEBACiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgewog
cHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyopOwotICAgIHZvaWQgd2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBX
ZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVz
dGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKFdlYkNvcmU6OkRyYWdEYXRhJikgb3Zl
cnJpZGU7CisgICAgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JE
cmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmFnQ29u
dHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
d2luZG93UG9pbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJ
bWFnZVJlZiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRyYWdQb3MsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBldmVudFBvcywgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RnJh
bWUmLCBib29sIGxpbmtEcmFnKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQkocmV2aXNpb24gMjA4ODg2KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjYsMTIgKzY2LDEyIEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqZ2V0VG9w
SFRNTFZpZXcoRnJhbWUKICAgICByZXR1cm4gKFdlYkhUTUxWaWV3KilbW2tpdCgmZnJhbWUtPnBh
Z2UoKS0+bWFpbkZyYW1lKCkpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKIH0KIAotV2ViQ29y
ZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFn
KFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSkKK1dlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJDb3JlOjpEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgcmV0dXJuIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb24pW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3
IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ0RhdGEucGxhdGZv
cm1EYXRhKCldOwogfQogCi12b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24sIFdlYkNv
cmU6OkRyYWdEYXRhJiBkcmFnRGF0YSkKK3ZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1E
cmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlv
biwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIFtbbV93ZWJWaWV3
IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdE
ZXN0aW5hdGlvbkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFjdGlvbiBmb3JEcmFn
Z2luZ0luZm86ZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCldOwogfQo=
</data>
<flag name="review"
          id="317806"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>